Autos werden nicht geladen bzw erstellt

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
  • Hi, habe neben meinem Anderen Problem noch eines mit den Autos. Sie werden nicht richtig geladen oder erstellt. Der MySQL Log sagt gar nichts dazu.
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    LoadVeh(i);
    vInfo[i][vID] = i;
    }


    Und:


    stock LoadVeh(vehID)
    {
    new query[500];
    format(query, sizeof(query), "SELECT `ID` FROM `vehicle` WHERE `ID` = %i", vInfo[vehID][vID]);
    mysql_tquery(MyCon, query, "", "");

    mysql_store_result();
    new resultline[350];

    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline, "p<|>{d}ffffiiis[32]", vInfo[vehID][vPosX], vInfo[vehID][vPosY], vInfo[vehID][vPosZ], vInfo[vehID][vPosR], vInfo[vehID][vColor1], vInfo[vehID][vColor2], vInfo[vehID][vModel], vInfo[vehID][vBesitzer]);
    }
    AddStaticVehicle(vInfo[vehID][vModel], vInfo[vehID][vPosX], vInfo[vehID][vPosY], vInfo[vehID][vPosZ], vInfo[vehID][vPosR], vInfo[vehID][vColor1], vInfo[vehID][vColor2]);
    mysql_free_result();
    return 1;
    }


    Erstellt werden sie. Nur irgendwie nicht geladen oder erstellt. Wenn ich die Konsole starte sagt mir der Server das 0 Fahrzeuge geladen werden. Ich habe nur keine Ahnung warum. Wisst ihr einen Tipp?


    MFG Acrio

  • Das hat leider auch nichts gebracht. Die Autos werden nicht erstellt. Ich könnte dir sagen was der Log sagt. Aber da sind zu viele Warnings noch wegen meinem anderen Problem. Finde den Log dazwischen nicht. nur das da was mit (null) irgendwo hinter stand.

  • Habe es mal mit der Cache funktion von mysql tquery versucht. Klappt immer noch nicht.


    Edit: So habe ich es nun. Klappt nicht :(


    public LoadVehicle(vehID)
    {
    vInfo[vehID][vID] = cache_get_field_content_int(0, "ID");
    vInfo[vehID][vPosX] = cache_get_field_content_float(0, "PosX");
    vInfo[vehID][vPosY] = cache_get_field_content_float(0, "PosY");
    vInfo[vehID][vPosZ] = cache_get_field_content_float(0, "PosZ");
    vInfo[vehID][vPosR] = cache_get_field_content_float(0, "PosR");
    vInfo[vehID][vColor1] = cache_get_field_content_int(0, "Color1");
    vInfo[vehID][vColor2] = cache_get_field_content_int(0, "Color2");
    vInfo[vehID][vModel] = cache_get_field_content_int(0, "Model");
    cache_get_field_content(0, "Besitzer", vInfo[vehID][vBesitzer]);


    AddStaticVehicle(vInfo[vehID][vModel], vInfo[vehID][vPosX], vInfo[vehID][vPosY], vInfo[vehID][vPosZ], vInfo[vehID][vPosR], vInfo[vehID][vColor1], vInfo[vehID][vColor2]);
    return 1;
    }


    stock LoadVeh(vehID)
    {
    new query[500];
    format(query, sizeof(query), "SELECT * FROM `vehicle` WHERE `ID` = %i", vInfo[vehID][vID]);
    mysql_tquery(MyCon, query, "LoadVehicle", "i", vehID);
    return 1;
    }

    Einmal editiert, zuletzt von Acrio ()

  • Aber du weißt schon das du 2000 Querys abschickst, bei allen auf eine Antwort wartest und dann direkt erstellst.
    Es ist kein wunder dass das nicht geht, schreib am besten den Code nochmal neu und überleg was du machst.


    • Benutze tquery in verbindung mit einem Callback
    • Rufe nur ein query auf welcher die in einer row list alle Ergebnisse liefert

    Viel Erfolg! ^^



    #Edit


    public LoadVehicle()
    {
    new model, color[2], Float:pos[4], vehicleid, besitzer[128];
    for(new r; r < cache_get_row_count(); r++)
    {
    model = cache_get_field_content_int(r, "Model");
    pos[0] = cache_get_field_content_float(r, "PosX");
    pos[1] = cache_get_field_content_float(r, "PosY");
    pos[2] = cache_get_field_content_float(r, "PosZ");
    pos[3] = cache_get_field_content_float(r, "PosR");
    color[0] = cache_get_field_content_int(r, "Color1");
    color[1] = cache_get_field_content_int(r, "Color2");


    vehicleid = AddStaticVehicle(model, pos[0], pos[1], pos[2], pos[3], color[0], color[1]);


    vInfo[vehicleid][vID] = cache_get_field_content_int(r, "ID");
    vInfo[vehicleid][vPosX] = pos[0];
    vInfo[vehicleid][vPosY] = pos[1];
    vInfo[vehicleid][vPosZ] = pos[2];
    vInfo[vehicleid][vPosR] = pos[3];
    vInfo[vehicleid][vColor1] = color[0];
    vInfo[vehicleid][vColor2] = color[1];
    vInfo[vehicleid][vModel] = model;
    cache_get_field_content(r, "Besitzer", besitzer);
    format(vInfo[vehicleid][vBesitzer],HIER_DIE_LÄNGE_VON_vBesitzer,besitzer);
    }
    return 1;
    }


    stock LoadVehicles()
    {
    mysql_tquery(MyCon, "SELECT * FROM vehicle", "Callback_LoadVehicles", "");
    return 1;
    }

    Einmal editiert, zuletzt von Poket-Jony ()

  • Nope, Number of Vehicle Models: 0


    Das sind die Fahrzeugmodelle die unter OnGameModeInit erstellt werden, indemfall sollte es dich nicht weiterjucken.
    Ausserdem finde ich die for Schleife nicht sehr ressourcenfreundlich ...


    Ich würde das ganze aus der Datenbank auslesen:


    format(query,64,"SELECT * FROM Fahrzeuge");
    (muss garnicht formatiert werden :) )
    Dannach eine for new i Schleife erstellen die bis zu rows hochzählt und somit alle Fahrzeuge aus der Datenbank laden.


    Gruss :) ,
    AyKut


    - Handy