Sign in to follow this  
Followers 0
Guest

extract - dc_cmd , pawn.cmd

6 posts in this topic

Пожалуй начнем с того что :
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, sizeof pm_name , MAX_PLAYER_NAME); // в sizeof - не использую ( - 2 байта с одной.
  	format(string, sizeof string , "%s: %s",pm_name, pm_message);
  	return SendClientMessage(pm_id, -1, string);} 

 

Share this post


Link to post
Share on other sites
GetPlayerName(pm_id, pm_name, MAX_PLAYER_NAME);

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

Edited by SCRIPTMAN

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.