Wieso Speichert Er das Geld nicht? brauche unbeding hilfe!

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
  • Guten Abend,
    Ich habe ein sehr großes Problem. Er speichert das Geld nicht.
    Hier ein Code mit stock SpielerLaden und stock SpielerSpeichern.
    Ich schreibe es aber nicht im Pawno code, da er irgendwie bei mir richtig verbuggt ist.


    stock SpielerSpeichern(playerid)
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    if(dini_Exists(Accounts))
    {
    dini_IntSet(Accounts,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Accounts,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Accounts,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Accounts,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Accounts,"Level",GetPlayerScore(playerid));
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    if(dini_Exists(Accounts))
    {
    SetPlayerScore(playerid,dini_Int(Accounts,"Kills"));
    GivePlayerMoney(playerid,dini_Int(Accounts,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Accounts,"Adminlevel"));
    SetPVarInt(playerid,"Baned",dini_Int(Accounts,"Baned"));
    }
    return 1;
    }


    Register usw ist alles drinne. Aber, schon, wenn ich mir ein neuen Account mache, bekomme ich kein Geld, obwohl ich eigentlich 1200 bekommen sollte.
    Bitte hilfe!
    MFG.

  • Ich habe dir doch das Wort "Printen" so schön verlinkt, da könnte man das ganz toll nachlesen ;)
    Es gib den angegebenen Text im Serverlog aus (und Console).
    Heißt du kannst sehen, wenn du gespeichert wirst und wie weit.


    Hier ein Beispiel:
    stock SpielerSpeichern(playerid){
    print("test 1");
    new Accounts[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Accounts,sizeof(Accounts),"/Accounts/%s.txt",Sname);
    print("test 2");
    if(dini_Exists(Accounts))
    {
    print("test 3");
    dini_IntSet(Accounts,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Accounts,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Accounts,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Accounts,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Accounts,"Level",GetPlayerScore(playerid));
    print("test 4");
    }
    print("test 5");
    return 1;
    }


    Dann guckste, was im Serverlog steht, wenn du einen Spieler speicherst.

  • Da ist alles normal O.o auch wenn ich den Print reinpacke.


    ----------
    Loaded log file: "server_log.txt".
    ----------


    SA-MP Dedicated Server
    ----------------------
    v0.3x-R2, (C)2005-2013 SA-MP Team


    [19:40:04] filterscripts = "" (string)
    [19:40:04]
    [19:40:04] Server Plugins
    [19:40:04] --------------
    [19:40:04] Loaded 0 plugins.


    [19:40:04]
    [19:40:04] Filterscripts
    [19:40:04] ---------------
    [19:40:04] Loaded 0 filterscripts.


    [19:40:04]
    ----------------------------------
    [19:40:04] Reallife
    [19:40:04] ----------------------------------


    [19:40:04] Number of vehicle models: 0

    Einmal editiert, zuletzt von Shinato ()


  • Kann es sein das du nichtmal auf den Server Connected hast?
    Ich sehe nirgents was von einer incomeing connection oder das ein User den Server betreten hat.
    :huh:


  • if(dini_Exists(Accounts) == 1)
    {
    SetPlayerScore(playerid,dini_Int(Accounts,"Kills"));
    GivePlayerMoney(playerid,dini_Int(Accounts,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Accounts,"Adminlevel"));
    SetPVarInt(playerid,"Baned",dini_Int(Accounts,"Baned"));
    }


  • if(dini_Exists(Accounts) == 1)


    Hier wird gefragt ob der account exestiert


    da wenn man nur


    if(dini_Exists(Accounts))


    Dann besieht er sich immer auf 0...


    if(dini_Exists(Accounts) == 1)


    Hier wird ja abgefragt ob der account exestiert und wenn ja ...


    Fg


  • Du liegst da etwas falsch, eine Abfrage ohne explizite Wertgleichung ergibt immer true wenn der Rückgabewert der Funktion ein positiver Wert größer gleich 1 ist:


    if(dini_Exists(Accounts)) // > 1
    if(!dini_Exists(Accounts)) // 0