@LordDemacia
Auch wenn mein Code selber manchmal unordentlich ist, möchte dir diesbezüglich, mal ein paar Tipps geben.
Verwende wie ich bereits gestern erwähnte Makros, es ist nicht sehr "gut", überall im Skript, jederzeit, den Spieler Namen erneut auszulesen, wenn es einmal auch reicht.
Wenn du eine Variable erstellst, erstelle sie alle auf einmal, und nicht einzeln.
Verwende doch Tab anstatt Leerzeichen um deine Zeilen einzurücken, das ist schrecklich, aber genau so, habe ich es in meiner Anfangszeit auch gemacht, ist aber so ziemlich hässlich, benutze Tab.
Ich weiß dass es bei einer bestimmten sscanf Version der Fall war, dass man die String Länge auch bei der Nutzung angeben musst, probiere es mal ohne, ich kann es auch problemlos ohne Angabe nutzen.
Frage am Besten gleich ab ob er Eingeloggt ist & nicht ob er nur Online ist.
Ban & Kick hintereinander? Das macht kein Skin, bei der Ban Funktion wird man ebenfalls gekickt.
Nutze Banfix oder einen eigenen Timer der die das mit dem Kickfix übernimmt, sprich, wenn du es so machst, wird dem Spieler selbst, die Nachricht nicht angezeigt, warum er gebannt/gekickt wurde.
Soo
Wie gesagt, erstell dir mal in deiner Datenbank Struktur ein Feld was sich 'ban' nennt & richte es beim Speichern & Laden ein.
Habe dir mal den Code umgeschrieben & kleine Erklärungen unterkommentiert, hoffentlich kannst du was mit anfangen.
//Makro für das Spielernamen ausgeben, kann für jeden Spieler der Online ist, genutzt werden.#define getName(%0) PlayerInfo[%0][pName]//Bei deinem Player Enum fügst du hinzu & pBanpName[MAX_PLAYER_NAME+1],pBan,//Einmalig bei OnPlayerConnectGetPlayerName(playerid, getName(playerid), MAX_PLAYER_NAME+1);CMD:ban(playerid, params[]){ if(PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, -1,"Du bist kein Admin. Du kannst den Befehl nicht nutzen!"); new PID, str[128]; if(sscanf(params, "us", PID, str)) return SendClientMessage(playerid, -1, "[Benutze] /ban [playerid] [Grund]"); if(!PlayerInfo[PID][pLoggedIn])return SendClientMessage(playerid, -1, "Spieler ist nicht eingeloggt!"); format(str, sizeof str, "'%s' wurde gebannt von [Admin] '%s'. [Grund:] %s", getName(PID), getName(playerid), str), SendClientMessageToAll(-1, str), pInfo[PID][pBan] = 1, Kick(PID); return 1;}
//EDIT Admin Abfrage abgeändert. Banfix ist ein Include, lad es dir mal runter.
Meine SSCANF Version, die ich nutze. <- Download
BanFix - Include | Download