Написание плагинов

alexmy

Участник
Сообщения
284
Реакции
13
Из-за чего ошибка?
PHP:
public void heal_begin(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("subject"));
    int userid = GetClientOfUserId(event.GetInt("userid"));
    
    if(IsClientInGame(client) && GetClientTeam(client) == 2)
    {
        char TXT[56];
        Handle menu = CreateMenu(ShowMenu2);
        
        SetMenuTitle(menu, "%T", "StateofHealth", client); <<< Тут
        Format(TXT, sizeof(TXT), "%T", "HP", GetEntProp(client, Prop_Send, "m_iHealth"), GetEntProp(client, Prop_Send, "m_iMaxHealth"));
        AddMenuItem(menu, "0", TXT);
        
        Format(TXT, sizeof(TXT), "%T", "HB", GetEntPropFloat(client, Prop_Send, "m_healthBuffer"));
        AddMenuItem(menu, "1", TXT);
        
        Format(TXT, sizeof(TXT), "%T", "ReviveCount", GetEntProp(client, Prop_Send, "m_currentReviveCount"), GetConVarInt(FindConVar("survivor_max_incapacitated_count")));
        AddMenuItem(menu, "2", TXT);
        
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, userid, 5);
    }
}

L 12/06/2021 - 14:39:22: SourceMod error session started
L 12/06/2021 - 14:39:22: Info (map "c3m2_swamp") (file "D:\serverl4d2\left4dead2\addons\sourcemod\logs\errors_20211206.log")
L 12/06/2021 - 14:39:22: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
L 12/06/2021 - 14:39:22: [SM] Blaming: Player_Information.smx
L 12/06/2021 - 14:39:22: [SM] Call stack trace:
L 12/06/2021 - 14:39:22: [SM]   [0] SetMenuTitle
L 12/06/2021 - 14:39:22: [SM]   [1] Line 28, C:\Users\Raptor\Desktop\scripting l4d2\Player_Information.sp::heal_begin
L 12/06/2021 - 14:39:23: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
 

xstage

🏹
Сообщения
726
Реакции
754
Из-за чего ошибка?
PHP:
public void heal_begin(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("subject"));
    int userid = GetClientOfUserId(event.GetInt("userid"));
   
    if(IsClientInGame(client) && GetClientTeam(client) == 2)
    {
        char TXT[56];
        Handle menu = CreateMenu(ShowMenu2);
       
        SetMenuTitle(menu, "%T", "StateofHealth", client); <<< Тут
        Format(TXT, sizeof(TXT), "%T", "HP", GetEntProp(client, Prop_Send, "m_iHealth"), GetEntProp(client, Prop_Send, "m_iMaxHealth"));
        AddMenuItem(menu, "0", TXT);
       
        Format(TXT, sizeof(TXT), "%T", "HB", GetEntPropFloat(client, Prop_Send, "m_healthBuffer"));
        AddMenuItem(menu, "1", TXT);
       
        Format(TXT, sizeof(TXT), "%T", "ReviveCount", GetEntProp(client, Prop_Send, "m_currentReviveCount"), GetConVarInt(FindConVar("survivor_max_incapacitated_count")));
        AddMenuItem(menu, "2", TXT);
       
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, userid, 5);
    }
}

L 12/06/2021 - 14:39:22: SourceMod error session started
L 12/06/2021 - 14:39:22: Info (map "c3m2_swamp") (file "D:\serverl4d2\left4dead2\addons\sourcemod\logs\errors_20211206.log")
L 12/06/2021 - 14:39:22: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
L 12/06/2021 - 14:39:22: [SM] Blaming: Player_Information.smx
L 12/06/2021 - 14:39:22: [SM] Call stack trace:
L 12/06/2021 - 14:39:22: [SM]   [0] SetMenuTitle
L 12/06/2021 - 14:39:22: [SM]   [1] Line 28, C:\Users\Raptor\Desktop\scripting l4d2\Player_Information.sp::heal_begin
L 12/06/2021 - 14:39:23: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
Видимо в переводе есть еще параметры, которые ты не передал
 

alexmy

Участник
Сообщения
284
Реакции
13
@xstage, Это точно не из-за перевода, хотя может кто свежим взглядом увидит что...
PHP:
"Phrases"
{
    "BW_Screen"
    {
        "ru"        "Игрок с Чёрно-Белым экраном:"
        "en"        "Black & White Screen Player:"
        "es"        "Reproductor de pantalla en blanco y negro:"
    }
    
    "PlayerDead"
    {
        "ru"        "Вы можете реанимировать:"
        "en"        "You can reanimate:"
        "es"        "Puedes reanimar:"
    }
    
    "StateofHealth"
    {
        "ru"        "Состояние %N"
        "en"        "Condition %N"
        "es"        "Condición %N"
    }
    "HP"
    {
        "ru"        "Здоровье - %d/%d"
        "en"        "Health - %d/%d"
        "es"        "Salud - %d/%d"
    }
    "HB"
    {
        "ru"        "Болеутоляющее - %.1f"
        "en"        "Pain reliever - %.1f"
        "es"        "Analgésico - %.1f"
    }
    "ReviveCount"
    {
        "ru"        "Макс Кол-во Выведенных из Строя - %d/%d"
        "en"        "Max Incapacitate Count - %d/%d"
        "es"        "Conteo Máximo de Incapacitados - %d/%d"
    }
}
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Из-за чего ошибка?
PHP:
public void heal_begin(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("subject"));
    int userid = GetClientOfUserId(event.GetInt("userid"));
  
    if(IsClientInGame(client) && GetClientTeam(client) == 2)
    {
        char TXT[56];
        Handle menu = CreateMenu(ShowMenu2);
      
        SetMenuTitle(menu, "%T", "StateofHealth", client); <<< Тут
        Format(TXT, sizeof(TXT), "%T", "HP", GetEntProp(client, Prop_Send, "m_iHealth"), GetEntProp(client, Prop_Send, "m_iMaxHealth"));
        AddMenuItem(menu, "0", TXT);
      
        Format(TXT, sizeof(TXT), "%T", "HB", GetEntPropFloat(client, Prop_Send, "m_healthBuffer"));
        AddMenuItem(menu, "1", TXT);
      
        Format(TXT, sizeof(TXT), "%T", "ReviveCount", GetEntProp(client, Prop_Send, "m_currentReviveCount"), GetConVarInt(FindConVar("survivor_max_incapacitated_count")));
        AddMenuItem(menu, "2", TXT);
      
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, userid, 5);
    }
}

L 12/06/2021 - 14:39:22: SourceMod error session started
L 12/06/2021 - 14:39:22: Info (map "c3m2_swamp") (file "D:\serverl4d2\left4dead2\addons\sourcemod\logs\errors_20211206.log")
L 12/06/2021 - 14:39:22: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
L 12/06/2021 - 14:39:22: [SM] Blaming: Player_Information.smx
L 12/06/2021 - 14:39:22: [SM] Call stack trace:
L 12/06/2021 - 14:39:22: [SM]   [0] SetMenuTitle
L 12/06/2021 - 14:39:22: [SM]   [1] Line 28, C:\Users\Raptor\Desktop\scripting l4d2\Player_Information.sp::heal_begin
L 12/06/2021 - 14:39:23: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
SetMenuTitle(menu, "%T", "StateofHealth", client, client);
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
@alexmy, после первого параметра для %T должен идти индекс игрока, которому предназначен текст, а потом остальные параметры, если они имеются.

И в файле переводов ересь какая-то: должны через format указываться типы получаемых данных, а в самих строках перевода подставляться данные в виде номера параметра у фигурных скобках: {1}, {2} и т.д.

 

alexmy

Участник
Сообщения
284
Реакции
13
@Paranoiiik, @Grey83,
Это первая идея которую я пробовал, он мне также на параметры указывает.
PHP:
SetMenuTitle(menu, "%T", "StateofHealth", client, client);

Спасибо.
 

StormX

Участник
Сообщения
891
Реакции
302
Приветствую!
Может кто подправит, что бы плагин банил, а не кикал и вывод причины бана через softdetector.phrases.txt.
Заранее благодарен.
 

Вложения

  • soft_detector.sp
    1.1 КБ · Просмотры: 18

xstage

🏹
Сообщения
726
Реакции
754
Приветствую!
Может кто подправит, что бы плагин банил, а не кикал и вывод причины бана через softdetector.phrases.txt.
Заранее благодарен.
softdetector.phrases.txt:
"Phrases"
{
    "BanReason"
    {
        "en"        "You were banned for software"
        "ru"        "Вы были забанены за софт"
    }
}
 

Вложения

  • soft_detector.sp
    1,002 байт · Просмотры: 16

Голос_в_ночи

Племяш Габена
Сообщения
333
Реакции
31
Подскажите пожалуйста. Нужно убрать из админского меню пункт "Новый год".
И добавить возможность вызова этого меню, например, по команде sm_ng
 

Вложения

  • Happy New Year 2.2.sp
    52.6 КБ · Просмотры: 8

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
@Голос_в_ночи, там на столько убогий код что лезть в него противно, вкратце там переписывать все придется чтобы достичь того что тебе нужно. В чем проблема с доступом через !admin?
 

Голос_в_ночи

Племяш Габена
Сообщения
333
Реакции
31
@Голос_в_ночи, там на столько убогий код что лезть в него противно, вкратце там переписывать все придется чтобы достичь того что тебе нужно. В чем проблема с доступом через !admin?
С доступом по флагу, проблем нет. Просто хотелось убрать этот ненужный пункт от лишних глаз. А то начинают баловаться порой…
 

Голос_в_ночи

Племяш Габена
Сообщения
333
Реакции
31
@Голос_в_ночи, флаг там внутри кода изменить можно, по умолчанию ADMIN_KICK вроде стоит
Да говорю же, что с флагом доступа нет проблем) Он и через конфиг меняется) Если пункт убрать и добавить на него команду, это геммор, тогда будем довольствоваться тем что есть…
 

Туник

Участник
Сообщения
1,281
Реакции
263
Нужен плагин с проверкой на вип (Рико)
Если у игрока нет вип привелегии, то его кикнет с причиной, желательно которую я могу сменить на свою.
Готов скинуть за готовый вариант 100ку на киви.
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Нужен плагин с проверкой на вип (Рико)
Если у игрока нет вип привелегии, то его кикнет с причиной, желательно которую я могу сменить на свою.
Готов скинуть за готовый вариант 100ку на киви.
UPD: исправлено. Это уже рабочий вариант:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include vip_core

char szGroup[] = "Gold";                    // Если тут пусто, то кикнет любого игрока, у которого нет VIP. Если тут группа, то кикнет тех випов, у кого её нет
char szReazon[] = "слыш тебе суда нельзя";    // Причина кика

public void VIP_OnClientLoaded(int client, bool bIsVIP)
{
    if(!IsFakeClient(client))
    {
        if(szGroup[0])
        {
            if(bIsVIP)
            {
                char szGroupClient[128];
                
                VIP_GetClientVIPGroup(client, szGroupClient, 128);
                if(VIP_IsValidVIPGroup(szGroup))
                {
                    if(strcmp(szGroupClient, szGroup)) KickClient(client, szReazon);
                }
                else SetFailState("Группы \"%s\" не существует. Впишите корректное название!", szGroup);
            }
        }
        else
        {
            if(!bIsVIP) KickClient(client, szReazon);
        }
    }
}
 
Последнее редактирование:

Туник

Участник
Сообщения
1,281
Реакции
263
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include vip_core

char szGroup[] = "Gold";                    // Если тут пусто, то кикнет любого игрока, у которого нет VIP. Если тут группа, то кикнет тех випов, у кого её нет
char szReazon[] = "слыш тебе суда нельзя";    // Причина кика

public void OnClientPostAdminCheck(int client)
{
    if(!IsFakeClient(client))
    {
        if(szGroupClient[0])
        {
            if(VIP_IsClientVIP(client))
            {
                char szGroupClient[128];
               
                VIP_GetClientVIPGroup(client, szGroupClient, 128);
                if(VIP_IsValidVIPGroup(szGroupClient) && strcmp(szGroupClient, szGroup)) KickClient(client, szReazon);
            }
        }
        else
        {
            if(!VIP_IsClientVIP(client)) KickClient(client, szReazon);
        }
    }
}
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : error 017: undefined symbol "szGroupClient"
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : warning 215: expression has no effect
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : error 001: expected token: ";", but found "]"
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : error 029: invalid expression, assumed zero
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : fatal error 190: too many error messages on one line
Ошибка при компиляции
 

Ganter1234

Участник
Сообщения
1,149
Реакции
667
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : error 017: undefined symbol "szGroupClient"
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : warning 215: expression has no effect
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : error 001: expected token: ";", but found "]"
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : error 029: invalid expression, assumed zero
// C:\Users\╥шьєЁ\Desktop\provip.sp(13) : fatal error 190: too many error messages on one line
Ошибка при компиляции
Замени szGroupClient[0] на szGroup[0]
 

Туник

Участник
Сообщения
1,281
Реакции
263
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include vip_core

char szGroup[] = "Gold";                    // Если тут пусто, то кикнет любого игрока, у которого нет VIP. Если тут группа, то кикнет тех випов, у кого её нет
char szReazon[] = "слыш тебе суда нельзя";    // Причина кика

public void OnClientPostAdminCheck(int client)
{
    if(!IsFakeClient(client))
    {
        if(szGroupClient[0])
        {
            if(VIP_IsClientVIP(client))
            {
                char szGroupClient[128];
               
                VIP_GetClientVIPGroup(client, szGroupClient, 128);
                if(VIP_IsValidVIPGroup(szGroupClient) && strcmp(szGroupClient, szGroup)) KickClient(client, szReazon);
            }
        }
        else
        {
            if(!VIP_IsClientVIP(client)) KickClient(client, szReazon);
        }
    }
}
Напиши номер киви в личку!
Сообщения автоматически склеены:

Замени szGroupClient[0] на szGroup[0]
сделал теперь не пускает на сервер, хотя вип есть
 
Последнее редактирование:
Сверху Снизу