Hilfe bei Mysqlo

Aus gegebenem Anlass: Sichert eure Backupcodes wenn ihr die Zwei-Faktor-Authentifizierung aktiviert habt!

Infos dazu findet ihr nochmal hier

  • Ich finde bei den verschiedenen Versionen nicht so richtig zu recht. Wenn ich ein gescheihtes Tutorial finde ist es schon wieder zu tief im Thema Registrierungs/Loginsystem das ich nichts eigenes draus machen kann. Hier mal das was ich so verstanden habe. Wäre nett wenn mir jemand den Rest erklärt.


    Code
    1. ocmd:gang(playerid,params[]){
    2. new query[256];
    3. new string[128];
    4. new neuername[128];
    5. GetPlayerName(playerid,neuername,sizeof(neuername));
    6. mysql_format(handle, query, sizeof(query), "INSERT INTO gang (GangName, GangMemberName) VALUES ('%s', '%s')", neuername, neuername);
    7. format(string,sizeof(string),"%s und %s sollten gesetzt werden!",neuername, neuername);
    8. print(string);
    9. return true;
    10. }

    Steht das mysql_format schon als Speicherung?

  • Also erste Frage erstmal: Inwiefern findest du dich nicht bei den Versionen zurecht?


    Ich meine, was genau macht dich da unsicher?


    Und 2.


    Kann ich gut verstehen, aber du kannst auch zu jedem System was du scriptest spezifisch


    ein Thema erstellen, beispielsweise das Gang System. Sobald das funktioniert kannst du diese


    Methode auf andere Systeme übertragen und lernen tust du dabei ebenso.



    Den Query musst du noch absenden, Beispielsweise so:

    Code
    1. mysql_pquery(handle, string);
  • Ich wollte keinen neuen Thread starten, daher hier das Thema.

    Ich möchte meine Daten auslesen und denke ich bin da auf einem guten Kurs. Bestimmt fehlt nur wieder ein Befehl zur Ladung. Wenn ja sorry aber ich sehe da nicht richtig durch in den Tutorials.


    Hier der Code:

    Wenn mit 0 die erste Zeile gemeint ist müsste es ja so gehen vom Auslesen. Die in den "" stehenden Namen sind die jeweiligen Spallten.

  • Achso, dann schreib das doch.


    1. Ist das bei dir eine normale Funktion. Muss aber eine public Funktion sein. Ergo mach das stock weg und mach ein public dahin und ein forward LadeGang(playerid); darüber.
    2. Muss diese public-Funktion nun über ein entsprechendes Query aufgerufen werden. Mit mysql_pquery oder mysql_tquery z.B.

    ast2ufdyxkb1.png


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

  • Ich weiß ja wie das mit dem format klappt eine ausgelesene Datei zu speichern. Da hat man ja das query als string und fertig.


    Jetzt meine Frage:
    Wie schaffe ich das über einen cache? Oder kann ich auf einfach wieder mysql_format nehmen? Das würde mir mehr gefallen. Finde aber im Wiki keine Liste mit den ganzen Befehlen wie zB. "Insert Into".

  • Da hat man ja das query als string und fertig.

    So ist das hier auch.


    Hier wäre es ein SELECT Statement.


    Über mysql_format / format bereitest du den String vor und dann über mysql_t/pquery schickst du die Abfrage ab.


    Wenn das Resultat vor liegt, wird der Callback (die public Funktion die du angegeben hast) aufgerufen.


    Dort kannst du dann die cache Funktionen verwenden, um auf das Ergebnis zuzugreifen.


    Der Grund, wieso dafür eine extra public Funktion verwendet wird ist der, damit der Aufruf asynchron ablaufen kann und eben nicht den Server-Thread aufhält. (Das ist der Grund, wieso man kein mysql_query verwenden sollte, weil das synchron ist).


    "Insert Into".

    Das ist eine eigene Sprache an sich und nennt sich SQL (Structured Query Language).


    Einfach nach Tutorials suchen (https://www.w3schools.com/sql/) oder nach Schlagworten, die Wichtigsten sind:


    • SELECT
    • UPDATE
    • INSERT
    • DELETE

    ast2ufdyxkb1.png


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

  • Ich steige da irgendwie immer noch nicht richtig hinter. Habe es jetzt so gemacht wie im Tutorial beschrieben, aber irgendwo scheint da der Wurm drin zu sein. Wäre nett wenn man mir noch einmal hilft :p


    Der User soll geladen werden aber irgendwie funzt das nicht:

  • aber irgendwo scheint da der Wurm drin zu sein

    Nun, da sind viele Würmer drinnen.


    1. Im format steht %e für einen String-Escape, aber GangID ist ja ein integer, also verwende %d oder %i.
    2. Du willst eine Gang laden und verwendest dafür die playerid? Wieso? Die Gang existiert doch unabhängig von einem Spieler. Da stimmt etwas mit deiner Logik nicht.
    3. Du verwendest im Query schon die Variablen, die eigentlich erst durch das Query geladen werden sollen....

    Hoffe es wird ersichtlich, dass du da nochmal drüber nachdenken solltest, wie man ein dynamisches Gang-System macht.


    Du brauchst dafür eine Gang-Variable, und lädest da dann die ganzen Infos rein und dem Spieler weist du dann nur eine GangID zu.

    So weiß man, zu welcher Gang der Spieler gehört.

    ast2ufdyxkb1.png


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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Habe jetzt rumprobiert aber bin nicht weitergekommen. Das ich da Ganze noch anders regeln muss ist mir klar. Möchte nur erstmal verstanden haben wie Mysql klappt bevor ich das System erneut angehe.


    Was kommt denn in diese Zeile?

    "Du verwendest im Query schon die Variablen, die eigentlich erst durch das Query geladen werden sollen...."





    Oder kann mir jemand eine einfache Ladung hier scheiben. Also einfach nur das was ich dazu brauche kein Schnick Schnack drum rum. Wenn ich etwas sehe kapier ich es am ehsten. Finde aber nirgends ein Tutorial das einfach gehlaten ist.




    Falls man den Code benötigt um zu helfen:

    • Hilfreich

    Vielleicht hilft dir das folgende Tutorial: [jTuT] Fraktions-Fahrzeug-System mit MySQL R41-4

    Ich habe dort den Prozess anhand von Fraktions-Fahrzeugen beschrieben, grundsätzlich ist das Prinzip aber auf alles anzuwenden, sprich du erstellst halt kein Fahrzeug, sondern eine Gang. Es ist leicht abzuwandeln, dann hast du genau das, was du brauchst.

    Und obendrauf, kannst du danach das Tutorial nochmal in seinem Ursprungs-Sinn durchgehen, und Gang-Fahrzeuge einbauen ;)


    Versuche mal, ob du damit zu Recht kommst. Nimm dir etwas Zeit und arbeite es sorgfältig durch. Benenne deine Variablen sauber und passe den Code so an, dass es von Fahrzeugen auf Gangs abgewandelt wird.

    1WV8i3b.png

  • Ich checke das einfach nicht richtig. Habe hier einen eigentlich ganz simplen Code, hatte es auch schon hinbekommen aber einfach nicht verstanden wie. So ist es beim Umschreiben wieder kaputt gegangen. Wär jemand so nett und erklärt was genau da passiert?


  • So solltest du das nicht machen, sondern so:


    ast2ufdyxkb1.png


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

  • Wie kann man vernünftig Zeilen auslesen? Habe es wie heir versucht aber die Funktion will nicht:

    Code
    1.     new r, string[128];
    2.     format(string,sizeof(string),"%d",r);
    3.     print(string);
    4.     cache_get_row_count(r);
    5.     for(new i; i<r; i++){
    6.         format(string,sizeof(string),"I: %d R:%d",i,r);
    7.         print(string);
    8. }