C
if(strcmp(cmd, "/pm", true) == 0)
{
new str[256], str2[256], id, Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
if(sscanf(cmdtext[strlen("/pm")+1], "us", id, str2))
return SendClientMessage(playerid, 0xFF0000FF, "Usage: /pm <id> <message>");
if(!IsPlayerConnected(id))
return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Player not connected");
if(playerid == id)
return SendClientMessage(playerid, 0xFF0000FF, "ERROR: You cannot pm yourself!");
GetPlayerName(playerid, Name1, sizeof(Name1));
GetPlayerName(id, Name2, sizeof(Name2));
format(str, sizeof(str), "PM To %s(ID %d): %s", Name2, id, str2);
SendClientMessage(playerid, 0xFF0000FF, str);
format(str, sizeof(str), "PM From %s(ID %d): %s", Name1, playerid, str2);
SendClientMessage(id, 0xFF0000FF, str);
return 1;
}
Alles anzeigen
Habe hier meinen /pm Command jetzt in der gewuenschten Form
Da stellt sich mir jedoch die Frage: Inwiefern ist das mit sscanf besser als alles mit strtok zu machen? Ist das schneller und/oder ressourcensparender?
Oder alternativ mein alter /get command mit strtok und der neue mit sscanf
C
if(strcmp(cmd, "/get", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
/*new tmp[20], targetplayer;
tmp = strtok(cmdtext, idx);*/
new targetplayer;
if(sscanf(cmdtext[strlen("/get")+1], "u", targetplayer))
return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /get [playerid]");
if(!IsPlayerConnected(targetplayer))
return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected");
if(playerid == targetplayer)
return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot get yourself!");
if(IsPlayerConnected(targetplayer))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SetPlayerInterior(targetplayer,GetPlayerInterior(playerid));
SetPlayerPos(targetplayer, x+1, y+1, z);
return 1;
}
}
else
{
return 0;
}
}
Alles anzeigen
C
if(strcmp(cmd, "/get", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
new tmp[20], targetplayer;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /get [playerid]");
targetplayer = strval(tmp);
if(!IsPlayerConnected(targetplayer))
return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected");
if(playerid == targetplayer)
return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot get yourself!");
if(IsPlayerConnected(targetplayer))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SetPlayerInterior(targetplayer,GetPlayerInterior(playerid));
SetPlayerPos(targetplayer, x+1, y+1, z);
return 1;
}
}
else
{
return 0;
}
}
Alles anzeigen