forked from Simnation/Main
ed
This commit is contained in:
parent
f2b9b3fc29
commit
2de2cef0c9
2 changed files with 74 additions and 47 deletions
|
@ -1,6 +1,7 @@
|
||||||
local QBCore = exports['qb-core']:GetCoreObject()
|
local QBCore = exports['qb-core']:GetCoreObject()
|
||||||
local trackedVehicles = {}
|
local trackedVehicles = {}
|
||||||
local spawnedVehicles = {}
|
local spawnedVehicles = {}
|
||||||
|
local playerEnteredVehicles = {} -- Fahrzeuge in die sich der Spieler gesetzt hat
|
||||||
|
|
||||||
-- Funktion um zu prüfen ob Fahrzeugklasse erlaubt ist
|
-- Funktion um zu prüfen ob Fahrzeugklasse erlaubt ist
|
||||||
local function IsVehicleClassAllowed(vehicle)
|
local function IsVehicleClassAllowed(vehicle)
|
||||||
|
@ -111,7 +112,33 @@ local function PreventVehicleDespawn(vehicle)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Hauptloop für Fahrzeugtracking
|
-- Event Handler für Fahrzeug betreten
|
||||||
|
CreateThread(function()
|
||||||
|
local lastVehicle = 0
|
||||||
|
|
||||||
|
while true do
|
||||||
|
Wait(1000)
|
||||||
|
|
||||||
|
local playerPed = PlayerPedId()
|
||||||
|
local currentVehicle = GetVehiclePedIsIn(playerPed, false)
|
||||||
|
|
||||||
|
-- Spieler ist in ein Fahrzeug eingestiegen
|
||||||
|
if currentVehicle ~= 0 and currentVehicle ~= lastVehicle then
|
||||||
|
if IsVehicleClassAllowed(currentVehicle) then
|
||||||
|
local plate = QBCore.Functions.GetPlate(currentVehicle)
|
||||||
|
playerEnteredVehicles[plate] = currentVehicle
|
||||||
|
|
||||||
|
if Config.Debug then
|
||||||
|
print(string.format("Player entered vehicle: %s", plate))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
lastVehicle = currentVehicle
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Hauptloop für Fahrzeugtracking (nur für Fahrzeuge in die sich Spieler gesetzt haben)
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
while true do
|
while true do
|
||||||
Wait(Config.SaveInterval)
|
Wait(Config.SaveInterval)
|
||||||
|
@ -119,26 +146,11 @@ CreateThread(function()
|
||||||
local playerPed = PlayerPedId()
|
local playerPed = PlayerPedId()
|
||||||
local playerCoords = GetEntityCoords(playerPed)
|
local playerCoords = GetEntityCoords(playerPed)
|
||||||
|
|
||||||
-- Finde alle Fahrzeuge
|
-- Tracke nur Fahrzeuge in die sich der Spieler gesetzt hat
|
||||||
local vehicles = GetGamePool('CVehicle')
|
for plate, vehicle in pairs(playerEnteredVehicles) do
|
||||||
|
if DoesEntityExist(vehicle) then
|
||||||
for _, vehicle in pairs(vehicles) do
|
|
||||||
if DoesEntityExist(vehicle) and IsVehicleClassAllowed(vehicle) then
|
|
||||||
local plate = QBCore.Functions.GetPlate(vehicle)
|
|
||||||
local vehicleCoords = GetEntityCoords(vehicle)
|
local vehicleCoords = GetEntityCoords(vehicle)
|
||||||
|
|
||||||
-- Prüfe ob es ein Spielerfahrzeug ist (nicht NPC)
|
|
||||||
local isPlayerVehicle = false
|
|
||||||
local driver = GetPedInVehicleSeat(vehicle, -1)
|
|
||||||
|
|
||||||
if driver == 0 or IsPedAPlayer(driver) then
|
|
||||||
isPlayerVehicle = true
|
|
||||||
elseif trackedVehicles[plate] or spawnedVehicles[plate] then
|
|
||||||
-- Bereits getrackt = Spielerfahrzeug
|
|
||||||
isPlayerVehicle = true
|
|
||||||
end
|
|
||||||
|
|
||||||
if isPlayerVehicle then
|
|
||||||
-- Verhindere Despawn
|
-- Verhindere Despawn
|
||||||
PreventVehicleDespawn(vehicle)
|
PreventVehicleDespawn(vehicle)
|
||||||
|
|
||||||
|
@ -166,8 +178,13 @@ CreateThread(function()
|
||||||
|
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
local distance = #(playerCoords - vehicleCoords)
|
local distance = #(playerCoords - vehicleCoords)
|
||||||
print(string.format("Tracking vehicle: %s (Model: %s) at distance: %.2f", plate, GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)), distance))
|
print(string.format("Tracking player vehicle: %s at distance: %.2f", plate, distance))
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
-- Fahrzeug existiert nicht mehr, entferne aus Liste
|
||||||
|
playerEnteredVehicles[plate] = nil
|
||||||
|
if Config.Debug then
|
||||||
|
print(string.format("Player vehicle no longer exists: %s", plate))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -177,7 +194,7 @@ CreateThread(function()
|
||||||
if not DoesEntityExist(vehicle) then
|
if not DoesEntityExist(vehicle) then
|
||||||
trackedVehicles[plate] = nil
|
trackedVehicles[plate] = nil
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Vehicle no longer exists, removed from tracking: %s", plate))
|
print(string.format("Tracked vehicle no longer exists: %s", plate))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -240,6 +257,7 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
||||||
|
|
||||||
spawnedVehicles[vehicleData.plate] = vehicle
|
spawnedVehicles[vehicleData.plate] = vehicle
|
||||||
trackedVehicles[vehicleData.plate] = vehicle
|
trackedVehicles[vehicleData.plate] = vehicle
|
||||||
|
playerEnteredVehicles[vehicleData.plate] = vehicle -- Markiere als Spielerfahrzeug
|
||||||
|
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Successfully spawned saved vehicle: %s", vehicleData.plate))
|
print(string.format("Successfully spawned saved vehicle: %s", vehicleData.plate))
|
||||||
|
@ -260,6 +278,7 @@ RegisterNetEvent('vehicle-persistence:client:spawnSavedVehicles', function(vehic
|
||||||
else
|
else
|
||||||
-- Fahrzeug existiert bereits, füge zu Tracking hinzu
|
-- Fahrzeug existiert bereits, füge zu Tracking hinzu
|
||||||
trackedVehicles[vehicleData.plate] = existingVehicle
|
trackedVehicles[vehicleData.plate] = existingVehicle
|
||||||
|
playerEnteredVehicles[vehicleData.plate] = existingVehicle
|
||||||
PreventVehicleDespawn(existingVehicle)
|
PreventVehicleDespawn(existingVehicle)
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Vehicle already exists, added to tracking: %s", vehicleData.plate))
|
print(string.format("Vehicle already exists, added to tracking: %s", vehicleData.plate))
|
||||||
|
@ -302,6 +321,9 @@ RegisterNetEvent('jg-advancedgarages:client:vehicle-stored', function(data)
|
||||||
if spawnedVehicles[data.plate] then
|
if spawnedVehicles[data.plate] then
|
||||||
spawnedVehicles[data.plate] = nil
|
spawnedVehicles[data.plate] = nil
|
||||||
end
|
end
|
||||||
|
if playerEnteredVehicles[data.plate] then
|
||||||
|
playerEnteredVehicles[data.plate] = nil
|
||||||
|
end
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Vehicle stored in garage, removed from tracking: %s", data.plate))
|
print(string.format("Vehicle stored in garage, removed from tracking: %s", data.plate))
|
||||||
end
|
end
|
||||||
|
@ -316,6 +338,9 @@ RegisterNetEvent('jg-advancedgarages:client:vehicle-spawned', function(data)
|
||||||
if spawnedVehicles[data.plate] then
|
if spawnedVehicles[data.plate] then
|
||||||
spawnedVehicles[data.plate] = nil
|
spawnedVehicles[data.plate] = nil
|
||||||
end
|
end
|
||||||
|
if playerEnteredVehicles[data.plate] then
|
||||||
|
playerEnteredVehicles[data.plate] = nil
|
||||||
|
end
|
||||||
if Config.Debug then
|
if Config.Debug then
|
||||||
print(string.format("Vehicle spawned from garage, removed from tracking: %s", data.plate))
|
print(string.format("Vehicle spawned from garage, removed from tracking: %s", data.plate))
|
||||||
end
|
end
|
||||||
|
@ -333,6 +358,7 @@ CreateThread(function()
|
||||||
else
|
else
|
||||||
trackedVehicles[plate] = nil
|
trackedVehicles[plate] = nil
|
||||||
spawnedVehicles[plate] = nil
|
spawnedVehicles[plate] = nil
|
||||||
|
playerEnteredVehicles[plate] = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -343,5 +369,6 @@ AddEventHandler('onResourceStop', function(resourceName)
|
||||||
if resourceName == GetCurrentResourceName() then
|
if resourceName == GetCurrentResourceName() then
|
||||||
trackedVehicles = {}
|
trackedVehicles = {}
|
||||||
spawnedVehicles = {}
|
spawnedVehicles = {}
|
||||||
|
playerEnteredVehicles = {}
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Config = {}
|
Config = {}
|
||||||
|
|
||||||
-- Speicherintervall in Millisekunden (5000 = 5 Sekunden)
|
-- Speicherintervall in Millisekunden (5000 = 5 Sekunden)
|
||||||
Config.SaveInterval = 2000
|
Config.SaveInterval = 5000
|
||||||
|
|
||||||
-- Maximale Distanz zum Fahrzeug bevor es als "verlassen" gilt
|
-- Maximale Distanz zum Fahrzeug bevor es als "verlassen" gilt
|
||||||
Config.MaxDistance = 1.0
|
Config.MaxDistance = 1.0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue