if(strcmp(cmdtext,"/mycommand",true)==0)
CMD:mycommand(playerid)
CMD:mycommand(playerid,params[])
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{
new changestr[16], changepos = 0, strpos = stringPos;
while(changepos < 16 && string[strpos] && string[strpos] != delim)
{
changestr[changepos++] = string[strpos++];
}
changestr[changepos] = '\0';
setarg(paramPos,0,_:floatstr(changestr));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}
#include <a_samp>
#include <zcmd>
CMD:my command(playerid,params[])
public
CMD:goto(playerid,params[])
{
new pname[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME],string[128],id; /*Creates the player's name to teleport to, and the admin that initiated the command, and the target ID to teleport to.*/
if(!IsPlayerAdmin(playerid)) == 0) /*Checks if the player is logged into RCON. If your script has its own admin system use that.*/
{
if(sscanf(params,"u",id)) SendClientMessage(playerid, 0xAA3333AA, "/goto <id>"); /*Takes the ID you entered and makes it the "id" we defined. If no ID is entered the error message shows up*/
if(playerid == id) return SendClientMessage(playerid, 0xAA3333AA, "You can't teleport to yourself..."); /*Checks if the player id entered is not yours and if it is it shows the error message*/
else {
if(!IsPlayerConnected(id)) SendClientMessage(playerid, 0xAA3333AA, "Player is Not Online"); /*Checks if the ID entered is a player that is online in the server, otherwise sends the error message*/
else {
new Float:x,Float:y,Float:z; //Defines the x,y, and z co-ordinates of the target player
GetPlayerPos(id,Float:x,Float:y,Float:z)://Sets what the x,y, and z means
GetPlayerName(id,pname,sizeof(pname)); //Gets the name of the player that is to be teleported to
SetPlayerPos(playerid,x,y,z);//Teleports the admin to the player's x,y, and z co-ordinates we set earlier
format(string,sizeof(string),"Teleported to %s!",pname);//Shows the admin they teleported to the player
SendClientMessage(playerid, 0xAA333AA, string);//^^
}
}
}
else return 0; //Sends the "SERVER: Unknown command" if the person wanting to teleport isn't an admin
return 1;
}
CMD:gethere(playerid,params[])
{
new pname[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME],string[128],id; /*Creates the player's name to teleport to the admin, and the admin that initiated the command, and the target ID to teleport to the admin.*/
if(!IsPlayerAdmin(playerid)) == 0) /*Checks if the admin is logged into RCON. If your script has its own admin system use that.*/
if(sscanf(params,"u",id)) SendClientMessage(playerid, 0xAA3333AA, "/goto <id>"); /*Takes the ID you entered and makes it the "id" we defined. If no ID is entered the error message shows up*/
if(playerid == id) return SendClientMessage(playerid, 0xAA3333AA, "You can't teleport to yourself..."); /*Checks if the player id entered is not yours and if it is it shows the error message*/
else {
if(!IsPlayerConnected(id)) SendClientMessage(playerid, 0xAA3333AA, "Player is Not Online"); /*Checks if the ID entered is a player that is online in the server, otherwise sends the error message*/
else {
new Float:x,Float:y,Float:z; //Defines the x,y, and z co-ordinates of the admin
GetPlayerPos(id,Float:x,Float:y,Float:z)://Sets what the x,y, and z means
GetPlayerName(id,pname,sizeof(pname)); //Gets the name of the player that is to be teleported to the admin
SetPlayerPos(playerid,x,y,z);//Teleports the player to the admin's x,y, and z that was defined earlier
format(string,sizeof(string),"Teleported %s to you!",pname);//Shows the admin the player was teleported to them
SendClientMessage(playerid, 0xAA333AA, string);//^^
}
}
}
else return 0; //Sends the "SERVER: Unknown command" if the person wanting to initiate teleport isn't an admin
return 1;
}
if(!IsPlayerAdmin(playerid)) == 0)
if(!IsPlayerAdmin(playerid))
if(playerid == id)
if(id == playerid)
if(id == INVALID_PLAYER_ID)
This command works just fine for me. No I do not copy from others. I use 100% scripts that I make on my own without any help from other people. Just my knowledge of scripting. Now, if you want to continue to say how this doesn't work etc etc, you are not welcome unless you show errors.
|