/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.