Ich hab in meinem Selfmade jetzt ein Bannsystem reingemacht. Nur das funktioniert leider nicht so, wie ich das will.
Erstmal die Spieler enum:
enum PlayerDATA
{
Level,
Admin,
Geld,
SpawnSkin,
Banned
}
new Spieler[MAX_PLAYERS][PlayerDATA];
{
Level,
Admin,
Geld,
SpawnSkin,
Banned
}
new Spieler[MAX_PLAYERS][PlayerDATA];
Dann der Bann befehl:
ocmd:ban(playerid, params[])
{
new pID, PlayerName[64], pIDName[64], Grund[128], string[256], Playerdatei[128];
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",pIDName);
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
GetPlayerName(pID, pIDName, sizeof(pIDName));
if(Spieler[playerid][Admin] < 3) return SendClientMessage(playerid, Rot, "Du bist kein Admin!");
if(sscanf(params, "us", pID, Grund)) return SendClientMessage(playerid, Rot, "Benutze: /ban [ID] [Grund]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, Rot, "Spieler nicht gefunden!");
//if(playerid == pID) return SendClientMessage(playerid, Rot, "Du kannst dich nicht selbst bannen!"); // Zum Test, damit ich mich selbst bannen kann.
format(string, sizeof(string), "%s wurde von %s gebannt. Grund: %s", pIDName, PlayerName, Grund);
SendClientMessageToAll(Rot, string);
SetPVarInt(pID,"Eingeloggt",0);
SpielerSpeichern(pID);
Kick(pID);
return 1;
}
{
new pID, PlayerName[64], pIDName[64], Grund[128], string[256], Playerdatei[128];
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",pIDName);
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
GetPlayerName(pID, pIDName, sizeof(pIDName));
if(Spieler[playerid][Admin] < 3) return SendClientMessage(playerid, Rot, "Du bist kein Admin!");
if(sscanf(params, "us", pID, Grund)) return SendClientMessage(playerid, Rot, "Benutze: /ban [ID] [Grund]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, Rot, "Spieler nicht gefunden!");
//if(playerid == pID) return SendClientMessage(playerid, Rot, "Du kannst dich nicht selbst bannen!"); // Zum Test, damit ich mich selbst bannen kann.
format(string, sizeof(string), "%s wurde von %s gebannt. Grund: %s", pIDName, PlayerName, Grund);
SendClientMessageToAll(Rot, string);
SetPVarInt(pID,"Eingeloggt",0);
SpielerSpeichern(pID);
Kick(pID);
return 1;
}
Und hier der AccountLaden stock:
stock AccountLaden(playerid)
{
if(Spieler[playerid][Banned] == 1)
{
new string[128], PlayerName[64];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
SendClientMessage(playerid, Rot, "_________| Info |__________");
SendClientMessage(playerid, Rot, "| |");
SendClientMessage(playerid, Rot, "| Du wurdest permanent |");
SendClientMessage(playerid, Rot, "| Des Servers verwiesen |");
SendClientMessage(playerid, Rot, "|_________________________|");
Kick(playerid);
format(string, sizeof(string), "%s hat versucht dem Server beizutreten, obwohl er gebannt ist.", PlayerName);
SendClientMessageToAll(Rot, string);
}
new Playerdatei[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
Spieler[playerid][Level] = dini_Int(Playerdatei,"Level");
Spieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");
Spieler[playerid][Geld] = dini_Int(Playerdatei, "Geld");
Spieler[playerid][SpawnSkin] = dini_Int(Playerdatei, "SpawnSkin");
Spieler[playerid][Banned] = dini_Int(Playerdatei,"Banned");
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
{
if(Spieler[playerid][Banned] == 1)
{
new string[128], PlayerName[64];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
SendClientMessage(playerid, Rot, "_________| Info |__________");
SendClientMessage(playerid, Rot, "| |");
SendClientMessage(playerid, Rot, "| Du wurdest permanent |");
SendClientMessage(playerid, Rot, "| Des Servers verwiesen |");
SendClientMessage(playerid, Rot, "|_________________________|");
Kick(playerid);
format(string, sizeof(string), "%s hat versucht dem Server beizutreten, obwohl er gebannt ist.", PlayerName);
SendClientMessageToAll(Rot, string);
}
new Playerdatei[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
Spieler[playerid][Level] = dini_Int(Playerdatei,"Level");
Spieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");
Spieler[playerid][Geld] = dini_Int(Playerdatei, "Geld");
Spieler[playerid][SpawnSkin] = dini_Int(Playerdatei, "SpawnSkin");
Spieler[playerid][Banned] = dini_Int(Playerdatei,"Banned");
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
Um zu testen hab ich mir einen "BannMe" Befehl gemacht:
ocmd:banme(playerid, params[])
{
Spieler[playerid][Banned] = 1;
SpielerSpeichern(playerid);
return 1;
}
{
Spieler[playerid][Banned] = 1;
SpielerSpeichern(playerid);
return 1;
}
Wenn ich aber jetzt mit meinem Account (Banned ist in der *.ini auf 1 gesetzt!) auf den Server connecte, kann ich mich ganz normal einloggen, aber empfange die Bann nachricht nicht, und werde auch nicht gekickt, kann also ganz normal spielen.