Fraktion's Cars.... Problem

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


    Ich arbeite derzeit an meinem Selfmade mit welchem ich grad gut voran komme.


    Ich habe jetzt ein Problem, ich habe gestern eine Art "Fraktion's Autohaus" im Dialog gestaltet, soweit funktioniert es ja auch, jedoch wird nach dem Server-Restart das auto nicht wieder erstellt...
    Ich lasse mir dies sogar Printen, wo alles richtig raus kommt :



    ||>>|| F-Car Sys ||<<|| Frak 1 Model 411 Pos: 1780.819946,-1651.420043,-4.992809,172.298004 Plate: SAPD Color: 211, 1 wurde geladen

    Dies kommt halt 200 Mal da ich bei MAX_FCARS auf 200 bin....


    Hier der Code wo ich alles lade, es wird bei OnGameModeINit geladen...



    new str[520], car_count = 1;
    mysql_query("SELECT * FROM `fraccars`");
    mysql_store_result();
    while(mysql_fetch_row(str))
    {
    sscanf(str,"p<|>{i}ddffffs[12]dd",FCarInfo[car_count][fFrak],FCarInfo[car_count][fModel],FCarInfo[car_count][fX],FCarInfo[car_count][fY],
    FCarInfo[car_count][fZ],FCarInfo[car_count][fR],FCarInfo[car_count][fPlate],FCarInfo[car_count][fC1],FCarInfo[car_count][fC2]);
    new dad = CreateVehicle(FCarInfo[car_count][fModel],FCarInfo[car_count][fX],FCarInfo[car_count][fY],FCarInfo[car_count][fZ],FCarInfo[car_count][fR],FCarInfo[car_count][fC1],FCarInfo[car_count][fC2],-1);
    SetVehicleNumberPlate(dad,FCarInfo[car_count][fPlate]);
    printf("||>>|| F-Car Sys ||<<|| Frak %d Model %d Pos: %f,%f,%f,%f Plate: %s Color: %d, %d wurde geladen",FCarInfo[car_count][fFrak],FCarInfo[car_count][fModel],FCarInfo[car_count][fX],FCarInfo[car_count][fY],
    FCarInfo[car_count][fZ],FCarInfo[car_count][fR],FCarInfo[car_count][fPlate],FCarInfo[car_count][fC1],FCarInfo[car_count][fC2]);
    car_count++;
    }
    mysql_free_result();


    Hoffentlich könnt ihr mir helfen, in der Mysql Datenbank ist das Auto auch eingetragen, bzw es hat sich nach dem kaufen eingetragen.


    //edit neuer Stand

    MFG

    2 Mal editiert, zuletzt von Nightstr3am ()

  • Darin wird die ID des Fahrzeugs gespeichert, wenn es also nicht erstellt wird sollte diese Variable 0 sein.
    Deswegen würde ich es mal versuchen.
    Notfalls CreateVehicle mit AddStaticVehicleEx tauschen und sehen ob das funktioniert.


    Okay, dann wird dies ausgegeben...

    ||>>|| F-Car Sys ||<<|| Frak 1 Model 411 Pos: 1780.819946,-1651.420043,-4.992809,172.298004 Plate: SAPD Color: 211, 1 wurde (250) geladen

    Die 250 ist die Zahl welche die "dad" Variable hat, da ich bei MAx_FCARS 250 hat ist dies der letzte print..

    MFG

  • Hmm also wurde das Fahrzeug laut CreateVehicle erstellt :/
    if(dad == INVALID_VEHICLE_ID)printf(">> FEHLER: Fahrzeug mit der ID %i konnte nicht gespawnt werden!", dad);
    Bau das mal bitt ein.


    Nope, passiert nix...
    Aja iwie sehe ich in der Log grad einen Sscanf Fehler beim laden der Autos, dieser lautet :


    SQL
    sscanf warning: String buffer overflow.


    Ich benutze nur den String für Nummernschilder, der 16 Groß ist..


    Vll könnte das doch der Fehler sein ?


    //edit
    Fehler ausgebessert

    MFG

    2 Mal editiert, zuletzt von Nightstr3am ()

  • Ich weiß nicht, ob dein Problem noch besteht, aber so wie ich den Code sehe sollte es noch nicht klappen. Ich kommentier dir mal weshalb es wahrscheinlich nicht klappt:


    for(new id; id < MAX_FCARS; id++)
    {
    new str[520];
    format(str,sizeof str,"SELECT * FROM `fraccars`"); //Musst das gar nicht formatieren, da keine Parameter eingefügt werden müssen
    mysql_query(str); //Es wird 250 mal ein query (so viele cars sind wahrscheinlich nicht in der datenbank) ausgeführt und immer alles von fraccars geladen.
    mysql_store_result();
    mysql_fetch_row(str); //Es wir immer nur die erste Zeile "gefetcht"
    sscanf(str,"p<|>{i}ddffffs[12]dd",FCarInfo[id][fFrak],FCarInfo[id][fModel],FCarInfo[id][fX],FCarInfo[id][fY],
    FCarInfo[id][fZ],FCarInfo[id][fR],FCarInfo[id][fPlate],FCarInfo[id][fC1],FCarInfo[id][fC2]);
    mysql_free_result();
    //////
    new dad = CreateVehicle(FCarInfo[id][fModel],FCarInfo[id][fX],FCarInfo[id][fY],FCarInfo[id][fZ],FCarInfo[id][fR],FCarInfo[id][fC1],FCarInfo[id][fC2],-1);
    SetVehicleNumberPlate(dad,FCarInfo[id][fPlate]);
    printf("||>>|| F-Car Sys ||<<|| Frak %d Model %d Pos: %f,%f,%f,%f Plate: %s Color: %d, %d wurde geladen",FCarInfo[id][fFrak],FCarInfo[id][fModel],FCarInfo[id][fX],FCarInfo[id][fY],
    FCarInfo[id][fZ],FCarInfo[id][fR],FCarInfo[id][fPlate],FCarInfo[id][fC1],FCarInfo[id][fC2]);
    }


    Du solltest das ganze nicht mit einer for Schleife angehen. Ich empfehel dir eine while Schleife. Mit dieser Methode wird auch nur ein Query ausgeführt, weshalb das ganze auch noch Ressourcenschonend ist.
    Bsp.:



    new str[520], car_count = 1;
    mysql_query("SELECT * FROM `fraccars`");
    mysql_store_result();
    while(mysql_fetch_row(str))
    {
    sscanf(str,"p<|>{i}ddffffs[12]dd",FCarInfo[car_count][fFrak],FCarInfo[car_count][fModel],FCarInfo[car_count][fX],FCarInfo[car_count][fY],
    FCarInfo[car_count][fZ],FCarInfo[car_count][fR],FCarInfo[car_count][fPlate],FCarInfo[car_count][fC1],FCarInfo[car_count][fC2]);
    new dad = CreateVehicle(FCarInfo[car_count][fModel],FCarInfo[car_count][fX],FCarInfo[car_count][fY],FCarInfo[car_count][fZ],FCarInfo[car_count][fR],FCarInfo[car_count][fC1],FCarInfo[car_count][fC2],-1);
    SetVehicleNumberPlate(dad,FCarInfo[car_count][fPlate]);
    printf("||>>|| F-Car Sys ||<<|| Frak %d Model %d Pos: %f,%f,%f,%f Plate: %s Color: %d, %d wurde geladen",FCarInfo[car_count][fFrak],FCarInfo[car_count][fModel],FCarInfo[car_count][fX],FCarInfo[car_count][fY],
    FCarInfo[car_count][fZ],FCarInfo[car_count][fR],FCarInfo[car_count][fPlate],FCarInfo[car_count][fC1],FCarInfo[car_count][fC2]);
    car_count++;
    }
    mysql_free_result();


    Mfg,
    UncleSub



  • Jo danke, jedoch werden die autos immer noch nicht geladen,
    //edit das mit sscanf habe ich jetzt gefixxt aber die Autos werden nicht geladen.....

    MFG

    4 Mal editiert, zuletzt von Nightstr3am ()