Beiträge von Jeffry

    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.

    Das Problem ist, dass du die ID 0 immer direkt wieder löschst. Das ist ein Problem, welches ich schon zu dutzenden hier gesehen habe, sprich irgendwo her kommt, wo es falsch erklärt ist.


    Um das Problem zu beheben, füge folgendes ganz oben in OnGameModeInit ein:
    for(new i = 0; i < sizeof(ShopInfo); i++)
    {
    ShopInfo[id][spickup] = -1;
    ShopInfo[id][stext] = Text3D:-1;
    }


    Ändere dann
    if(ShopInfo[id][spickup])
    {
    DestroyPickup(ShopInfo[id][spickup]);
    }
    if(ShopInfo[id][stext])
    {
    Delete3DTextLabel(ShopInfo[id][stext]);
    }
    zu:
    if(ShopInfo[id][spickup] != -1)
    {
    DestroyPickup(ShopInfo[id][spickup]);
    }
    if(ShopInfo[id][stext] != Text3D:-1)
    {
    Delete3DTextLabel(ShopInfo[id][stext]);
    }

    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.

    Das cache_insert_id musst du bei OnHausCreated machen, da dort das INSERT Query ausgeführt wurde.


    Das ShopFinished brauchst du nicht über das mysql_pquery aufrufen, sondern kannst es direkt aufrufen. Einen Cache hast du bei einem Update ja nicht, du liest ja nichts aus, sondern schreibst nur in die Datenbank.

    mysql_format(handle, query, sizeof(query), "UPDATE `Houses` SET `h_exitx` = '%f', `h_exity` = '%f', ´h_exitz´ = '%f',`interior` = '%d' WHERE ´shopid´ = '%d'", xc, yc, zc,ShopInfo[id][interior],id);
    Zu
    mysql_format(handle, query, sizeof(query), "UPDATE Houses SET h_exitx = '%f', h_exity = '%f', h_exitz = '%f', interior = '%d' WHERE shopid = '%d'", xc, yc, zc,ShopInfo[id][interior],ShopInfo[id][shopid]);

    ´

    Mach im Query mal die ganzen Zeichen da weg. Manche davon sind falsch rum, das führt zu einem Fehler im Query.
    Den solltest du eigentlich im MySQL Log sehen.


    Bis auf die geraden Anführungszeichen ' kannst du alle weg machen, die brauchst du nur, wenn du eine Spalte wie einen MySQL Befehl (z.B. ALTER) nennst.

    Dann musst du es so schreiben:
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] == 0) continue;
    if(cInfo[i][id_x] != GetVehicleTrailer(veh)) continue;
    if(isEventVehicle[cInfo[i][id_x]] == 1) return SendClientMessage(playerid,-1,"Event Fahrzeuge können nicht abgeschleppt werden.");
    cInfo[i][c_gespeert] = 1;
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    break;
    }

    Ich dachte man scrollt hoch und schaut sich dann den letzten LoadPlayerCars Code an damit ich nicht so Spam.

    Du könntest den Code ja inzwischen geändert haben, daher mache ich das nicht. Sonst könnte es sein, wir überschreiben uns gegenseitig, oder erst durch eine Änderung tritt der Fehler auf. :)



    Bitte poste auch die Screenshots aus der Datenbank (User und Fahrzeuge) und nenne die IDs, die geladen werden sollen.
    Außerdem prüfe den MySQL Log, ob dort Meldungen drin sind (vorher leeren).


    Achte auch darauf, nicht immer nur die Hälfte zu machen, die ich dir sage. Das verzögert den Prozess nur unnötig.

    Das einfachste wäre ein Char Feld mit 10 (bzw. 11 falls "End-of-String" mit benötigt wird) Zeichen anzulegen.
    Dann wie folgt zu speichern:
    new d, m, y;
    getdate(y, m, d);
    mysql_format(handle, query, sizeof(query), "UPDATE ... SET ... , regdatum = '%02d.%02d.%d', ... WHERE ...", d, m y);


    Besser wäre es aber, ein Integer Feld zu nehmen und den Timestamp zu speichern.
    nmysql_format(handle, query, sizeof(query), "UPDATE ... SET ... , regdatum = '%d', ... WHERE ...", gettime());


    Das muss bei der Anzeige dann wieder umgewandelt werden.
    https://forum.sa-mp.com/showthread.php?t=347605 (Meinen Post auf Seite 8 beachten).