sscanf "u" specifier problem
#1

Hello,

I'm having a problem with sscanf "u" specifier. I did a search before posting this and couldn't find any solutions.

So basically my problem is that I want to use any part of player name to teleport player to me, but I can only use full or first part of the name. For example - I want to use Morgan part of Dexter_Morgan name to teleport him to me, but I can only use Dexter or Dexter_Morgan. What am I doing wrong?

pawn Код:
CMD:get(playerid,params[])
{
    if ( GetPVarInt( playerid, "Level" ) < 1 )
    return SendClientMessage( playerid, -1, "Turite bыti bent "#Level1", kad galлtumлte naudotis рia komanda.");
    new targetid, Float:x, Float:y, Float:z;
    if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, COLOR_WHITE, "Naudojimas: /get <id/dalis vardo>");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_WHITE, ""RAUDONA"Юaidлjas neprisijungжs arba vardа raрлte ne nuo priekio.");
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(targetid, x, y+0.5, z+0.5);
    return 1;
}
Or isn't specifier "u" the one I need to use?

Any help is appreciated.
Reply
#2

Use "r" specifier
Reply
#3

Thank you for such a quick reply, but that didn't fix the problem.


EDIT:
BTW, this applies to other commands too. For example this:

pawn Код:
CMD:pm(playerid, params[])
{
    new id, string[2][128], message[128];
    if(sscanf(params,"us[128]",id,message)) return SendClientMessage(playerid, -1, "Naudojimas: /pm <id/dalis vardo> <юinutл>");'message'
    if(id == playerid) return SendClientMessage(playerid, -1, "Negalite siшsti юinutж sau.");
    if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, ""RAUDONA"Юaidлjas neprisijungжs arba vardа raрлte ne nuo priekio.");// If the id of the player you want to pm is not connect send a message
    format(string[0], 128, "* PM nusiшsta %s: %s", PlayerName(id), message);
    format(string[1], 128, "* PM gauta iр %s: %s", PlayerName(playerid), message);
    SendClientMessage(playerid, -1, string[0]);
    SendClientMessage(id, -1, string[1]);
    LastPm[id] = playerid;
    return 1;
}
Reply
#4

pawn Код:
if ( GetPVarInt( playerid, "Level" ) > 1 )
{
        new targetid, Float:x, Float:y, Float:z;
        if(!sscanf(params, "u", targetid))
    {
            if(IsPlayerConnected(targetid))
        {  
            GetPlayerPos(playerid, x, y, z);
                SetPlayerPos(targetid, x, y+0.5, z+0.5);
                return 1;
        }
        else
        {
            SendClientMessage(playerid, COLOR_WHITE, ""RAUDONA"Юaidлjas neprisijungжs arba vardа raрлte ne nuo priekio.");
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_WHITE, "Naudojimas: /get <id/dalis vardo>");
    }
}
else
{
    SendClientMessage( playerid, -1, "Turite bыti bent "#Level1", kad galлtumлte naudotis рia komanda.");
   
}
Call me old fashion but this looks way better
Reply
#5

Never mind this won't work..
Reply
#6

pawn Код:
SSCANF_Option(MATCH_NAME_PARTIAL, 0);//hm.. not 0, but 1. oops.
...you know where to paste it? ^^
Reply
#7

Quote:
Originally Posted by Dj_maryo1993
Посмотреть сообщение
pawn Код:
if ( GetPVarInt( playerid, "Level" ) > 1 )
{
        new targetid, Float:x, Float:y, Float:z;
        if(!sscanf(params, "u", targetid))
    {
            if(IsPlayerConnected(targetid))
        {  
            GetPlayerPos(playerid, x, y, z);
                SetPlayerPos(targetid, x, y+0.5, z+0.5);
                return 1;
        }
        else
        {
            SendClientMessage(playerid, COLOR_WHITE, ""RAUDONA"Юaidлjas neprisijungжs arba vardа raрлte ne nuo priekio.");
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_WHITE, "Naudojimas: /get <id/dalis vardo>");
    }
}
else
{
    SendClientMessage( playerid, -1, "Turite bыti bent "#Level1", kad galлtumлte naudotis рia komanda.");
   
}
Call me old fashion but this looks way better
What's old fashion about that?
Tbh, it just looks like extra whitespace & lines to me
Reply
#8

Quote:
Originally Posted by Babul
Посмотреть сообщение
pawn Код:
SSCANF_Option(MATCH_NAME_PARTIAL, 0);
...you know where to paste it? ^^
Well... no...
I looked where should I put it, but I guess I'm just too stupid to figure it out by myself.
Reply
#9

it belongs into the OnGameModeInit() or OnFilterScriptInit().
i suggest to use it in the gamemode only. sscanf may handle the settings global i assume - i really should read the whole topic again hehe
add: oh, and put a 1, not a 0. i edited it after you quoted me, so play with the parameters. or best, click this: https://sampforum.blast.hk/showthread.php?tid=120356 and scroll down to the Options-section...
Reply
#10

Thank you very much and everyone else who tried to help.

After your post I spent 20 minutes looking where to add that line. Checked that thread and ysi wiki, but no luck, so replied here.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)