[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Hab das mal gemacht, Login genauso ähnlich?


    C
    public OnPasswordChecked(playerid)
    {
        new bool:match = bcrypt_is_equal(),query[256];
        mysql_format(handle, query, sizeof(query), "SELECT * FROM accounts WHERE Name = '%e' AND Password = '%e'", AccountInfo[playerid][account_Name], hash);
        mysql_pquery(handle, query, "AccountLogin", "d", playerid);
        return 1;
    }


    Soweit ist es mir auch noch klar, aber wie mache ich den Dialog am besten?

  • Da drehst du das um. Du lädst zuerst aus der MySQL Datenbank und prüfst das dann gegen.


    So zum Beispiel:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • AccountLogin wilil irgendiwe nicht ganz, das s sagt das inputtext bei bcrypt_check passt nicht.

    Wie mache ich am besten den Reister Dialog mit bcrypt fertig? Die Zeile wie im Tutorial hab ich schon.

    1. Achte auf meine Details: mysql_pquery(handle, query, "AccountLogin", "ds", playerid,inputtext); Ich übergebe hier den Inputtext an diese Funktion. Du musst den Callback entsprechend anpassen.
    2. Keine Ahnung, was dein ShowCaracter da noch macht?
    3. Die Frage mit dem Register verstehe ich nicht ganz. Denn so wie du es bis jetzt hast, wird er ja dann registriert...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    1. Wie wo genau meine ich? Na an der Funktion, du musst den Inputtext übergeben und auch natürlich oben in den Funktions-Header packen: FUNCTION AccountLogin(playerid, inputtext[])
    2. Ja, das solltest du dann an das Ende von OnPasswordChecked packen. Denn das soll ja erst kommen, wenn er erfolgreich eingeloggt ist :)
    3. Nein, DIALOG_PW_CHECK ist für den Login. Das wird angezeigt, falls er das Passwort falsch eingegeben hat. Für das Registrieren musst doch einfach nur ein ShowPlayerDialog(playerid,DIALOG_REGISTRATION,DIALOG_STYLE_INPUT,"Registration","Bitte gib ein Passwort für deinen Account an:","Bestätigen","Abbrechen"); machen. Oder so ähnlich natürlich...es muss doch vorher eine Prüfung geben, ob der User bereits einen Account hat oder nicht...das müsste doch nur angepasst werden :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wie sieht denn nun dein Code aus, poste die entsprechenden Felder.


    Nächstes mal kannst du btw ruhig einen eigenen Thread erstellen, falls Leute ähnliche Probleme haben, wäre das sehr hilfreich gewesen. (Hier geht das ja unter und ist nur für kleine Fragen gedacht).


    (Darfst auch gerne etwas debuggen, wird in der Datenbank alles richtig gespeichert?)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Was nutzt eigentlich das LIMIT im SELECT?

  • Was nutzt eigentlich das LIMIT im SELECT?

    Das sagt deiner Datenbank, dass es nur 1 Statement gibt, was zurückgegeben werden muss.

    Das ist performant das mit anzugeben, da er dann genau weiß, ah ich hab eins gefunden, jetzt kann ich aufhören und muss nicht noch alle anderen nach dem Namen durchsuchen ;)


    Wie mir auffällt, lädst du dort gar nicht das Passwort, also unter AccountLogin? :D


    Das musst du dort laden, also das AccountInfo[playerid][account_Password]...sonst geht das natürlich nicht.


    Wie mir auffällt lädst du dort generell nix über den User so wirklich?! :D


    Da stimmt doch was nicht xD

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habs jetzt dort mal reingeschrieben aber geht trotzem nicht. Soll ich dme Passowrt ne Länge dazuschreiben wie zb AccountInfo[playerid][account_Password][255]?


    Du meinst dort muss auch AccountInfo[playerid][account_Name] rein? Mehr gibts nicht zu laden.

  • Du hast da stehen:


    new bool:match = bcrypt_is_equal(), query[256],string[128],inputtext;


    Wieso dieses inputtext? Bitte nirgends so deklarieren....schau mal wie ich das gemacht habe...


    Und die String Länge sollte BCRYPT_HASH_LENGTH sein :)


    #Handy...bin nu unterwegs

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das benutze ich bei Login.

  • Okay, sieht gut aus :)


    Dann leg mal einen neuen Account an...und schau, ob alles richtig ein- & ausgelesen wird :)

    (Mit print Statements Werte vergleichen)


    Ansonsten probiere ich es die Tage selbst mal aus...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich hab jetzt mal Prints gesetzt, AccountLogin ruft er auf.

    Beim Registrieren ruft er anscheinend nichts auf.


    Edit: Das sind die Funktionen für die Registrierung.