Problem mit /kick und /ban

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo
    ich habe ein Problem mit meinem Kick / Ban Befehl. Bei mir wird die Nachricht nicht angezeigt das ich Gekickt / Gebannt wurde. Da steht nur Server close the connection...
    Code:

    //Oben
    forward KickPlayer(playerid);
    forward BanPlayer(playerid);
    //Befehle
    ocmd:kick(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    if(PlayerInfo[playerid][pAdminlevel] < 1 ) return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
    new name[MAX_PLAYER_NAME],sendername[MAX_PLAYER_NAME],string[128],pID,reason[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Grau,"Benutze: /kick [playerid/PartOfName] [Grund]");
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,name,sizeof(name));
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt, Grund: %s",sendername,name,reason);
    SendClientMessageToAll(Rot,string);
    SetTimerEx("KickPlayer", 1000, false, "i", pID);
    KickPlayer(pID);
    return 1;
    }
    ocmd:ban(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    if(PlayerInfo[playerid][pAdminlevel] < 2)return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
    new name[MAX_PLAYER_NAME],sendername[MAX_PLAYER_NAME],string[128],pID,reason[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Grau,"Benutze: /ban [playerid/PartOfName] [Grund]");
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,name,sizeof(name));
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt, Grund: %s",sendername,name,reason);
    SetTimerEx("BanPlayer", 1000, false, "i", pID);
    BanPlayer(pID);
    return 1;
    }
    //Unten
    public KickPlayer(playerid)
    {
    Kick(playerid);
    return 1;
    }


    public BanPlayer(playerid)
    {
    PlayerInfo[playerid][pBanned] = 1;
    Kick(playerid);
    return 1;
    }

  • Versuche es mal so. Es ist ein SA:MP Bug. Er muss die Nachricht kommen und anschließend der Ban via. Timer


    //Oben
    forward KickPlayer(playerid);
    forward BanPlayer(playerid);
    //Befehle
    ocmd:kick(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    if(PlayerInfo[playerid][pAdminlevel] < 1 ) return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
    new name[MAX_PLAYER_NAME],sendername[MAX_PLAYER_NAME],string[128],pID,reason[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Grau,"Benutze: /kick [playerid/PartOfName] [Grund]");
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,name,sizeof(name));
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt, Grund: %s",sendername,name,reason);
    SendClientMessageToAll(Rot,string);
    SetTimerEx("KickPlayer", 1000, false, "i", pID);
    return 1;
    }
    ocmd:ban(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    if(PlayerInfo[playerid][pAdminlevel] < 2)return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
    new name[MAX_PLAYER_NAME],sendername[MAX_PLAYER_NAME],string[128],pID,reason[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Grau,"Benutze: /ban [playerid/PartOfName] [Grund]");
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,name,sizeof(name));
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt, Grund: %s",sendername,name,reason);
    SetTimerEx("BanPlayer", 1000, false, "i", pID);
    return 1;
    }
    //Unten
    public KickPlayer(playerid)
    {
    Kick(playerid);
    return 1;
    }


    public BanPlayer(playerid)
    {
    PlayerInfo[playerid][pBanned] = 1;
    BanPlayer(pID);
    Kick(playerid);
    return 1;
    }

  • Danke hat geklappt. Aber wenn die Variable Banned auf 1 ist, ändert sich nichts ich kann trotzdem connecten...
    OnPlayerConnect:

    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    if(PlayerInfo[playerid][pBanned] == 1)
    {
    SendClientMessage(playerid,Rot,"Du bist auf diesem Server gebannt!");
    SetTimerEx("KickPlayer", 1000, false, "i", playerid);
    }
    else if(PlayerInfo[playerid][pBanned] == 0)
    {
    SendClientMessage(playerid,Rot,"SERVER: Dein Account wurde in unserer Datenbank gefunden.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"SERVER: Du bist noch nicht Registriert.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrierung","Bitte gib dein gewünschtes Passwort ein:","Register","Abbrechen");
    }

  • if(dini_Int(Spielerdatei,"Banned") == 1)
    {
    //Wenn der Spieler gebannt ist
    }
    So würde die Abfrage dazu aussehen.