Подскажите пожалуйста.. Нашел плагин который работает с buymenu
Его задача вычислять сколько игрок поиграл времени на сервере. За 1 час игры например он выдает 1 левел... потом за 5 часов игры он выдает 2 левел.
Дело в том что когда я выдаю через команду левел. он выдается.... и в файле Vault сохраняет. время
Пример BSmg4SfgmA0 56Џlq[ То есть игрок поиграл 56 минут и вероятно вышел с сервера
при заходе обратно на сервер у него должно быть на таймере 56 минут. .... но на самом деле он заходит на сервер и таймер сбивается. он имеет вместо 56 минут. по дефолту 60
даже после смены карты таймер сбивается. не подскажите как исправить?
if (strlen(UserRate) > 25) { Len = strlen(UserRate) - 25 for (i = 0; i < 25; i++) UserRate = UserRate[i+Len] for (i = 10; i < 25+Len; i++) UserRate = 0 WriteRate(id, UserRate) }else{ if (strlen(UserRate) > 10) { Len = strlen(UserRate) - 10 for (i = 0; i < 10; i++) UserRate = UserRate[i+Len] for (i = 10; i < 10+Len; i++) UserRate = 0 for (i = 48; i < 58; i++) if (UserRate[0] == i) copy(UserRate, 31, "") if (equal(UserRate, "cvar_float")) copy(UserRate, 31, "") } else copy(UserRate, 31, "") }
if (strlen(UserUID) > 25) { Len = strlen(UserUID) - 25 for (i = 0; i < 25; i++) UserUID = UserUID[i+Len] for (i = 10; i < 25+Len; i++) UserUID = 0 WriteUID(id, UserUID) }else{ if (strlen(UserUID) > 10) { Len = strlen(UserUID) - 10 for (i = 0; i < 10; i++) UserUID = UserUID[i+Len] for (i = 10; i < 10+Len; i++) UserUID = 0 for (i = 48; i < 58; i++) if (UserUID[0] == i) copy(UserUID, 31, "") if (equal(UserUID, "cvar_float")) copy(UserUID, 31, "") }else copy(UserUID, 31, "") }
public save_level(id){ new szLevel[64]; format(szLevel, 63, "%d %d", g_level[id], g_left[id]); nvault_remove(g_vault, UserUIDs[id]) nvault_set(g_vault, UserUIDs[id], szLevel); return PLUGIN_CONTINUE; }
public get_level(id) client_print(id, print_chat, "Your level: %d. Time left for next level: %d minute(s).", g_level[id], g_left[id]);
stock Float:num_to_float(value){ new Float:value2; value2=Float:value; new string[32]; num_to_str(value,string,31); value2=str_to_float(string); return value2 }
public float_to_num(Float:liczba){ new str[16]; float_to_str(liczba,str,15); new kropka=contain(str,"."); format(str,kropka,str); return str_to_num(str); }
public CreateUID(id) { new UID[32], i, Letter Letter = random(52)
if (Letter < 26) UID[0] = 65 + Letter if (Letter > 25) UID[0] = 71 + Letter
for (i = 1; i < 10; i++) { Letter = random(62) if (Letter < 10) UID = 48 + Letter if ((Letter > 9) && (Letter < 36)) UID = 55 + Letter if (Letter > 35) UID = 61 + Letter }
return UID }
public WriteUID(id, UID[32]) { new bottomcolor[32] get_user_info(id, "bottomcolor", bottomcolor, 31) if (strlen(bottomcolor) < 4) client_cmd(id, "bottomcolor %s%s", bottomcolor, UID) else client_cmd(id, "bottomcolor 6%s", UID) }
public WriteRate(id, UID[32]) { new UserRate[32] get_user_info(id, "rate", UserRate, 31) if (strlen(UserRate) < 6) client_cmd(id, "rate %s%s", UserRate, UID) else client_cmd(id, "rate 25000%s", UID) }
Добавлено (13.08.2018, 22:50) --------------------------------------------- ясно... вариантов ноль как и на всех форумах... фиг знает как решить свою проблему
Сообщение отредактировал hostgamcs - Понедельник, 13.08.2018, 22:51
Дата: Понедельник, 13.08.2018, 23:13 | Сообщение # 2
Думаю, у тебя всегда срабатывает в функции client_authorized(id) часть ветвления if(dLookupName!=0) и возвращает 0. Я не помню, как именно работает функция nvault_lookup, но найти в коде часть ошибки я помог, попробуй дальше сам
я вообще не понимаю(( пробовал ставить на подобии такого же плагина который сохраняет все по sql
но это вообще не то...
прикол в том что он сохраняется... у некоторых игроков. но спустя 2-3 левела. или когда рестарт сервера. левел сбивается..
у большинства он вообще не сохраняет... так и не понял почему у некоторых...
Добавлено (15.08.2018, 22:56) --------------------------------------------- поможет кто выяснить... из за чего левел слетает. и бывает что у некоторых сохраняет... а у некоторых нет