#1

pawn Код:
CMD:clansetlevel(playerid, params[])
{
    return true;
}
How do I do the command with spaces?
I tried to do it:
pawn Код:
CMD:clan(playerid, params[])
{
    new id, level;
    if(isnull(params)) return SendClientMessage(playerid, Red, "..");
    if(!strcmp(params, "setlevel", true))
    {
        if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
        SendClientMessage(playerid, Red, "Work !");
    }
    return true;
}
I write "/Clan" It sends me the message ".."
And if I write "/Clan SetLevel" It sends a message "/Clan SetLevel [id] [level]"
Then if I write "/Clan SetLevel 0 5" is not sending me the message "Work !"
As if the sscanf not working ..
Reply
#2

Taken this from my game-mode.

pawn Код:
COMMAND:test(playerid, params[])
{
    new selection[5];
    if(sscanf(params, "s[20]", selection))
    {
        return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}Usage: \"cmd <whatever else>\"");
    }
    else
    {
        if(!strcmp(selection, "test", true))
        {

        }
        else if(!strcmp(selection, "test2", true))
        {

        }
    }
    return 1;
}
Reply
#3

Here's how you would do it:
pawn Код:
CMD:clan(playerid, params[])
{
    new id, level, subcmd[9];
    if(sscanf(params, "s[9]ud", subcmd, id, level))
        return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
    if( strcmp( subcmd, "setlevel", true ))
        return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");

    SendClientMessage(playerid, Red, "Work !");
    return true;
}
sscanf checks it any params aren't included, so no need for the isnull check.
Reply
#4

Quote:
Originally Posted by DanLore
Посмотреть сообщение
Taken this from my game-mode.

pawn Код:
COMMAND:test(playerid, params[])
{
    new selection[5];
    if(sscanf(params, "s[20]", selection))
    {
        return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}Usage: \"cmd <whatever else>\"");
    }
    else
    {
        if(!strcmp(selection, "test", true))
        {

        }
        else if(!strcmp(selection, "test2", true))
        {

        }
    }
    return 1;
}
No work...
Quote:
Originally Posted by LarzI
Посмотреть сообщение
Here's how you would do it:
pawn Код:
CMD:clan(playerid, params[])
{
    new id, level, subcmd[9];
    if(sscanf(params, "s[9]ud", subcmd, id, level))
        return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
    if( strcmp( subcmd, "setlevel", true ))
        return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");

    SendClientMessage(playerid, Red, "Work !");
    return true;
}
sscanf checks it any params aren't included, so no need for the isnull check.
it what i need:
pawn Код:
CMD:clan(playerid, params[])
{
    new level, subcmd[20];
    if(sscanf(params, "s[20]", subcmd)) return SendClientMessage(playerid, Red, "/Clan [SetLevel]");
    if(!strcmp(subcmd, "setlevel", true))
    {
        if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
        SendClientMessage(id, Red, "Work !");
    }
    return true;
}
I do "/ Clan SetLevel 0 5" and not working ..
Reply
#5

...
Reply
#6

You will need SSCANF for that.

Download link : https://sampforum.blast.hk/showthread.php?tid=120356

Code :

pawn Код:
CMD:clansetlevel(playerid,params[])
{
    new id,level,fun[10];
    if(sscanf(params,"s[10]ud",fun,id,level))
        return  SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
    if(!strcmp(fun,"setlevel",true)) return  SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
    else
    {
        //do anything you need to do here.
        SendClientMessage(playerid, Red, "Work !");
    }
    return true;
}
Reply
#7

Quote:
Originally Posted by [MM]RoXoR[FS]
Посмотреть сообщение
You will need SSCANF for that.

Download link : https://sampforum.blast.hk/showthread.php?tid=120356

Code :

