SA-MP Forums Archive
/settime command - 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)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: /settime command (/showthread.php?tid=66197)

Pages: 1 2


/settime command - [MLT]Marco - 20.02.2009

well i would like to do a /settime commands for admins level 1-5 and i can't do it. could someone please help me because im a noob at scripting commands... at least i know how to script teleports :P

/settime 18 = 6pm
/settime 0 = Midnight
/settime 6 = 6am
/settime 12 = Midday




Re: /settime command - MenaceX^ - 20.02.2009

What should it do? Change the weather?


Re: /settime command - [MLT]Marco - 20.02.2009

no i just want like the time to change and well even the weather but not like cloudy and rainy... just like night and day


Re: /settime command - Littl3j0hNy - 20.02.2009

Hi,
Here is a Command for Rcon:

pawn Код:
dcmd(settime, 7, cmdtext);
pawn Код:
dcmd_settime(playerid,params[])
{
    new string[256],idx,tmp[256];
    if(IsPlayerAdmin(playerid))
    {
      tmp = strtok(params,idx);
      if(!strlen(tmp))
      {
        SendClientMessage(playerid, COLOR_RED, "ERROR: /settime [hour]");
        return 1;
        }
      new h = strval(tmp);
      if(h < 0 || h > 24)
      {
        SendClientMessage(playerid, COLOR_RED, "ERROR: /settime [hour]");
        return 1;
        }
        SetWorldTime(h);
        format(string,sizeof(string), "Admin %s has change the Time to %d !", GetName(playerid), h);
        SendAllEMessage(string);
    }
     else
     {
      SendClientMessage(playerid, COLOR_RED, "ERROR: You must be a Admin to use this Command !");
      return 1;
    }
    return 1;
}
pawn Код:
stock GetName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));

    return name;
}
Regards,
- LJ



Re: /settime command - Donny_k - 20.02.2009

Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
pawn Код:
dcmd_settime(playerid,params[])
{
    new string[256],idx,tmp[256];
    if(IsPlayerAdmin(playerid))
    {
      tmp = strtok(params,idx);
      if(!strlen(tmp))
      {
        SendClientMessage(playerid, COLOR_RED, "ERROR: /settime [hour]");
        return 1;
        }
      new h = strval(tmp);
      if(h < 0 || h > 24)
      {
        SendClientMessage(playerid, COLOR_RED, "ERROR: /settime [hour]");
        return 1;
        }
        SetWorldTime(h);
        format(string,sizeof(string), "Admin %s has change the Time to %d !", GetName(playerid), h);
        SendAllEMessage(string);
    }
    else
    {
      SendClientMessage(playerid, COLOR_RED, "ERROR: You must be a Admin to use this Command !");
      return 1;
    }
    return 1;
}
Why are you using strtok ?


Re: /settime command - Littl3j0hNy - 20.02.2009

Hmm I'm using it for all

and why not ?

- LJ


Re: /settime command - Donny_k - 20.02.2009

Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
Hmm I'm using it for all

and why not ?

- LJ
For all what, all your commands ?

Because 'params' already contains the parameter passed by the user (hour) so check it's not blank (!params[0]) and it's numerical and you are good to go dude.


Re: /settime command - [MLT]Marco - 20.02.2009

ok thanks but where should i put it? under what i mean?



Re: /settime command - Littl3j0hNy - 20.02.2009

Quote:
Originally Posted by Donny
For all what, all your commands ?
Because 'params' already contains the parameter passed by the user (hour) so check it's not blank (!params[0]) and it's numerical and you are good to go dude.
I know but its all the same

- LJ


Re: /settime command - Donny_k - 20.02.2009

Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
I know but its all the same

- LJ
No dude one is using strtok and one isn't, this is not the same is it:

pawn Код:
dcmd_settime(playerid,params[])
{
  if ( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, "ERROR: You must be a Admin to use this Command !" );
  if ( !params[ 0 ] ) return SendClientMessage( playerid, COLOR_RED, "ERROR: /settime [hour]" );
  if ( !IsNumeric( params ) ) return SendClientMessage( playerid, COLOR_RED, "ERROR: The 'hour' parameter must be numerical" );  

  new
    string[ 70 ],
    h = strval( params );

  if ( h < 0 || h > 24 ) return SendClientMessage( playerid, COLOR_RED, "ERROR: Use a number from 0 to 24" );
  SetWorldTime( h );
  format( string, sizeof( string ), "Admin %s has change the Time to %d !", GetName(playerid), h );
  SendClientMessageToAll( COLOR_HERE?????, string );
  return 1;
}
As you can see dude there's not a hint of strtok in there and it will function exactly the same but with better speed and efficiency.


Re: /settime command - Littl3j0hNy - 20.02.2009

