Hallo!
Mensch, geht mir die Pumpe wenn ich daran denke wie mich mein SA:MP Server veräppelt....
Folgendes....
Ich versuche gerade in meinem Gamemode Fahrzeuge aus der Datenbank zu laden. Das ganze erfolgt mit dem Strickenkid Plugin und zum Test auf meiner Windows 7 Ultimate 64Bit Maschine. Ich lade alle Daten in ein Enum, welches genau so aussieht:
enum FahrzeugDaten{
cCar,
cModel,
cOwnerID,
cColor1,
cColor2,
cType,
cHealthDes=0,
Float:cHealth,
Float:cXCord,
Float:cYCord,
Float:cZCord,
Float:cRCord,
cKey1,
cKey2,
cKey3,
cFrak
}
new CarInfo[MAX_VEHICLES][FahrzeugDaten];
Wenn ich nun mittels meiner "mysql_GetInt" Funktion das Enum füllen möchte klappt so einiges nicht wie es soll.
stock mysql_GetInt(Table[], Field[], Where[], Is[]){
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
Funktion ansich sollte korrekt sein. Tabellen existieren auch alle. Laut der mysql Log wird auch ALLES richtig ausgelesen. Laut meinem PrintF wird sogar ALLES richtig returnt!
Wieso steht dann in der Variable solch ein Humbug?
Hiermal der Code zum laden der Cars.
stock LoadCars(){
printf("//////////////////////////////////////");
new i=1, id[4], snp[10];
mysql_query("SELECT * FROM `cars`");
mysql_store_result();
carcount = mysql_num_rows();
mysql_free_result();
if(carcount != 0){
for(; i<=carcount; i++) {
format(id, sizeof(id), "%i", i);
format(snp, sizeof(snp), "SA-%i", i);
CarInfo[i][cModel] = mysql_GetInt("cars", "cModelID", "cID", id);
CarInfo[i][cOwnerID] = mysql_GetInt("cars", "cOwnerID", "cID", id);
CarInfo[i][cColor1] = mysql_GetInt("cars", "cColor1", "cID", id);
CarInfo[i][cColor2] = mysql_GetInt("cars", "cColor2", "cID", id);
CarInfo[i][cKey1] = mysql_GetInt("cars", "cKey1", "cID", id);
CarInfo[i][cKey2] = mysql_GetInt("cars", "cKey2", "cID", id);
CarInfo[i][cKey3] = mysql_GetInt("cars", "cKey3", "cID", id);
CarInfo[i][cType] = mysql_GetInt("cars", "cType", "cID", id);
CarInfo[i][cXCord] = floatstr(mysql_GetString("cars", "cXCord", "cID", id));
CarInfo[i][cYCord] = floatstr(mysql_GetString("cars", "cYCord", "cID", id));
CarInfo[i][cZCord] = floatstr(mysql_GetString("cars", "cZCord", "cID", id));
CarInfo[i][cRCord] = floatstr(mysql_GetString("cars", "cRCord", "cID", id));
printf("Model: %i - Owner: %i/%i - C1: %i - C2: %i - K1: %i - K2: %i - K3: %i - Type: %i - X: %f - Y: %f - Z: %f - R: %f", CarInfo[i][cModel], CarInfo[i][cOwnerID], mysql_GetInt("cars", "cOwnerID", "cID", id), CarInfo[i][cColor1], CarInfo[i][cColor2], CarInfo[i][cKey1], CarInfo[i][cKey2], CarInfo[i][cKey3], CarInfo[i][cType], CarInfo[i][cXCord], CarInfo[i][cYCord], CarInfo[i][cZCord], CarInfo[i][cRCord]);
CarInfo[i][cCar] = AddStaticVehicle(CarInfo[i][cModel], CarInfo[i][cXCord], CarInfo[i][cYCord], CarInfo[i][cZCord], CarInfo[i][cRCord], CarInfo[i][cColor1], CarInfo[i][cColor2]);
SetVehicleNumberPlate(CarInfo[i][cCar], snp);
CarInfoParams[i][cpMotor] = mysql_GetInt("cars_params", "cpMotor", "cpID", id);
CarInfoParams[i][cpLights] = mysql_GetInt("cars_params", "cpLights", "cpID", id);
CarInfoParams[i][cpAlarm] = mysql_GetInt("cars_params", "cpAlarm", "cpID", id);
CarInfoParams[i][cpDoors] = mysql_GetInt("cars_params", "cpDoors", "cpID", id);
CarInfoParams[i][cpBonnet] = mysql_GetInt("cars_params", "cpBonnet", "cpID", id);
CarInfoParams[i][cpBoot] = mysql_GetInt("cars_params", "cpBoot", "cpID", id);
CarInfoParams[i][cpObjective] = mysql_GetInt("cars_params", "cpObjective","cpID", id);
CarInfo[i][cHealthDes] = 0;
if(CarInfo[i][cType]==1) CarInfoParams[i][cpDoors] = 0;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(i, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(i, CarInfoParams[i][cpMotor], CarInfoParams[i][cpLights], CarInfoParams[i][cpAlarm], CarInfoParams[i][cpDoors], CarInfoParams[i][cpBonnet], CarInfoParams[i][cpBoot], CarInfoParams[i][cpObjective]);
}
}
printf("%i Autos geladen", carcount);
printf("//////////////////////////////////////");
return true;
}
Das Ergebnis des PrintF sieht wie folgt aus:
Model: 462 - Owner: 1155123200/1 - C1: -993370440 - C2: 1095914278 - K1: 0 - K2: 0 - K3: 0 - Type: 1132774195 - X: 1742.250000 - Y: -1618.959960 - Z: 13.145299 - R: 265.524993
Kann mir nun mal bitte wer erklären, wieso "Owner: 1155123200/1" so ausschaut?
"1155123200" = Variable "CarInfo[cOwnerID]", sie so gespeichert wird: CarInfo[i][cOwnerID] = mysql_GetInt("cars", "cOwnerID", "cID", id);
und "1" = mysql_GetInt("cars", "cOwnerID", "cID", id) korrekt ausgegeben wird?
Ich erkenne keinen logischen Fehler, der mir das ganze erklären kann.....