Clock going to 25 and higher
#1

Ok, my server has a custom clock i made, but sometimes the weathers get bugged on certain times, and i decided to make a command which changes the world's time and sets the clock to the number i set using the settime command, but the problem is, the command can go over 24 to 25 26 and 27, when i want it to restart to 0 after 24.


pawn Код:
CMD:settime(playerid, params[])
    {
    new time;
    if(sscanf(params, "ii", time)) return SendClientMessage(playerid, GRAY, "Function : /settime [ hour ]");
    if(time < 0 || time > 24) return SendClientMessage(playerid, GRAY, "The available hours are 0-24 ! ");
    if(!sscanf(params, "ii", time))
    {
    new name[MAX_PLAYER_NAME], mestring[128];
    GetPlayerName(playerid, name, sizeof(name));
    format(mestring, sizeof(mestring), "%s has changed San Andreas Time to %d", name, time);
    SendClientMessageToAll(GRAY, mestring);
    SetWorldTime(time);
    V_ToggleClock();
    V_ToggleClock(time, 0);
    return 1;
    }
    return 1;
    }
Reply
#2

Why do you have two i's ? I don't know why, but I feel like this is the problem, and it can be fixed by removing one of them.

DISCLAIMER: If it's supposed to be two i's cuz of some advanced shit with the latest version of sscanf, then I apologize.

Also, you don't need to do this check
pawn Код:
if(!sscanf(params, "ii", time))
when you already return if the opposite is true.
Reply
#3

Still not working, it goes to 25 and higher
Reply
#4

Try this
pawn Код:
CMD:settime(playerid,params[]) {
    if(isnull(params)) return SendClientMessage(playerid, red, "USAGE: /settime [hour]");
        new name[MAX_PLAYER_NAME], mestring[128];
        new time = strval(params);
        if(time > 24) return SendClientMessage(playerid, red, "ERROR: Invalid hour");
        for(new i = 0; i < MAX_PLAYERS; i++) {
            if(IsPlayerConnected(i)) {
                SetPlayerTime(i, time, 0);}}
        GetPlayerName(playerid, name, sizeof(name));
        format(mestring, sizeof(mestring), "%s has changed San Andreas Time to %d", name, time);
        SendClientMessageToAll(GRAY, mestring);
    return 1;}
Reply
#5

nvm i fixed it it was some dumb human mistake lol

max hour should be 23 to it jumps to 0 and not 24
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)