SA-MP Forums Archive
sscanf not working properly - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: sscanf not working properly (/showthread.php?tid=631820)



[SOLVED]sscanf not working properly - grymtn - 05.04.2017

Hello guys im trying to make a pm command using sscanf and zcmd but it doesnt turn out well

in game: /pm 0 a //still need help
Outcome: PM from 67: 97 //still need helpp

what is it with this 67 i cant see my own name and message seems like i wrote some numbers and they are not random if i write "b" instead of "a" it turns out to be 98.

My Code:
Код:
CMD:pm(playerid, params[])
{
	new otherid,string[150],text,pname[24];
	if (sscanf(params, "uc", otherid,text)) return SendClientMessage(playerid,-1,"Usage: /pm [playerid] [message]");
	if(!IsPlayerConnected(otherid)) return SendClientMessage(playerid, COLOR_RED, "That PlayerID is not connected!");
	GetPlayerName(playerid,pname,24);
	format(string,sizeof(string),"PM from %d: %d",pname,text);
	SendClientMessage(otherid,COLOR_YELLOW,string);
	return 1;
}
Any Help Is Appreciated.


Re: sscanf not working properly - StrikerZ - 05.04.2017

Код:
CMD:pm(playerid, params[])
{
	new otherid,string[150],text,pname[24];
	if (sscanf(params, "us", otherid,text)) return SendClientMessage(playerid,-1,"Usage: /pm [playerid] [message]");
	if(!IsPlayerConnected(otherid)) return SendClientMessage(playerid, COLOR_RED, "That PlayerID is not connected!");
	GetPlayerName(playerid,pname,24);
	format(string,sizeof(string),"PM from %d: %s",pname,text);
	SendClientMessage(otherid,COLOR_YELLOW,string);
	return 1;
}
CMD:id(playerid, params[])
{
	new id,string[150],name[24],pname[24];
	if(sscanf(params, "s", name)) return SendClientMessage(playerid,-1,"Usage: /id [name]");
	id = GetPlayerID(name);
	GetPlayerName(id,pname,24);
	format(string,sizeof(string),"%d %s",id,pname);
	SendClientMessage(playerid,COLOR_LIGHTGRAY,string);
	return 1;
}



Re: sscanf not working properly - Banditul18 - 05.04.2017

PHP код:
new otherid,string[150],text[64],pname[24];
    if (
sscanf(params"us[64]"otherid,text)) return SendClientMessage(playerid,-1,"Usage: /pm [playerid] [message]"); 
PHP код:
new id,string[150],name[24],pname[24];
    if(
sscanf(params"u"id)) return SendClientMessage(playerid,-1,"Usage: /id [name]"); 
1. You need to specified the size of the text because it's a string
2.The id it's get automate by sscanf from players online , so the u stands for id/name


Re: sscanf not working properly - grymtn - 05.04.2017

Quote:

2.The id it's get automate by sscanf from players online , so the u stands for id/name

but i dont want sscanf to send me Chaves Chaves thats why i did a GetPlayerID which will show first value 0 and still i get the name as 67 didnt fix any suggestion?

also now pm always returns SendClientMessage(playerid,-1,"Usage: /pm [playerid] [message]");


Re: sscanf not working properly - Banditul18 - 05.04.2017

PHP код:
new id,string[150],name[24],pname[24];
    if(
sscanf(params"s[24]"name)) return SendClientMessage(playerid,-1,"Usage: /id [name]"); 
Well this is, but i think you need enter the exact name


Re: sscanf not working properly - grymtn - 05.04.2017

no no i dont have any problem with my id script my id is good but my name should be chaves but it shows my 67 that needs fix im dying out of anger here please help


Re: sscanf not working properly - DRIFT_HUNTER - 05.04.2017

@grymtn sscanf U switch works like these.
It expects a string, first it checks if its numerical only (If its ID in other words), if it is, it will just return that id as integer, if its not it will loop thru players and partially match string with player name. If string is shorter than player name but it does match as part of name, it will return id of that player. If you have two players that have same partial match, there will be possible mismatch (more players but only one possible return).

One solution would be to use custom (kustom or K<> switch). K Switch will call your public function where you can define logic for looking up players. One example of what you can do, is if you find multiple matches, you return -1, or if you have roleplay server then decide what to do with underscore if its present.


Re: sscanf not working properly - Banditul18 - 05.04.2017

PHP код:
format(string,sizeof(string),"PM from %d: %d",pname,text); 
I've look better now , you try to show a string, but you put integer
Should be:
PHP код:
format(string,sizeof(string),"PM from %s: %s",pname,text); 



Re: sscanf not working properly - grymtn - 05.04.2017

Quote:
Originally Posted by Banditul18
Посмотреть сообщение
PHP код:
new id,string[150],name[24],pname[24];
    if(
sscanf(params"s[24]"name)) return SendClientMessage(playerid,-1,"Usage: /id [name]"); 
thank you so much dude rep given but you dont use sscanf like "s[24]" with sscanf apparently it was "s"

wouldnt find it without you