mysql_store_result hat gefehlt.
Versuche es so:
public OnPlayerCarsLoad(playerid)
{
new query[128];
format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
mysql_query(query);
printf("query = %s", query);
mysql_store_result();
SendClientMessage(playerid,COLOR_RED,"Bis hier geht es");
new num_rows = mysql_num_rows();
printf("%i num rows",num_rows);
for(new i=0; i<num_rows; i++)
{
new id=getFreeCarID();
SendClientMessage(playerid,COLOR_RED,"Bis hier geht es auch");
cInfo[i][carmodel] = mysql_GetIntByInt("autos","model","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][besitzer] = mysql_GetIntByInt("autos","besitzer","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_x] = mysql_GetFloatByInt("autos","x","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_y] = mysql_GetFloatByInt("autos","y","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_z] = mysql_GetFloatByInt("autos","z","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][c_r] = mysql_GetFloatByInt("autos","r","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][db_id] = mysql_GetIntByInt("autos","id","besitzer",PlayerInfo[playerid][pMySQLID]);
cInfo[i][id_x]=CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],-1,-1,-1);
}
mysql_free_result();
return 1;
}
Autos laden nicht
- timm462f
- Geschlossen
- Erledigt
-
-
-
// Edit es lädt aber immer noch die gleiche Vehicleid und kein anderes
Was meinst du damit?
-
meld dich mal bei mir ts.mvs-reallife.de
oder skype nils-l.1
dann gehen wir das problem mal anders an -
Ich habe 2 Autos aber es lädt 2 mal ein Infernus
-
Wie es mir scheint lässt du in die Variablen für das Fahrzeug auch nur den Eintrag von der "id" "PlayerInfo[playerid][pMySQLID]" auslesen.
-
Müsste ich das Model dann auch mit bei machen?
-
Ich verstehe deine Frage nicht.
-
Müsste das dann so?
cInfo[i][carmodel] = mysql_GetIntByInt("autos","model","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][besitzer] = mysql_GetIntByInt("autos","besitzer","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][color_1] = mysql_GetIntByInt("autos","farbe1","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][color_2] = mysql_GetIntByInt("autos","farbe2","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][c_x] = mysql_GetFloatByInt("autos","x","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][c_y] = mysql_GetFloatByInt("autos","y","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][c_z] = mysql_GetFloatByInt("autos","z","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][c_r] = mysql_GetFloatByInt("autos","r","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][db_id] = mysql_GetIntByInt("autos","id","besitzer","model",PlayerInfo[playerid][pMySQLID],cInfo[i][carmodel]);
cInfo[i][id_x]=CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][color_1],cInfo[i][color_2],-1); -
Kannst du mal die mysql_GetIntByInt Funktion posten?
-
C
tock mysql_GetIntByInt(Table[], Field[], Where[], Where2) { new Get[128]; format(query, 128, "SELECT %s FROM %s WHERE %s = '%d'", Field, Table, Where, Where2); //mysql_query(query,-1,0,connection); mysql_query(query,-1,0,connection1); mysql_query(query); mysql_store_result(); mysql_fetch_row(Get,"|"); return strval(Get); }
-
Dann geht es so gar nicht, sondern muss so aussehen:
public OnPlayerCarsLoad(playerid)
{
new query[128], data[256];
format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
mysql_query(query);
printf("query = %s", query);
mysql_store_result();
SendClientMessage(playerid,COLOR_RED,"Bis hier geht es");
new num_rows = mysql_num_rows();
printf("%i num rows",num_rows);
if(num_rows > 0)
{
while(mysql_fetch_row(data))
{
new i=getFreeCarID();
SendClientMessage(playerid,COLOR_RED,"Bis hier geht es auch");
mysql_fetch_field("model",data); cInfo[i][carmodel] = strval(data);
mysql_fetch_field("besitzer",data); cInfo[i][besitzer] = strval(data);
mysql_fetch_field("x",data); cInfo[i][c_x] = floatstr(data);
mysql_fetch_field("y",data); cInfo[i][c_y] = floatstr(data);
mysql_fetch_field("z",data); cInfo[i][c_z] = floatstr(data);
mysql_fetch_field("r",data); cInfo[i][c_r] = floatstr(data);
mysql_fetch_field("id",data); cInfo[i][db_id] = strval(data);
cInfo[i][id_x] = CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],-1,-1,-1);
}
}
mysql_free_result();
return 1;
} -
Danke, das geht schon mal und wie kann ich das Kennzeichen aus der DB lesen lassen und dann so setzten lassen?
SetVehicleNumberPlate(cInfo[i][id_x],cInfo[i][kennzeichen]);
-
mysql_fetch_field("kennzeichen",data); format(cInfo[i][kennzeichen], 64, data);
Das SetVehicleNumberPlate dann direkt unter dem CreateVehicle.
-
Es steht jetzt nur eine 1 am Nummernschild
-
Hast du im enum das kennzeichen als Array deklariert?
Sprich so:
kennzeichen[64],Wenn nicht, mache das so.
-
Ja habe ich
enum carEnum{
id_x,
carmodel,
besitzer,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
color_1,
color_2,
db_id,
kennzeichen[64],
zugelassen,
} -
Wie sieht dein OnPlayerCarsLoad aktuell aus?
-
Wie sieht dein OnPlayerCarsLoad aktuell aus?
public OnPlayerCarsLoad(playerid)
{
new query[128], data[356];
format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
mysql_query(query);
printf("query = %s", query);
mysql_store_result();
new num_rows = mysql_num_rows();
printf("%i num rows",num_rows);
if(num_rows > 0)
{
while(mysql_fetch_row(data))
{
new i=getFreeCarID();
mysql_fetch_field("model",data); cInfo[i][carmodel] = strval(data);
mysql_fetch_field("besitzer",data); cInfo[i][besitzer] = strval(data);
mysql_fetch_field("Farbe1",data); cInfo[i][color_1] = strval(data);
mysql_fetch_field("Farbe2",data); cInfo[i][color_2] = strval(data);
mysql_fetch_field("x",data); cInfo[i][c_x] = floatstr(data);
mysql_fetch_field("y",data); cInfo[i][c_y] = floatstr(data);
mysql_fetch_field("z",data); cInfo[i][c_z] = floatstr(data);
mysql_fetch_field("r",data); cInfo[i][c_r] = floatstr(data);
mysql_fetch_field("id",data); cInfo[i][db_id] = strval(data);
mysql_fetch_field("kennzeichen",data); format(cInfo[i][kennzeichen], 64, data);
cInfo[i][id_x] = CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][color_1],cInfo[i][color_2],-1);
SetVehicleNumberPlate(cInfo[i][id_x],cInfo[i][kennzeichen]);
}
}
mysql_free_result();
return 1;
} -
Das passt.
Steht das Kennzeichen korrekt in der Datenbank drin, und ist die Spalte in der Datenbank ein VARCHAR mit genügend Zeichen?