forked from Simnation/Main
Update main.lua
This commit is contained in:
parent
cf848bbc6f
commit
40b090bfb8
1 changed files with 77 additions and 74 deletions
|
@ -94,11 +94,27 @@ local function SetVehicleMods(vehicle, mods)
|
|||
end
|
||||
end
|
||||
|
||||
-- Prüfe ob Fahrzeug einem Spieler gehört
|
||||
-- Prüfe ob Fahrzeug einem Spieler gehört (vereinfachte Version)
|
||||
local function DoesVehicleBelongToPlayer(plate)
|
||||
-- Verwende jg-advanced-garage Export
|
||||
local vehicleData = exports['jg-advancedgarages']:GetVehicleByPlate(plate)
|
||||
return vehicleData ~= nil
|
||||
-- Da der Export nicht existiert, prüfen wir über QB-Core
|
||||
local Player = QBCore.Functions.GetPlayerData()
|
||||
if not Player or not Player.citizenid then return false end
|
||||
|
||||
-- Hier könntest du eine eigene Logik implementieren oder
|
||||
-- einfach alle Fahrzeuge tracken die nicht NPC Fahrzeuge sind
|
||||
local vehicle = GetVehicleByPlate(plate)
|
||||
if vehicle then
|
||||
-- Prüfe ob es ein NPC Fahrzeug ist
|
||||
local driver = GetPedInVehicleSeat(vehicle, -1)
|
||||
if driver and IsPedAPlayer(driver) then
|
||||
return true
|
||||
elseif not driver then
|
||||
-- Kein Fahrer = wahrscheinlich Spielerfahrzeug
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
-- Hauptloop für Fahrzeugtracking
|
||||
|
@ -120,32 +136,27 @@ CreateThread(function()
|
|||
|
||||
-- Prüfe ob Fahrzeug einem Spieler gehört
|
||||
if DoesVehicleBelongToPlayer(plate) then
|
||||
-- Prüfe ob Fahrzeug nicht zu nah an einer Garage ist
|
||||
local nearGarage = exports['jg-advancedgarages']:IsNearGarage(vehicleCoords, Config.MinGarageDistance)
|
||||
-- Speichere Fahrzeugdaten
|
||||
local vehicleData = {
|
||||
plate = plate,
|
||||
model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)),
|
||||
position = {x = vehicleCoords.x, y = vehicleCoords.y, z = vehicleCoords.z},
|
||||
rotation = {x = 0.0, y = 0.0, z = GetEntityHeading(vehicle)},
|
||||
engineHealth = GetVehicleEngineHealth(vehicle),
|
||||
bodyHealth = GetVehicleBodyHealth(vehicle),
|
||||
fuel = exports['LegacyFuel']:GetFuel(vehicle) or 100, -- Anpassen je nach Fuel System
|
||||
mods = GetVehicleMods(vehicle)
|
||||
}
|
||||
|
||||
if not nearGarage then
|
||||
-- Speichere Fahrzeugdaten
|
||||
local vehicleData = {
|
||||
plate = plate,
|
||||
model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)),
|
||||
position = {x = vehicleCoords.x, y = vehicleCoords.y, z = vehicleCoords.z},
|
||||
rotation = {x = 0.0, y = 0.0, z = GetEntityHeading(vehicle)},
|
||||
engineHealth = GetVehicleEngineHealth(vehicle),
|
||||
bodyHealth = GetVehicleBodyHealth(vehicle),
|
||||
fuel = exports['LegacyFuel']:GetFuel(vehicle) or 100, -- Anpassen je nach Fuel System
|
||||
mods = GetVehicleMods(vehicle)
|
||||
}
|
||||
|
||||
TriggerServerEvent('vehicle-persistence:server:saveVehiclePosition', vehicleData)
|
||||
trackedVehicles[plate] = vehicle
|
||||
|
||||
-- Verhindere Despawn
|
||||
SetEntityAsMissionEntity(vehicle, true, true)
|
||||
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
||||
|
||||
if Config.Debug then
|
||||
print(string.format("Tracking vehicle: %s at distance: %.2f", plate, distance))
|
||||
end
|
||||
TriggerServerEvent('vehicle-persistence:server:saveVehiclePosition', vehicleData)
|
||||
trackedVehicles[plate] = vehicle
|
||||
|
||||
-- Verhindere Despawn
|
||||
SetEntityAsMissionEntity(vehicle, true, true)
|
||||
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
||||
|
||||
if Config.Debug then
|
||||
print(string.format("Tracking vehicle: %s at distance: %.2f", plate, distance))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -162,53 +173,45 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
|||
-- Prüfe ob Fahrzeug bereits existiert
|
||||
local existingVehicle = GetVehicleByPlate(vehicleData.plate)
|
||||
if not existingVehicle then
|
||||
-- Prüfe ob Position nicht in einer Garage ist
|
||||
local nearGarage = exports['jg-advancedgarages']:IsNearGarage(vector3(position.x, position.y, position.z), Config.MinGarageDistance)
|
||||
-- Spawne Fahrzeug
|
||||
local modelHash = GetHashKey(vehicleData.model)
|
||||
|
||||
if not nearGarage then
|
||||
-- Spawne Fahrzeug
|
||||
local modelHash = GetHashKey(vehicleData.model)
|
||||
|
||||
RequestModel(modelHash)
|
||||
while not HasModelLoaded(modelHash) do
|
||||
Wait(100)
|
||||
end
|
||||
|
||||
local vehicle = CreateVehicle(modelHash, position.x, position.y, position.z, rotation.z, true, false)
|
||||
|
||||
if DoesEntityExist(vehicle) then
|
||||
-- Setze Fahrzeugdaten
|
||||
SetVehicleNumberPlateText(vehicle, vehicleData.plate)
|
||||
SetVehicleEngineHealth(vehicle, vehicleData.engine_health)
|
||||
SetVehicleBodyHealth(vehicle, vehicleData.body_health)
|
||||
|
||||
-- Setze Fuel (anpassen je nach System)
|
||||
if exports['LegacyFuel'] then
|
||||
exports['LegacyFuel']:SetFuel(vehicle, vehicleData.fuel)
|
||||
end
|
||||
|
||||
-- Setze Mods
|
||||
if vehicleData.mods then
|
||||
local mods = json.decode(vehicleData.mods)
|
||||
SetVehicleMods(vehicle, mods)
|
||||
end
|
||||
|
||||
-- Verhindere Despawn
|
||||
SetEntityAsMissionEntity(vehicle, true, true)
|
||||
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
||||
|
||||
trackedVehicles[vehicleData.plate] = vehicle
|
||||
|
||||
if Config.Debug then
|
||||
print(string.format("Spawned saved vehicle: %s", vehicleData.plate))
|
||||
end
|
||||
end
|
||||
|
||||
SetModelAsNoLongerNeeded(modelHash)
|
||||
else
|
||||
-- Entferne aus Datenbank da es zu nah an einer Garage ist
|
||||
TriggerServerEvent('vehicle-persistence:server:removeVehicle', vehicleData.plate)
|
||||
RequestModel(modelHash)
|
||||
while not HasModelLoaded(modelHash) do
|
||||
Wait(100)
|
||||
end
|
||||
|
||||
local vehicle = CreateVehicle(modelHash, position.x, position.y, position.z, rotation.z, true, false)
|
||||
|
||||
if DoesEntityExist(vehicle) then
|
||||
-- Setze Fahrzeugdaten
|
||||
SetVehicleNumberPlateText(vehicle, vehicleData.plate)
|
||||
SetVehicleEngineHealth(vehicle, vehicleData.engine_health)
|
||||
SetVehicleBodyHealth(vehicle, vehicleData.body_health)
|
||||
|
||||
-- Setze Fuel (anpassen je nach System)
|
||||
if exports['LegacyFuel'] then
|
||||
exports['LegacyFuel']:SetFuel(vehicle, vehicleData.fuel)
|
||||
end
|
||||
|
||||
-- Setze Mods
|
||||
if vehicleData.mods then
|
||||
local mods = json.decode(vehicleData.mods)
|
||||
SetVehicleMods(vehicle, mods)
|
||||
end
|
||||
|
||||
-- Verhindere Despawn
|
||||
SetEntityAsMissionEntity(vehicle, true, true)
|
||||
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
||||
|
||||
trackedVehicles[vehicleData.plate] = vehicle
|
||||
|
||||
if Config.Debug then
|
||||
print(string.format("Spawned saved vehicle: %s", vehicleData.plate))
|
||||
end
|
||||
end
|
||||
|
||||
SetModelAsNoLongerNeeded(modelHash)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue