Es wird immer nur 1 Auto aus der MySQL Datenbank geladen

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
  • Guten Tag,


    mal wieder benötige ich eure Hilfe. Ich habe eine MySQL Datenbank die wie folgt aufgebaut ist:


    Hier die ganzen Inhalte der Tabelle (40 Autos):


    So sieht mein GameMode Init aus:

    public OnGameModeInit()
    {
    // Objekte
    //new dbVehicleID[20], vehicleID, modelID[5], posX[20], posY[20], posZ[20], posAngle[20], color1[5], color2[5], respawnTime[5];
    new carID[30];
    new vehicleID[5];
    new gameVehicleID;
    new color1[2];
    new color2[2];
    new positionX[20];
    new positionY[20];
    new positionZ[20];
    new positionAngle[20];
    new numberPlateText[50];
    new numberPlateActivated[1];
    new query[180];

    // mysql connect
    mysql_init(LOG_ALL, 1);
    mysql_connect(host, mysqluser, mysqlpass, database);


    // GameMode Name
    SetGameModeText("Brox German Reallife");

    // Server Einstellungen
    DisableInteriorEnterExits();
    EnableStuntBonusForAll(0);
    ShowPlayerMarkers(0);
    UsePlayerPedAnims();
    SetWeather(10);

    // Update
    mysql_query("UPDATE users SET ingameID = 0, status = 'offline'");
    mysql_query("UPDATE prison_user SET ingameID = 0, status = 'offline'");
    mysql_query("UPDATE vehicles SET ingameID = 0");


    // Lade alle Autos von der Datenbank
    mysql_query("SELECT * FROM vehicles WHERE ownerID = 0");
    mysql_store_result();


    while (mysql_fetch_row_data())
    {
    // Speichere alle Daten ab
    mysql_fetch_field("vehicleID", carID);
    mysql_fetch_field("modelID", vehicleID);
    mysql_fetch_field("color1", color1);
    mysql_fetch_field("color2", color2);
    mysql_fetch_field("posX", positionX);
    mysql_fetch_field("posY", positionY);
    mysql_fetch_field("posZ", positionZ);
    mysql_fetch_field("posAngle", positionAngle);


    CreateVehicle(strval(vehicleID), strval(positionX), strval(positionY), strval(positionZ), strval(positionAngle), strval(color1), strval(color2), 5);
    /*
    format(query1, sizeof(query1), "UPDATE cars SET gameVehicleID = %d WHERE carID = %d", gameVehicleID, strval(carID));
    mysql_query(query1);


    printf("%s", query1);
    */
    }


    mysql_free_result();

    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

    // Timer
    SetTimer("AntiWeaponHack", 1000, true);
    SetTimer("BanTimer", 60000, true);
    SetTimer("ShowPosMarkers", 1000, true);
    SetTimer("PrisonTimer", 60000, true);

    return 1;
    }


    Wenn ich den Server starte, läd er genau 1 Auto. Der Log sieht wie folgt aus:


    Diese Zeile ist mir schon aufgefallen:

    Code
    [11:59:37] [MySQL] Error (0): Function: mysql_fetch_row_data failed, no field data.


    Ich weis aber nicht was ich ändern kann. Seitdem ich meinen GameMode neu gescriptet habe will das ganze nicht mehr, obwohl ich das wirklich so gemacht habe wie immer.


    So funktioniert es ja auch:

    public OnGameModeInit()
    {
    // Objekte
    new carID[30];
    new vehicleID[5];
    new gameVehicleID;
    new color1[2];
    new color2[2];
    new positionX[20];
    new positionY[20];
    new positionZ[20];
    new positionAngle[20];
    new numberPlateText[50];
    new numberPlateActivated[1];
    new query1[180];

    // mysql connect
    mysql_init(LOG_ALL, 1);
    mysql_connect(host,mysqluser,mysqlpass,database);

    // Setze den Status aller Spieler auf "offline"
    mysql_query("UPDATE users SET status = 'offline'");

    // Interiors deaktivieren
    DisableInteriorEnterExits();

    // Spieler auf der Karte deaktivieren
    ShowPlayerMarkers(0);

    // Setze das Standartwetter
    SetWeather(10);


    // Lade alle Autos von der Datenbank
    mysql_query("SELECT * FROM cars WHERE disabled = 0");
    mysql_store_result();

    while (mysql_fetch_row_data())
    {
    // Speichere alle Daten ab
    mysql_fetch_field("carID", carID);
    mysql_fetch_field("vehicleID", vehicleID);
    mysql_fetch_field("color1", color1);
    mysql_fetch_field("color2", color2);
    mysql_fetch_field("positionX", positionX);
    mysql_fetch_field("positionY", positionY);
    mysql_fetch_field("positionZ", positionZ);
    mysql_fetch_field("positionAngle", positionAngle);
    mysql_fetch_field("numberPlateText", numberPlateText);
    mysql_fetch_field("numberPlateActivated", numberPlateActivated);


    if (strval(numberPlateActivated) == 1)
    {
    CreateVehicle(strval(vehicleID), strval(positionX), strval(positionY), strval(positionZ), strval(positionAngle), strval(color1), strval(color2), 5);
    /*
    format(query1, sizeof(query1), "UPDATE cars SET gameVehicleID = %d WHERE carID = %d", gameVehicleID, strval(carID));
    mysql_query(query1);


    printf("%s", query1);
    */
    }
    else
    {
    CreateVehicle(strval(vehicleID), strval(positionX), strval(positionY), strval(positionZ), strval(positionAngle), strval(color1), strval(color2), 5);
    /*
    format(query1, sizeof(query1), "UPDATE cars SET gameVehicleID = %d WHERE carID = %d", gameVehicleID, strval(carID));
    mysql_query(query1);

    printf("%s", query1);
    */
    }
    }

    mysql_free_result();

    ManualVehicleEngineAndLights();
    }


    Lasst euch nicht von der Tabelle cars irritieren, ich habe nämlich 2 Auto-Tabellen (bevor ich angefangen habe den GameMode neu zu scripten hieß es cars und jetzt vehicles.) Beide Tabellen existieren noch. Die Tabelle cars lösche ich aber da sie wie ich schon gesagt habe jetzt vehicles heißt. Die Tabelle cars ist so aufgebaut:


    Den Inhalt von cars werde ich aber nicht posten, da sonst der Beitrag zu lang ist. In der Tabelle cars werden aber zumindest 84 Autos geladen. Zwar keine 163 (so viel sind eigentlich eingetragen) aber zumindest 84.


    Erkennt jemand den fehler zwischen den beiden GameModes ? Der untere GameModeInit Teil ist vom alten Script und oben das neue. Warum liest er nicht alle Autos aus der MySQL Tabelle aus ? Das ist mein eigentliches Problem derzeit. Ich hoffe ich habe es so verständlich erklärt.


    Wenn es nicht verständlich ist, erkläre ich es gerne noch einmal. Ich hoffe ihr könnt mir helfen :)