[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
  • Du hast da e_modelid, statt modelid stehen.


    Es ist halt maximal stupid modelid als globale Variable zu haben. Fast so wie wenn man playerid o.ä. als globale Variable hätte.

    Nenn es um zu gModelid (für global) oder sowas. Oder lass es ganz weg eig ist es unnötig.


    #Handy

    ast2ufdyxkb1.png


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

  • Wenn ich es entferne, bleibt der Error, wenn ich es modelid ist der Error weg, aber der Server startet nicht wegen

    Code
    [00:11:33] [debug] Run time error 19: "File or function is not found"
    [00:11:33] [debug]  KillPlayerTimers
    [00:11:33] [debug] Run time error 19: "File or function is not found"
    [00:11:33] [debug]  KillPlayerTimers
    [00:11:33] Script[gamemodes/pRPv3.0bEdited.amx]: Run time error 19: "File or function is not found"
    [00:11:33] Number of vehicle models: 1

    Wenn ich es in gModelid umnenne, ist der Error wieder da

  • dann guck in welchen enum du modelid verwendest und nenne dieses um dann geht auch modelid bei dem public

    zb beim autohaus mache ich immer ahmodel oder amodelcar halt nix mit modelid im enum / new

  • Aloha miteinander,

    ich habe seit kurzem ein Problem mit meinem Fahrzeugsystem und zwar speichert es die Farbe des Fahrzeuges nicht ab.

    Ich habe überhaupt keine Ahnung woran das liegen könnte, da der mysql log leer ist.

    Wäre nett wenn ihr nochmal drüber schauen könntet, vielleicht findet ihr ja einen Fehler.

    Vielen Dank schonmal im Voraus.

    Code
    Code zum Speichern des Fahrzeuges
    mysql_format(dbhandle,query,sizeof(query),"UPDATE autos SET f1='%i',f2='%i', x='%f', y='%f', z='%f' WHERE id='%i'",cInfo[i][farbe1], cInfo[i][farbe2], cInfo[i][c_x], cInfo[i][c_y], cInfo[i][c_z], cInfo[i][db_id]);


    Code
    Funktion zum Laden der Fahrzeuge
    loadPlayerCars(playerid)
    {
        new query[128];
        mysql_format(dbhandle,query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
        mysql_tquery(dbhandle,query,"OnPlayerCarsLoad","d",playerid);
        return 1;
    }



    Grüße

  • send mal alles vom speichern der fahrzeuge sieht mir nach getvehiclecolor aus was fehlt

  • send mal alles vom speichern der fahrzeuge sieht mir nach getvehiclecolor aus was fehlt

  • In deinem Update Query, speicherst du ja auch nicht die Fahrzeugfarben?!


    Wieso sollte das auch funktionieren...


    Wie sieht denn die Datenbankstruktur aus?

    ast2ufdyxkb1.png


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

  • Oh sry, sind ja ganz am Anfang, das habe ich übersehen, ist schon spät.


    Okay, dann haben die wohl einfach den falschen Wert?


    Du kannst mit mysql_log(DEBUG); unter OnGameModeInit den MySQL Log auch kurzzeitig aktivieren, dann wird unter logs/ der MySQL Log angelegt.


    Aber ich vermute du musst GetVehicleColor(cInfo[i][id_x], cInfo[i][farbe1],cInfo[i][farbe2]); evtl noch vor dem Update Query aufrufen.


    Wenn die Funktion nicht definiert ist, wie stellst du dir sonst so vor an die Farben zu kommen? Setzt du die immer?


    Alternativ zu dem Log, kannst auch einfach n print setzen: printf("%d|%d",cInfo[i][farbe1],cInfo[i][farbe2]); und reinschauen, was drinnen steht.


    Ich vermute 0|0, weil du es nirgends updatest.

    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
  • Leider habe ich im Log nichts rausbekommen.

    Weder mit der einen Methode noch mit der anderen.


    Bei "mysql_log" hatte ich "ALL" drin gehabt.

    Außerdem werden die Fahrzeuge mittlerweile nicht mehr gelöscht. :S


    Ich habe die Abfrage auf den Besitzer etwas angepasst, da die DB-ID des Users dort abgespeichert wird und nicht der Name.


    Sieht mittlerweile so aus:

  • Bei "mysql_log" hatte ich "ALL" drin gehabt.

    Ja, dann wird es auch geloggt. Das liegt in einer extra Datei...da musst du schon einmal in deinem Verzeichnis gründlich suchen xD


    Der Code bringt uns nichts. Wir brauchen entweder die Logs oder per printf den Output...

    ast2ufdyxkb1.png


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

  • aber habe die query zum Speichern nicht gefunden :o

    Ja, das erklärt ja dann auch, wieso das Auto nicht zerstört wurde.

    Einfach weil es nie aufgerufen wurde.

    cache_get_value_name(i,"besitzer",cInfo[id][besitzer],128);

    Wieso? Besitzer ist doch ein Integer? Oder hast du das etwa als String behandelt? Irgendwas stimmt hier ganz und gar nicht.

    Das soll doch eine DB-ID ein. Also deklariere es als Integer und nicht als String. Da steht ja kein Name drinnen, sondern nur die DB id.


    Ich denke, wenn du das fixxt und prüfst, dass in der Datenbank deine DB-ID da drinnen steht, dann sollte es klappen.

    ast2ufdyxkb1.png


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

  • Hab das alles mal nochmal angeschaut und tatsächlich klappt das mit dem Aufrufen.


    Leider spuckt der mir das raus:

    Code
    [18:31:14] [DEBUG] mysql_format(1, 0xF5982290, 128, "UPDATE autos SET f1='%i', f2='%i', x='%f', y='%f', z='%f' WHERE id='%i'")
    [18:31:14] [DEBUG] mysql_format: return value: '86'
    [18:31:14] [DEBUG] mysql_tquery(1, "UPDATE autos SET f1='0', f2='0', x='0.000000', y='0.000000', z='0.000000' WHERE id='0'", "", "")
  • Ohne die Farbvariablen zu setzen, wie hast du dir vorgestellt, dass dort die Farbe des Fahrzeuges landet? 🧐


    Hier die Include von Ryder damals, die das übernimmt ;)

    Danke dir für den Include.

    Ich werde es gleich mal testen ^^


    Die Farbe setze ich diese tatsächlich per Befehl.

    C
    CMD:vcolor(playerid,params[])
    {
    new vID,c1,c2;
    if(sscanf(params,"iii",vID,c1,c2))return SendClientMessage(playerid,COLOR_GREY,"INFO: /vcolor [vID] [c1] [C2]");
    ChangeVehicleColor(vID, c1, c2);
    cInfo[vID][farbe1] = c1;
    cInfo[vID][farbe2] = c2;
    return 1;
    }
  • cInfo[vID][farbe1] = c1; cInfo[vID][farbe2] = c2;

    Ah okay, ja das hier ist kompletter Quatsch.

    Mich wundert es, dass du da keine Fehler bekommst.

    Zumindest wenn du crashdetect laufen hättest, würdest du hier einen Overflow sehen.

    (Es sei denn, dass du nur ganz wenige Fahrzeuge auf dem Server hast, bzw dein Auto eine niedrige vehicleid bisher hatte)


    C
    for(new i; i<sizeof(cInfo); i++)
    {
        if(cInfo[i][id_x] != vID) continue;
        cInfo[i][farbe1] = c1;
        cInfo[i][farbe2] = c2;
        break;
    }

    Das ist es, was du da eigentlich nutzen magst.


    i ist ja schließlich nicht die vehicleid, sondern der Index vom Fahrzeug.

    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