[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
  • Okay. Nun werden allerdings zu viele nullen angezeigt, kann man das auch irgendwie reduzieren ? Ich würde das ganz gerne dann so auch fürs Tacho übernehmen haha^^

    %0.2f
    Damit kannst du zum Beispiel 2 Nachkommastellen anzeigen.



    Also brauche ich sozusagen 2 Callbacks / stocks um die Funktion für die Fahrzeuge zu machen oder kann ich den Query auch unter OnGameModeInit ausführen und dann an LoadCars geben ?

    Das SELECT Query kannst du bei OnGameModeInit ausführen und darüber das Callback mit den Cache Funktionen aufrufen.

  • Ja, du kannst den Query auch direkt unter OnGamemodeInit ausführen. Das macht keinen Unterschied.

    Okay. Ich habs jetzt mal einfach probiert erstmal mit 2 Stocks ... Leider hab ich anscheinend noch einen Fehler ... die Autos werden trotzdem nicht erstellt.


    Ich weiß auch leider nicht woran es liegt. Ich kann mir zwar vorstellen, dass die zuweisung mit vInfo[i] ... nicht ganz stimmt... muss ich noch irgendwie beim enum MAX_VEHICLES oder so eintragen ?


    PS: wegen dem Float hast du noch nix gesagt, kann man die iwie auf 2 Stellen hinterm Komma begrenzen ? ^^<3


    //EDIT Jeffry hat mir das mit dem Float nun schon gesagt (nicht reloaded gehabt)

  • Wie sieht dein Code jetzt aus, und wie sieht die Datenbank aus?

    Enum und new vInfo:




    OnGameModeInit:

    Code
    //LADEN
    	new query[256];
    	mysql_format(handle, query, sizeof(query), "SELECT * FROM cars WHERE laden = '1'");
    	mysql_pquery(handle, query, "OnLoadCars");


    stock OnLoadCars


    Datenbank:


    Wusste jetzt nicht ganz wie ich sonst mysql einbinden sollte ... Halt Tabelle "cars" und gleich halt ein paar einträge^^

  • new vInfo[][vehData];

    zu:
    new vInfo[50][vehData];


    Die Anzahl der Fahrzeuge musst du einmal definieren, sonst weiß der Code nicht, wie viel Speicher er reservieren soll.


    Die ID des Fahrzeugs würde ich beim Erstellen noch speichern, die wirst du sicher brauchen:
    vInfo[i][vehVID] = CreateVehicle(vInfo[i][vehMID], vInfo[i][vehX], vInfo[i][vehY], vInfo[i][vehZ], vInfo[i][vehA], vInfo[i][vehColor1], vInfo[i][vehColor2], -1);


    EDIT:
    Plus das, was LeonMrBonnie sagte. Das über mysql_pquery aufgerufene Callback muss ein public sein, sprich auch mit forward Zeile.
    stock OnLoadCars(){
    zu:
    forward OnLoadCars();
    public OnLoadCars(){


    EDIT 2:
    Und die ID ebenfalls auslesen:
    cache_get_value_name_int(i, "id", vInfo[i][vehID]);
    Die brauchst du später beim Speichern.

  • Also alle änderungen getätigt. Leider keiner Wirkung...


    vielleicht eine info von mir ... vInfo[i][vehID] soll die DBID sein, das vehMID soll das Model sein, damit ich besser abfragen kann welches Auto das ist um mit dem maximalen Tank (meinem anderem enum halt) zu vergleichen^^

  • Sollte so eigentlich klappen.
    Kannst du den Code nochmal posten?


    Gibt dir der MySQL Log etwas aus?

    ich habe zwar mysql_log(); drinne allerdings erstellt der keine mysql log^^


    forwards (hab ich ganz oben im script)

    Code
    //FORWARDS
    forward OnUserCheck(playerid);
    forward OnUserRegister(playerid);
    forward OnUserLogin(playerid);
    forward KickTimer(playerid);
    forward OnLoadCars();
    forward checkVehHealth(vehicleid);




    Enum und new vInfo

    OnGameModeInit

    Code
    //LADEN
    	new query[256];
    	mysql_format(handle, query, sizeof(query), "SELECT * FROM cars WHERE laden = '1'");
    	mysql_pquery(handle, query, "OnLoadCars");


    public OnloadCars():

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Schau mal im Ordner /logs/plugins/mysql.txt
    Der Code sieht gut aus.

    Okay...



    Code
    [22:59:37] [ERROR] mysql_format: invalid connection handle '0'
    [22:59:37] [ERROR] mysql_pquery: invalid connection handle '0'

    das sind die zwei fehler, die nur durch den Start auftreten (ich denke mal halt wenn OnGameModeInit(); aufgerufen wird)

  • Das sieht so aus, als rufst du erst das Query zum Laden der Fahrzeuge auf und stellst danach erst die Verbindung zur MySQL Datenbank her.
    Stelle die Verbindung ganz als erstes bei OnGameModeInit her.

    WoW man bin ich dumm ... ja das ist die Lösung... Allerdings muss ich sagen, dass er nur das erste Auto geladen hat, das zweite wurde nicht gespawnt.

  • for(new i = 0; i < sizeof(rows); i++)
    zu:
    for(new i = 0; i < rows; i++)


    Das hast du gut versteckt ;)

    Danke :D


    Spaß haha ... Oh man ist eig. nicht ziel der sache aber nun draus gelernt.


    Ich habe jetzt die Funktion aus dem Kopf geschrieben gehabt, naja son bisschen die SpielerInfo aus deinem Tutorial halt umgesetzt. Dafür, dass ich jetzt erst angefangen habe, doch bestimmt nicht schlecht oder? :D


    haha gut jetzt gehts :D


    Vielen Dank

  • Dafür, dass ich jetzt erst angefangen habe, doch bestimmt nicht schlecht oder?

    Einwandfrei fürs erste Mal. So kleine Fehler wie das mit dem sizeof kommen auch später immer mal wieder vor. Das Tückische bei der Sache ist, sie sehen auf den ersten Blick richtig aus, weil man es ja oft so schreibt.
    Die Hauptsache ist aber immer, dass man daraus lernt.


    Vielen Dank

    Gerne!