Spielerdaten werden nicht Vernünftig gespeichert oder geladen.

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 Liebe Community,


    ich habe folgendes Problem , undzwar werden meine spielerdatein nicht gespeichert.
    Wenn ich z.b. ingame jemanden banne wird dies nicht in der dini gespeichert.


    Hier die beiden Publics:



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


    public OnPlayerConnect(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    SetPlayerColor(playerid,Weiß);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen"); //Register
    }
    {



    Und die dazugehörigen Stocks



    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,Weiß,"Sie haben sich erfolgreich eingeloggt");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Weiß,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }


    }



    stock LoadAccount(playerid)


    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Alter"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fratktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Leader",dini_Int(Spielerdatei,"Leader"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if (GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,Orange,"Du bist gebannt!");
    Kick(playerid);

    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)


    {
    SetPVarInt(playerid,"loggedin",1);

    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Alter",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Leader",GetPVarInt(playerid,"Leader"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));

    return 1;
    }

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


    /edit


    Das Script hat weder warnings noch Errors

  • Guten Tag.
    Also soweit Ich weiß, wird beiSetPvarInt(playerid,"Test",1);
    Erst beim Ausloggen Gespeichert. Aber da kann ich mich auch irren.
    Benutz mal den Befehl:

    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Orange,"Du bist kein Admin.");
    new pID, reason[128],string[128];
    if (sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Orange,"/ban [ID] [GRUND]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt, Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(Orange,string);
    SetPVarInt(playerid,"Baned",1);
    SpielerSpeichern(pID); <-- Falls (pID) Spinnt nimm --> (playerid)
    Kick(pID);
    return 1;
    }
    Durch 'SpielerSpeichern',wird dies Derekt gespeichert. Wenn ich da nicht Falsch liege.
    Falls es Immernoch nicht Funkt, Poste die Fehler hier & Ich versuche zu Helfen.


    MFG
    ShiNuX


  • Ich habe dies Ausprobiert doch es funktioniert nicht.
    Der gebante spieler konnte wieder Connecten.


    /edit


    und wieso sollte ich hier :
    SpielerSpeichern(pID); <-- Falls (pID) Spinnt nimm --> (playerid)


    die Playerid nutzen? Ich möchte doch den Spieler speicher und nicht mich selbst oder irre ich mich 8|

  • Hallo.
    Mit dem Befehl,wird Ja "Baned" auf 1 Gesetzt.
    Erstell dir Einfach eine Anfrage, die Abfragt ob der Spieler gebannt Ist oder Nicht.
    Diese Abfrage, baust du dan Unter "OnPlayerConnect" ein.
    Somit wird er Beim versuchen sich Einzuloggen vom System Gekickt.


    Hier mal ein bsp für OnPlayerConnect:

    if(IsPlayerConnected(playerid))
    {
    if(Test(playerid,1))
    {
    //blabla
    return 1;
    }
    Falls du Hilfe brauchst bei der Funktion schreib mich Einfach an.
    PS: Du musst Natürlich, die Funktion noch im Script Defenieren.


    MFG
    ShiNuX

  • Also ich bin nochn anfänger und versteh net grade viel vom scripten, aber muss das net so sein?


    SetPVarInt(pID,Baned,1);


    PS: Seit mir net böse wenn meine anwort falsch is :D

  • Also ich bin nochn anfänger und versteh net grade viel vom scripten, aber muss das net so sein?


    SetPVarInt(pID,Baned,1);


    PS: Seit mir net böse wenn meine anwort falsch is :D

    Ne das ist ja so schon richtig ;) Hier der auszug aus meinem Ban Befehl : SetPVarInt(playerid,"Baned",1); Stimmt danke mal kuken ob es klappt :)




    Wenn du unter den LoadAccount Stock mal nachkukst ;) Und welche Funktion sollte ich defenieren ?


    //edit ach mist fält mir grad auf da muss pID hin :Faceample: :D

    Einmal editiert, zuletzt von Socke ()

  • Hallo Socke.
    Erstell dir Im Script einen "Stock".
    Diesen Bennenst du dan In z.b "IsPlayerDoof".
    Und dann Natürlich die Funktion, die Bei diesem Stock passieren Soll.


    MFG
    ShiNuX

  • Hallo Socke.
    Erstell dir Im Script einen "Stock".
    Diesen Bennenst du dan In z.b "IsPlayerDoof".
    Und dann Natürlich die Funktion, die Bei diesem Stock passieren Soll.


    MFG
    ShiNuX



    Ich weiß wie ein Stock geschrieben wird :)


    und die Funktionen sind ja alle enthalten nur es wird nichts richtig gespeichert oder geladen....


    //Edit habe den rest selber gelöst :) und danke DiNoo der mich auf den schreibfehler aufmerkersam gemacht hat.

    Einmal editiert, zuletzt von Socke ()