Neue Spieler werden nicht gespeichert

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 Tag,
    Ich habe ein ernstes Problem:
    Es werden keine Accounts gespeichert (keine Spielerdatei wird erstellt).
    Hier mal ein paar Auszüge aus dem Script:


    public OnPlayerDisconnect(playerid, reason)
    {
    SpielerSpeichern(playerid);
    return 1;
    }


    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SetPVarInt(playerid,"ZeitSeitPD",dini_Int(Spielerdatei,"ZeitSeitPD"));
    SetPVarInt(playerid,"Respektpunkte",dini_Int(Spielerdatei,"Respektpunkte"));
    SetPVarInt(playerid,"Respekt",dini_Int(Spielerdatei,"Respekt"));
    SetPVarInt(playerid,"LevelMoney",dini_Int(Spielerdatei,"LevelMoney"));
    SendClientMessage(playerid,GELB,"Erfolgreich registriert.");
    SetPlayerScore(playerid,1);
    SetPVarInt(playerid,"loggedin",1);
    dini_IntSet(Spielerdatei, "Fraktion",0);
    dini_IntSet(Spielerdatei, "Geld", 1200);
    dini_IntSet(Spielerdatei, "Autoschein",0);
    dini_IntSet(Spielerdatei, "Bank", 10000);
    dini_IntSet(Spielerdatei, "WantedLevel", 0);
    dini_IntSet(Spielerdatei, "ZeitSeitPD", 0);
    dini_IntSet(Spielerdatei, "Respektpunkte", 0);
    dini_IntSet(Spielerdatei, "Respekt", 8);
    dini_IntSet(Spielerdatei, "LevelMoney", 2000);
    return 1;
    }


    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,GELB,"Erfolgreich eingeloggt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,GELB,"Das eingegebene Passwort ist nicht korrekt.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"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,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du wurdest vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    SetPlayerSkin(playerid, dini_Int(Spielerdatei, "SkinID"));
    SetPVarInt(playerid, "Job", dini_Int(Spielerdatei, "Job"));
    SetPVarInt(playerid, "Leader",dini_Int(Spielerdatei,"Leader"));
    SetPVarInt(playerid, "Mitglied",dini_Int(Spielerdatei,"Mitglied"));
    SetPVarInt(playerid, "Bank",dini_Int(Spielerdatei,"Bank"));
    SetPVarInt(playerid, "WantedLevel",dini_Int(Spielerdatei,"WantedLevel"));
    SetPVarInt(playerid, "Autoschein",dini_Int(Spielerdatei,"Autoschein"));
    SetPVarInt(playerid, "ZeitSeitPD", dini_Int(Spielerdatei, "ZeitSeitPD"));
    SetPVarInt(playerid, "Respektpunkte", dini_Int(Spielerdatei, "Respektpunkte"));
    SetPVarInt(playerid, "Respekt", dini_Int(Spielerdatei, "Respekt"));
    SetPVarInt(playerid, "LevelMoney", dini_Int(Spielerdatei, "LevelMoney"));
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(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, "Level",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, "Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei, "Bank", GetPVarInt(playerid,"Bank"));
    dini_IntSet(Spielerdatei, "WantedLevel", GetPVarInt(playerid,"Wantedlevel"));
    dini_IntSet(Spielerdatei, "SkinID", GetPlayerSkin(playerid));
    dini_IntSet(Spielerdatei, "Job", GetPVarInt(playerid,"Job"));
    dini_IntSet(Spielerdatei, "Mitglied", GetPVarInt(playerid,"Mitglied"));
    dini_IntSet(Spielerdatei, "Leader", GetPVarInt(playerid,"Leader"));
    dini_IntSet(Spielerdatei, "Autoschein",GetPVarInt(playerid,"Autoschein"));
    dini_IntSet(Spielerdatei, "ZeitSeitPD", GetPVarInt(playerid,"ZeitSeitPD"));
    dini_IntSet(Spielerdatei, "Respektpunkte", GetPVarInt(playerid,"Respektpunkte"));
    dini_IntSet(Spielerdatei, "Respekt", GetPVarInt(playerid,"Respekt"));
    dini_IntSet(Spielerdatei, "LevelMoney", GetPVarInt(playerid,"LevelMoney"));
    }
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,GELB,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,GELB,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }


    Ich hoffe ihr könnt mir helfen. Ich kann wegen diesem Problem nicht weiterarbeiten.
    (ich habe das dini include oben in includes eingetragen und habe die datei auch im pawno/include ordner)
    (ich habe unter scriptfiles einen Accounts Ordner erstellt)
    // Edit: Auf meinem Script schaut alles Gut aus (dH keine unregelmäßigen Abstände wie hier im pwn plugin). Außerdem bekomme ich keine Errors
    LG,
    badnat

  • Doch wurden sie, aber dann habe ich etwas geändert, und wenn ich mich registriere (mit einem anderem account), wird nichts gespeichert & an den alten Accounts wird nichts geändert, falls sich was ändern sollte.
    (sorry für 4 Beistriche in 1 Satz :))
    Bitte helft mir :\


    Ich fasse mal zusammen:
    Spieler laden --> funktionniert
    Spielerdatei erstellen ---> funktionniert NICHT
    Spielerspeichern ---> funktionniert NICHT

  • mach mal die strings größer hatte auch mal das problem von allen was mit dem dini zutun hat sie werden ja mit den : strings new SpielerDatei benutzt mach die mal auf 128 oder größer.


    hoffe ich konnte helfen


    MFG janpplayer

  • Hab nur kurz drüber geschaut, aber es sieht mir schwer nach einem Abfragefehler beim Speichern aus, weil du fragst ob der Spieler eingeloggt ist, aber nirgendswo sehe ich das du beim Login Dialog die Variable auf den abgfragten Wert (= 1) bringst.

    "Dem wird befohlen, der sich nicht selbst gehorchen kann" - Friedrich Nietzsche

  • Wie meinst du das Addickted?


    // Edit:
    Ich glaube es hat etwas mit stock Register zu tun, weil als ich gerade ingame war, und /setstat 0 2 gemacht habe, hat er es gespeichert!
    stock Register(playerid,key[])
    {
    new Spielerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SetPVarInt(playerid,"ZeitSeitPD",dini_Int(Spielerdatei,"ZeitSeitPD"));
    SetPVarInt(playerid,"Respektpunkte",dini_Int(Spielerdatei,"Respektpunkte"));
    SetPVarInt(playerid,"Respekt",dini_Int(Spielerdatei,"Respekt"));
    SetPVarInt(playerid,"LevelMoney",dini_Int(Spielerdatei,"LevelMoney"));
    SendClientMessage(playerid,GELB,"Erfolgreich registriert.");
    SetPlayerScore(playerid,1);
    SetPVarInt(playerid,"loggedin",1);
    dini_IntSet(Spielerdatei, "Fraktion",0);
    dini_IntSet(Spielerdatei, "Geld", 1200);
    dini_IntSet(Spielerdatei, "Autoschein",0);
    dini_IntSet(Spielerdatei, "Bank", 10000);
    dini_IntSet(Spielerdatei, "WantedLevel", 0);
    dini_IntSet(Spielerdatei, "ZeitSeitPD", 0);
    dini_IntSet(Spielerdatei, "Respektpunkte", 0);
    dini_IntSet(Spielerdatei, "Respekt", 8);
    dini_IntSet(Spielerdatei, "LevelMoney", 2000);
    return 1;
    }

  • Mach mal bei OnPlayerDisconnect ein printf vor und nach SpielerSpeichern rein und schau ob es kommt


    Bei Spielerspeichern auch am Anfang und Ende ein printf und in der Schleife


    Ergebnis hier bitte posten

  • Das hier habe ich bekommen!

    Bitte helft mir!
    Ich bin am Verzweifeln!

  • machst du oft restarts? Weil nach restars werden die spieler nicht gespeichert...

    Zita aus dem Livestream chat von Internetlink von BigYoda ;)


    Zitat

    BigYoda: Ink sagt: "Ach OnGamemodeInit brauchen wir nicht löschen" Yoda: "Was ist das andere für ein Kram?". Ink: "Egal lösch einfach alles". Tutorial Ende :D





    DDG is Back


    Froum: DDG Forum
    Server IP: 85.25.20.59:7777
    Team Speak 3: 85.25.20.59

  • machst du oft restarts? Weil nach restars werden die spieler nicht gespeichert...

    Auf diese Aussage sage ich erstmal nichts...


    Bitte poste nochmal deine ganzen Befehle wo du genau das printf rein hast und auch die printfs nochmal bitte


    Den habe bisschen den Überblick grad verloren


    Bin eh grad auf Arbeit dauert dann eine Zeit bis ich daheim bin

  • Ich habe das Problem gefunden:
    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,GELB,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,GELB,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    return 1;
    }
    else
    {
    printf("Der Dialog Register wird aufgerufen");
    Register(playerid,inputtext);
    printf("Der Kerl wird registriert");
    return 1;
    }
    }
    }
    return 1;
    }


    Ich bekomme die Prints nicht. Das heißt, dass es ein Problem gibt mit dem else.
    Könnt ihr mir helfen, und mir sagen wie ich das behebe? ?(
    Ich verstehe wirklich nicht was/wo ich etwas Falsch gemacht habe!

  • Diese Funktion hat keinen Sinn beim Register oder liege ich ganz falsch ?



    SetPVarInt(playerid,"ZeitSeitPD",dini_Int(Spielerdatei,"ZeitSeitPD"));
    SetPVarInt(playerid,"Respektpunkte",dini_Int(Spielerdatei,"Respektpunkte"));
    SetPVarInt(playerid,"Respekt",dini_Int(Spielerdatei,"Respekt"));
    SetPVarInt(playerid,"LevelMoney",dini_Int(Spielerdatei,"LevelMoney"));


    Wie setzt er denn bitte etwas in die PVar von der DINI wenn aber die DINI doch noch garnicht existiert, und gerade erstellt wird ?

  • printf("Der Dialog Register wird aufgerufen");
    Register(playerid,inputtext);
    printf("Der Kerl wird registriert");


    Welches Printf kommt den?
    Problem ist nur ich nutze kein dini da es nach meienr Meinung shit ist

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen