Тогда самый оптимальный вариант для твоего дрифт-сервера, это:
К переменным:
#define MAX_TOP_PLAYERS 20
new timer_top;
new top_list[MAX_TOP_PLAYERS ];
в public OnGameModeInit
Код
if(timer_top != -1)
{
KillTimer(timer_top);
timer_top = -1;
}
timer_top = SetTimer("Func_top", 60000, true);
for(new i = 0; i<MAX_TOP_PLAYERS ; i++) top_list[i] = -1;
в public OnGameModeExit
Код
if(timer_top != -1)
{
KillTimer(timer_top);
timer_top = -1;
}
в конец мода (желательно):
Код
forward Func_top();
public Func_top()
{
new player = GetPlayerPoolSize();
for(new i = 0; i<player; i++)
{
if(!IsPlayerConnected(i)) continue;
else if(Login[i] != true) continue;
for(new d = 0; d<MAX_TOP_PLAYERS ; d++)
{
if(top_list[d] != -1)
{
if(Money[i] > Money[top_list[d]])
{
for(new t = d; t< MAX_TOP_PLAYERS ; t++)
{
if(t != (MAX_TOP_PLAYERS -1))
{
top_list[t+1] = top_list[t];
}
else top_list[d] = i;
}
}
}
else if(Money[i] > 0)
{
top_list[d] = i;
break;
}
}
}
return 1;
}
не знаю, какой у тебя движок команд и есть ли он вообще, но просмотр сделать примерно так:
Код
new string[951],
strformat[38];
for(new i = 0; i<MAX_TOP_PLAYERS ; i++)
{
if(top_list[i] != -1)
{
if(!IsPlayerConnected(top_list[i])) continue;
format(strformat, sizeof(strformat), "%s\t%i\n", Проверка на ник, top_list[i]);
strcat(string, strformat);
}
}
if(strlen(string)) ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX , "Список лидеров по деньгам", string, "Закрыть", ""):
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX , "Список лидеров по деньгам", "Нет лидеров", "Закрыть", ""):
Где 60000 = 10 минут, обновление списка раз в 10 минут. Можешь поставить 1000 - раз в секунду или сколько тебе нужно.
Money = переменная хранения денег игрока, вставляй свою.
Login = проверка на авторизацию, ставь свою.
MAX_TOP_PLAYERS = ставь количество, которое тебе нужно. Это количество игроков в топе.
По такому же принципу можешь создать список дрифтеров.
Пишу на сайте, возможны ошибки, так что бери лишь как пример для осмысления.