Beiträge von Kaliber

    Naja, da scheint ja alles richtig zu sein, da ist der Wert ja auf 1.


    Wie rufst du denn saveCar auf?


    Das wäre mal interessant, in welchem Kontext die Funktion aufgerufen wird.

    Ja, weil besitzer immernoch auf 0 ist.


    Da wird der falsche Wert genommen.


    Wie setzt du denn von PlayerInfo die db_id?


    Beim laden dieser id machst du irgendwas falsch...

    Was soll ich den als Verschlüsselung nutzen hab das halt von Jeffry genommen :D und wie würde ich das denn jetzt noch ändern (ist es einfach und fix oder recht schwer)?

    1. Ist das keine Verschlüsselung, lies dir meinen Beitrag (den ich doch eben verlinkt habe) dazu mal durch.


    2. Jeffry solltest das Tutorial mal in dieser Hinsicht updaten, das wirklich keine gute Idee, das so zu gestalten.


    Was genau soll ich jetzt in der Tabelle aus der DB löschen (die beiden Fahrzeuge)?

    Exakt.

    1. Bitte nutze kein MD5 beim Passwort, da kannst du es eig schon gleich bleiben lassen...Zudem steht dein Passwort jetzt hier in Klartext...(Hash Verfahren genauer erklärt)
    2. Das Select query ist nun richtig, aber ich sehe kein Insert query. Lösche nochmal die Sachen aus der Tabelle und mache das von Neu.
    3. Lösche jetzt die Log Datei, damit sie gleich frisch erstellt wird.


    Zeige dann nochmal den Log.

    Da musst du den Fehler suchen.


    Entweder bei der Zuweisung oder bei der Speicherung...printe es halt mal oder zeig uns mal deinen MySQL Log.


    (Den aktivierst du indem du unter OnGameModeInit mysql_log(ALL); eingibst)

    besitzer = 0 in der Datenbank sieht irgendwie falsch aus, meinst du nicht? :D


    Da ist wohl beim Speichern oder der ID Zuweisung was schief gelaufen...

    bei einem gmx sind diese leider komplett weg

    Super.


    ...wie sieht die Datenbank aus?

    Was sagen die Querys?

    Hast du irgendwas geprintet?


    Du solltest immer Informationen liefern, einfach nur sagen ja, bla bla geht nicht, da kann man dir meist nicht helfen.

    Fast...


    C
    loadPlayerCars(playerid) 
    { 
    new query[200]; 
    mysql_format(handle, query, sizeof(query), "SELECT * FROM autos WHERE besitzer=%d",PlayerInfo[playerid][p_id]); //966 
    mysql_tquery(handle, query, "OnPlayerCarsLoad","i",playerid);
    return 1; 
    }

    Hab es mehr oder weniger copy&pasted (selbst eingegeben etc.)

    Jetzt nichts für ungut oder so, aber du hast das komplett falsch abgetippt und benannt, wtf :D


    Du kannst doch sogar in der Beschreibung dir den Quellcode downloaden und anschauen/nutzen.


    Was bei dir loadPlayerCars heißt (was ein absolut Quatsch-Name für die Funktion ist), sieht bei ihm so aus:


    C
    saveCarToDB(playerid,carid)
    {
        new query[128];
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
        mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
        return 1;
    }

    Fallen dir Unterschiede im Query und im Namen auf? :D


    //Edit: Jetzt hab ich erstmal den Anfang des Threads gelesen, die Syntax hat Maho vorgegeben. Das ist super verwirrend für Neulinge von der Standard-Syntax abzuweichen, generell ist das bad practice, wenn es keinen krassen Vorteil bietet.



    Schau dir nochmal in Ruhe seinen Quellcode an (hier für dich mal der Direktlink https://pastebin.com/wvdygCFN)

    Kaliber habe gerade in der Datenbank den besitzer von INT auf VARCHAR geändert und an meinem enum bei besitzer[MAX_PLAYER_NAME] dran gehangen ist das so besser?

    Kannst es ruhig so lassen, wie du es hattest, das war schon sauber gelöst.


    Wie gesagt, ich dachte du hattest es anders gelöst.

    Achso, warte mal, dein besitzer ist ja doch ein int.


    Du referenzierst da also auf den Spieler, achso (verwirrende Bezeichnung).


    Dann bringst du playerid und carid durcheinander.


    Ufff, es ist sehr schwer dir so zu helfen, denn selbst wenn man die Compiler Fehler beseitigt, heißt das ja noch lange nicht, dass das System fehlerfrei funktioniert.


    Bei dir wird es das vermutlich nicht tun, da haufenweise Dinge durcheinander gewürfelt werden.


    Für so komplexe Systeme solltest du evtl Tutorials folgen oder dir spezifisch helfen lassen.


    C
    loadPlayerCars(playerid,carid) //Musst die carid noch mit angeben...oder du machst das in der Funktion...kp wie da dein Code aufgebaut ist
    {
        new query[200];
        mysql_format(handle, query, sizeof(query), "INSERT INTO autos SET besitzer=%d, model='%d', x='%f', y='%f', z='%f', r='%f'",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]); //966
        mysql_tquery(handle, query);
        return 1;
    }
    C
    public carSavedToDB(carid)
    {
        cInfo[carid][db_id]= cache_insert_id(); //Einfach ohne handle
        return 1;
    }



    //Edit:


    Dein Insert INTO Query ist völliger Quatsch, sollte das eventuell ein Update sein?

    Achso, ja ich hatte da mich an deinem Code orientiert, muss natürlich c_x, anstatt x heißen:


    C
            cache_get_value_name_float(i, "x", cInfo[id][c_x]);
            cache_get_value_name_float(i, "y", cInfo[id][c_y]);
            cache_get_value_name_float(i, "z", cInfo[id][c_z]);
            cache_get_value_name_float(i, "r", cInfo[id][c_r]);


    Ansonsten zeig uns mal die Zeilen 966 (hier etwas mehr code so + - 5 Zeilen), 1069 und 1073

    Nein, der Besitzer ist natürlich kein Int, sondern ein String.


    Es sollte dann ungefähr so aussehen:


    Dann war dein Versuch doch schon ganz richtig.


    Darfst nur nicht überall cache_get_value_name_int verwenden, sondern, wenn es sich um floats handelt eben cache_get_value_name_float.


    Und verwende nicht 0 als index, sondern eben einfach i :)

    Welche MySQL Version nutzt du denn?


    Die cache_get_field_content_int Funktion ist R33, anscheinend nutzt du eine neuere Version (was auch zu empfehlen ist).


    Eigener Versuch hier drunter

    Ja, das ist ja auch evtl ganz richtig...(Zumindest die Funktion, evtl nicht wie du es anwendest).