Problem mit speicherung

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
  • Hallo liebe Leute,
    ich hab ein Problem und zwar der Kilometerstand will nicht speichern ... ich hab es jetzt hinbekommen, das der die Kilometer hoch zählt ABER speichert das irgendwie nicht ab ...



    stock saveCar(id){
    new query[800];
    format(query,800,"UPDATE `autos` SET `Farbe1` = %d, `Farbe2` = %d, `Abgeschleppt` = %d, `AbgeschlepptPreis` = %d, `KennschildVorhanden` = %d, `KennschildName` = '%s'",sCarInfo[id][Farbe1],sCarInfo[id][Farbe2],sCarInfo[id][CarAbgeschleppt],sCarInfo[id][CarAbgeschlepptPreis],sCarInfo[id][CarSchild],sCarInfo[id][CarSchildName]);
    format(query,800,"%s,`NeedRep` = %d, `CarLock` = %d, `Spoiler` = %d, `Nitro` = %d, `Wheels` = %d, `Lights` = %d, `MotorHaube` = %d, `Auspuff` = %d, `Hydraulic` = %d, `AutoDach` = %d",query,sCarInfo[id][NeedRep],sCarInfo[id][CarLock],sCarInfo[id][modspoiler],sCarInfo[id][modnitro],sCarInfo[id][modwheels],sCarInfo[id][modlights],sCarInfo[id][modhood],sCarInfo[id][modexhaust],sCarInfo[id][modhydrau],sCarInfo[id][modroof]);
    format(query,800,"%s,`Stereo` = %d, `Frontstossstange` = %d, `Heckstossstange` = %d, `VentsLinks` = %d, `VentsRechts` = %d, `SchwellerleistenRechts` = %d, `SchwellerleistenLinks` = %d",query,sCarInfo[id][modstereo],sCarInfo[id][modfrontbumper],sCarInfo[id][modrearbumper],sCarInfo[id][modventsl],sCarInfo[id][modventsr],sCarInfo[id][modsideskirtr],sCarInfo[id][modsideskirtl]);
    format(query,800,"%s,`BullBar` = %d, `rearbullbars` = %d, `frontbullbars` = %d, `Stossstangen` = %d, `PaintJob` = %d, `AutoX` = %f, `AutoY` = %f, `AutoZ` = %f, `AutoA` = %f, `CarTank` = %f, `CarKM` = %f WHERE `CarID` = %d;",query,sCarInfo[id][modbullbar],
    sCarInfo[id][modrearbullbars],sCarInfo[id][modfrontbullbars],sCarInfo[id][modbullbars],sCarInfo[id][spaintjobid],sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z],sCarInfo[id][pCarPos_A],sCarInfo[id][CarTank],sCarInfo[id][CarKM],sCarInfo[id][CarID]);
    mysql_query(query);
    printf("KilometerSAVE: %.2f",sCarInfo[id][CarKM]);
    return 1;
    }

    Hier was von der MySQL DB :
    http://prntscr.com/44ka3c


    Ausgeben tut er auch dann 0 wenn er das printet

    • Ist der momentane Wert womöglich 0.0? Schließlich gibt er auch 0.00 bei printf() aus.
    • Ist es tatsächlich vom Typ Float oder vielleicht ein Integer?
    • Stimmt der Index des Arrays (Parameter: id)?
    • Lasse dir Errors und Debug-Messages des MySQL Plugins ausgeben. Gibt es hier hilfreiche Logs?
    • P.S.: SQL Injection ist möglich.
    • Warum return 1? Bringt dir das irgendetwas?
  • chließlich gibt er auch 0.00 bei printf() aus.


    • überall habe ich %.2f sprich 0.00 | soll ich bei der Speicherung auch %.2f machen?
    • es ist überall ein Float
    • müsste eigentlich stimmen
    • nein.
    • wie kann ich das mit der Injection "beheben" ?
    • nein, hab es jetzt draußen. ^^


    - im enum habe ich Float:CarKM
    - dann habe ich ein KilometerTimer auf 1000
    Hier der Code:

    forward KilometerTimer(playerid);
    public KilometerTimer(playerid)
    {
    new veh = GetPlayerVehicleID(playerid),Float:x2, Float:y2, Float:z2, Float:output;
    GetVehiclePos(veh, x2, y2, z2);
    output = floatsqroot(floatpower(floatabs(floatsub(x2, vLastX[veh])), 2)+floatpower(floatabs(floatsub(y2, vLastY[veh])), 2)+floatpower(floatabs(floatsub(z2, vLastZ[veh])), 2));
    sCarInfo[veh][CarKM] += output;
    vLastX[veh] = x2; vLastY[veh] = y2; vLastZ[veh] = z2;
    }

    und ja bei /carinfo lasse ich das mit %.2f ausgeben.
    Speichern lasse ich mit %f ..

  • Wenn du den Code benutzt den du ganz oben verwendest bestimmt nicht, bei mir steht nämlich bei meinem Beispiel

    OnGameModeInit()
    {
    new array1[20] = "Hallo",array2[20] = "Welt";
    new string[900];
    format(string, sizeof(string), "%s", array1);
    format(string, sizeof(string), "%s", array2);
    printf("%s",string);
    }


    das hier in der Konsole:



    Logischerweise wird da auch nichts dann abgespeichert wenn im Query nur "[...] CarKM = 'xyz' [...]" steht.


    Schau einfach mal in deinem MySQL Log nach und poste den Fehlercode.

  • Schlaues bürchle, es gibt kein Fehlercode .. es speichert alles richtig und das weiß ich doch glaub ich am besten oder? (sollte jetzt nicht pampig sein)

  • Nunja, dannn liegt der Fehler eventuell bei der Größe des Query kannst ja mal eine Sinnlose Variable ganz hinten ranhängen um zu testen ob es groß genug ist.
    (hab btw das mit dem %s am Anfang jedes Query nicht gesehen daher ignorier das was ich davor geschrieben hab).

  • Nunja, dannn liegt der Fehler eventuell bei der Größe des Query kannst ja mal eine Sinnlose Variable ganz hinten ranhängen um zu testen ob es groß genug ist.
    (hab btw das mit dem %s am Anfang jedes Query nicht gesehen daher ignorier das was ich davor geschrieben hab).

    Ich hab es grad iwie hin gekriegt, das es speichert jetzt hab aber jetzt geht es nicht mehr '-'
    Und es ist alles Groß genug ^^

  • Benutze strcat, oder strins für dein Array, jedes mal wenn du format erneut benutzt, wird alles aus dem "query" gelöscht anstatt etwas eingefügt.


    Mag richtig sein, wenn er den Query vorher nicht wieder mit laden lässt.
    new string[64];
    format(string,64,"Hallo wie gehts?");
    format(string,64,"Hallo");
    //Ausgegeben wird: Hallo


    new string[64];
    format(string,64,"Hallo wie gehts?");
    format(string,64,"%s - Hallo",string);
    //Ausgegeben wird: Hallo wie gehts? - Hallo


    Da er aber nach dem neuen Format die vorherigen Querys mitladen lässt, ist das nicht so schlimm, bzw. es passiert nichts ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen