Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 2 из 2
  1. #1
    Аватар для DmitriyVasilev
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±

    Вопросы про sscanf и return

    Привет всем. Хотелось бы спросить:
    1) если в sscanf уже есть проверка на подключение игрока, то как можно сделать так но без этой функции мб за
    1. if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GRAD,!"Игрок не в сети");//+


    2) Вопрос про return, почитал но не всегда понятно.
    Например почему в OnPlayerText нуда возвращать 0, но в некоторых надо 1 вот пример
    1. public OnPlayerText(playerid, text[])
    2. {
    3. if(User[playerid][Mute] > 0) { <b>SendClientMessage(playerid,COLOR_GRAD,"У вас бан чата"); return 0;</b> } //почему тут 0 а не 1
    4. }

    и вот другой
    1. CMD:ooc(playerid, params[])// ООС чат
    2. {
    3. if(noooc[1] > 0 && GetPVarInt(playerid,"Admins") < 4) return SendClientMessage(playerid, COLOR_GRAD, "Ошибка: Подождите немного...");
    4. if(noooc[0] == 0 && GetPVarInt(playerid,"Admins") < 4) return SendClientMessage(playerid, COLOR_GRAD,"Ошибка: Общий чат отключен");
    5. else if((GetPVarInt(playerid,"Admins") < 1 || !GetPVarInt(playerid,"AdminLogin")) && noooc[0] > 0) { }
    6. if(User[playerid][Mute] > 0) <b>return SendClientMessage(playerid,COLOR_GRAD,"Ошибка: У вас бан чата");</b> //Почему тут уже 1
    7. if(sscanf(params, "s[144]",params[0])) return SendClientMessage(playerid, -1,!"[INFO]: (/o)oc [текст]");
    8. format(string,145, "<< %s[%i]: %s >>",User[playerid][Name], playerid, params[0]);
    9. SendClientMessageToAll(0xE0FFFFFF,string);
    10. if(GetPVarInt(playerid,"Admins") <= 0) noooc[1] = noooc[0];
    11. return 1;
    12. }

  2. #2
    Аватар для whale
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.04.2014
    Сообщений
    74
    Репутация:
    17 ±
    1. В sscanf есть спецификатор 'u', который может принимать как NickName игрока, так и его ID.
    Так что, при его использовании, будет вполне достаточно сравнивать с INVALID_PLAYER_ID.

    PHP код:
    CMD:kick(playeridparams[])
    {
        new
            
    target,
            
    reason[32 1];

        if(
    sscanf(params"us[32]"targetreason))
            return 
    SendClientMessage(playerid, -1, !"Используйте: /kick [ID игрока/часть NickName] [причина]");

        if(
    target == INVALID_PLAYER_ID)
            return 
    SendClientMessage(playerid, -1, !"Ошибка: Указанный игрок не подключён к серверу.");

        
    // etc...
        
    return 1;

    2. Если в OnPlayerText возвращаемое значение является истинной (true/1) - текст (сообщение) игрока будет отправлено в чат, если же возвращаемое значение является ложью (false/0) - сообщение не будет отправлено в чат. У тебя в коде проверяется наличие блокировки чата у игрока и, если у него есть блокировка чата - его об этом оповестит и его сообщение не будет отправлено в чат.
    В случае же с командой особой роли это не играет (разве что, в Pawn.CMD есть определённые возвращаемые значения, если не изменяет память). Тут, возвратом функции (точнее, после выполнения функция вернёт 1) - обрывается последующий код команды.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •