Chciałbym usunąć część kodu, która odpowiada za sprawdzanie i zmianę rate po stronie gracza.
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Poprawne rate"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"
new bool:timetocheck[33]
new c_minrate, c_minupdaterate, c_maxinterp, c_say, g_minrate, g_minupdaterate, Float:g_maxinterp, g_say
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("sv_minclrate", "20000")
c_minupdaterate = register_cvar("sv_minclupdaterate", "45")
c_maxinterp = register_cvar("sv_maxclniterp", "0.05")
c_say = register_cvar("sv_informcl", "1")
cache_cvars()
}
public client_connect(id)
{
timetocheck[id] = false
}
public client_spawn(id)
{
static updaterate[6], rate[6]
get_user_info(id, "cl_updaterate", updaterate, 5)
get_user_info(id, "rate", rate, 5)
if(str_to_num(updaterate) < g_minupdaterate)
{
client_cmd(id, "cl_updaterate %d", g_minupdaterate)
if(g_say)
{
client_print(id, 3, "[AMXX] Twoje ustawienie `cl_updaterate` bylo zbyt niskie, zostalo ustawione na %d", g_minupdaterate)
}
}
if(str_to_num(rate) < g_minrate)
{
client_cmd(id, "rate %d", g_minrate)
if(g_say)
{
client_print(id, 3, "[AMXX] Twoje ustawienie `rate` bylo zbyt niskie, zostalo ustawione na %d", g_minrate)
}
}
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 )
if(float(value) / 1000.0 > g_maxinterp + 0.005) // maly fix
{
client_cmd(id, "ex_interp %0.2f", g_maxinterp)
if(g_say)
{
client_print(id, 3, "[AMXX] Twoje ustawienie `ex_interp` bylo zbyt wysokie, zostalo ustawione na %0.2f", g_maxinterp)
}
}
timetocheck[id] = false
}
}
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)
}
Osobiście tak to zrobiłem, lecz nie wiem czy dobrze
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Poprawne rate"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"
new bool:timetocheck[33]
new c_maxinterp, c_say, Float:g_maxinterp, g_say
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_maxinterp = register_cvar("sv_maxclniterp", "0.03")
c_say = register_cvar("sv_informcl", "1")
cache_cvars()
}
public client_connect(id)
{
timetocheck[id] = false
}
public client_cmdstart(id, uc_handle, seed)
{
if(timetocheck[id])
{
static value
value = get_uc( uc_handle, UC_LerpMsec )
if(float(value) / 1000.0 > g_maxinterp + 0.005) // maly fix
{
client_cmd(id, "ex_interp %0.2f", g_maxinterp)
if(g_say)
{
client_print(id, 3, "[AMXX] Twoje ustawienie `ex_interp` bylo zbyt wysokie, zostalo ustawione na %0.2f", g_maxinterp)
}
}
timetocheck[id] = false
}
}
public cache_cvars()
{
g_maxinterp = get_pcvar_float(c_maxinterp)
g_say = get_pcvar_num(c_say)
}
Pozdrawiam!