[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
  • Naja, es gibt das Wiki: https://sampwiki.blast.hk/wiki/MySQL


    Da steht eig alles drinnen :)


    #Handy

    Danke, aber habe da schon reingeschaut gehabt und leider nicht gefunden wonach ich gesucht habe.

    Aber die Seite war mir auf jeden Fall eine Hilfe um die neuen Funktionen zu versttehen.


    Es ging nämlich, unteranderem, um die Funktion "mysql_free_result".

    Die soll ja nur verwendet werden, wenn auch die Funktion "mysql_store_result" verwendet wird.

    Zumindest steht das so auf diversen Seiten.

    Nachdem aber die Funktion "mysql_store_result" im Script nicht ein Mal zu finden ist habe ich die "mysql_free_result"-Funktion auch entfernt.


    Eine kleine zusätzliche Frage:

    Code
    cache_get_value_name_int(0, "Tutorial", result);

    habe das so im code stehen und bekomme folgende Meldung, die für mich keinen Sinn ergibt:

    Code
    error 035: argument type mismatch (argument 3)

    und das bei jedem Mal in dem ich eine der Funktionen "cache_get_value_name", "cache_get_value_name_int" etc verwende.

    Einmal editiert, zuletzt von Ioannis20x () aus folgendem Grund: Ein Beitrag von Ioannis20x mit diesem Beitrag zusammengefügt.

  • Es ging nämlich, unteranderem, um die Funktion "mysql_free_result".

    Die soll ja nur verwendet werden, wenn auch die Funktion "mysql_store_result" verwendet wird.

    Zumindest steht das so auf diversen Seiten.

    Nachdem aber die Funktion "mysql_store_result" im Script nicht ein Mal zu finden ist habe ich die "mysql_free_result"-Funktion auch entfernt.

    Richtig, früher musste mysql_free_result genutzt werden, wenn man mysql_query verwendet hat. Aber das sollte man nicht nutzen, dann brauch man das free auch nicht, das geht inzwischen automatisch :)


    habe das so im code stehen und bekomme folgende Meldung, die für mich keinen Sinn ergibt:

    Kannst du etwas mehr Code zeigen, auch wie du result deklariert hast?

    Vermutlich liegt es einfach daran, dass result kein integer, sondern ein String ist.

    Du solltest es einfach direkt in die Variable packen oder ORM nutzen, dann kannst du dir die Querys und das read/write direkt sparen :)

    ast2ufdyxkb1.png


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

  • Richtig, früher musste mysql_free_result genutzt werden, wenn man mysql_query verwendet hat. Aber das sollte man nicht nutzen, dann brauch man das free auch nicht, das geht inzwischen automatisch :)


    Kannst du etwas mehr Code zeigen, auch wie du result deklariert hast?

    Vermutlich liegt es einfach daran, dass result kein integer, sondern ein String ist.

    Du solltest es einfach direkt in die Variable packen oder ORM nutzen, dann kannst du dir die Querys und das read/write direkt sparen :)

    Danke dir für deine Hilfe.

    Es lag, wie du gesagt hast, an der result Variable.

    Werde es tatsächlich so machen, dass ich es einfach direkt in die Zielvariable schreibe.

  • Aloha zusammen,

    bin schon wieder auf ein für mich unlösbares Problem gestoßen.

    Und zwar handelt es sich um diese Zeile:


    Code
        mysql_tquery(MySqlConnection,"CREATE TABLE IF NOT EXISTS `"#SERVERTAG"_fraktion_motd` (`fID` int(12) NOT NULL,`Text` varchar(128) NOT NULL,PRIMARY KEY (`fID`))","","");

    Diese hat gestern Abend noch funktioniert und nachdem ich bei anderen DB-Abfragen einen DEFAULT-Wert reingeschrieben hatte, kam diese schöne Fehlermeldung:

    Code
    GeTmyselfmade.pwn(77238) : error 075: input line too long (after substitutions)

    Ich habe an dieser Zeile nichts verändert, weswegen ich nicht verstehe, woran das liegen könnte.


    Die Zeile darüber, welche einen DEFAULT-Wert von mir bekommen hat, ist die:

    Code
    mysql_tquery(MySqlConnection,"CREATE TABLE IF NOT EXISTS `"#SERVERTAG"_gangwar` (`GangZoneID` int(3) NOT NULL,`GangWarZoneOwner` int(5) NOT NULL, `GangWarZoneAttacker` int(5) NOT NULL DEFAULT '0',`War_OwnerPoints` int(4) NOT NULL,`War_AttackerPoints` int(4) NOT NULL,`War_Started` int(2) NOT NULL,`War_Time` int(12) NOT NULL,`War_Sperre` int(20) NOT NULL,PRIMARY KEY (`GangZoneID`))","","");



    Ich habe schon versucht mir strcat oder fortmat die das ganze zu teilen bzw neu zu formatieren.

    Leider ohne Erfolg :(

  • Kann dir generell nur empfehlen nicht mehr den alten Compiler zu nutzen, also den hier zu nutzen: https://github.com/pawn-lang/compiler/releases


    Dass die Input-Line too long ist, war generell ein Bug vom alten Compiler, oft ist er ja auch einfach gecrasht 😅


    Alternativ einfach mit strcat arbeiten, verstehe nicht, wieso das nicht gehen sollte?


    C
    new query[512];
    strcat(query, "CREATE TABLE IF NOT EXISTS `"#SERVERTAG"_gangwar` (`GangZoneID` int(3) NOT NULL,`GangWarZoneOwner` int(5) NOT NULL, `GangWarZoneAttacker` int(5) NOT NULL DEFAULT '0',`War_OwnerPoints` int(4) NOT NULL,`War_AttackerPoints` int(4) NOT NULL,");
    strcat(query, "`War_Started` int(2) NOT NULL,`War_Time` int(12) NOT NULL,`War_Sperre` int(20) NOT NULL,PRIMARY KEY (`GangZoneID`))");
    mysql_tquery(MySqlConnection,query,"","");

    ast2ufdyxkb1.png


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

  • Habe das Script mit dem neuen Compiler compiled und es hat direkt, ohne jegliche Fehlermeldung, funktioniert.

    Danke! :)

  • Aloha miteinander, ich weiß jetzt nicht genau ob das Thema hier reingehört.

    Aber ich habe aktuell ein Problem mit qawno.

    Und zwar werden Umlaute wie ä, ö, ü als Fragezeichen oder andere komische Zeichen anerkannt.

    Das ist vor ein paar Wochen nicht so gewesen.

  • Und zwar werden Umlaute wie ä, ö, ü als Fragezeichen oder andere komische Zeichen anerkannt.

    Ja, das ist doof.

    Arbeitest du mit einem Versionierungssystem wie git o.ä.?


    Das ist definitiv zu empfehlen, denn das passiert bei den Editoren öfters, dass das Encoding kaputt geht (rede hier von Sublime, qawno, VS-Code...), das liegt daran, dass die das alle in UTF-8 wollen, aber good old pawn das in ANSI will :)


    Also mit Notepad++ kannst du das am Einfachsten beheben, da klickst du oben auf Encoding und dann Convert To Ansi...


    Wenn es das nicht wiederherstellt, RIP ^^

    ast2ufdyxkb1.png


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

  • Der Fehler liegt darin, dass qawno das Script im falschen Codec öffnet. Ioannis20x

    Den Fehler hatte ich damals behoben und die PR wurde gemerged.

    Ob die eine neue Version von qawno, die den Bugfix enthält, mitliefern, ist mir unbekannt.


    Ansonsten habe ich damals eine selbstkompilierte Version bereitgestellt, siehe hier:

    Russian language crashes after restarting the computer · Issue #2 · openmultiplayer/qawno
    Greetings, dear developers, I ran into the problem of the Russian language meeting after I turned on the computer again and went to qawno
    github.com


    @

  • Ne, aktuell nutze ich noch kein Versionierungssystem.

    Ich denke jedoch dass ich den Fehler gefunden habe.

    Die Dateien habe ich so erstellt: rechtsklick -> neu -> Neues Textdokument -> Dateiendung auf pwn geändert :S

    Habe auch die Methode mit Notepad++ versucht, jedoch ohne Erfolg.

    Nach dem Speichern öffne ich die Datei wieder und dort steht wieder UTF-8 dran :(

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ne, aktuell nutze ich noch kein Versionierungssystem.

    Ich denke jedoch dass ich den Fehler gefunden habe.

    Die Dateien habe ich so erstellt: rechtsklick -> neu -> Neues Textdokument -> Dateiendung auf pwn geändert :S

    Habe auch die Methode mit Notepad++ versucht, jedoch ohne Erfolg.

    Nach dem Speichern öffne ich die Datei wieder und dort steht wieder UTF-8 dran :(

    Die Lösung ist genau oberhalb deines Beitrags.

  • Moin zusammen!


    Ich tippe zwischendurch ein paar Zeilen, aber irgendwie hängt gerade mein Kopf ein bisschen.. Kurz zum Sachverhalt: Ein Spieler kann 3 Häuser besitzen. In der Datenbank zufinden unter haus, haus1, haus2.. Jetzt möchte ich das Haus editieren und den Besitzer offline zuweisen. Wenn ich den Namen der Person angebe, soll eine MYSQL Query schauen welcher der 3 auf -1 sitzt und diesen dann auf die gewünschte Hausnummer setzen..


    Sinngemäßg so: "UPDATE charakter SET haus = 55 ODER haus1 = 55 ODER haus2 = 55 WHERE haus = -1 AND haus1 != 55 AND haus2 != 55 AND name = Mr.Pawn


    Versteht Ihr wie ich das meine ? Funktioniert das überhaupt so ? Mein erster Gedanke war, ich setze einfach 3x die gleiche query.. Aber dann ist das Problem, wenn alle 3 auf -1 stehen, setzt er überall diese Hausnummer hin..


    Wo hänge ich ? :x

  • Wo hänge ich ? :x

    Also da hast du deine Tabelle nicht schön normalisiert. Sonst würde man das über eine extra Tabelle lösen.


    Aber in dem Fall, kannst du auch einfach bevor du die Query abfeuerst das kurz prüfen, da du eh eine Query abfeuerst, um vom Namen des Spielers auf die ID zu kommen, kannst direkt ja haus1,haus2,haus3 noch mitholen.


    Und dann eben:


    ast2ufdyxkb1.png


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