OnVehicleRespray ...

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 ich habe jetzt in meinem eine Speicherfunktion für die Fahrzeuge der spieler eingebau ...
    nur mir fehlt noch die funktion OnVehicleRespray Wie muss ich diese schreiben so das die farben der fahrzeuge in der MySql Datenbank bei umlakieren Aktualisiert werden ? ?(

    • Offizieller Beitrag


    new query[256];
    format(query, sizeof query, "UPDATE `TABELLE` SET `COLOR1` = '%d', `COLOR2` = '%d' WHERE `ID` = '%d';", COLORVAR, COLORVAR2, AUTOIDDATENBANK);
    mysql_query(query, (-1), (-1), MySQLConnections[0]);
    Oder

    new query[256];
    format(query, sizeof query, "UPDATE `TABELLE` SET `COLOR` = '%d;%d' WHERE `ID` = '%d';", COLORVAR, COLORVAR2, AUTOIDDATENBANK);
    mysql_query(query, (-1), (-1), MySQLConnections[0]);
    Mit dem 2. Prinzip musst du den String der zurückgegeben wird exploden auf dieses Zeichen ";".


    So funktioniert es mit meinem MySQL Plugin.

    format(query, sizeof query, "UPDATE `NAME DER TABELLE` SET `NAME DER SPALTE` = '%d;%d' WHERE `SORTIERUNG DER FAHRZEUGE ` = '%d';", VARIABLE VON COLORID1 , VARIABLE VON COLORID2, AUTOIDDATENBANK);
    Du solltest MySQL können.


    Edit #1: Erklärung

  • Ok hab dies jetzt so geschieben...


    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    new query[256];
    format(query,sizeof(query),"UPDATE autos (besitzer,vcolor1,vcolor2) VALUES ('%i','%i','%i')",sInfo[playerid][db_id],cInfo[carid][cColor1],cInfo[carid][cColor2]);
    mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
    return 1;
    }


    Nur jetzt kommt :


    C:\Users\Kevin\Desktop\SelfmadeScript.pwn(1234) : error 017: undefined symbol "carid"
    C:\Users\Kevin\Desktop\SelfmadeScript.pwn(1235) : error 017: undefined symbol "carid"

    • Offizieller Beitrag

    An dieser Funktion
    mysql_query(query, (-1), (-1), MySQLConnections[0]);
    Darf nur die Variabel geändert werden, die du zum Connecten deiner Datenbank benutzt.


    In deinem Format benutzt du die UPDATE Funktion als INSERT, schau dir nochmal meinen Post zum Update.


    Du hast doch bestimmt eine Funktion wo du irgendwas in die MySQL Datenbank speicherst, schick
    die uns mal, dann können wir mal schauen wie deine Funktion aufgebaut wird.

  • //MySqL#define db_host "!!!"#define db_user "!!!"#define db_pass "!!!"#define db_db "!!!"
    public carSavedToDB(carid){ cInfo[carid][db_id]=cache_insert_id(dbhandle); return 1;}
    saveCarToDB(playerid,carid){ new query[1024]; format(query,sizeof(query),"INSERT INTO autos (besitzer,model,vcolor1,vcolor2,x,y,z,r) VALUES ('%i','%i','%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][model],cInfo[carid][cColor1],cInfo[carid][cColor2],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;}


    createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r){ for(new i=0; i<sizeof(cInfo); i++) { if(cInfo[i][id_x]!=0)continue; cInfo[i][besitzer]=sInfo[playerid][db_id]; cInfo[i][c_x]=x; cInfo[i][c_y]=y; cInfo[i][c_z]=z; cInfo[i][c_r]=r; cInfo[i][cColor1]=vcolor1; cInfo[i][cColor2]=vcolor2; cInfo[i][model]=modelid; cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,vcolor1,vcolor2,-1); new string[128]; format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.",i); SendClientMessageToAll(COLOR_RED,string); saveCarToDB(playerid,i); return 1; } return 1;}
    So hab jetzt einfach mal alles reingehauen ... hab schon den gansentag gebraucht um überhaupt hinzubekommen das die Farben speichern :cursing:

  • cInfo[carid][cColor1]
    vehicleid nicht carid

    Zitat von Sharpadox

    Echt fantastisch, dieses "Google" ^^



    • Offizieller Beitrag

    updateCarColorToDB(carid, color1, color2){
    new query[256];
    format(query, sizeof query, "UPDATE `autos` SET `COLOR` = '%d', `COLOR2` = '%d' WHERE `ID` = '%d';", color1, color2, carid);
    mysql_function_query(dbhandle,query ,true, "carSavedToDB", "i", carid);
    return 1;
    }


    Versuch es mal mit dieser Funktion.


    COLOR und COLOR2 müssen geändert werden, je nachdem wie sie in deiner Datenbank heißen.

  • Warum ruft ihr bei einen UPDATE ein Callback auf?
    Das ergibt kein Sinn...


    mysql_tquery reicht da aus..
    mysql_tquery(dbhandle,query,"","");


    Außerdem hast du ein Enum wo du farben zwischenspeicherst daher nutz die doch
    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    cInfo[vehicleid][cColor1] = color1;
    cInfo[vehicleid][cColor2] = color2;
    return 1;
    }
    Dann einfach den rest abspeichern wenn du auch das Auto abspeicherst


    noch ein Tipp
    Spiel nicht so mit den heap space denn deine deklaierung ist definitiv zu hoch gesetzt

    All in all it's just another brick in the wall

    • Offizieller Beitrag

    Du Held,
    genau um das Abspeichern geht es doch.
    Schau dir mal seine Funktion an wo er versucht einen Datenbankeintrag zu erstellen.
    Schon da benutzt er Update, was keinen Sinn macht.


    Einen Callback aufzurufen kann schon seinen Sinn haben ;). Wenn er was vor hat.


    Meld dich dann wieder, wenn es nicht funktioniert.


    Edit 1#: Text verbessert.

  • Es gibt immernoch folgenden MySql Fehler aus :
    [13:11:09] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='11'' at line 1
    [13:11:09] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='12'' at line 1

    • Offizieller Beitrag

    Schau dir mal deine Zeile an und meine Zeile.
    Du vermischt UPDATE MIT INSERT.
    format(query,sizeof(query),"UPDATE autos (vcolor1,vcolor2) VALUES ('%i','%i')",color1,color2);


    Und meine Zeile:
    format(query, sizeof query, "UPDATE `autos` SET `COLOR` = '%d', `COLOR2` = '%d' WHERE `ID` = '%d';", color1, color2, carid);

  • Habs jetzt so geändert doch immernoch der MySQL Fehler und wenn ich noch carid mit rein nehme wie bei dir kommt ein error ...
    { new query[256]; cInfo[vehicleid][cColor1] = color1; cInfo[vehicleid][cColor2] = color2; format(query, sizeof query, "UPDATE `autos` SET `vcolor1` = '%i', `vcolor2` = '%i' WHERE `id` = '%i';", color1, color2); mysql_tquery(dbhandle,query,"carSavedToDB","i"); return 1;}=MySql Fehler


    { new query[256]; cInfo[vehicleid][cColor1] = color1; cInfo[vehicleid][cColor2] = color2; format(query, sizeof query, "UPDATE `autos` SET `vcolor1` = '%i', `vcolor2` = '%i' WHERE `id` = '%i';", color1, color2 , carid); mysql_tquery(dbhandle,query,"carSavedToDB","i"); return 1;}=error beim Complien C:\Users\Kevin\Desktop\SelfmadeScript.pwn(1234) : error 017: undefined symbol "carid"
    Habs auch mit %d und %i Verucht da ich oben bei der farbe des autos auch mit %i gearbeitet habe ...

    • Offizieller Beitrag

    GetPlayerVehicleid ist unnötig da OnVehicleRespray schon ein vehicleid wert zurückgibt...

    Da hast du Recht.
    Habe Ich aber im Allgemeinen geschrieben.
    Er soll es Ja nicht kopieren und einfügen, sonder verstehen.
    Aber danke für dein Hinweis.


    @SocialGameTv
    wie sieht's aus?