Hallo leute..
ich hab ein Problem, wo ich nicht weiss, weshalb das kommt..
In der MySQL-Tabelle befinden sich 64 Fahrzeuge. Die werden allerdings nicht alle ausgelesen.
Also, ich hab ganz oben
#undef MAX_VEHICLES
#define MAX_VEHICLES 100
d.h. wenn er alle Fahrzeuge geladen hat, bleiben 36 ids von MAX_VEHICLES übrig.
wenn der Server gestartet wird, wird eine Funktion aufgerufen:
MySQLGetVehicles("bicycles");
//... noch 7 weitere davon
Und hier die Funktion:
stock MySQLGetVehicles(group[])
{
MySQLCheck();
new data[256];
mysql_query("SELECT * FROM vehicles");
mysql_store_result();
while(mysql_fetch_row_data())
{
mysql_fetch_field("vGroup",data);
if(!strcmp(group,data,true))
{
for(new v=0;v<MAX_VEHICLES;v++)
{
if(!Vehicle[v][vID])
{
mysql_fetch_field("vID",data); Vehicle[v][vID] = strval(data);
mysql_fetch_field("vModel",data); Vehicle[v][vModel] = strval(data);
mysql_fetch_field("vPosX",data); Vehicle[v][vPosX] = floatstr(data);
mysql_fetch_field("vPosY",data); Vehicle[v][vPosY] = floatstr(data);
mysql_fetch_field("vPosZ",data); Vehicle[v][vPosZ] = floatstr(data);
mysql_fetch_field("vAngle",data); Vehicle[v][vAngle] = floatstr(data);
mysql_fetch_field("vColor1",data); Vehicle[v][vColor1] = strval(data);
mysql_fetch_field("vColor2",data); Vehicle[v][vColor2] = strval(data);
mysql_fetch_field("vRespawn",data); Vehicle[v][vRespawn] = strval(data);
mysql_fetch_field("vHealth",data); Vehicle[v][vHealth] = floatstr(data);
mysql_fetch_field("vPrice",data); Vehicle[v][vPrice] = strval(data);
mysql_fetch_field("vGroup",data); strmid(Vehicle[v][vGroup],data,0,sizeof(data),255);
Vehicle[v][vVehicleID] = AddStaticVehicleEx(Vehicle[v][vModel],Vehicle[v][vPosX],Vehicle[v][vPosY],Vehicle[v][vPosZ],Vehicle[v][vAngle],Vehicle[v][vColor1],Vehicle[v][vColor2],Vehicle[v][vRespawn]);
SetVehicleHealth(Vehicle[v][vVehicleID],Vehicle[v][vHealth]);
printf("Vehicle %d created (Group: %s).",Vehicle[v][vVehicleID],Vehicle[v][vGroup]);
break;
}
}
}
}
return 0;
}
eigentlich logisch, oder?
Nur werden dann insgesamt 47 Fahrzeuge gespawnt.
Dann hab ich mal mit printf debugging gemacht.
Dabei fand ich heraus, das nur jede zweite vID-Variable 0 ist!!
wenn ich aber vor der Funktion alle vID auslese, gibt es mir da immer 0 aus!
d.h. nachdem das erste Fahrzeug gespawnt ist, sieht das so aus
v 0 ist vID 0
Fahrzeug gespawnt
v 0 ist vID 1
v 1 ist vID 105 (WARUM 105??!!)
v 2 ist vID 0
nächstes Fahrzeug gespawnt
v 0 ist vID 1
v 1 ist vID 105 (WARUM 105??!!)
v 2 ist vID 2
v 3 ist vID 105 (hier auch wieder?!)
usw.
Hat da jemand eine Erklärung dazu?
die Variable vID wird NIE sonst irgendwie gesetzt!
Bin am verzweifeln
MFG selEcT