pawn Код:
CMD:clansetlevel(playerid,params[])
{
    new id,level,fun[10];
    if(sscanf(params,"s[10]ud",fun,id,level))
        return  SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
    if(!strcmp(fun,"setlevel",true)) return  SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
    else
    {
        //do anything you need to do here.
        SendClientMessage(playerid, Red, "Work !");
    }
    return true;
}
Look at my previous comment ..
Already gave me what you've given it's not what I need ..
I want to do within the sub-commands ZCMD
Quote:
Originally Posted by ******
Посмотреть сообщение
Use "params[8]" in "sscanf".
What as though that?
pawn Код:
CMD:clan(playerid, params[])
{
    new clanname[20], skinid;
    if(sscanf(params, "s[8]", params)) return SendClientMessage(playerid, Red, "/Clan [create / skin ...]");
    if(!strcmp(params, "create", true))
    {
        if(sscanf(params, "s[20]", clanname)) return SendClientMessage(playerid, Red, "/Clan Create [Clan Name]");
        // My code here ..
    }
    if(!strcmp(params, "skin", true))
    {
        if(sscanf(params, "d", skinid)) return SendClientMessage(playerid, Red, "/Clan Skin [Skin ID]");
        // My code here ..
    }
    return true;
}
EDIT:
@******
i tried it and no working:
pawn Код:
CMD:clan(playerid, params[])
{
    new clanname[20], skinid;
    if(sscanf(params, "s[8]", params)) return SendClientMessage(playerid, Red, "/Clan [create / skin ...]");
    if(!strcmp(params, "create", true))
    {
        if(sscanf(params, "s[20]", clanname)) return SendClientMessage(playerid, Red, "/Clan Create [Clan Name]");
        // My code here ..
    }
    if(!strcmp(params, "skin", true))
    {
        if(sscanf(params, "d", skinid)) return SendClientMessage(playerid, Red, "/Clan Skin [Skin ID]");
        SetPlayerSkin(playerid, skinid);
    }
    return true;
}
Reply
#8

pawn Код:
CMD:clan(playerid, params[])
{
    new id, level;
    if(isnull(params)) return SendClientMessage(playerid, Red, "..");
    if(!strcmp(params, "setlevel", true))
    {
        if(sscanf(params[8], "ud", id, level)) return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
        SendClientMessage(playerid, Red, "Work !");
    }
    return true;
}
As ****** said.
pawn Код:
if(sscanf(params[8] // [8] here because it needs to "jump" over the "clan" param directly to "setlevel"
I think, I'm not sure about it.
But give it a try.
Reply
#9

Quote:
Originally Posted by Rockk
Посмотреть сообщение
pawn Код:
CMD:clan(playerid, params[])
{
    new id, level;
    if(isnull(params)) return SendClientMessage(playerid, Red, "..");
    if(!strcmp(params, "setlevel", true))
    {
        if(sscanf(params[8], "ud", id, level)) return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
        SendClientMessage(playerid, Red, "Work !");
    }
    return true;
}
As ****** said.
pawn Код:
if(sscanf(params[8] // [8] here because it needs to "jump" over the "clan" param directly to "setlevel"
I think, I'm not sure about it.
But give it a try.
no working ..
Reply
#10

Quote:
Originally Posted by benel1
Посмотреть сообщение
no working ..
That's because he tries comparing. This won't work as parameters are everything behind the command, not only the first one. To get this to work, I'd say use strfind:

pawn Код:
CMD:clan(playerid, params[])
{
    if( isnull( params ))
        return SendClientMessage(playerid, Red, "..");
    if( strfind( params, "setlevel" ) < 1 ) // setlevel should be the first parameter, thus at position 0.
    {
        new  // these variables should only be declared if you use them, this is why I moved them here.
            id,
            level
        ;
        if(sscanf(params[8], "ud", id, level))
            return SendClientMessage(playerid, Red, "/Clan SetLevel [id] [level]");
        SendClientMessage(playerid, Red, "Work !");
    }
    return true;
}
I think this should work.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)