extract - dc_cmd , pawn.cmd

В теме 6 сообщений

Пожалуй начнем с того что :
Extract - это макрос, который может заменить sscanf(), а так же проверяя строку на указанные аргументы.


 

Цитата

#define extract%0->%1; EXTRN%1;unformat(_:EXTRZ:EXTRV:EXTRX:%0,##,%1,,); 


Пример использования

CMD:ans(playerid, params[]){
    new
    string[145], // Вывод сообщения игроку
    pm_name[MAX_PLAYER_NAME]; // Позже мы узнаем ник Игрока который отправляет сообщения. ( У кого имется name(playerid); GetName(playerid) можете данную строчку удалить. 
    extract params -> new pm_id, string:pm_message[119]; else
        return SendClientMessage(playerid, -1"Введите /ans ID игрока | Сообщение");
    GetPlayerName(playerid, pm_name , MAX_PLAYER_NAME); // в sizeof - не использую ( - 2 байта с одной.
    format(string, sizeof string , "%s: %s", pm_name, pm_message);
    return SendClientMessage(pm_id, -1, string);
}

 

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


Ссылка на сообщение
Поделиться на другие сайты
GetPlayerName(pm_id, pm_name, MAX_PLAYER_NAME);

 

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


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

По тестам, разницы между extract и params нет, но я не хочу себе усложнять жизнь, поэтому юзал и буду юзать дальше мною любимый params'ик)@m1n1vv у него всё правильно. Мы узнаем ник по своему ID и отправляем введённому ID текст "Имя отправителя: текст"

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


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

@SCRIPTMAN, нет, у автора вместо переменной, куда должно быть записано имя пользователя, указан целочисленный размер этой переменной.

 

А что касается выбором между extract и sscanf - выбор, конечно, за пользователями. Кому какой синтаксис удобен. По скорости разницы никакой не будет, потому что интерпретируются оба варианта одинаково. А потому и работать будут абсолютно одинаково, в том числе и по скорости.

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


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

@odosenok понял. тогда этот варик:

GetPlayerName(playerid, pm_name, MAX_PLAYER_NAME);
или
GetPlayerName(playerid, pm_name, sizeof(pm_name));

 

Заметка от Cawfee , создано

Именно это и предложил @m1n1vv.

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


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

@odosenok, нет, у него первый аргумент ид не игрока, который вызывает команду, а ид игрока, которому отправлено сообщение.

Отредактировано пользователем SCRIPTMAN

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


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

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

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

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

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


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

Войти

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


Войти

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

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