Problem mit Ban Befehl

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
  • Moin ich habe ein Problem mit meinem Ban Befehl.Eigentlich müsste es richtig sein jedoch erstellt er in der Spielerdatei kein "Baned":
    Befehl:
    COMMAND:ban(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du bist kein Admin");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"/ban ID Grund");
    format(string,sizeof(string),"Server: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Baned",1);
    Kick(pID);
    return 1;
    }
    Account speichern:
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    Account laden:
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist permanent vom Server gebannt");
    Kick(playerid);
    }


    Ich hoffe ihr könnt mir helfen.

  • Zeig mal den gesamten Code, wo die 'Baned' Variable gespeichert wird.

  • stock SpielerSpeichern(playerid)
    {
    new sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sname,sizeof(sname));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",sname);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    GetAdminRank(playerid);
    return 1;
    }

  • if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist permanent vom Server gebannt");
    Kick(playerid);
    }
    Lädst du denn vorher auch den Wert für die PVar "Baned" aus der Userdatei ? Denn PVars werden NICHT auf dem Server gespeichert, sie sind ungültig sobald der Spieler den Server verlässt. Bischen mehr Code / Informationen schaden nie.
    Steht denn in der Userdatei,dass der Spieler gebannt ist ( falls du ihn wirklich bannst ) ?

  • Ja das tuhe ich.
    stock LoadAccount(playerid)
    {
    new sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sname,sizeof(sname));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",sname);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist permanent vom Server gebannt");
    Kick(playerid);
    }
    return 1;
    }

  • mach den ganzen befehl ma so



    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"/ban [id] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    SetPVarInt(pID,"Baned",1);
    Kick(pID);
    return 1;
    }


    ocmd ist immer besser ;)

  • [...]
    ocmd ist immer besser ;)


    Totaler Blödsinn,hat Neumaner aber auch schon geschrieben. ZCMD ist das Orginal,OCMD nur eine Kopie die hier im Forum stark verbreitet wird. Wie auch immer,zurück zum Thema.


    Füg mal Debugnachricht bei SpielerSpeichern ein:
    stock SpielerSpeichern(playerid)
    {
    printf("Start: SpielerSpeichern(%d)",playerid);
    new sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sname,sizeof(sname));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",sname);
    printf("SpielerSpeichern: Spielerdatei -> '%s'",Spielerdatei);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    GetAdminRank(playerid); // <- wozu isn das hier überhaupt gut :-O ?
    printf("Ende: SpielerSpeichern(%d)",playerid);
    return 1;
    }
    Poste mal die Ausgabe.Eventuell liegt es auch am Usernamen,falls dort Sonderzeichen vorhanden sind ( War früher jedenfalls so).

  • Ja ich melde mich auch mal wieder.Username ist Neumaner.Also kein Sonderzeichen.Wenn ich deinen stock ersetze durch meinen und dann /ban Neumaner dfgd eingebe landet garnichts davon in der Konsole.