From db56161001fd7db298b2a4f0ea2e1fdc6f0efae8 Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Thu, 7 Aug 2025 13:07:01 +0200 Subject: [PATCH] Update main.lua --- .../nordi_antidespawn/client/main.lua | 236 +++++++++++++++++- 1 file changed, 235 insertions(+), 1 deletion(-) diff --git a/resources/[carscripts]/nordi_antidespawn/client/main.lua b/resources/[carscripts]/nordi_antidespawn/client/main.lua index 2743c4d6a..d9b472c18 100644 --- a/resources/[carscripts]/nordi_antidespawn/client/main.lua +++ b/resources/[carscripts]/nordi_antidespawn/client/main.lua @@ -17,6 +17,38 @@ local function Debug(msg) end end +-- Extrem starke Anti-Despawn Funktion +-- IMPORTANT: Move this function definition to the top, before it's called +local function PreventDespawn(vehicle) + if not DoesEntityExist(vehicle) then return false end + + -- Grundlegende Persistenz + SetEntityAsMissionEntity(vehicle, true, true) + SetVehicleHasBeenOwnedByPlayer(vehicle, true) + SetVehicleNeedsToBeHotwired(vehicle, false) + + -- Zusätzliche Flags + SetEntityLoadCollisionFlag(vehicle, true) + SetVehicleIsStolen(vehicle, false) + SetVehicleIsWanted(vehicle, false) + + -- Verhindere dass das Fahrzeug als "abandoned" markiert wird + if DecorIsRegisteredAsType("IgnoredByQuickSave", 2) then + DecorSetBool(vehicle, "IgnoredByQuickSave", false) + end + + -- Setze Fahrzeug auf Boden + SetVehicleOnGroundProperly(vehicle) + + -- Verhindere dass das Fahrzeug gelöscht wird + NetworkRegisterEntityAsNetworked(vehicle) + local netID = NetworkGetNetworkIdFromEntity(vehicle) + SetNetworkIdExistsOnAllMachines(netID, true) + SetNetworkIdCanMigrate(netID, true) + + return true +end + -- Function to check if player owns the vehicle local function DoesPlayerOwnVehicle(plate) local playerData = QBCore.Functions.GetPlayerData() @@ -70,7 +102,206 @@ local function IsVehicleClassAllowed(vehicle) return false end --- Rest of your functions remain the same... +-- Funktion um Fahrzeugmods zu erhalten +local function GetVehicleMods(vehicle) + local mods = {} + + -- Basis Mods + for i = 0, 49 do + mods[tostring(i)] = GetVehicleMod(vehicle, i) + end + + -- Extras + mods.extras = {} + for i = 1, 12 do + if DoesExtraExist(vehicle, i) then + mods.extras[tostring(i)] = IsVehicleExtraTurnedOn(vehicle, i) + end + end + + -- Farben + local primaryColor, secondaryColor = GetVehicleColours(vehicle) + local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) + + mods.colors = { + primary = primaryColor, + secondary = secondaryColor, + pearlescent = pearlescentColor, + wheels = wheelColor + } + + -- Custom Farben + local hasCustomPrimaryColor = GetIsVehiclePrimaryColourCustom(vehicle) + if hasCustomPrimaryColor then + local r, g, b = GetVehicleCustomPrimaryColour(vehicle) + mods.customPrimaryColor = {r = r, g = g, b = b} + end + + local hasCustomSecondaryColor = GetIsVehicleSecondaryColourCustom(vehicle) + if hasCustomSecondaryColor then + local r, g, b = GetVehicleCustomSecondaryColour(vehicle) + mods.customSecondaryColor = {r = r, g = g, b = b} + end + + -- Neon + mods.neon = { + left = IsVehicleNeonLightEnabled(vehicle, 0), + right = IsVehicleNeonLightEnabled(vehicle, 1), + front = IsVehicleNeonLightEnabled(vehicle, 2), + back = IsVehicleNeonLightEnabled(vehicle, 3) + } + + local r, g, b = GetVehicleNeonLightsColour(vehicle) + mods.neonColor = {r = r, g = g, b = b} + + -- Xenon + mods.xenonColor = GetVehicleXenonLightsColour(vehicle) + mods.xenonEnabled = IsToggleModOn(vehicle, 22) + + -- Livery + mods.livery = GetVehicleLivery(vehicle) + + -- Fenster Tint + mods.windowTint = GetVehicleWindowTint(vehicle) + + -- Rad Typ + mods.wheelType = GetVehicleWheelType(vehicle) + + -- Rauch Farbe + local r, g, b = GetVehicleTyreSmokeColor(vehicle) + mods.tyreSmokeColor = {r = r, g = g, b = b} + + -- Dashboard & Interior Farbe + mods.dashboardColor = GetVehicleDashboardColour(vehicle) + mods.interiorColor = GetVehicleInteriorColour(vehicle) + + -- Toggles + mods.bulletProofTires = not GetVehicleTyresCanBurst(vehicle) + mods.turbo = IsToggleModOn(vehicle, 18) + mods.xeonHeadlights = IsToggleModOn(vehicle, 22) + + return mods +end + +-- Funktion um Fahrzeugmods zu setzen +local function SetVehicleMods(vehicle, mods) + if not mods then return end + + -- Setze Modkit + SetVehicleModKit(vehicle, 0) + + -- Rad Typ zuerst setzen + if mods.wheelType then + SetVehicleWheelType(vehicle, mods.wheelType) + end + + -- Basis Mods + for i = 0, 49 do + if mods[tostring(i)] ~= nil then + SetVehicleMod(vehicle, i, mods[tostring(i)], false) + end + end + + -- Extras + if mods.extras then + for i = 1, 12 do + if mods.extras[tostring(i)] ~= nil then + SetVehicleExtra(vehicle, i, not mods.extras[tostring(i)]) + end + end + end + + -- Farben + if mods.colors then + SetVehicleColours(vehicle, mods.colors.primary or 0, mods.colors.secondary or 0) + SetVehicleExtraColours(vehicle, mods.colors.pearlescent or 0, mods.colors.wheels or 0) + end + + -- Custom Farben + if mods.customPrimaryColor then + SetVehicleCustomPrimaryColour(vehicle, mods.customPrimaryColor.r, mods.customPrimaryColor.g, mods.customPrimaryColor.b) + end + + if mods.customSecondaryColor then + SetVehicleCustomSecondaryColour(vehicle, mods.customSecondaryColor.r, mods.customSecondaryColor.g, mods.customSecondaryColor.b) + end + + -- Neon + if mods.neon then + SetVehicleNeonLightEnabled(vehicle, 0, mods.neon.left or false) + SetVehicleNeonLightEnabled(vehicle, 1, mods.neon.right or false) + SetVehicleNeonLightEnabled(vehicle, 2, mods.neon.front or false) + SetVehicleNeonLightEnabled(vehicle, 3, mods.neon.back or false) + end + + if mods.neonColor then + SetVehicleNeonLightsColour(vehicle, mods.neonColor.r, mods.neonColor.g, mods.neonColor.b) + end + + -- Xenon + if mods.xenonEnabled then + ToggleVehicleMod(vehicle, 22, true) + if mods.xenonColor then + SetVehicleXenonLightsColour(vehicle, mods.xenonColor) + end + end + + -- Livery + if mods.livery then + SetVehicleLivery(vehicle, mods.livery) + end + + -- Fenster Tint + if mods.windowTint then + SetVehicleWindowTint(vehicle, mods.windowTint) + end + + -- Rauch Farbe + if mods.tyreSmokeColor then + ToggleVehicleMod(vehicle, 20, true) -- Aktiviere Rauch + SetVehicleTyreSmokeColor(vehicle, mods.tyreSmokeColor.r, mods.tyreSmokeColor.g, mods.tyreSmokeColor.b) + end + + -- Dashboard & Interior Farbe + if mods.dashboardColor then + SetVehicleDashboardColour(vehicle, mods.dashboardColor) + end + + if mods.interiorColor then + SetVehicleInteriorColour(vehicle, mods.interiorColor) + end + + -- Toggles + if mods.bulletProofTires ~= nil then + SetVehicleTyresCanBurst(vehicle, not mods.bulletProofTires) + end + + if mods.turbo ~= nil then + ToggleVehicleMod(vehicle, 18, mods.turbo) + end + + -- Setze Felgen nochmal explizit + if mods["23"] ~= nil then -- Vorderräder + SetVehicleMod(vehicle, 23, mods["23"], false) + end + + if mods["24"] ~= nil then -- Hinterräder + SetVehicleMod(vehicle, 24, mods["24"], false) + end +end + +-- Hilfsfunktion um Fahrzeug anhand Kennzeichen zu finden +function GetVehicleByPlate(plate) + local vehicles = GetGamePool('CVehicle') + for _, vehicle in pairs(vehicles) do + if QBCore.Functions.GetPlate(vehicle) == plate then + return vehicle + end + end + return nil +end + +-- AFTER ALL FUNCTIONS ARE DEFINED, THEN ADD EVENT HANDLERS AND THREADS -- Event Handler für Fahrzeug betreten (nur Fahrersitz) CreateThread(function() @@ -128,6 +359,9 @@ CreateThread(function() end end) +-- Rest of your code (threads, event handlers, etc.) + + -- Kontinuierliche Despawn-Verhinderung für alle getrackten Fahrzeuge CreateThread(function() while true do