Quote:
Originally Posted by Donny
As you can see dude there's not a hint of strtok in there and it will function exactly the same but with better speed and efficiency.
Hmm but the Endproduct is the same

- LJ


Re: /settime command - Donny_k - 20.02.2009

Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
Quote:
Originally Posted by Donny
As you can see dude there's not a hint of strtok in there and it will function exactly the same but with better speed and efficiency.
Hmm but the Endproduct is the same

- LJ
No dude they are different, one is fast and uses less processing power and one is slow and uses too much.


Re: /settime command - [MLT]Marco - 20.02.2009

ok? u guys done coz i got a problem :P


Re: /settime command - Daren_Jacobson - 20.02.2009

that post would have been a good time to post your problem


Re: /settime command - Littl3j0hNy - 20.02.2009

Quote:
Originally Posted by Donny
No dude they are different, one is fast and uses less processing power and one is slow and uses too much.
BUT, the command is the same

- LJ


Re: /settime command - [MLT]Marco - 20.02.2009

ok thanks but where should i put it? under what i mean?


Re: /settime command - Daren_Jacobson - 20.02.2009

that is a function, put it at the bottom, and put the dcmd(settime, 7, cmdtext); thing in OnPlayerCommandText

note:you must have
pawn Код:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
in your script (top of it, or close to top)



Re: /settime command - Donny_k - 20.02.2009

Quote:
Originally Posted by [MLT
Marco ]
ok thanks but where should i put it? under what i mean?
At the top of your script, under the '#include <......>' lines add:

pawn Код:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Then at the very bottom of your script add the dcmd function:

pawn Код:
dcmd_settime(playerid,params[])
{
  if ( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, "ERROR: You must be a Admin to use this Command !" );
  if ( !params[ 0 ] ) return SendClientMessage( playerid, COLOR_RED, "ERROR: /settime [hour]" );
  if ( !IsNumeric( params ) ) return SendClientMessage( playerid, COLOR_RED, "ERROR: The 'hour' parameter must be numerical" );  

  new
    string[ 70 ],
    h = strval( params );

  if ( h < 0 || h > 24 ) return SendClientMessage( playerid, COLOR_RED, "ERROR: Use a number from 0 to 24" );
  SetWorldTime( h );
  format( string, sizeof( string ), "Admin %s has change the Time to %d !", GetName(playerid), h );
  SendClientMessageToAll( COLOR_HERE?????, string );
  return 1;
}
Then below this add these two custom functions also:

pawn Код:
stock GetName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));

    return name;
}

stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
      if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}
In your 'OnPlayerCommandText(...)' callback/event add:

pawn Код:
dcmd(settime, 7, cmdtext);
And apart from a typo or whatever we may have missed you are good to go. I take no credit for this btw, it's Littlejohnys code, I was just trying to improve it's speed etc.

Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
Quote:
Originally Posted by Donny
No dude they are different, one is fast and uses less processing power and one is slow and uses too much.
BUT, the command is the same

- LJ
Hehehe ok I'll stop repeating myself, lets just agree to disagree dude.

Quote:
Originally Posted by Daren_Jacobson
that is a function, put it at the bottom, and put the dcmd(settime, 7, cmdtext); thing in OnPlayerCommandText

note:you must have
pawn Код:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
in your script (top of it, or close to top)
I'd already wrote all the above out so I'll post anyway.


Re: /settime command - Jason_Borne420 - 03.07.2009

Quote:
Originally Posted by Donny
Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
Quote:
Originally Posted by Donny
As you can see dude there's not a hint of strtok in there and it will function exactly the same but with better speed and efficiency.
Hmm but the Endproduct is the same

- LJ
No dude they are different, one is fast and uses less processing power and one is slow and uses too much.
LOL i have 1000 commands on my script using strcmp and it shows no lagg... dont listen to this superficial scritor he is probably
old school


Re: /settime command - Blacklite - 03.07.2009

Quote:
Originally Posted by Jason_Borne420
Quote:
Originally Posted by Donny
Quote:
Originally Posted by ★ ♫ • Littlejohny • ♫ ★
Quote:
Originally Posted by Donny
As you can see dude there's not a hint of strtok in there and it will function exactly the same but with better speed and efficiency.
Hmm but the Endproduct is the same

- LJ
No dude they are different, one is fast and uses less processing power and one is slow and uses too much.
LOL i have 1000 commands on my script using strcmp and it shows no lagg... dont listen to this superficial scritor he is probably
old school
strcmp is different to strtok. Anyway, if you are using strcmp + strtok, you obviously don't have a particularly popular server, because on a large scale, this sort of thing adds up and makes a difference.

I'm not trying to ruin this thread, but if you're going to do it, you might as well do it properly.