forked from Simnation/Main
Update main.lua
This commit is contained in:
parent
5b0effa7af
commit
d2b98317d3
1 changed files with 59 additions and 17 deletions
|
@ -12,6 +12,31 @@ local function IsVehicleClassAllowed(vehicle)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Stärkere Despawn-Verhinderung
|
||||||
|
local function PreventDespawn(vehicle)
|
||||||
|
if DoesEntityExist(vehicle) then
|
||||||
|
SetEntityAsMissionEntity(vehicle, true, true)
|
||||||
|
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
||||||
|
SetVehicleNeedsToBeHotwired(vehicle, false)
|
||||||
|
SetEntityLoadCollisionFlag(vehicle, true)
|
||||||
|
|
||||||
|
-- Zusätzliche Flags
|
||||||
|
SetVehicleIsStolen(vehicle, false)
|
||||||
|
SetVehicleIsWanted(vehicle, false)
|
||||||
|
|
||||||
|
-- Verhindere dass das Fahrzeug als "abandoned" markiert wird
|
||||||
|
if DecorExistOn(vehicle, "IgnoredByQuickSave") then
|
||||||
|
DecorSetBool(vehicle, "IgnoredByQuickSave", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Setze Fahrzeug auf Boden
|
||||||
|
SetVehicleOnGroundProperly(vehicle)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
-- Funktion um Fahrzeugmods zu erhalten
|
-- Funktion um Fahrzeugmods zu erhalten
|
||||||
local function GetVehicleMods(vehicle)
|
local function GetVehicleMods(vehicle)
|
||||||
local mods = {}
|
local mods = {}
|
||||||
|
@ -113,9 +138,8 @@ CreateThread(function()
|
||||||
local plate = QBCore.Functions.GetPlate(currentVehicle)
|
local plate = QBCore.Functions.GetPlate(currentVehicle)
|
||||||
playerDrivenVehicles[plate] = currentVehicle
|
playerDrivenVehicles[plate] = currentVehicle
|
||||||
|
|
||||||
-- Verhindere sofort Despawn
|
-- Sofort starke Despawn-Verhinderung
|
||||||
SetEntityAsMissionEntity(currentVehicle, true, true)
|
PreventDespawn(currentVehicle)
|
||||||
SetVehicleHasBeenOwnedByPlayer(currentVehicle, true)
|
|
||||||
|
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Player started driving vehicle: %s", plate))
|
print(string.format("Player started driving vehicle: %s", plate))
|
||||||
|
@ -127,6 +151,27 @@ CreateThread(function()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Kontinuierliche Despawn-Verhinderung für alle getrackten Fahrzeuge
|
||||||
|
CreateThread(function()
|
||||||
|
while true do
|
||||||
|
Wait(10000) -- Alle 10 Sekunden
|
||||||
|
|
||||||
|
for plate, vehicle in pairs(playerDrivenVehicles) do
|
||||||
|
if DoesEntityExist(vehicle) then
|
||||||
|
PreventDespawn(vehicle)
|
||||||
|
if Config.Debug then
|
||||||
|
print(string.format("Refreshing despawn protection for: %s", plate))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
playerDrivenVehicles[plate] = nil
|
||||||
|
if Config.Debug then
|
||||||
|
print(string.format("Player driven vehicle no longer exists: %s", plate))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
-- Hauptloop für Fahrzeugtracking (nur für vom Spieler gefahrene Fahrzeuge)
|
-- Hauptloop für Fahrzeugtracking (nur für vom Spieler gefahrene Fahrzeuge)
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
while true do
|
while true do
|
||||||
|
@ -137,9 +182,8 @@ CreateThread(function()
|
||||||
if DoesEntityExist(vehicle) then
|
if DoesEntityExist(vehicle) then
|
||||||
local vehicleCoords = GetEntityCoords(vehicle)
|
local vehicleCoords = GetEntityCoords(vehicle)
|
||||||
|
|
||||||
-- Verhindere Despawn
|
-- Verstärke Despawn-Schutz bei jedem Save
|
||||||
SetEntityAsMissionEntity(vehicle, true, true)
|
PreventDespawn(vehicle)
|
||||||
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
|
||||||
|
|
||||||
-- Speichere Fahrzeugdaten
|
-- Speichere Fahrzeugdaten
|
||||||
local vehicleData = {
|
local vehicleData = {
|
||||||
|
@ -218,7 +262,7 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
||||||
local vehicle = CreateVehicle(modelHash, position.x, position.y, position.z, rotation.z, true, false)
|
local vehicle = CreateVehicle(modelHash, position.x, position.y, position.z, rotation.z, true, false)
|
||||||
|
|
||||||
if DoesEntityExist(vehicle) then
|
if DoesEntityExist(vehicle) then
|
||||||
Wait(1000) -- Längere Wartezeit
|
Wait(1000) -- Warte bis Fahrzeug vollständig geladen
|
||||||
|
|
||||||
-- Setze Fahrzeugdaten
|
-- Setze Fahrzeugdaten
|
||||||
SetVehicleNumberPlateText(vehicle, vehicleData.plate)
|
SetVehicleNumberPlateText(vehicle, vehicleData.plate)
|
||||||
|
@ -240,10 +284,8 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Verhindere Despawn
|
-- Starke Despawn-Verhinderung
|
||||||
SetEntityAsMissionEntity(vehicle, true, true)
|
PreventDespawn(vehicle)
|
||||||
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
|
|
||||||
SetVehicleOnGroundProperly(vehicle)
|
|
||||||
|
|
||||||
playerDrivenVehicles[vehicleData.plate] = vehicle
|
playerDrivenVehicles[vehicleData.plate] = vehicle
|
||||||
|
|
||||||
|
@ -266,8 +308,7 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
||||||
else
|
else
|
||||||
-- Fahrzeug existiert bereits, füge zu Liste hinzu
|
-- Fahrzeug existiert bereits, füge zu Liste hinzu
|
||||||
playerDrivenVehicles[vehicleData.plate] = existingVehicle
|
playerDrivenVehicles[vehicleData.plate] = existingVehicle
|
||||||
SetEntityAsMissionEntity(existingVehicle, true, true)
|
PreventDespawn(existingVehicle)
|
||||||
SetVehicleHasBeenOwnedByPlayer(existingVehicle, true)
|
|
||||||
|
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Vehicle already exists: %s", vehicleData.plate))
|
print(string.format("Vehicle already exists: %s", vehicleData.plate))
|
||||||
|
@ -293,7 +334,7 @@ RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
|
||||||
print("Player loaded, waiting before loading vehicles...")
|
print("Player loaded, waiting before loading vehicles...")
|
||||||
end
|
end
|
||||||
|
|
||||||
Wait(15000) -- Längere Wartezeit
|
Wait(15000)
|
||||||
|
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print("Loading vehicles...")
|
print("Loading vehicles...")
|
||||||
|
@ -302,9 +343,9 @@ RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
|
||||||
TriggerServerEvent('vehicle-persistence:server:loadVehicles')
|
TriggerServerEvent('vehicle-persistence:server:loadVehicles')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Lade Fahrzeuge auch beim Resource Start (falls Spieler bereits online)
|
-- Lade Fahrzeuge auch beim Resource Start
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
Wait(20000) -- Noch längere Wartezeit beim Resource Start
|
Wait(20000)
|
||||||
|
|
||||||
local playerData = QBCore.Functions.GetPlayerData()
|
local playerData = QBCore.Functions.GetPlayerData()
|
||||||
if playerData and playerData.citizenid then
|
if playerData and playerData.citizenid then
|
||||||
|
@ -334,7 +375,7 @@ RegisterNetEvent('jg-advancedgarages:client:vehicle-spawned', function(data)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Debug Command zum manuellen Laden
|
-- Debug Command
|
||||||
RegisterCommand('loadvehicles', function()
|
RegisterCommand('loadvehicles', function()
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print("Manual vehicle load triggered...")
|
print("Manual vehicle load triggered...")
|
||||||
|
@ -348,3 +389,4 @@ AddEventHandler('onResourceStop', function(resourceName)
|
||||||
playerDrivenVehicles = {}
|
playerDrivenVehicles = {}
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue