From 40b090bfb8227b11bf0fc40c8823947c2e778976 Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Wed, 6 Aug 2025 17:44:39 +0200 Subject: [PATCH] Update main.lua --- .../nordi_antidespawn/client/main.lua | 151 +++++++++--------- 1 file changed, 77 insertions(+), 74 deletions(-) diff --git a/resources/[carscripts]/nordi_antidespawn/client/main.lua b/resources/[carscripts]/nordi_antidespawn/client/main.lua index 4e9f1cc51..5dd7125c4 100644 --- a/resources/[carscripts]/nordi_antidespawn/client/main.lua +++ b/resources/[carscripts]/nordi_antidespawn/client/main.lua @@ -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)