Подскажите теорию,можно конечно и пример с объяснением,в общем хочу сделать топ игроков,допустим по количеству очков(скор),но вот пока так и не могу понять как это сделать :с
Вид для печати
Подскажите теорию,можно конечно и пример с объяснением,в общем хочу сделать топ игроков,допустим по количеству очков(скор),но вот пока так и не могу понять как это сделать :с
Ну, цикл игроков на сервере, отсеивание игроков у которых лвл например меньше 3, остальных выводи в чат или например в диалог.
Ну вот пример. Должно работать, по идее :)
UPD: Немного подредактировал. Не учёл то, что если первым в списке игроков будет игрок с большим количеством Score, его запишет во все переменные :D Если не будет работать, опиши подробно как и что работает не так. ИсправимPHP код:
Удалено. Смотреть ответы ниже
А таблица будет обновляться на 1 игрока?
http://ihost.pro-pawn.ru/image.php?dt=R7UZ
Нашёл ошибку. Вот подправленный вариант
PHP код:
stock Top10(playerid)
{
new TopPlayers[2][10];
for(new i; i < 10; i++) TopPlayers[1][i] = INVALID_PLAYER_ID;
for(new i, a, score, o, slots = GetMaxPlayers(); i < slots; i++)
{
if(!IsPlayerConnected(i) || (score = GetPlayerScore(i)) < TopPlayers[0][a]) continue;
for(new j; j < 10; j++)
{
if(TopPlayers[1][j] == TopPlayers[1][a] && TopPlayers[1][a] != INVALID_PLAYER_ID)
{
o = 1;
break;
}
else if(TopPlayers[1][j] == TopPlayers[1][a] && TopPlayers[1][a] == INVALID_PLAYER_ID) break;
}
if(o == 1)
{
o = 0;
continue;
}
else
{
TopPlayers[0][a] = score;
TopPlayers[1][a] = i;
a++;
}
}
new string[(53+24+2+3+11)*10], PlayerName[MAX_PLAYER_NAME];
for(new i; i < 10; i++)
{
if(TopPlayers[1][i] == INVALID_PLAYER_ID) format(string, sizeof(string), "%s{c0c0c0}%d место: {FFFFFF}Не обнаружено\n\n", string, i+1);
else
{
GetPlayerName(TopPlayers[1][i], PlayerName, MAX_PLAYER_NAME);
format(string, sizeof(string), "%s{c0c0c0}%d место: {FFFFFF}%s [ID: %d]. Score = %d\n\n", string, i+1, PlayerName, TopPlayers[1][i], TopPlayers[0][i]);
}
}
return ShowPlayerDialog(playerid, 6666, DIALOG_STYLE_MSGBOX, "Топ 10", string, "Закрыть", "");
}
а разница? GetPlayerScore(i) -это вроде функция узнающая score игрока,во время гонки все дрифт очки идут в score игрока,так что без разницы указать переменную или функцию,ну и все ровно и так и так у меня пустой список,а суть предыдущего вопроса в том что если я буду один(без других игроков) в список я должен буду выйти или обязательно что-бы кто-то еще был?
Эм ну у меня как-то так:
При "дрифте"
узнаем очки игрока(score)-записываем в переменную
очки набранные во время дрифта - запишем в переменную
1 переменную сложем со 2 переменной (1+2) - все это в переменную 3
выдадим очки игроку функцией SetPlayerScore кол-во очков берем из 3 переменной
как-то так