Du bringst id und pID durcheinander.
Du solltest wirklich mehr Ordnung in deinen Code bringen, dann hast du es generell auch viel einfacher...
//Oben im Skript
#define IsNotConnected(%0) (!IsPlayerConnected(%0) || !AccountInfo[%0][account_Eingeloggt])
#define SCME(%0,%1,%2,%3) format(string,sizeof(string),%2,%3),SendClientMessage(%0,%1,string)
#define GetName(%0) global_names[%0]
new global_names[MAX_PLAYERS][MAX_PLAYER_NAME];
//Unter OnPlayerConnect
GetPlayerName(playerid, GetName(playerid), MAX_PLAYER_NAME);
//Der Befehl
ocmd:pm(playerid, params[])
{
new string[256], msg[145], pID;
if(sscanf(params, "us[145]", pID, msg)) return SendFehler(playerid,"/pm [Name/ID] [Nachricht]"),1;
if(IsNotConnected(pID)) return SendFehler(playerid,"Der angegebene Spieler ist nicht online");
if(playerid == pID) return SendFehler(playerid,"Du kannst dir nicht selber eine PM senden");
SCME(playerid, ORANGE, "(( PM an %s[%d]: %s ))", GetName(pID), pID, msg);
SCME(pID, ORANGE, "(( PM von %s[%d]: %s ))", GetName(playerid), playerid, msg);
return 1;
}
Alles anzeigen
Dann sieht man auch, was Sache ist...