[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
  • 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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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: