Moin,
ich habe einen Befehl zum Parken von Frakcars damit die Frakcars nach dem restart auch wieder dort spawnen wo sie geparkt sind, und ich möchte es machen, dass auch die Frakcars gesaved werden die nicht mit dem Befehl geparkt werden. Akutell ist es so, wenn ich nen Frakcar mit dem Befehl parke und dies dann aber weiterfahre spawnt es nach restart an der Stelle wo ich es davor abestellt habe und nicht dort wo ich es mit Befehl geparkt habe.
Hiermit werden die Frakcars geparkt und die Position in MYSQl geupdated.
ocmd:parkfrakcar(playerid)
{
if(CharacterInfo[playerid][character_Fraktion] == 0) return SendFehler(playerid, "Du musst dafür in einer Fraktion sein");
if(CharacterInfo[playerid][character_Rang] != 11 && CharacterInfo[playerid][character_Rang] != 12) return SendFehler(playerid, "Du musst dafür Co-/Leiter einer Fraktion sein");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendFehler(playerid,"Du bist nicht der Fahrer eines Fahrzeuges");
new vID = GetPlayerVehicleID(playerid);
for(new id; id<sizeof(FrakFahrzeugInfo); id++)
{
if(FrakFahrzeugInfo[id][frakfahrzeug_Erstellt])
{
if(CharacterInfo[playerid][character_Fraktion] != FrakFahrzeugInfo[id][frakfahrzeug_Fraktion])continue; /*SendFehler(playerid, "Du bist nicht in der richtigen Fraktion");*/
if(vID != FrakFahrzeugInfo[id][frakfahrzeug_VehicleID])continue;
GetVehiclePos(vID, FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][0], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][1], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][2]);
GetVehicleZAngle(vID, FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][3]);
if(GetPVarInt(id,"parkfrakcar") == 0)
{
new query[200];
format(query,sizeof(query),"UPDATE `fraktionfahrzeuge` SET `parkx` = '%f',`parky` = '%f',`parkz` = '%f',`parkr` = '%f' WHERE `id` = '%d'",
FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][0],FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][1],FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][2],
FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][3],FrakFahrzeugInfo[id][frakfahrzeug_ID]);
mysql_tquery(handle,query);
SetPVarInt(id,"parkfrakcar",1);
return SendInfo(playerid,"Du hast das Fahrzeug erfolgreich umgeparkt");
}
}
}
return 1;
}
Alles anzeigen
Damit speichere ich die Frakcars ab die nicht mit Befehl geparkt wurden.
stock SaveFrakFahrzeuge(playerid)
{
new vID = GetPlayerVehicleID(playerid);
for(new id; id<sizeof(FrakFahrzeugInfo); id++)
{
if(FrakFahrzeugInfo[id][frakfahrzeug_Erstellt])
{
if(CharacterInfo[playerid][character_Fraktion] != FrakFahrzeugInfo[id][frakfahrzeug_Fraktion])continue; /*SendFehler(playerid, "Du bist nicht in der richtigen Fraktion");*/
if(vID != FrakFahrzeugInfo[id][frakfahrzeug_VehicleID])continue;
if(GetPVarInt(id,"parkfrakcar") == 0)
{
GetVehiclePos(vID, FrakFahrzeugInfo[id][frakfahrzeug_Spawn][0], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][1], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][2]);
GetVehicleZAngle(vID, FrakFahrzeugInfo[id][frakfahrzeug_Spawn][3]);
new query[200];
format(query,sizeof(query),"UPDATE `fraktionfahrzeuge` SET `x` = '%f',`y` = '%f',`z` = '%f',`r` = '%f' WHERE `id` = '%d'",
FrakFahrzeugInfo[id][frakfahrzeug_Spawn][0],FrakFahrzeugInfo[id][frakfahrzeug_Spawn][1],FrakFahrzeugInfo[id][frakfahrzeug_Spawn][2],
FrakFahrzeugInfo[id][frakfahrzeug_Spawn][3],FrakFahrzeugInfo[id][frakfahrzeug_ID]);
mysql_tquery(handle,query);
}
}
}
return 1;
}
Alles anzeigen
Das steht beim Laden der FrakCars.
if(GetPVarInt(id,"parkfrakcar") == 1)
{
FrakFahrzeugInfo[id][frakfahrzeug_VehicleID] = CreateVehicle(FrakFahrzeugInfo[id][frakfahrzeug_ModelID], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][0], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][1], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][2], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][3], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][0], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][1], -1, 1);
}
if(GetPVarInt(id,"parkfrakcar") == 0)
{
FrakFahrzeugInfo[id][frakfahrzeug_VehicleID] = CreateVehicle(FrakFahrzeugInfo[id][frakfahrzeug_ModelID], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][0], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][1], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][2], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][3], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][0], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][1], -1, 1);
}
Bei ResetPlayerVars steht das SaveFrakFahrzeuge drin, das ResetPlayerVars wird bei onplayerdisconnect aufgerufen.
Was muss ich ändern, damit das mit Befehl geparkte Fahrzeug auch dort respawnt wo ich es mit Befehl geparkt habe und nicht dort wo ich stand als der Server restartet hat?