Login / Register System will nicht richtig... O.o

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
  • Hey Leute !



    (Info: Ich habe die Codes nicht mit dieser [pwn] Funktion reinkopiert,da er die alle in einer Zeile formatiert.. )



    Seit einigen Tagen habe ich endlich mein Login & Register System fertig bekommen..
    Jetzt will ich aber das er mehr 'Dinge' speichert & lädt.


    Also als Standard werden Geld,Ban,Mute,Timeban,Adminlvl,Fraktion(Nicht benötigt xD) und Score ohne Probleme gespeichert.


    Hier der Code - " stock SpielerSpeichern "



    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,"Muted",GetPVarInt(playerid,"Muted"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    }
    return 1;
    }


    Und hier der stock "LoadAccount"



    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 bist vom Server gebannt.");
    Kick(playerid);
    }
    if(GetPVarInt(playerid,"Warn")==3)
    {
    SendClientMessage(playerid,ROT,"Du hast 3 Verwarnungen und bis ab jetzt Gebannt!.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }



    Dies funktioniert ja alles.. (Ja,ich habe auch noch die stocks Register und Login,aber da die nichts Speichern oder Wiedergeben,muss ich diese ja nicht erwähnen.Ich denke,das nur bei den beiden Stock (Oben) das Problem liegt.


    So.. wenn ich jetzt eine Funktion für das Gesundheit-speichern einfüge,sowohl bei LoadAccount als auch bei SpielerSpeichern,kommen 2 Errors.


    (Hier die Codes mit Gesundheit:)




    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"));
    SetPlayerHealth(playerid,dini_Int(Spielerdatei,"Gesundheit"));
    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 bist vom Server gebannt.");
    Kick(playerid);
    }
    if(GetPVarInt(playerid,"Warn")==3)
    {
    SendClientMessage(playerid,ROT,"Du hast 3 Verwarnungen und bis ab jetzt Gebannt!.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    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,"Gesundheit",GetPlayerHealth(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Muted",GetPVarInt(playerid,"Muted"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    }
    return 1;
    }



    Ich denke,es ist richtig.(Schaut ja für mich verdächtig danach aus xD)
    aber trotzdem kommt 1 Warning bei dem ich null Ahnung habe,wie ich diesen beheben kann,und hinterher auch das Leben abspeichern kann.
    (Und das Leben wird so wie ich das jetzt versucht habe,nicht gespeichert.)


    PAWN COMPILER OUTPUT:
    warning 202: number of arguments does not match definition (Beim SpielerSpeichern)



    --------
    Ich weiß,das dies bestimmt ein Minimaler FEHLER oder so ist,aber ich bin zu dämlich ihn zu finden.
    Entschuldigt wenn ich euch damit irgendwie nerve oder so,aber ich will diesen blöden Fehler weg haben.

  • Wenn du das Leben eines Spielers Speichern möchtest, dann must du eine Sache beachten
    Pawn sieht das Leben als Float (Eine Komma zahl, z.b. 100.0 = volles Leben), du speicherst es jedoch als eine normale Zahl(Integer) (12,13,14 etc).




    SetPlayerHealth(playerid,dini_Int(Spielerdatei,"Gesundheit"));
    wird zu



    SetPlayerHealth(playerid,dini_Float(Spielerdatei,"Gesundheit"));

    dini_IntSet(Spielerdatei,"Gesundheit",GetPlayerHealth(playerid));
    wird zu
    dini_FloatSet(Spielerdatei,"Gesundheit",GetPlayerHealth(playerid));


    zudem ist Wichtig wie du es in deinem enum definiert hast,
    ich gehe einmal davon aus das du es ganz normal
    Gesundheit
    genannt hast, allerdings muss auch beim definieren darauf geachtet werden, das es eine Komma zahl (ein Float) ist.
    Float:Gesundheit

  • Wie meinst du das 'enum' - Sowas ist bei mir im Script noch nicht..


    Ich dachte ich muss unter meinen ganzen Defines und so, einfach
    Float:Gesundheit


    einsetzen.


    Aber das klappt nicht,muss ich da noch was anderes reinschreiben/mitschreiben?!

  • Wenn du es schon so machst must du am Ende auch ein ";" setzen.
    Such mal nach "Adminlevel" bis du zu dem Punkt kommst, an dem es definiert wird.
    Dort müste auch Fraktion, Baned, muted zu finden sein.
    Da must du dann Float:Gesundheit dazu schreiben.

  • dini_FloatSet(Spielerdatei,"Gesundheit",GetPlayerHealth(playerid));


    Wenn dann so:



    new Float:health;
    GetPlayerHealth(playerid, health);
    dini_FloatSet(Spielerdatei,"Gesundheit", health);


    So geht dann auch das


    warning 202: number of arguments does not match definition (Beim SpielerSpeichern)


    weg.


    Wenn du es schon so machst must du am Ende auch ein ";" setzen.
    Such mal nach "Adminlevel" bis du zu dem Punkt kommst, an dem es definiert wird.
    Dort müste auch Fraktion, Baned, muted zu finden sein.
    Da must du dann Float:Gesundheit dazu schreiben.


    Er benutzt PVars und kein Spieler Array.