Прошу проверить sma

Сообщения
23
Реакции
2
Приветствую!
Имеется исходник sma, на наказание игроков к примеру с VALVE_ID_LAN.
Очень не нравятся такие клиенты...
В общем плагин компилировал. Ставил. Но бывает проходит день/два и сервер крашиться без логов.
Убирая этот плагин, падений нет. Прошу знатоков посмотреть код и оценить, есть ли какой то "вред" !

По информации:
Amx 1.8.2
ReHLDS
ReGame
ReApi
Reunion (имеется)
FreshBans

(если еще что нужно, скажите)

Код:
#include <amxmodx>

#define LOG_FILE        "addons/amxmodx/logs/kick_id_players.log"
#define    CONFIG_FILE        "addons/amxmodx/configs/kick_id_players.cfg"

new g_lan,g_valve,g_auto,g_steam,g_logs,g_schat,g_hltv;

public plugin_init(){
    register_plugin("Kick-ID-Players","1.0","Seroff");
    g_lan=register_cvar("kick_lan_id","1");// Выгонять игроков с ID_LAN
    g_auto=register_cvar("kick_auto_cfg","0");// Авто создание конфига
    g_logs=register_cvar("kick_logs","1");// Логи
    g_schat=register_cvar("kick_show_chat","0");// Вывот в чат
    g_valve=register_cvar("kick_valve_id","0");// Кому не нужно игроков с VALVE_ID
    g_hltv=register_cvar("kick_hltv_id","0");// Кому не нужно HLTV
    g_steam=register_cvar("kick_nosteam_players","0");// Кому надо Only Steam
}

public plugin_cfg()
{
    new iAutoCFG=get_pcvar_num(g_auto);
    switch(iAutoCFG)
    {
        case 1:{
            TryConfig();
            server_cmd("exec %s",CONFIG_FILE);
        }
        case 2:{
            if ( file_exists(CONFIG_FILE) ){
                server_cmd("exec %s",CONFIG_FILE);
            }
        }
    }
}

stock TryConfig() {

    if ( file_exists(CONFIG_FILE) )
   
    return false
   
    static line0[]= "// Kick ID Players V1.0 By Seroff"
   
    static line1[]= "kick_lan_id ^"1^" // Выгонять игроков с LAN_ID"
   
    static line2[]= "kick_auto_cfg ^"0^" // Создавать конфиг автоматически или использовать свой, 0 - не использовать свой, 1 - создавать и использовать свой конфиг, 2 - использовать свой конфиг"
   
    static line3[]= "kick_logs ^"1^" // Записовать ли логи?"
   
    static line4[]= "kick_show_chat ^"0^" // Выводить в чат информацию"
   
    static line5[]= "kick_valve_id ^"0^" // Выгонять игроков с VALVE_ID"
   
    static line6[]= "kick_hltv_id ^"0^" // Выгонять HLTV"
   
    static line7[]= "kick_nosteam_players ^"0^" // Выгонять игроков с No Steam"
   
    static line8[]= "echo ^"Kick ID Players Config Executed^""
   
    static line9[]= "// Контактные данные: vk.com/Alena_Game"
   
   
    new CONFIG_SAVE[999]; formatex(CONFIG_SAVE, charsmax(CONFIG_SAVE), "%s^r^n%s^r%s^r%s^r%s^r%s^r%s^r%s^r^n%s^r^n%s", line0, line1, line2, line3, line4, line5, line6, line7, line8, line9)
   
    new F = fopen( CONFIG_FILE , "w" )
   
    fputs( F , CONFIG_SAVE )

    fclose( F )

    return true

}

public client_connect(id){
    new authid[32],userid=get_user_userid(id),name[40];
    get_user_name(id,name,39);
    get_user_authid(id,authid,31);
    if(get_pcvar_num(g_lan)){  
        if(equali(authid,"STEAM_ID_LAN") || equali(authid,"VALVE_ID_LAN"))
        {
            if(get_pcvar_num(g_schat)){
                ShowMsg(0,"!yУ игрока: !g%s !g[!tCS старая!g]!y!",name)
            }
            if(get_pcvar_num(g_logs))
            {
                log_to_file(LOG_FILE,"[Steam ID/VALVE_ID LAN] Player: <%s> | ID : [%s]",name,authid);
            }
            server_cmd("kick #%d ^"Перезайди, либо Смени CS. Твоя Версия CS Устарела!^"", userid);
        }
    }
    if(get_pcvar_num(g_valve)){
        if(containi(authid,"VALVE_ID_0:")!=-1)
        {
            if(get_pcvar_num(g_schat)){
                ShowMsg(0,"!yУ игрока: !g%s !g[!tCS с VALVE_ID!g]!y!",name)
            }
            if(get_pcvar_num(g_logs))
            {
                log_to_file(LOG_FILE,"[VALVE_ID] Player: <%s> | ID : [%s]",name,authid);
            }
            server_cmd("kick #%d VALVE_ID Detected!^"",userid)
        }
    }
    if(!is_user_steam(id)&&get_pcvar_num(g_steam)){
        if(get_pcvar_num(g_schat)){
            ShowMsg(0,"!yУ игрока: !g%s !g[!tCS No Steam!g]!y!",name)
        }
        if(get_pcvar_num(g_logs))
        {
            log_to_file(LOG_FILE,"[NO STEAM] Player: <%s> | ID : [%s]",name,authid);
        }
        server_cmd("kick #%d No Steam, купи Steam CS!^"",userid)
    }
    if(get_pcvar_num(g_hltv))
    {
        if(get_pcvar_num(g_schat)){
            ShowMsg(0,"!yУ игрока: !g%s !g[!tHLTV!g]!y!",name)
        }
        if(get_pcvar_num(g_logs))
        {
            log_to_file(LOG_FILE,"[HLTV] Player: <%s> | ID : [%s]",name,authid);
        }
        server_cmd("kick #%d HLTV!^"",userid)
    }
}


stock bool:is_user_steam(id)
{
// Author Sh0oter
        static dp_pointer
        if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
        {
            server_cmd("dp_clientinfo %d", id)
            server_exec()
            return (get_pcvar_num(dp_pointer) == 2) ? true : false
        }
        return false
}



stock ShowMsg ( const id, const input [ ], any:... )
{
    new count = 1, players [ 32 ]
    static msg [ 188 ]
    vformat ( msg, 187, input, 3 )
   
    replace_all ( msg, 187, "!g", "^4" )
    replace_all ( msg, 187, "!y", "^1" )
    replace_all ( msg, 187, "!t", "^3" )
   
    if ( id ) players [ 0 ] = id; else get_players ( players, count, "ch" )
    {
        for ( new i = 0; i < count; i++ )
        {
            if ( is_user_connected ( players [ i ] ) )
            {
                message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "SayText" ), _, players [ i ] )
                write_byte ( players [ i ] )
                write_string ( msg )
                message_end ( )
            }
        }
    }
}
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
А почему бы просто в конфигурации Reunion это не запретить?
И надобности в плагине не будет, и таких игроков не станет.
cid_SteamPending = 5
cid_NoSteam47 = 5
cid_NoSteam48 = 5
 
Сообщения
23
Реакции
2
Javekson, спасибо за ответ!
Это никак не повлияет на остальных VALVE_ID:.... и STEAM_ID:... ?
Именно нужно избавиться от ID_LAN.
(пока что просто в бан лист через панель добавил VALVE_ID_LAN с указанием причины на смену КС)
Но бывает даже обычные игроки не сразу проходят проверку на идентификацию через Valve и получают бан.
Правда повторный перезаход на сервер обычно исправляет проблему.
10 Фев 2018
Pokemoshka, благодарю.
На других ресурсах такого пояснения подробного не видел. Спасибо, буду пробовать!
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Это никак не повлияет на остальных VALVE_ID:.... и STEAM_ID:... ?
На каких остальных? У Вас останутся играть только игроки с нормальным SteamID

Именно нужно избавиться от ID_LAN.
Настройками выше от этого избавитесь.

Но бывает даже обычные игроки не сразу проходят проверку на идентификацию через Valve и получают бан.
Правда повторный перезаход на сервер обычно исправляет проблему.
Это косяк плагина, от него можно избавиться и проблем с обычными игроками не возникнет.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу