1
0
Fork 0
forked from Simnation/Main

Update main.lua

This commit is contained in:
Nordi98 2025-08-06 17:44:39 +02:00
parent cf848bbc6f
commit 40b090bfb8

View file

@ -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)