Sign in to follow this  
Followers 0
DEST

Выдача ранга не цифрой, а названием

2 posts in this topic

Добрый день, уважаемый читатель! Сегодня я представлю твоему вниманию систему выдачи ранга НЕ по номеру ранга, а по названию. Пример: /giverank [id] [Врач СМП]. 

Итак, думаю можно уже начинать. 

ВНИМАНИЕ! Пишу команды на zcmd / dc_cmd + sscanf. 

Ко всем #define:

//settings 
#define RANK(%0)	/*своя переменная ранга игрока из енума, например: PlayerInfo[%0][pRank] */
#define MEMBER(%0)	/*своя переменная фракции игрока из енума, например: PlayerInfo[%0][pMember] */

Ко всем командам:
 

CMD:giverank(playerid, params[])
{
    //ваша проверка на фракцию, ранг и прочее
    if(sscanf(params, "us[32]", params[0], params[1])) return SendClientMessage(playerid, -1, "Используйте: /giverank [id/часть ника/ник] [Название ранга (до 32 символов)");
    if(strlen(params[1]) == 0 || strlen(params[1]) > 32) return SendClientMessage(playerid, -1, "Разрешенное название от 0 до 32 символов и не более!");
    if(MEMBER[playerid] != MEMBER[params[0]]) return SendClientMessage(playerid, -1, "Игрок не состоит в вашей фракции!");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(params[0], name, sizeof(name));
    static const fmt_str[] = "Игроку %s изменен ранг с %s на %s";
    new str[sizeof(fmt_str) + (-2+24) + (-2+32) + (-2+32)];
    format(str, sizeof(str), fmt_str, name, RANK[params[0]], params[1]);
    strmid(RANK[params[0]], params[1], 0, strlen(params[1]), sizeof(RANK[params[0]]);
    SendClientMessage(playerid, -1, str);
    SendClientMessage(params[0], -1, str);
    return true;
}

Переменную в енуме поменять необходимо из целочисленного типа, в тип строчный. 

Например, было так:
 

pRank,

Изменить нужно на это:
 

pRank[32],

Если у вас на файлах, в сохранении поменяйте ini_GetInteger на ini_GetString. 

Если в бд, поменяйте тип с INT на VARCHAR, длину укажите 32. 

Ну и в запросах аналогично смените. Или создайте новую переменную с уже всем измененным. 

Автор: @vlad

Если у вас возникнут какие-либо вопросы, не стесняйтесь, задавайте их в эту тему, <ИЛИ> создавайте новую. 

 

Share this post


Link to post
Share on other sites

Система хорошая в общем, но следует добавить, что если у вас в моде команды, например, по рангу доступны (номеру), то придется все переделывать, или же просто создать новую переменную под название и в рации уже использовать ее. Лично мое предложение. 

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • E)/(IK
      By E)/(IK
      В моде Only RolePlay можно создать всего 612 машин,для сервера мне надо  700. Так как я буду добавлять в игру их. Просто нужно мне узнать,как сделать так,чтобы больше машин можно было спавинть. После написания команды /veh 613 0 0 пишет введите /veh [ID Машины] [цвет1] [цвет2] а если вводить меньше то все работает.
    • NNN
      By NNN
      Поставил эту http://pawno-rus.ru/topic/1034-sistema-reporta/ систему репорта со всеми доработками, в компиляторе высвечиваются эти ошибки:
      loose indentation error 017: undefined symbol "AddMessage" warning 215: expression has no effect error 001: expected token: ";", but found "]" error 029: invalid expression, assumed zero fatal error 107: too many error messages on one line первое предупреждение из за корявости скрипта (loose indentation) а вот с остальными не знаю)