CSX

Статус
В этой теме нельзя размещать новые ответы.

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
686
Симпатии
196
Пол
Мужской
ВКонтакте
e1337ace
Вопрос такой:
Плагин рангов считает опыт на основе статы (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
        }
    }
}
Делал даже как в aes через Float но тоже наблюдал баг с +1 exp
Код:
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
        }
    }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу