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 ?
OnVehicleRespray ...
- SocialGameTv
- Geschlossen
- Erledigt
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
-
-
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" -
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 -
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"cInfo[carid][cColor1]
vehicleid nicht carid -
Über Carid hab ich jedoch Alles gemacht ...
enum carEnum{
id_x,
model,
besitzer,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
db_id,
cColor1,
cColor2
} -
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.
-
Gibt jetzt Nen MySql Fehler aus jedoch werde ich mich da erst morgen drum kümmern ...
-
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 abspeicherstnoch ein Tipp
Spiel nicht so mit den heap space denn deine deklaierung ist definitiv zu hoch gesetzt -
-
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 -
Schick mal die Zeile.
Scheint ein Zeichen zu wenig/viel zu sein. -
Ok werde hier maln Pastebind einfügen ...
http://pastebin.com/WGfURBDu
so wie ich jetzt das Script (Nur Mysql und 1,2 andere sachen) geschrieben habe -
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 ... -
Beim Ersten Code fehlt noch die Carid, also ein weitere Wert.
Benutz mal anstatt Carid das hiercInfo[i][db_id]
i = vehicleid
also
cInfo[GetPlayerVehicleID(playerid)][db_id] -
GetPlayerVehicleid ist unnötig da OnVehicleRespray schon ein vehicleid wert zurückgibt...
-
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? -
ok nur beim Complien error 091: ambiguous constant; tag override is required (symbol "db_id")
und da ich kompletter Neuanfänger bin is es auch nicht soeinfach für mich erstmal alles zu verstehen ... hab das MySql Saven usw immer nach Tutorial gemacht http://www.youtube.com/user/MrMonatHD/videos von MrTutorialHD ... -