Hab dir mal ein paar Anmerkungen als Kommentar hinten dran geschrieben was mir so in der schnelle aufgefallen ist, was du ändern solltest.
ocmd:kick(playerid,params[])
{
new string1[128], string2[128];
new Spielerid[MAX_PLAYER_NAME], sID[MAX_PLAYER_NAME];
GetPlayerName(playerid,Spielerid,sizeof(Spielerid));
GetPlayerName(playerid,sID,sizeof(sID)); //Du solltest den Namen vom Spieler der gekickt werden soll erst abfragen wenn dieser auch bestimmt wurde (nach sscanf)
if(!IsPlayerConnected(sID))return SendClientMessage(Spielerid,Farbe_Rot,"Dieser Spieler befindet sich nicht auf dem Server!"); //Spieler wird immer ID 0 sein wenn die sscanf abfrage danach kommt, da sID noch keinen Wert bekommen hat.
if(sscanf(params,"u",sID))return SendClientMessage(Spielerid,Farbe_Rot,"BEFEHL: /kick [ID]");
format(string1,sizeof(string1),"AdmInfo: %s hat %s vom Server gekickt!",Spielerid,sID);
format(string2,sizeof(string2),"Du wurdest von %s gekickt!",Spielerid);
if(IstSpielerAdmin(playerid,5))
{
Kick(sID); // Du kickst den Spieler bevor du ihm die Nachricht "Du wurdest von XY gekickt!" schickst
SendClientMessage(sID,Farbe_Rot,string2); // Logischer weise sieht er die Nachricht hier nichtmehr, da er schon gekickt ist.
for(new i; i < MAX_PLAYERS;i++)
{
if(SpielerInfo[i][pAdmin] > 0)
{
SendClientMessage(playerid,Farbe_Rot,string1);
return 1;
}
}
}
else
{
SendClientMessage(playerid,Farbe_Rot,"Du bist nicht berechtigt diesen Befehl zu benutzen!");
return 1;
}
return 1;
}