Du verwendest pID, was immer 0 ist. Und die Einrückung ist nicht ganz so toll, GetPlayerName öffnet eigentlich keine Ebene.
Den text könntest du dir auch sparen (ebenso den Grund im aduty Befehl) wenn du es sscanf in string speichern lässt, nur so am Rande, damit du auch die Optimierung kennenlernst.
ocmd:a(playerid,params[])
{
//if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
new string[145],name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(sscanf(params,"s",string))return SendClientMessage(playerid,ROT,"Benutzung: /a [TEXT] ");
format(string,sizeof(string),"(( %s {FFFFFF} %s sagt: %s {FF0000}))",arangs(playerid),name,string);
SendClientMessageToAll(HELLROT,string);//SetPlayerSkin(playerid, 27);
return 1;
}
String kann wieder in sich selbst geschrieben werden, das spart Speicher. Falls dir das aber nicht klar ist, dann mache es über die text Variable.