Приветствую!
Имеется исходник sma, на наказание игроков к примеру с VALVE_ID_LAN.
Очень не нравятся такие клиенты...
В общем плагин компилировал. Ставил. Но бывает проходит день/два и сервер крашиться без логов.
Убирая этот плагин, падений нет. Прошу знатоков посмотреть код и оценить, есть ли какой то "вред" !
По информации:
Amx 1.8.2
ReHLDS
ReGame
ReApi
Reunion (имеется)
FreshBans
(если еще что нужно, скажите)
Имеется исходник 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 ( )
}
}
}
}