[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
  • ich habe ja beides von last version ersetzt sprich plugin und die include die mit bei war

  • Beitrag von Klemme ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • wie muss das hier bei r41 4 aussehen hänge dort fest und werde nicht ganz aus der include schlau


    Code
        new row_count, field_count, query[128];
        cache_num_rows(row_count, field_count, db);
        if(!row_count)
        {
            SendClientMessage(playerid, -1, "Spieler nicht gefunden,");
            return true;
        }
  • Einfach:


    C++
    new row_count;
    cache_get_row_count(row_count);
    if(!row_count)

    und dieses

    Code
    field_count 

    braucht man nicht mehr bzw was machte dieses nochmal und wird ab wann wichtig ?


    LG

  • Sagen wir du hast 3 Felder in der Datenbank.


    id, level, geld


    Und weiterhin sagen wir in der Datenbank gibt es 2 Spieler, die du abfragst.


    Dann ist der row_count = 2 und der field_count = 3


    Also wenn Rows = 0 ist, dann wissen wir, dass kein Spieler gefunden wurde. Das ist die wichtige Information.

    Wie viele Felder zurückkommen, wenn Rows zurückkommen, wissen wir eig eh schon immer, da wir sie im Query spezifizieren.

    Aus diesem Grund ist diese Info eig unnötig und wurde dann später ausgelagert in eine andere Funktion.


    Falls du aus irgendwelchen Gründen das auch wissen magst, gibt es die: cache_get_field_count Funktion, welche genauso funktioniert wie die row_count Funktion :)

    ast2ufdyxkb1.png


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

  • vielen dank eine sehr schöne erklärung :)


    // leider sagt er mir immer noch das angeblich der spieler nicht gefunden wurde habe es so im ganzen


    Code
    //gelöst hatte falschen wert in sscanf gegben.. 

    2 Mal editiert, zuletzt von Klemme ()

  • Aloha miteinander,

    ich habe mir heute die neue sscanf version installiert und dazu auch einen neuen Compiler.

    Nun tauchen bei mehreren Strings folgende Fehler auf:

    Code
    C:\Users\ioann\OneDrive\Projekte\SAMP Server\gamemodes\script.pwn(623) : error 001: expected token: "=", but found "["
    C:\Users\ioann\OneDrive\Projekte\SAMP Server\gamemodes\script.pwn(623) : warning 215: expression has no effect
    C:\Users\ioann\OneDrive\Projekte\SAMP Server\gamemodes\script.pwn(623) : error 001: expected token: ";", but found "]"
    C:\Users\ioann\OneDrive\Projekte\SAMP Server\gamemodes\script.pwn(623) : error 029: invalid expression, assumed zero

    Die Zeile dazu sieht so aus

    Code
    const query[2048];

    weiß jemand woran das liegt und kann mir evtl helfen?


    Grüße

  • weiß jemand woran das liegt und kann mir evtl helfen?

    Wieso in aller Wellt sollte das query const sein?


    const bedeutet, der Wert ist konstant und ändert sich nicht. Aber da du das hier bei der Deklaration verwendest und der "Variable" keinen Wert zuweist, wäre das immer leer...


    Also mach aus dem const ein new :)

    ast2ufdyxkb1.png


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

  • Wieso in aller Wellt sollte das query const sein?


    const bedeutet, der Wert ist konstant und ändert sich nicht. Aber da du das hier bei der Deklaration verwendest und der "Variable" keinen Wert zuweist, wäre das immer leer...


    Also mach aus dem const ein new :)

    Hatte ich bisher so und dabei sind folgende Fehler entstanden:

    Code
    C:\Users\ioann\OneDrive\Projekte\SAMP Server\gamemodes\script.pwn(626) : warning 239: literal array/string passed to a non-const parameter
    C:\Users\ioann\OneDrive\Projekte\SAMP Server\gamemodes\script.pwn(626) : warning 239: literal array/string passed to a non-const parameter

    Die Zeile dazu wäre folgende:

    Code
     mysql_function_query(dbhandle,query,false,"","");

    dbhandle ist folgendermaßen definiert:

    Code
    dbhandle=mysql_connect(DB_HOST,DB_USER,DB_DB,DB_PASS);

    Die Daten der DB sind konstant mit #define definiert

  • Achso.

    Ja, das sind nur Warnings, die kannst du eig ignorieren.


    Beheben tust du sie entweder, indem du deine MySQL Version updatest (empfohlen).


    Oder du bearbeitest das a_mysql.inc, denn da kommen die Warnings her, das hat nichts mit deinem Code zu tun.


    Dort werden Strings in den Funktionen übergeben, als Beispiel:


    C++
    native MySQL:mysql_connect(host[], user[], password[], database[], MySQLOpt:option_id = MySQLOpt:0);//So steht es da
    
    native MySQL:mysql_connect(const host[], const user[], const password[], const database[], MySQLOpt:option_id = MySQLOpt:0); //So müsste es aussehen

    Also immer wenn Strings (bzw Arrays) übergeben werden, also wenn diese eckigen Klammern bei den Parametern verwendet werden, sollte man ein const verwenden, wenn diese in der Funktion nicht verändert werden :)

    ast2ufdyxkb1.png


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

  • Habe jetzt mal auf die neue version geupdated, weil ich noch eine alte drin hatte.

    Jetzt existieren die Funktionen nicht mehr =O

    Gibt es irgendwie eine Liste in der man sehen kann was man wodurch ersetzen muss?
    Hier nochmal die Fehlermeldungen:


  • Ioannis20x gibt hier ein Wiki dazu: https://team.sa-mp.com/wiki/MySQL_R40.html


    Die neuen Funktionen heißen ähnlich, musst du quasi nur umbenennen und die Parameter neu anordnen :)


    #Handy

    Danke dir für die Liste

    Ich habe jetzt das ganze endlich angepasst ^^

    Leider habe ich jetzt das Problem dass der Server nicht mehr startet und ich bekomme folgende Fehlermeldung:

    Code
    [02:32:05] [sampgdk:error] Too many callback arguments (at most 32 allowed)

    Und das mehrere Male.
    Ich habe keine Ahnung wie ich das beheben kann.

    Kennt jemand eine Lösung für dieses Problem?

  • Und das mehrere Male.

    giphy.gif?cid=ecf05e479lbasj7ntmchl9ytufcjvqjtffhfy6abc77ko3yd&ep=v1_gifs_search&rid=giphy.gif&ct=g


    Excuse me, what ^^



    Wie zur Hölle bekommt man das denn hin. Das bedeutet du hast Funktionen, die sehen wie folgt aus:


    stock test(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a, b, c, d, e, f, g)


    oder


    public test(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a, b, c, d, e, f, g)


    Also dass die mehr als 32 Parameter haben.


    Keine Ahnung, wie man das schafft xD Musst du das Design etwas anpassen.

    Kannst ja mal eine Posten, dann können wir mal draufschauen :)

    ast2ufdyxkb1.png


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

  • Das ist einne gute Frage, habe selber keine Ahunung wie ich das angestellt habe :saint:
    Aber es hat sich behoben nachdem ich den Server ein mal komplett neugestartet habe(kein GMX).


    Jetzt sind jedoch verschiedene andere Probleme aufgetreten.

    Habe mal Crashdetect reingeladen und dann kam das hier bei rum:



    Ich habe keine Ahung was der da mit dem mysql plugin mach.