Hallo,
ich brauche wieder denkhilfe da ich wieder am Vehiclesystem hänge.
Ich weiss nicht wie ich die ID´s der Vehicles aus der Datenbank mit den richtigen Vehicle ID´s verknüpfe.
Wie kann ich das am besten machen so dass ich später halt die Vehicles parken kann, wenn ich im fahrzeug sitze (getplayervehicleid), der auch weis das fahrzeugid nr soundso auch zum fahrzeug aus der db gehört.
Es muss ja die DB id = der echten vehicleid sein damitt ich die immer abfragen kann oder?
Wenn ich dann aber lücken in der DB habe z.b. löscht einer sein vehicle dann ist die ID ja weg somit funktioniert meine (schlaue*) logik wieder nicht.
Ich kann grad nicht so weit denken darum bitte ich um hilfe
Enums der Fahzeuge, Normale Vehicles extra und PlayerVehicles extra
enum Fahrzeuge
{
fvID,
fvModel,
Float:fvX,
Float:fvY,
Float:fvZ,
Float:fvA,
fvColor1,
fvColor2,
fvType
//Vehicle Types
//0 = Standart
//1 = Grün
//2 = Lila
//3 = Gelb
//100 = Admin
//101 = Polizei
//10 = CarShop 1
//11 = CarShop 2
}
enum PlayerFahrzeuge
{
fvID,
fvModel,
Float:fvX,
Float:fvY,
Float:fvZ,
Float:fvA,
fvColor1,
fvColor2,
fvPaintjob,
fvPrice,
fvLocked,
fvNeon,
fvBesitzer[MAX_PLAYER_NAME]
}
Abfrage wenn einer im Fahrzeug und wenn Typ.. so und so dann Mache dies und das
if(newstate == PLAYER_STATE_DRIVER)
{
new veh = GetPlayerVehicleID(playerid);
if(Vehicles[veh][fvID] == veh)
{
SendClientMessage(playerid, green, "Selbe ID");
}
else
{
SendClientMessage(playerid, red, "Andere ID");
}
if(Vehicles[GetPlayerVehicleIDEX(playerid)][fvType] == 10)
{
SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du kannst dir das Fahzeug mit /buyvehicle kaufen");
}
else if(Vehicles[GetPlayerVehicleID(playerid)][fvType] == 11)
{
SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du kannst dir das Fahzeug mit /buyvehicle kaufen");
}
}
MySql Stock um die Normalen/Player Vehicles zu Laden
stock LoadPlayerVehicle(playerid)
{
new ID, String[1000], Name[MAX_PLAYER_NAME], Query[500];
GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
mysql_real_escape_string(Name, Name);
format(Query, sizeof(Query), "SELECT * FROM `PlayerVehicles` WHERE `Besitzer` = '%s'", Name);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() > 0)
{
while(mysql_fetch_row(String))
{
sscanf(String, "p<|>iiffffiiiiiis[200]", PlayerVehicles[ID][fvID], PlayerVehicles[ID][fvModel], PlayerVehicles[ID][fvX], PlayerVehicles[ID][fvY], PlayerVehicles[ID][fvZ], PlayerVehicles[ID][fvA], PlayerVehicles[ID][fvColor1], PlayerVehicles[ID][fvColor2], PlayerVehicles[ID][fvPaintjob], PlayerVehicles[ID][fvPrice], PlayerVehicles[ID][fvLocked], PlayerVehicles[ID][fvNeon], PlayerVehicles[ID][fvBesitzer]);
PlayerVehicles[ID][fvID] = AddStaticVehicle(PlayerVehicles[ID][fvModel], PlayerVehicles[ID][fvX], PlayerVehicles[ID][fvY], PlayerVehicles[ID][fvZ], PlayerVehicles[ID][fvA], PlayerVehicles[ID][fvColor1], PlayerVehicles[ID][fvColor2]);
SetVehicleHealth(PlayerVehicles[ID][fvID], 999.0);
ID++;
}
}
mysql_free_result();
return 1;
}
stock LoadVehicles()
{
new ID = 1, String[1000];
mysql_query("SELECT * FROM `Vehicles`");
mysql_store_result();
if(mysql_num_rows() > 0)
{
while(mysql_fetch_row(String))
{
sscanf(String, "p<|>iiffffiii", Vehicles[ID][fvID], Vehicles[ID][fvModel], Vehicles[ID][fvX], Vehicles[ID][fvY], Vehicles[ID][fvZ], Vehicles[ID][fvA], Vehicles[ID][fvColor1], Vehicles[ID][fvColor2], Vehicles[ID][fvType]);
Vehicles[ID][fvID] = AddStaticVehicleEx(Vehicles[ID][fvModel], Vehicles[ID][fvX], Vehicles[ID][fvY], Vehicles[ID][fvZ], Vehicles[ID][fvA], Vehicles[ID][fvColor1], Vehicles[ID][fvColor2], (5*60));
SetVehicleHealth(Vehicles[ID][fvID], 999.0);
ID++;
}
}
mysql_free_result();
printf("--> %i Vehicles Loaded FromMySQL", ID);
return 1;
}
Abfrage ob Vehicle ID = DatenbankID?!
stock GetPlayerVehicleIDEX(playerid)
{
new veh = GetPlayerVehicleID(playerid);
if(Vehicles[veh][fvID] == veh) return veh;
for(new i; i < MAX_VEHICLES; i++)
{
if(Vehicles[i][fvID] == veh) return i;
}
return -1;
}
Parkbefehl (NOCH NICHT FERTIG DA ICH NICHT WEIS WIE ICH DAS AM BESTEN MACHEN KANN)
CMD:park(playerid, params[])
{
if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
{
if((!strcmp(PlayerVehicles[GetPlayerVehicleID(playerid)][fvBesitzer], SpielerNameAnzeige(playerid), false)))
{
new Float:vehx, Float:vehy, Float:vehz, Float:veha, Name[MAX_PLAYER_NAME], SQL[500];
GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
mysql_real_escape_string(Name, Name);
GetVehiclePos(GetPlayerVehicleID(playerid), vehx, vehy, vehz);
GetVehicleZAngle(GetPlayerVehicleID(playerid), veha);
format(SQL, sizeof(SQL), "UPDATE PlayerVehicles SET VehicleX = '%f' VehicleY = '%f' VehicleZ = '%f' VehicleAngle = '%f' WHERE Besitzer = '%s'", vehx, vehy, vehz, veha, Name);
mysql_query(SQL);
SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du hast das Fahrzeug geparkt");
}
else
{
SendClientMessage(playerid, red, "{FF0000}[SERVER] {FFFFFF}Das ist nicht dein Fahzeug");
}
}
else
{
SendClientMessage(playerid, red, "{FF0000}[SERVER] {FFFFFF}Du musst als Fahrer im Fahrzeug sitzen");
}
return 1;
}