Witam,
Chciałbym prosić o dodanie do pluginu poprawne rate zmienionego przez Ossal w temacie:
http://amxx.pl/topic/143209-edycja-poprawne-rate-zamiana-banowania-na-kick/
wymuszania minimalnej wartości oraz możliwości ustawiania tego cvarem jeszcze jednej komendy:
- cl_cmdrate - i tak jak w pozostałych komendach w pluginie żeby było info, zliczanie i zmiana (jeśli mniejsza wartość na tą ustawioną cvarem)
Plugin:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Poprawne ust." #define VERSION "1.0" #define AUTHOR "Sn!ff3r" #define AMXBANS 1 // Edytowane przez BotQ'a 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_zmian, c_powod; new g_minrate, g_minupdaterate, Float:g_maxinterp, g_say, 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_zmian = register_cvar("set_zmian", "3") c_powod = register_cvar("set_powod","Zmiany ustawien") cache_cvars() } public client_connect(id) { timetocheck[id] = false for(new con=0;con<=3;con++) zmienil[con][id] = 0 } public client_disconnect(id) { timetocheck[id] = false for(new con=0;con<=3;con++) zmienil[con][id] = 0 } public client_spawn(id) { if(is_user_hltv(id)) return; 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(is_user_hltv(id)) return; 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 for(new con=0;con<=3;con++) { if(zmienil[con][id] >= g_zmian) { new JakiPowod[17] get_pcvar_string(c_powod, JakiPowod, 16); server_cmd("amx_kick %s ^"%s^"", nickgracza, JakiPowod); switch(zmienil[con][id]) { case 1: client_print(id, 3, "[AMXX] Przekroczony limit zmian `cl_updaterate` (%i/%i).", zmienil[con][id], g_zmian) case 2: client_print(id, 3, "[AMXX] Przekroczony limit zmian `rate` (%i/%i).", zmienil[con][id], g_zmian) case 3: client_print(id, 3, "[AMXX] Przekroczony limit zmian 'ex_interp' (%i/%i).", zmienil[con][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); }