Dann zeige bitte nochmal deinen ganzen Code
Beiträge von Kaliber
-
-
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
-
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?
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?!
Da stimmt doch was nicht xD
-
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?)
-
Habe erst gedacht, dass die Standard Console damit nicht klar kommt
Also das ist ja Quatsch, weil die Standard Konsole ist die Standard Konsole, die kommt mit allem klar, deshalb ist es die Standard Konsole xD
Ja, da haben wir den Übeltäter, ich glaube die "neue" Konsole kann diese Bytes (Ansi Escape Codes) nicht verarbeiten.
Weiß nicht, da gibt es bestimmt irgend ein Tutorial (bin aber gerade mega zu faul danach zu suchen bzw nach example Code zu suchen).
Da musst du die Farben anders setzen, als über diese Bytes.
Auf der Standard Konsole hingegen müsste das funktionieren, da das ja extra für diese ausgelegt ist
-
Hmmm, ich frage mich, wieso man sowas nutzt o:
Weil, es gibt doch die Möglichkeit die Native Konsole einfach zu attachen, z.B.: http://www.csharp411.com/conso…rom-winforms-application/
Ansonsten kommt der wohl mit ein paar Bytes nicht zurecht.
Was genau gibst du denn da aus? Kannst du den Text evtl mal in ein File schreiben?
Oder das Ding kodiert falsch? Evtl mal UTF-8 ausprobieren
-
-
- 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[])
- Ja, das solltest du dann an das Ende von OnPasswordChecked packen. Denn das soll ja erst kommen, wenn er erfolgreich eingeloggt ist
- 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
-
- 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.
- Keine Ahnung, was dein ShowCaracter da noch macht?
- Die Frage mit dem Register verstehe ich nicht ganz. Denn so wie du es bis jetzt hast, wird er ja dann registriert...
-
Da drehst du das um. Du lädst zuerst aus der MySQL Datenbank und prüfst das dann gegen.
So zum Beispiel:
C
Alles anzeigencase DIALOG_LOGIN: { new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%e' LIMIT 1", AccountInfo[playerid][account_Name]); mysql_pquery(handle, query, "AccountLogin", "ds", playerid,inputtext); } case DIALOG_PW_CHECK: { if(!response) return Kick(playerid); if(!inputtext[0]) return SPD(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen"); bcrypt_check(inputtext, AccountInfo[playerid][account_Password], "OnPasswordChecked", "d", playerid); } //Bei AccountLogin public AccountLogin(playerid,inputtext[]) { //Halt account laden und AccountInfo[playerid][account_Password] den hash eben setzen //Ganz unten dann: bcrypt_check(inputtext, AccountInfo[playerid][account_Password], "OnPasswordChecked", "d", playerid); return 1; } public OnPasswordChecked(playerid) { new bool:match = bcrypt_is_equal(); if(!match) return SPD(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen"); //Hier kannst den Spieler dann spawnen und einloggen :) return 1; }
-
Fast, also den inputtext (das ist das Klartext Passwort) hast du ja jetzt schon zu einem Hash verwandelt, also diesen auch nur in die Datenbank speichern, ergo, so schreiben:
Cpublic OnPasswordHashed(playerid) { new hash[BCRYPT_HASH_LENGTH],query[256]; bcrypt_get_hash(hash); mysql_format(handle, query, sizeof(query), "INSERT INTO `users` (`name`, `password`) VALUES ('%e', '%e')", PlayerInfo[playerid][pName], hash); mysql_pquery(handle, query, "OnUserRegister", "d", playerid); return 1; }
-
Du packst das MySQL Insert Query einfach in den OnPasswordHashed Callback.
Dadurch hast du ja direkt Zugriff auf den Hash.
Einfach nur den Code umstrukturieren
-
Wo genau hapert es denn, das Tutorial ist doch ziemlich eindeutig (https://forum.sa-mp.com/showthread.php?t=453544)
Vielleicht zeigst du uns deinen bisherigen Code und markierst, wo genau du Schwierigkeiten hast beim Weitermachen.
-
Kannst du uns den Code vom TextDraw zufällig zeigen?
(Auch wenn du das im TextDraw Studio machst, kannst dir den ja exportieren lassen...)
-
Versuch mal die redistributable c++ ab 2012 oder so zu installieren
-
soll ein Enum gespeichert werden
Der Artikel ist ganz gut: https://www.heise.de/developer…r-JavaScript-4122440.html
bzw: https://stackoverflow.com/ques…ining-enums-in-javascript
-
Es ist sicher nicht ganz so schwer, wie ich es mir schon wieder mache.
Das mit diesem max-width ist verwirrend....du meinst doch bestimmt einfach nur width oder?
Dann einfach so:
-
Ohh, jetzt erst das breadfish.de Design von Atef A. und Edgar P. gesehen
Das sieht mega aus!
Nur die Front Page sieht etwas weiß aus, vllt die eine Box um die Top 5 Beitrage oder die Überschrift unterstreichen oder sowas xD
PS: Wieso eigentlich nur Top 5 und nicht Top 10?
-
eigentlich die Kamera vom wirklichen Spieler hinter dem PC
Achsoo, das müsste:
https://wiki.gtanet.work/index.php?title=GetGameplayCamPos
und
https://wiki.gtanet.work/index.php?title=GetGameplayCamRot
sein.
Oder es ist das hier: https://wiki.gtanet.work/index.php?title=GetGameplayCamDir
Sry, habe nie GTA V gespielt und kenne die Funktionen nicht
-
Ich finde es schade, dass die Grafiken hier nciht gehen^^
Doch, tuen sie