Ошибка в плагине

DanZa

Участник
Сообщения
82
Реакции
11
Всем привет, плагин изменяет сообщения входа за команду и на сервер, попробовал убрать любое упоминание о ip, плагин скомпилился, но с этими ошибками
// C:\Users\kvolo\Desktop\scripting\sm_ca.sp(33) : warning 217: loose indentation
// C:\Users\kvolo\Desktop\scripting\sm_ca.sp(34) : warning 217: loose indentation
А в консоли сервера начинает этим спамить
L 07/01/2023 - 13:18:23: [SM] Exception reported: String formatted incorrectly - parameter 5 (total 4)
L 07/01/2023 - 13:18:23: [SM] Blaming: sm_ca.smx
L 07/01/2023 - 13:18:23: [SM] Call stack trace:
L 07/01/2023 - 13:18:23: [SM] [0] Format
L 07/01/2023 - 13:18:23: [SM] [1] Line 50, C:\Users\kvolo\Desktop\scripting\sm_ca.sp::event_PlayerConn

Можете пожалуйста посмотреть что я упустил, хотя плагин работает нормально, но этот спам в консоли пугает

Код:
#include <sourcemod>
new String:teams[3][] = {"\x04 Спостерігачів","\x04 Терористів \x01","\x04 Спецназ \x01"}
 
public Plugin:myinfo =   
{
    name = "[KDLP] Game Events", 
    author = "KorDen", 
    description = "", 
    version = "1.0", 
    url = "css32.ru" 
}
public OnPluginStart() 
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}
//GameEvents Begin
public Action:event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client=GetClientOfUserId(GetEventInt(event, "userid"))
    if (!dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent") && IsClientConnected(client))
    {
        SetEventBroadcast(event, true);
        PrintToChatAll("\x04[\x01UA\x04] \x04%N \x01зайшов за \x04%s ",client,teams[GetEventInt(event,"team")-1]);
    }
}
public Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast)
        SetEventBroadcast(event, true);
    decl String:rawmsg[255];
    decl String:rawadmmsg[255];
    decl String:steam[24];
    decl String:nick[48];
    decl String:reason[192];
    GetEventString(event, "networkid", steam, sizeof(steam));
    GetEventString(event, "name", nick, sizeof(nick));
    if (strcmp(name,"player_connect")) 
    {
        new client=GetClientOfUserId(GetEventInt(event,"userid"))
        if(client<1) return;
        GetEventString(event, "reason", reason, sizeof(reason));
        ReplaceString(reason, sizeof(reason), "\n", " ");
        Format(rawadmmsg,sizeof(rawadmmsg),"\x04[\x01UA\x04] \x04%s \x03| \x04%s \x01відключився", nick);
        Format(rawmsg,sizeof(rawmsg),"\x04[\x01UA\x04] \x04%s \x03| \x04%s \x01 відключився - \x04%s", nick, reason);
    }
    else
    {     
          Format(rawadmmsg,sizeof(rawadmmsg), "\x04[\x01UA\x04] \x04%s \x03| \x04%s \x01підключився", nick);
        Format(rawmsg,sizeof(rawmsg), "\x04[\x01UA\x04] \x04%s \x03вступає в гру", nick)
    }
    
    for (new i = 1; i <= MaxClients; i++)
        if(IsClientConnected(i) && IsClientInGame(i))
            if (GetUserFlagBits(i))
                PrintToChat(i, "%s", rawadmmsg);
            else
                PrintToChat(i, "%s", rawmsg);
}
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Всем привет, плагин изменяет сообщения входа за команду и на сервер, попробовал убрать любое упоминание о ip, плагин скомпилился, но с этими ошибками
// C:\Users\kvolo\Desktop\scripting\sm_ca.sp(33) : warning 217: loose indentation
// C:\Users\kvolo\Desktop\scripting\sm_ca.sp(34) : warning 217: loose indentation
Ни одной ошибки не вижу и раскрою секрет их тут нет. Это предупреждения о потери табуляции

А в коде на 50-й строке 2 тега для форматирования, а аргумент 1
 

DanZa

Участник
Сообщения
82
Реакции
11
Ни одной ошибки не вижу и раскрою секрет их тут нет. Это предупреждения о потери табуляции

А в коде на 50-й строке 2 тега для форматирования, а аргумент 1
Код:
#include <sourcemod>
new String:teams[3][] = {"\x04 Спостерігачів","\x04 Терористів \x01","\x04 Спецназ \x01"}
 
public Plugin:myinfo =   
{
    name = "[KDLP] Game Events",
    author = "KorDen",
    description = "",
    version = "1.0",
    url = "css32.ru"
}
public OnPluginStart()
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}
//GameEvents Begin
public Action:event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client=GetClientOfUserId(GetEventInt(event, "userid"))
    if (!dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent") && IsClientConnected(client))
    {
        SetEventBroadcast(event, true);
        PrintToChatAll("\x04[\x01UA\x04] \x04%N \x01зайшов за \x04%s ",client,teams[GetEventInt(event,"team")-1]);
    }
}
public Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast)
        SetEventBroadcast(event, true);
    decl String:rawmsg[255];
    decl String:steam[24];
    decl String:nick[48];
    decl String:reason[192];
    GetEventString(event, "networkid", steam, sizeof(steam));
    GetEventString(event, "name", nick, sizeof(nick));
    if (strcmp(name,"player_connect"))
    {
        new client=GetClientOfUserId(GetEventInt(event,"userid"))
        if(client<1) return;
        GetEventString(event, "reason", reason, sizeof(reason));
        ReplaceString(reason, sizeof(reason), "\n", " ");
        Format(rawmsg,sizeof(rawmsg),"\x04[\x01UA\x04] \x04%s \x03| \x04%s \x01 відключився - \x04%s", nick, reason);
    }
    else
    {     
        Format(rawmsg,sizeof(rawmsg), "\x04[\x01UA\x04] \x04%s \x03вступає в гру", nick)
    }
    
    for (new i = 1; i <= MaxClients; i++)
        if(IsClientConnected(i) && IsClientInGame(i))
            if (GetUserFlagBits(i))
                PrintToChat(i, "%s", rawmsg);
}
Так правильно?
Сообщения автоматически склеены:

Код:
#include <sourcemod>
new String:teams[3][] = {"\x04 Спостерігачів","\x04 Терористів \x01","\x04 Спецназ \x01"}
 
public Plugin:myinfo =  
{
    name = "[KDLP] Game Events",
    author = "KorDen",
    description = "",
    version = "1.0",
    url = "css32.ru"
}
public OnPluginStart()
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}
//GameEvents Begin
public Action:event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client=GetClientOfUserId(GetEventInt(event, "userid"))
    if (!dontBroadcast && !GetEventBool(event,"disconnect") && !GetEventBool(event,"silent") && IsClientConnected(client))
    {
        SetEventBroadcast(event, true);
        PrintToChatAll("\x04[\x01UA\x04] \x04%N \x01зайшов за \x04%s ",client,teams[GetEventInt(event,"team")-1]);
    }
}
public Action:event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast)
        SetEventBroadcast(event, true);
    decl String:rawmsg[255];
    decl String:steam[24];
    decl String:nick[48];
    decl String:reason[192];
    GetEventString(event, "networkid", steam, sizeof(steam));
    GetEventString(event, "name", nick, sizeof(nick));
    if (strcmp(name,"player_connect"))
    {
        new client=GetClientOfUserId(GetEventInt(event,"userid"))
        if(client<1) return;
        GetEventString(event, "reason", reason, sizeof(reason));
        ReplaceString(reason, sizeof(reason), "\n", " ");
        Format(rawmsg,sizeof(rawmsg),"\x04[\x01UA\x04] \x04%s \x03| \x04%s \x01 відключився - \x04%s", nick, reason);
    }
    else
    {    
        Format(rawmsg,sizeof(rawmsg), "\x04[\x01UA\x04] \x04%s \x03вступає в гру", nick)
    }
   
    for (new i = 1; i <= MaxClients; i++)
        if(IsClientConnected(i) && IsClientInGame(i))
            if (GetUserFlagBits(i))
                PrintToChat(i, "%s", rawmsg);
}
Так правильно?
То есть я убрал всё что касается ip и убрал rawadmmsg, rawadmmsg отвечает за отправку сообщений админам?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
C-подобный:
#pragma semicolon 1

new const
    String:TEAMS[][]= {"Спостерігачів", "Терористів", "Спецназ"},
    String:PREFIX[]    = "\x04[\x01UA\x04] ";

public Plugin:myinfo =
{
    name = "[KDLP] Game Events",
    author = "KorDen",
    version = "1.0_lite_ua",
    url = "css32.ru"
}

public OnPluginStart()
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}

public event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent"))
        return;

    new team = GetEventInt(event,"team");
    if(team < 1 || sizeof(TEAMS) > team)
        return;

    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if(!client || !IsClientInGame(client))
        return;

    SetEventBroadcast(event, true);
    PrintToChatAll("%s%N \x01зайшов за \x04%s", PREFIX, client, TEAMS[team-1]);
}

public event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast) SetEventBroadcast(event, true);

    decl String:nick[MAX_NAME_LENGTH], String:rawmsg[PLATFORM_MAX_PATH], String:rawadmmsg[PLATFORM_MAX_PATH];
    GetEventString(event, "name", nick, sizeof(nick));

    if(name[7] == 'd')
    {
        decl String:reason[192];
        GetEventString(event, "reason", reason, sizeof(reason));
        ReplaceString(reason, sizeof(reason), "\n", " ");
        FormatEx(rawadmmsg, sizeof(rawadmmsg),"%s \x01відключився - \x04%s", nick, reason);
        FormatEx(rawmsg, sizeof(rawmsg),"%s \x01відключився", nick);
    }
    else
    {
        FormatEx(rawadmmsg, sizeof(rawadmmsg), "%s \x01підключився", nick);
        FormatEx(rawmsg, sizeof(rawmsg), "%s \x03вступає в гру", nick);
    }

    for(new i = 1; i <= MaxClients; i++)
        if(IsClientInGame(i) && (!IsFakeClient(i) || IsClientReplay(i) || IsClientSourceTV(i)))
            PrintToChat(i, "%s%s", PREFIX, GetUserFlagBits(i) ? rawadmmsg : rawmsg);
}
 

DanZa

Участник
Сообщения
82
Реакции
11
C-подобный:
#pragma semicolon 1

new const
    String:TEAMS[][]= {"Спостерігачів", "Терористів", "Спецназ"},
    String:PREFIX[]    = "\x04[\x01UA\x04] ";

public Plugin:myinfo =
{
    name = "[KDLP] Game Events",
    author = "KorDen",
    version = "1.0_lite_ua",
    url = "css32.ru"
}

public OnPluginStart()
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}

public event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent"))
        return;

    new team = GetEventInt(event,"team");
    if(team < 1 || sizeof(TEAMS) > team)
        return;

    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if(!client || !IsClientInGame(client))
        return;

    SetEventBroadcast(event, true);
    PrintToChatAll("%s%N \x01зайшов за \x04%s", PREFIX, client, TEAMS[team-1]);
}

public event_PlayerConn(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (!dontBroadcast) SetEventBroadcast(event, true);

    decl String:nick[MAX_NAME_LENGTH], String:rawmsg[PLATFORM_MAX_PATH], String:rawadmmsg[PLATFORM_MAX_PATH];
    GetEventString(event, "name", nick, sizeof(nick));

    if(name[7] == 'd')
    {
        decl String:reason[192];
        GetEventString(event, "reason", reason, sizeof(reason));
        ReplaceString(reason, sizeof(reason), "\n", " ");
        FormatEx(rawadmmsg, sizeof(rawadmmsg),"%s \x01відключився - \x04%s", nick, reason);
        FormatEx(rawmsg, sizeof(rawmsg),"%s \x01відключився", nick);
    }
    else
    {
        FormatEx(rawadmmsg, sizeof(rawadmmsg), "%s \x01підключився", nick);
        FormatEx(rawmsg, sizeof(rawmsg), "%s \x03вступає в гру", nick);
    }

    for(new i = 1; i <= MaxClients; i++)
        if(IsClientInGame(i) && (!IsFakeClient(i) || IsClientReplay(i) || IsClientSourceTV(i)))
            PrintToChat(i, "%s%s", PREFIX, GetUserFlagBits(i) ? rawadmmsg : rawmsg);
}
Всё, работает без ошибок, спасибо вам))
 

Mr_Incognito

Участник
Сообщения
194
Реакции
14
Подскажите пожалуйста как исправить эти ошибку?
L 07/19/2023 - 03:24:50: SourceMod error session started
L 07/19/2023 - 03:24:50: Info (map "aim_texture_city_advanced_go") (file "/home/server51217/game/csgo/addons/sourcemod/logs/errors_20230719.log")
L 07/19/2023 - 03:24:50: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 03:24:50: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 03:24:50: [SM] Call stack trace:
L 07/19/2023 - 03:24:50: [SM] [0] KillTimer
L 07/19/2023 - 03:24:50: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 03:30:31: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 03:30:31: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 03:30:31: [SM] Call stack trace:
L 07/19/2023 - 03:30:31: [SM] [0] KillTimer
L 07/19/2023 - 03:30:31: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 03:49:35: Error log file session closed.
L 07/19/2023 - 08:54:06: SourceMod error session started
L 07/19/2023 - 08:54:06: Info (map "awp_lego_2019") (file "/home/server51217/game/csgo/addons/sourcemod/logs/errors_20230719.log")
L 07/19/2023 - 08:54:06: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 08:54:06: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 08:54:06: [SM] Call stack trace:
L 07/19/2023 - 08:54:06: [SM] [0] KillTimer
L 07/19/2023 - 08:54:06: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 09:00:13: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 09:00:13: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 09:00:13: [SM] Call stack trace:
L 07/19/2023 - 09:00:13: [SM] [0] KillTimer
L 07/19/2023 - 09:00:13: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 09:19:24: Error log file session closed.
 

Вложения

  • WCS_ult_illusion.sp
    2.6 КБ · Просмотры: 3

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Подскажите пожалуйста как исправить эти ошибку?
L 07/19/2023 - 03:24:50: SourceMod error session started
L 07/19/2023 - 03:24:50: Info (map "aim_texture_city_advanced_go") (file "/home/server51217/game/csgo/addons/sourcemod/logs/errors_20230719.log")
L 07/19/2023 - 03:24:50: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 03:24:50: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 03:24:50: [SM] Call stack trace:
L 07/19/2023 - 03:24:50: [SM] [0] KillTimer
L 07/19/2023 - 03:24:50: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 03:30:31: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 03:30:31: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 03:30:31: [SM] Call stack trace:
L 07/19/2023 - 03:30:31: [SM] [0] KillTimer
L 07/19/2023 - 03:30:31: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 03:49:35: Error log file session closed.
L 07/19/2023 - 08:54:06: SourceMod error session started
L 07/19/2023 - 08:54:06: Info (map "awp_lego_2019") (file "/home/server51217/game/csgo/addons/sourcemod/logs/errors_20230719.log")
L 07/19/2023 - 08:54:06: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 08:54:06: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 08:54:06: [SM] Call stack trace:
L 07/19/2023 - 08:54:06: [SM] [0] KillTimer
L 07/19/2023 - 08:54:06: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 09:00:13: [SM] Exception reported: Invalid timer handle 0 (error 4)
L 07/19/2023 - 09:00:13: [SM] Blaming: WCS/WCS_ult_illusion.smx
L 07/19/2023 - 09:00:13: [SM] Call stack trace:
L 07/19/2023 - 09:00:13: [SM] [0] KillTimer
L 07/19/2023 - 09:00:13: [SM] [1] Line 29, D:\Server CSS\SM 1.10\addons\sourcemod\scripting\WCS_ult_illusion.sp::round_end
L 07/19/2023 - 09:19:24: Error log file session closed.
Правильно и в нужное время убивать таймер
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
как исправить эти ошибку?
судя по коду нужно поменять местами строки Timer1[i] = INVALID_HANDLE; и KillTimer(Timer1[i]); в round_end(): автор сначала удаляет ссылку на таймер, а потом по удалённой ссылке пытается удалить таймер. 🤷‍♂️

UPD И тоже самое сделать в OnClientDisconnect()

Что-то мне этот код кажется знакомым, как будто я такое уже переписывал когда-то давно.
Сообщения автоматически склеены:

И да: создание таймера нужено вынести из цикла и поместить после него: вместо одного таймера создаётся 15 на каждого игрока.
А запоминается только один.

Я точно такой говнокод когда-то исправлял. Такое говнище забыть нелегко. 😏
Сообщения автоматически склеены:

@Mr_Incognito, вот держи полностью исправленный код (убрал из него всё лишнее, пофиксил таймеры и удаление иллюзий, добавил проверку аргументов).
 

Вложения

  • WCS_ult_illusion 1.1_fix.sp
    2.9 КБ · Просмотры: 4
Последнее редактирование:
Сверху Снизу