Server Ban

  • Server
  • Windows

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hi Leute,

    ich bin seit 2 Wochen wieder dabei mir das scripten beizubringen. Alles funktioniert bisher ganz gut, nur eine Sache ist wirklich nervig. Jedes mal, wenn ich vom meinem Server mit /q disconnecte, werde ich automatisch vom Server gebannt und muss das immer manuell im Account umändern und mich entbannen.

    Weiß jemand, woran das liegen könnte?
  • Das ist OnPlayerDisconnect:

    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }

    Und das die Ban Funktion:

    ocmd:ban(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel") >= 5)
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,0xFD4B00FF,"/ban [id] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFD4B00FF,string);
    SetPVarInt(playerid,"Baned",1);
    Kick(pID);
    return 1;
    }
    return 1;

    }

    Es hat schon mal funktioniert wie gewollt, aber dann ab einem Punkt kam das beschriebene Problem.
  • Was du da im Bahnbefehl versuchen willst kann garnicht funktionieren. pVars setzen sich beim Disconnect automatisch zurück auf 0.
    Zeig Mal OnPlayerConnect.
    Welche Nachricht kriegst du denn beim connecten? Die SA:MP Nachricht "You are banned from this server." ?
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • LeonMrBonnie schrieb:

    Was du da im Bahnbefehl versuchen willst kann garnicht funktionieren. pVars setzen sich beim Disconnect automatisch zurück auf 0.
    Zeig Mal OnPlayerConnect.
    Welche Nachricht kriegst du denn beim connecten? Die SA:MP Nachricht "You are banned from this server." ?
    Nope. Beim connecten, wenn der Server den Wert auf 1 stellt nur "Server closed the connection".

    public OnPlayerConnect(playerid)
    {
    new welcome[128];
    format(welcome,sizeof(welcome),"Willkommen %d auf dem Server von Reallife German");
    SendClientMessage(playerid,COLOR_WHITE,welcome);

    new message[128];
    format(message,sizeof(message),"Mit /befehle kannst Du alle Befehle nachsehen",playerid);
    SendClientMessage(playerid,COLOR_YELLOW,message);
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Registrieren","Bitte gib dein gewünschtes Passwort ein","Registrieren","Abbrechen");

    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))
    {
    ShowPlayerDialog(playerid,4,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib dein Passwort bitte ein","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"Registrieren","Bitte gib dein gewünschtes Passwort ein","Registrieren","Abbrechen");
    }
  • Du musst auch die sachen beim connecten wieder reseten für die neuen Spieler die kommen

    PAWN-Quellcode

    1. //OnPlayerConnect(playerid)
    2. sachenset/playerid);
    3. //ganz unten
    4. stock sachenset(playerid)
    5. {
    6. SetPVarInt(playerid,"Baned",0);
    7. return true;
    8. }


    besser were es wenn du dir einen Spieler Enum erstellt

    zb

    PAWN-Quellcode

    1. enum sInfo
    2. {
    3. level,
    4. admin,
    5. banned
    6. }
    7. new SpielerInfo[MAX_PLAYERS][sInfo];
    8. sInfo[playerid][banned] = 1;

    geht etwas einfacher und ist übersichtlicher
  • Hog schrieb:

    Du musst auch die sachen beim connecten wieder reseten für die neuen Spieler die kommen

    PAWN-Quellcode

    1. //OnPlayerConnect(playerid)sachenset/playerid);//ganz untenstock sachenset(playerid){SetPVarInt(playerid,"Baned",0);return true;}

    Nein, das brauch er nicht. pVars setzen sich beim Disconnect alle automatisch auf 0.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • LeonMrBonnie schrieb:

    Hog schrieb:

    Du musst auch die sachen beim connecten wieder reseten für die neuen Spieler die kommen

    PAWN-Quellcode

    1. //OnPlayerConnect(playerid)sachenset/playerid);//ganz untenstock sachenset(playerid){SetPVarInt(playerid,"Baned",0);return true;}

    Nein, das brauch er nicht. pVars setzen sich beim Disconnect alle automatisch auf 0.
    Dann ist nur halt die Frage, warum der Wert bei "Baned" von 0 auf 1 automatisch gesetzt wird. Ich habe eigentlich nix auffälliges drin, was dazu führen könnte.

  • Kaliber schrieb:

    Jiren schrieb:

    Weiß jemand, woran das liegen könnte?
    Interessant wäre die Funktion SpielerSpeichern mal zu sehen :)
    Und wie du den Spieler lädst.

    und du solltest mal crashdetect laden um zu schauen, ob es zu Fehlern kommt.
    So speicher er alles halt:

    stock SpielerSpeichern(playerid)
    {

    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    new pfad[128];
    dini_Exists(pfad);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Baned",1);
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Auto",GetPVarInt(playerid,"Auto"));
    return 1;
    }

    Und wie gesagt, es hat alles super funktioniert bis das mit dem Ban kam..der Ban Befehle funzt an sich auch.
  • Jiren schrieb:

    Dann ist nur halt die Frage, warum der Wert bei "Baned" von 0 auf 1 automatisch gesetzt wird. Ich habe eigentlich nix auffälliges drin, was dazu führen könnte.
    Eben doch, du setzt die Bann-Variable bei jeder Speicherung auf 1:

    Jiren schrieb:

    dini_IntSet(Spielerdatei,"Baned",1);


    Änder das, und dein Problem sollte sich in Luft auflösen ;)
    Mit freundlichen Grüßen
    FineTime

    JacLos schrieb:

    INFO: Bei mysql_format steht %d immer für dämlich. Deshalb nehmen wir %s für schlau oder %e für elegant.
    [...]
    Wichtig: Diese abfrage muss IMMER bei stocks stehen, ansonsten kann es sein, dass dein computer gelöscht wird.

    Weitere, mehr oder weniger lustige, Zitate findet ihr auf meinem Profil.
  • FineTime schrieb:

    Jiren schrieb:

    Dann ist nur halt die Frage, warum der Wert bei "Baned" von 0 auf 1 automatisch gesetzt wird. Ich habe eigentlich nix auffälliges drin, was dazu führen könnte.
    Eben doch, du setzt die Bann-Variable bei jeder Speicherung auf 1:

    Jiren schrieb:

    dini_IntSet(Spielerdatei,"Baned",1);
    Änder das, und dein Problem sollte sich in Luft auflösen ;)
    Vielen Dank, es funkioniert wieder! :D

    Kaliber schrieb:

    Jiren schrieb:

    dini_IntSet(Spielerdatei,"Baned",1);
    Das ist der Fehler.
    Schreib da mal:

    PAWN-Quellcode

    1. dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));

    Omg, hab das die ganze Zeit nicht gesehen..trotzdem vielen Dank auch von mir.