I teraz nie wiem co dać jak chce
- wszystkim zmiennym w zakresie zmienil[1-3][id] ustawić 0
- sprawdzić czy któraś zmienna[1-3][id] jest >= 3
Wstawiając zmienil[][id], wyskakuje error przy kompilacji. Trzeba każdą osobno sprawdzać? : ]
Kodzik:
Spoiler
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Poprawne ust." #define VERSION "1.0" #define AUTHOR "Sn!ff3r edt. BotQ" new bool:timetocheck[33], zmienil[4][33]; // zmienil[1][id] - cl_updaterate // zmienil[2][id] - rate // zmienil[3][id] - ex_interp new c_minrate, c_minupdaterate, c_maxinterp, c_say, c_time, c_zmian, c_powod; new g_minrate, g_minupdaterate, Float:g_maxinterp, g_say, g_time, g_zmian; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Spawn, "player", "client_spawn", 1) register_event("HLTV", "cache_cvars", "a", "1=0", "2=0") c_minrate = register_cvar("set_minclrate", "20000") c_minupdaterate = register_cvar("set_clupdaterate", "45") c_maxinterp = register_cvar("set_interp", "0.05") c_say = register_cvar("set_info", "1") c_time = register_cvar("set_time", "10") c_zmian = register_cvar("set_zmian", "3") c_powod = register_cvar("set_powod","Zmiany ustawien") cache_cvars() } public client_connect(id) { timetocheck[id] = false zmienil[][id] = 0 } public client_spawn(id) { static updaterate[6], rate[6] get_user_info(id, "cl_updaterate", updaterate, 5) get_user_info(id, "rate", rate, 5) new nickgracza[32]; get_user_name(id,nickgracza,31); if(str_to_num(updaterate) < g_minupdaterate) { client_cmd(id, "cl_updaterate %d", g_minupdaterate) zmienil[1][id]++; if(g_say) { client_print(0, 3, "[AMXX] %s posiada za niski`cl_updaterate`, zmieniono na %d (%i/%i)", nickgracza, g_minupdaterate, zmienil[1][id], g_zmian) } } if(str_to_num(rate) < g_minrate) { client_cmd(id, "rate %d", g_minrate) zmienil[2][id]++; if(g_say) { client_print(0, 3, "[AMXX] %s posiada za niski `rate`, zmieniono na %d (%i/%i)", nickgracza, g_minrate, zmienil[2][id], g_zmian) } } timetocheck[id] = true static h h = register_forward(FM_CmdStart, "client_cmdstart", 1) set_task(0.01, "unregister", h) } public unregister(h) { unregister_forward(FM_CmdStart, h, 1) } public client_cmdstart(id, uc_handle, seed) { if(timetocheck[id]) { static value; value = get_uc( uc_handle, UC_LerpMsec ); new nickgracza[32]; get_user_name(id,nickgracza,31); if(float(value) / 1000.0 > g_maxinterp + 0.005) // maly fix { client_cmd(id, "ex_interp %0.2f", g_maxinterp); zmienil[3][id]++; if(g_say) { client_print(0, print_chat, "[AMXX] %s posiada za wysoki 'ex_interp', zmieniono na %0.2f (%i/%i).", nickgracza, g_maxinterp, zmienil[3][id], g_zmian) } } timetocheck[id] = false if(zmienil[][id] > g_zmian-1) { new JakiPowod[17] get_pcvar_string(c_powod, JakiPowod, 16); server_cmd("amx_ban %i %s ^"%i %s^"", g_time, nickgracza, g_zmian, JakiPowod); client_print(id, 3, "[AMXX] Przekroczony limit zmian (%i/%i)", zmienil[][id], g_zmian) } } } public cache_cvars() { g_minrate = get_pcvar_num(c_minrate); g_minupdaterate = get_pcvar_num(c_minupdaterate); g_maxinterp = get_pcvar_float(c_maxinterp); g_say = get_pcvar_num(c_say); g_zmian = get_pcvar_num(c_zmian); g_time = get_pcvar_num(c_time);}