Jedes Passwort geht

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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,
    ich verzweifle nun schon seid über einer Stunde hier dran.


    Ich habe ein login/register syst gemacht was auch geht (dcmd^^)



    Also ich komme in den Server und gebe /login test ein dann sagt er mir PW falsch, ist auch ok, dann gebe ich mein pw ein, das geht auch.
    Aber wenn jemand anders in den Server kommt, also wenn über einer Person auf dem Server sind, diese Person kann sich dann mit jedem PW einloggen, das nervt weil es nur bei mir geht -.-


    Code


    http://pastebin.com/m72cc1954


    Habe schon mehrere Sachen probiert -.-


    Hoffe jemand weis das zu fixxen ;)


    Schönen Abend noch

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • http://pastebin.com/m15e6e725


    edit: Ich habe es mal so probiert geht auch nicht weil jetzt jedes pw falsch ist



    dcmd_login(playerid,params[]) {
    new pw[64];
    if(sscanf(params, "z",pw)) {
    return SendClientMessage(playerid,COLOR_RED,"USAGE: /login [password]");
    }

    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, rot, "Du bist bereits eingeloggt!");
    return 1;
    }
    if(pw[playerid] != PlayerInfo[playerid][pPassword])
    {
    SendClientMessage(playerid, COLOR_RED,"Falches PW!");
    return 1;
    }


    Encrypt(pw);
    Einloggen(playerid,pw);

    return 1;
    }

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

    Einmal editiert, zuletzt von zombie.modder ()

  • ich vermute der fehler liegt an dcmd(hab nie damit gearbeitet^^)
    lass dir die beiden zu vergleichenden strings(PlayerInfo[playerid][pPassword] und password) in "einloggen()" mit printf ausgeben.


    noch besser wärs wenn du sie dir vor encrypt ausgeben lassen würdest.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(pw[playerid] != PlayerInfo[playerid][pPassword])


    Bei Integern möglich, aber nicht bei Strings ô.0


    if(strcmp(pw[playerid], PlayerInfo[playerid][pPassword])) return print("Fail | Password incorrect.");


    strcmp muss da benutzt werden.

  • new pw[64];
    // blabla
    if(pw[playerid] != PlayerInfo[playerid][pPassword])
    Wie kommst du denn dort auf playerid ? :pinch:

    Zitat

    Bei Integern möglich, aber nicht bei Strings ô.0
    if(strcmp(pw[playerid], PlayerInfo[playerid][pPassword])) return print("Fail | Password incorrect.");
    strcmp muss da benutzt werden.


    Anmerkung oben,playerid ist da doch völlig falsch.


    Das Usersystem ist auch nicht unbedingt besser als das alte.Du benutzt wieder OnPlayerUpdate(),was wvöllig sinnlos ist.
    Wieso versteht fast keiner hier Forum,dass es ausreicht die Informationen ( Geld,Kills,usw ) zu speichern wenn der Spieler den Server verlässt X__0.

  • und der vergleich der strings ist nicht relevant. er hats im ersten post ja richtig gemacht.
    wichtig ist dass die eingabe des strings beim registrieren und beim login richtig funktioniert.
    ich habe immernoch den verdacht dass dort ein leerer string an kommt.


    onplayerupdate macht sehr wohl sinn. wenn der server abstürzt wird nichts gespeichert, daher ist ein backup sehr wichtig.

  • 1. OnPlayerUpdate wird bei jedem Packet aufgerufen.
    Das ist reiner Selbstmord jede 100ms die Spielerdaten zu speichern.
    Ein Timer der alle 10min von jedem Spieler die Daten speichert würde es genauso tun.


    2. Einfach mal die String-Länge geprüft?
    "aaa" stimmt "aa" ja bis zum 0-Terminator bei dem kürzen String überein.

  • 1. OnPlayerUpdate wird bei jedem Packet aufgerufen.
    Das ist reiner Selbstmord jede 100ms die Spielerdaten zu speichern.
    Ein Timer der alle 10min von jedem Spieler die Daten speichert würde es genauso tun.


    klar, hab nicht daran gedacht dass jemand so blöd sein könnte <.< (hab nie onplayerupdate benutzt^^)
    die aussage dass es unnötig ist, ist aber auch falsch und darum ging es mir^^


    er muss einfach nur mal die strings ausgeben -.-


  • onplayerupdate macht sehr wohl sinn. wenn der server abstürzt wird nichts gespeichert, daher ist ein backup sehr wichtig.


    Danke für den Tipp.Damit ich ein Backup für den Fall eines Servercrashes habe ( Was höchstwahrscheinlich an einem Fehlerhaften Script liegt ), belaste ich ihn vorher lieber mal richtig.[/Ironie]


    Zitat

    die aussage dass es unnötig ist, ist aber auch falsch und darum ging es mir^^


    In dem Script ist es auch unnötig.Von den 0,1% abgesehen wo OnPlayerUpdate() mal nicht zum speichern von Userdaten genutzt wird,ist das ganze Callback unnötig.

  • ich hab nicht dran gedacht das onplayerupdate ein callback ist, wie du schon sagtest brauch man diesen nicht weil er den server zu sehr belastet. ich habe eher an eine selbstdefinierte funktion gedacht, die bei aufruf alle spieler speichert. es war ein missverständnis.


    ich meinte dass ein backup sehr wichtig ist.
    egal wie perfekt der gamemode ist, es kann immer zu einem absturz kommen und wenn der strom ausfällt.


    natürlich sollte man höchstens alle 10minuten alle spieler abspeichern.


    ich habe lediglich die aussage "Wieso versteht fast keiner hier Forum,dass es ausreicht die Informationen ( Geld,Kills,usw ) zu speichern wenn der Spieler den Server verlässt X__0. " kritisiert.


    @topic: verleg das speichern der spieler in einen timer der höchstens alle 10minuten aktiviert wird und natürlich in OnPlayerDisconnect.