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
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Prüfe ob Fahrzeug einem Spieler gehört
|
-- Prüfe ob Fahrzeug einem Spieler gehört (vereinfachte Version)
|
||||||
local function DoesVehicleBelongToPlayer(plate)
|
local function DoesVehicleBelongToPlayer(plate)
|
||||||
-- Verwende jg-advanced-garage Export
|
-- Da der Export nicht existiert, prüfen wir über QB-Core
|
||||||
local vehicleData = exports['jg-advancedgarages']:GetVehicleByPlate(plate)
|
local Player = QBCore.Functions.GetPlayerData()
|
||||||
return vehicleData ~= nil
|
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
|
end
|
||||||
|
|
||||||
-- Hauptloop für Fahrzeugtracking
|
-- Hauptloop für Fahrzeugtracking
|
||||||
|
@ -120,32 +136,27 @@ CreateThread(function()
|
||||||
|
|
||||||
-- Prüfe ob Fahrzeug einem Spieler gehört
|
-- Prüfe ob Fahrzeug einem Spieler gehört
|
||||||
if DoesVehicleBelongToPlayer(plate) then
|
if DoesVehicleBelongToPlayer(plate) then
|
||||||
-- Prüfe ob Fahrzeug nicht zu nah an einer Garage ist
|
-- Speichere Fahrzeugdaten
|
||||||
local nearGarage = exports['jg-advancedgarages']:IsNearGarage(vehicleCoords, Config.MinGarageDistance)
|
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
|
TriggerServerEvent('vehicle-persistence:server:saveVehiclePosition', vehicleData)
|
||||||
-- Speichere Fahrzeugdaten
|
trackedVehicles[plate] = vehicle
|
||||||
local vehicleData = {
|
|
||||||
plate = plate,
|
-- Verhindere Despawn
|
||||||
model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)),
|
SetEntityAsMissionEntity(vehicle, true, true)
|
||||||
position = {x = vehicleCoords.x, y = vehicleCoords.y, z = vehicleCoords.z},
|
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
||||||
rotation = {x = 0.0, y = 0.0, z = GetEntityHeading(vehicle)},
|
|
||||||
engineHealth = GetVehicleEngineHealth(vehicle),
|
if Config.Debug then
|
||||||
bodyHealth = GetVehicleBodyHealth(vehicle),
|
print(string.format("Tracking vehicle: %s at distance: %.2f", plate, distance))
|
||||||
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
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -162,53 +173,45 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
||||||
-- Prüfe ob Fahrzeug bereits existiert
|
-- Prüfe ob Fahrzeug bereits existiert
|
||||||
local existingVehicle = GetVehicleByPlate(vehicleData.plate)
|
local existingVehicle = GetVehicleByPlate(vehicleData.plate)
|
||||||
if not existingVehicle then
|
if not existingVehicle then
|
||||||
-- Prüfe ob Position nicht in einer Garage ist
|
-- Spawne Fahrzeug
|
||||||
local nearGarage = exports['jg-advancedgarages']:IsNearGarage(vector3(position.x, position.y, position.z), Config.MinGarageDistance)
|
local modelHash = GetHashKey(vehicleData.model)
|
||||||
|
|
||||||
if not nearGarage then
|
RequestModel(modelHash)
|
||||||
-- Spawne Fahrzeug
|
while not HasModelLoaded(modelHash) do
|
||||||
local modelHash = GetHashKey(vehicleData.model)
|
Wait(100)
|
||||||
|
|
||||||
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)
|
|
||||||
end
|
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
|
end
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue