Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Система топ-листа с убийствами (Foreach + MYSQL)

Alex Westbrook

Специалист
Всем привет, сейчас решил выложить систему Top для вашего сервера.

Если у вас есть небольшие знания в pawn, то вы с легкостью сможете переделать ее под уровень / кол-во EXP / или-же по какому-то другому критерию

Итак, начнем...

Ко всем макросам:
PHP:
#define dgnull      9999
Предположим, что вы имеете меню, тогда, мы прописываем после всех пунктов:
PHP:
case NUMBER: mysql_function_query(handle, "SELECT `Name`, `Kills` FROM `accounts` ORDER BY `Kills` DESC LIMIT 10", true, "top_player", "d", playerid); //Место NUMBER - укажите ID ячейки в ListItem (case - если меню на CASE)

//Если-же меню на if(listitem), то тогда:
if(listitem == NUMBER) mysql_function_query(handle, "SELECT `Name`, `Kills` FROM `accounts` ORDER BY `Kills` DESC LIMIT 10", true, "top_player", "d", playerid); //Место NUMBER - укажите ID ячейки в ListItem
Далее, если-же у вас нет меню, или-же вы хотите сделать аналог, но на команде, то сделайте в после всех команд:
PHP:
CMD:top(playerid)
{
    mysql_function_query(handle, "SELECT `Name`, `Kills` FROM `accounts` ORDER BY `Kills` DESC LIMIT 10", true, "top_player", "d", playerid); //Handle - подключение к mySQL, а SELECT.. - ваш запрос.
    return 1;
}
далее, мы идем ко всем STOCK и создаем следующее:
PHP:
public top_player(playerid)
{   
    new r[2];    
    cache_get_data(r[0], r[1]);
    if(r[0])
    {
        new fulldialog[3000], str[200];        
        fulldialog = "{ffffff}Место\tУбийств\t  {FF9900}Ник\n\n";
        for(new i = 0; i < r[0]; i++)
        {                
            new name[MAX_PLAYER_NAME];                
            cache_get_field_content(i, "Name", name, handle, MAX_PLAYER_NAME);
            new id = GetPlayerID(name);
            if(IsPlayerConnected(id) && Logged[id]) format(str, sizeof str, "{ffffff}%d\t %d\t  {FF9900}%s\n",i+1, PlayerInfo[id][pKills], name); //
            else format(str, sizeof str, "{ffffff}%d\t %d\t  {FF9900}%s\n",i+1, cache_get_field_content_int(i, "Kills", handle), name);
            strcat(fulldialog, str);
        }
        ShowPlayerDialog(playerid, dgnull, DIALOG_STYLE_MSGBOX, "Топ 10 Игроков", fulldialog, "Готово", "");
    }    
    return 1;
}
Далее создаем еще один сток:
PHP:
stock GetPlayerID(Names[])
{
    foreach(new i:Player)
    {
        if(!strcmp(Names, PlayerInfo[i][pName])) return i;
    }    
    return -1;
}
Пожалуй все :) Сорян за табуляцию, слетела после создания темы ...
 
Последнее редактирование:
Сверху Снизу