Вопрос такой:
Плагин рангов считает опыт на основе статы (kill/hs kill)
Например я набил ровное количество опыта Опыт: [20/40][+40] и покинул сервер.
Захожу на сервер и в информере вижу Опыт: [21/40][+39] Каким то чудом мне дали +1 exp
Как исправить эту ситуацию??
Получение опыта при заходе на сервер:
Делал даже как в aes через Float но тоже наблюдал баг с +1 exp
Плагин рангов считает опыт на основе статы (kill/hs kill)
Например я набил ровное количество опыта Опыт: [20/40][+40] и покинул сервер.
Захожу на сервер и в информере вижу Опыт: [21/40][+39] Каким то чудом мне дали +1 exp
Как исправить эту ситуацию??
Получение опыта при заходе на сервер:
Код:
get_exp_for_stats(st[8])
{
st[0] = st[0] - st[2]
new exp_num = (st[0] * get_pcvar_num(g_Cvar[1])) + (st[2] * get_pcvar_num(g_Cvar[2]))
return exp_num
}
public load_client_data(index)
{
new id = index - 777
if (!get_bit(g_Connected, id)) return
new st[8], bh[8]
get_user_stats(id, st, bh)
UserData[id][exp] = get_exp_for_stats(st)
for (new i = 0; i < 21; i ++)
{
if (i < 21)
{
if (UserData[id][exp] >= LEVELS[i] && UserData[id][exp] < LEVELS[i +1])
UserData[id][level] = i
else if (UserData[id][exp] >= LEVELS[21])
UserData[id][level] = 21
}
}
}
Код:
Float:get_exp_for_stats(st[8])
{
st[0] = st[0] - st[2]
new Float:exp_num = (float(st[0]) * get_pcvar_float(g_Cvar[1])) + (float(st[2]) * get_pcvar_float(g_Cvar[2]))
return exp_num
}
public load_client_data(index)
{
new id = index - 777
if (!get_bit(g_Connected, id)) return
new st[8], bh[8]
get_user_stats(id, st, bh)
UserData[id][exp] = floatround(get_exp_for_stats(st), floatround_round)
for (new i = 0; i < 21; i ++)
{
if (i < 21)
{
if (UserData[id][exp] >= LEVELS[i] && UserData[id][exp] < LEVELS[i +1])
UserData[id][level] = i
else if (UserData[id][exp] >= LEVELS[21])
UserData[id][level] = 21
}
}
}