In die .ini wird nix geschrieben

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
  • Hallu Leute,
    ich muss heut irgendwie nen kompletten Blackout haben, ich bekomm ne einfache dini Funktion net hin...
    hier der Code:


    stock save(id)
    {
    new accFormat[18+MAX_PLAYER_NAME];
    format(accFormat, sizeof(accFormat), "/SpielerDaten/%s.ini", Spieler[id][Name]);
    if(!dini_Exists(accFormat)) dini_Create(accFormat);
    dini_IntSet(accFormat, "Admin", Spieler[id][Admin]);
    GetPlayerPos(id, Spieler[id][posX], Spieler[id][posY], Spieler[id][posZ]);
    dini_FloatSet(accFormat, "posX", Spieler[id][posX]);
    dini_FloatSet(accFormat, "posY", Spieler[id][posY]);
    dini_FloatSet(accFormat, "posZ", Spieler[id][posZ]);
    dini_IntSet(accFormat, "Geld", GetPlayerMoney(id));
    }


    in die .ini wird aber nix geschrieben, ich versteh einfach net, was falsch sein soll <.<



    //Edit: Ich hab jetz sau viel rumprobiert, die Stock Funktion direkt eingefügt, den SpielerDaten Ordner umbenannt, aber nichts will funktionieren.
    Derzeit befinden sich alle Accounts im Ordner "Accounts" in Scriptfiles
    Beim registrieren habe ich folgenden Code:


    format(accFormat, sizeof(accFormat), "Accounts/%s.ini", Spieler[playerid][Name]);
    dini_Create(accFormat);
    SendClientMessage(playerid, 0x00FF00AA, "Account erfolgreich angelegt");
    new pass = udb_hash(inputtext);
    dini_IntSet(accFormat, "Passwort", pass);


    Und die dini wird auch ohne Probleme erstellt und es wird das Passwort reingeschrieben.
    Bei OnPlayerDisconnect habe ich derzeit folgenden Code:
    if(Spieler[playerid][eingeloggt] == 1)
    {
    format(accFormat, sizeof(accFormat), "Accounts/%s.ini", Spieler[playerid][Name]);
    if(!dini_Exists(accFormat)) dini_Create(accFormat);
    dini_IntSet(accFormat, "Admin", Spieler[playerid][Admin]);
    GetPlayerPos(playerid, Spieler[playerid][posX], Spieler[playerid][posY], Spieler[playerid][posZ]);
    dini_FloatSet(accFormat, "posX", Spieler[playerid][posX]);
    dini_FloatSet(accFormat, "posY", Spieler[playerid][posY]);
    dini_FloatSet(accFormat, "posZ", Spieler[playerid][posZ]);
    dini_IntSet(accFormat, "Geld", GetPlayerMoney(playerid));
    Spieler[playerid][Admin] = 0;
    Spieler[playerid][eingeloggt] = 0;
    }


    Diese Daten werden allerdings NICHT gespeichert!!
    Und ja, der Spieler IST eingeloggt, wenn er sich eingeloggt hat. Ich hab diesbezüglich schon eine Debug Abfrage gemacht.

    2 Mal editiert, zuletzt von xerox102 ()

  • Zitat

    format(accFormat, sizeof(accFormat), "/SpielerDaten/%s.ini", Spieler[id][Name]);


    Möglicher weise irre ich mich, aber ich denke,
    dass selbe Problem einmal gehabt zuhaben.


    Entferne mal bitte den / vor dem Ordner "SpielerDaten" und
    überprüfe dann nochmal, ob Du die Groß- / Kleinschreibung
    auch wirklich beachtet hast.


    Bitte probiere das mal.
    Weiter habe ich Deinen Beitrag noch nicht gelesen.
    ^^

  • Der Name wird theoretisch von mir direkt beim Connecten abgefragt und in dieser oberen Variable gespeichert, würde das nicht funktionieren, könnte auch die Loginabfrage, ob schon ein Account existiert, nicht funktionieren. Ich versuchs aber trotzdem (wenns klappt, bin ich dieser Variable böse.)


    //Edit: Wie schon gedacht, hat leider nix gebracht..
    //Edit2: 4#Future - wie du weiter unten im Post sehen kannst, habe ich dann bereits den Ordner in "Accounts" unbenannt und dabei auch den / entfernt. Daran liegts also auch nicht. :S
    //Edit3: Ich weiß echt nicht, was ich noch ausprobieren soll. Ich würde das Script neu schreiben, aber ich würds ja wieder gleich schreiben, also wär das ziemlich sinnlos...

    Einmal editiert, zuletzt von xerox102 ()

  • Mach mal überall so /Accounts/%s.iniUnd erstell im Ordner "Scriptfiles" einen neuen Ordner der Accounts heißt.


    //Edit 1.

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • stock save(id)
    {
    new accFormat[18+MAX_PLAYER_NAME];
    format(accFormat, sizeof(accFormat), "/SpielerDaten/%s.ini", Spieler[id][Name]);
    if(!dini_Exists(accFormat)) dini_Create(accFormat);
    dini_IntSet(accFormat, "Admin", Spieler[id][Admin]);
    GetPlayerPos(id, Spieler[id][posX], Spieler[id][posY], Spieler[id][posZ]);
    dini_FloatSet(accFormat, "posX", Spieler[id][posX]);
    dini_FloatSet(accFormat, "posY", Spieler[id][posY]);
    dini_FloatSet(accFormat, "posZ", Spieler[id][posZ]);
    dini_IntSet(accFormat, "Geld", GetPlayerMoney(id));
    }


    ...fällt was auf?


    Gruss: Sonic

    I didn't hit you. I high fived your face.

  • Worauf willst du hinaus?
    diesen Stock benutze ich schon lange nicht mehr, und bei OnPlayerDisconnect (beim aktuellen) steht da ja auch Accounts und nicht SpielerDaten (siehe ende erster Post)


  • Worauf willst du hinaus?
    diesen Stock benutze ich schon lange nicht mehr, und bei OnPlayerDisconnect (beim aktuellen) steht da ja auch Accounts und nicht SpielerDaten (siehe ende erster Post)


    Gut überredet. mach dein TV an und sende mir die Daten. Ich fixx es dir schnell


    Gruss: Sonic

    I didn't hit you. I high fived your face.