Please, how to make one command with two usages? Using ycmd sscanf2
#1

Hello guys, I need to make this time command to have 2 usages. First usage I have done. It is /restart HOUR MIN but I want to make this command when player enters /restart SEC, when he just type one integer I want to make it for seconds. But dont know how to add it to the command. Code:

pawn Код:
YCMD:restart (playerid, params [], help)
{
    if (!IsPlayerAdmin (playerid)) return SendClientMessage (playerid, -1, "You must be main administrator to use this command!");
    new string [128];
    if (sscanf (params, "ii", restarth, restartm)) return SendClientMessage (playerid, -1, "You have entered wrong format of command. Use: /restart HOUR MINUTE");
    format (string, sizeof (string), "Administrator set server restart today, in time: %d:%d", restarth, restartm);
    SendClientMessageToAll (-1, string);
    SetTimer ("RLTimeRestart", 1000*60, false);
    return true;
}
Thx.
Reply
#2

Give this a shot:
pawn Код:
YCMD:restart (playerid, params [], help)
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "You must be main administrator to use this command!");
    new restarth, restartm, restarts;
    if(!sscanf(params, "ii", restarth, restartm))
    {
        new string[70];
        format(string, sizeof(string), "Administrator set server restart today, in time: %d:%d", restarth, restartm);
        SendClientMessageToAll(-1, string);
        SetTimer("RLTimeRestart", (((restarth * 3600) + (restartm * 60)) * 1000), false);
    }
    else if(!sscanf(params, "i", restarts))
    {
        new string[70];
        format(string, sizeof(string), "Administrator set server restart today, in time: %d seconds", restarts);
        SendClientMessageToAll(-1, string);
        SetTimer("RLTimeRestart", (restarts * 1000), false);
    }
    else return SendClientMessage(playerid, -1, "You have entered the wrong format of the command. Use: /restart HOUR MINUTE or /restart SECONDS");
    return 1;
}
Reply
#3

thx mate yo! gonna to try it

btw how I can add if statemens that detect if hours or minutes have two numbers for example /restart 20 30 and when they type /restart 200 300 it type wrong time for example thxx
Reply
#4

Two numbers:
pawn Код:
if(restarth > 9 || restartm > 9) //Either minutes or hours is 10+, more than 1 number.
Three numbers:
pawn Код:
if(restarth > 99 || restartm >> 99) //Either minutes or hours is 100+, more than 2 numbers.
This is just an easy example, I think there would of been functions written for this kind of thing, but this is the most simple way of doing it.

--
Alternatively, just ask me what you want added into the command and I'll gladly add it for you. I will explain the code in a PM if you wish.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)