sscanf with default syntax? Problems with /pm command
#1

Ahoy friends.

Currently im trying to find a way to get this /pm command working.

Код:
	if(strcmp(cmd, "/pm", true) == 0)
	{
	new str[256], str2[256], id, Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
	if(sscanf(cmdtext, "us", id, str2))
	{
		SendClientMessage(playerid, 0xFF0000FF, "Usage: /pm <id> <message>");
		return 1;
	}
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Player not connected");
	if(playerid == id) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: You cannot pm yourself!");
	{
		GetPlayerName(playerid, Name1, sizeof(Name1));
		GetPlayerName(id, Name2, sizeof(Name2));
		format(str, sizeof(str), "PM To %s(ID %d): %s", Name2, id, str2);
		SendClientMessage(playerid, 0xFF0000FF, str);
		format(str, sizeof(str), "PM From %s(ID %d): %s", Name1, playerid, str2);
		SendClientMessage(id, 0xFF0000FF, str);
	}
	return 1;
	}
unfortunately i didnt use sscanf yet. Only the way with strtok but i heard sscanf should higher the efficieny so i would be glad to receive some help and examples.
Reply
#2

Код:
CMD:pm(playerid,params[])
{
	new
                      str[256],
                      str2[256], 
                      id, 
                      Name1[MAX_PLAYER_NAME], 
                      Name2[MAX_PLAYER_NAME]
        ;

	if(sscanf(params, "us", id, str2))
	{
		SendClientMessage(playerid, 0xFF0000FF, "Usage: /pm <id> <message>");
		return 1;
	}
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Player not connected");
	if(playerid == id) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: You cannot pm yourself!");
	
        GetPlayerName(playerid, Name1, sizeof(Name1));
	GetPlayerName(id, Name2, sizeof(Name2));
	format(str, sizeof(str), "PM To %s(ID %d): %s", Name2, id, str2);
	SendClientMessage(playerid, 0xFF0000FF, str);
	format(str, sizeof(str), "PM From %s(ID %d): %s", Name1, playerid, str2);
	SendClientMessage(id, 0xFF0000FF, str);
        return 1;
}
Reply
#3

Sscanf is easy to use
PHP код:
CMD:pm(playeridparams[])
{
    new 
id,message[128], string[256], sendername[25], giveplayer[25];
    if(
sscanf(params"us[128]"idmessage)) return SendClientMessage(playerid0xFFFFFFFF,"{FFFFFF}Syntax: /pm <Name/Playerid> <Message>");
    {
        if(
id != INVALID_PLAYER_ID)
          {
            
GetPlayerName(playeridsendernamesizeof(sendername));
            
GetPlayerName(idgiveplayersizeof(giveplayer));
            
format(stringsizeof(string), "> PM from %s: %s"sendernamemessage);
            
SendClientMessage(id, -1string);
            
format(stringsizeof(string), "PM sent to %s: %s"giveplayer message);
            
SendClientMessage(playerid,  -1string);
        }
        else return 
SendClientMessage(playerid, -1"{FFFFCC}Error: Player not connected.");
    }
    return 
1;

Reply
#4

is params[] the same as cmdtext[] ?
Reply
#5

params[] is the parameters string of ZCMD,
and cmdtext[] is the command that was entered (only if you use STRCMP, not ZCMD).
Reply
#6

PHP код:
if(strcmp(cmd"/pm"true) == 0)
{
    new 
str[256], str2[256], idName1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
    if(
sscanf(cmdtext[strlen("/pm")+1], "us"idstr2))
        return 
SendClientMessage(playerid0xFF0000FF"Usage: /pm <id> <message>");
    if(!
IsPlayerConnected(id))
        return 
SendClientMessage(playerid0xFF0000FF"ERROR: Player not connected");
    if(
playerid == id)
        return 
SendClientMessage(playerid0xFF0000FF"ERROR: You cannot pm yourself!");
    
    
GetPlayerName(playeridName1sizeof(Name1));
    
GetPlayerName(idName2sizeof(Name2));
    
format(strsizeof(str), "PM To %s(ID %d): %s"Name2idstr2);
    
SendClientMessage(playerid0xFF0000FFstr);
    
format(strsizeof(str), "PM From %s(ID %d): %s"Name1playeridstr2);
    
SendClientMessage(id0xFF0000FFstr);
    return 
1;

Reply
#7

Thanks Dayrion thats exactly what i was searching for!! +Rep.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)