DEST

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

В теме 2 сообщения

Добрый день, уважаемый читатель! Сегодня я представлю твоему вниманию систему выдачи ранга НЕ по номеру ранга, а по названию. Пример: /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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • whccompany
      От whccompany
      Rostov Role Play | Rostov RP | CRMP Mobile Project объявляет набор людей в свою команду: Нам требуются:
       
      1. Маппера:
      Сдельная оплата труда от 250 до 3000 рублей/ за 1 работу
       
      2. Специалист по Text Draw:
      Сдельная оплата труда от 400 до 3500 рублей/ за одну работу
       
      3. Pawn разработчик:
      Заработная плата от 10 000 рублей/месяц
       
      4. Программист для создания лаунчера и сайта UCP с автодонатом:
      Заработная плата от 10 000 рублей/месяц
       
      Контакты для связи:
       
      ВКонтакте
       
      Telegram
       
    • Talex
      От Talex
      Игровой сервер Life Game RolePlay
      Скачать файл Игровой сервер Life Game RolePlay
      Добавил Talex Добавлено 28.01.2024 Категория Моды Автор Неизвестно  
    • Talex
      От Talex
      Игровой сервер Life Game RolePlay
    • Владислав2
      От Владислав2
      Здравствуйте, при компиляции появляется ошибка,

      Ошибка:
      error 017: undefined symbol "REP_KUZIA_TD"

      Строки:
       
          REP_KUZIA_TD[0] = TextDrawCreate(7.499990, 314.444396, "REP: 1");
          TextDrawLetterSize(REP_KUZIA_TD[0], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[0], 1);
          TextDrawColor(REP_KUZIA_TD[0], -1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          TextDrawSetOutline(REP_KUZIA_TD[0], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[0], 255);
          TextDrawFont(REP_KUZIA_TD[0], 1);
          TextDrawSetProportional(REP_KUZIA_TD[0], 1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          REP_KUZIA_TD[1] = TextDrawCreate(6.249957, 330.518493, "ASK: 0");
          TextDrawLetterSize(REP_KUZIA_TD[1], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[1], 1);
          TextDrawColor(REP_KUZIA_TD[1], -1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          TextDrawSetOutline(REP_KUZIA_TD[1], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[1], 255);
          TextDrawFont(REP_KUZIA_TD[1], 1);
          TextDrawSetProportional(REP_KUZIA_TD[1], 1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          return 1;
      }

      Буду рад если кто-то поможет