Перейти к содержанию
Авторизация  
АлексейИванович

Ищу команду для выдачи админки 1 lvl

Рекомендуемые сообщения

АлексейИванович

Помогите пожалуйста написать команду для игроков на выдачу админки 1 уровня самому себе на движке PAWN_CMD

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


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

Вот здесь есть полные экзамплы команд.

В чем проблема ? 

  • Like 1

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


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

@АлексейИванович,

K define

#define SCM SendClientMessage
#define flood if(AntiFlood[playerid] > gettime()) return SCM(playerid, COLOR_RED, "[Info]{FFFFFF} Пожалуйста прекратите флудить!"); AntiFlood[playerid] = gettime()+1;
#define ESCM SCM(playerid, COLOR_RED, "[Ошибка]{FFFFFF} Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_RED, "[Ошибка]{FFFFFF} Игрок не найден!");
#define f( format(string, sizeof(string),  

----------------------------------------

CMD:makeadmin(playerid, params[])
{
    flood
    new string[100],nama[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nama,sizeof(nama));
    if(Player[playerid][pAdmin] < 5) return ESCM
    if(sscanf(params, "ii", params[0], params[1])) return SCM(playerid, COLOR_YELLOW, "[Используйте]{FFFFFF} /makeadmin [id] [lvl (0-4)]");
    if(!IsPlayerConnected(params[0])) return ISCM
    if(params[1] < 0 || params[1] > 4) return SCM(playerid, COLOR_RED, "[Ошибка]{FFFFFF} Уровень админки не может быть 0 или больше 4!");
    if(Player[playerid][pAdmin] < Player[params[0]][pAdmin]) return SCM(playerid, COLOR_RED, "[Ошибка]{FFFFFF} У этого игрока уровень админки выше!");
    Player[params[0]][pAdmin] = params[1];
    f("Администратор{FFA200} %s {AA3333}изменил ваш админ уровень на{FFA200} %d", nama, params[1]);
    SCM(params[0], COLOR_RED, string);
    return true;
}   

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


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

@1Agent1, если это из твоего мода, то советую немного переделать код:

  1. Синтаксис макросов не соответствует синтаксису языку pawn в целом. Это сбивает с толку и служит неудачной практикой, не лучшей, если быть корректнее (я говорю о том, что в макросах уже проставлены точки с запятой).
  2. Вы сначала получаете имя игрока, а потом проверяете, точно ли этот игрок является вообще администратором и ввел ли он все параметры. По сути, если игрок введет "/makeadmin" (без аргументов), будет объявлена переменная впустую. Ну, и, конечно, вызвана лишняя нативная функция GetPlayerName. В общем эти три строки следует переместить после проверок всех.
  3. В sscanf присутствует параметр "u" (заместо "i"), который не только проверяет наличие аргумента целочисленного, но и сразу проверяет, в сети ли игрок/бот под указанным идентификатором, возвращая его или INVALID_PLAYER_ID.

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


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

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

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

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

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

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

Войти

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

Войти
Авторизация  

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

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

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.