1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-07-31 07:00:54 +02:00
parent 8a47b4502d
commit 52924f74cd
2 changed files with 35 additions and 31 deletions

View file

@ -50,9 +50,9 @@ local function isBoat(vehicle)
return boatClasses[vehicleClass] or false
end
-- Lade verankerte Boote vom Server
-- Lade verankerte Boote vom Server (korrigierte Version)
local function loadAnchoredBoats()
QBCore.Functions.TriggerCallback('nordi_carmenu:server:getAnchoredBoats', function(serverAnchors)
QBCore.Functions.TriggerCallback('nord_carmenu:server:getAnchoredBoats', function(serverAnchors)
if serverAnchors then
for plate, anchorData in pairs(serverAnchors) do
-- Finde Fahrzeug mit dieser Kennzeichen
@ -62,7 +62,15 @@ local function loadAnchoredBoats()
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
if vehicleProps.plate == plate and isBoat(vehicle) then
-- Setze Boot an gespeicherte Position
SetEntityCoords(vehicle, anchorData.coords.x, anchorData.coords.y, anchorData.coords.z)
-- Korrigiere die Z-Koordinate (Höhe) für Wasseroberfläche
local waterHeight = GetWaterHeightNoWaves(anchorData.coords.x, anchorData.coords.y, anchorData.coords.z)
-- Wenn kein Wasser gefunden wurde, nutze eine leichte Korrektur der gespeicherten Höhe
if waterHeight == 0 then
waterHeight = anchorData.coords.z - 0.5 -- Leichte Korrektur nach unten
end
SetEntityCoords(vehicle, anchorData.coords.x, anchorData.coords.y, waterHeight)
SetEntityHeading(vehicle, anchorData.heading)
FreezeEntityPosition(vehicle, true)
SetEntityInvincible(vehicle, true)
@ -80,23 +88,7 @@ local function loadAnchoredBoats()
end)
end
-- Speichere Anker auf Server
local function saveAnchorToServer(vehicle, anchorData)
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
if vehicleProps.plate then
TriggerServerEvent('nordi_carmenu:server:saveAnchor', vehicleProps.plate, anchorData)
end
end
-- Entferne Anker vom Server
local function removeAnchorFromServer(vehicle)
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
if vehicleProps.plate then
TriggerServerEvent('nordi_carmenu:server:removeAnchor', vehicleProps.plate)
end
end
-- Anker setzen/entfernen
-- Anker setzen/entfernen (korrigierte Version)
local function toggleAnchor(vehicle)
if not isBoat(vehicle) then
QBCore.Functions.Notify('Nur Boote können verankert werden!', 'error')
@ -120,6 +112,15 @@ local function toggleAnchor(vehicle)
local coords = GetEntityCoords(vehicle)
local heading = GetEntityHeading(vehicle)
-- Finde die Wasseroberfläche unter dem Boot
local waterHeight = GetWaterHeightNoWaves(coords.x, coords.y, coords.z)
-- Wenn Wasser gefunden wurde, setze das Boot auf die Wasseroberfläche
if waterHeight ~= 0 then
SetEntityCoords(vehicle, coords.x, coords.y, waterHeight)
coords = GetEntityCoords(vehicle) -- Aktualisiere Koordinaten nach Positionsänderung
end
FreezeEntityPosition(vehicle, true)
SetEntityInvincible(vehicle, true)
@ -138,13 +139,7 @@ local function toggleAnchor(vehicle)
end
end
-- Prüfe ob Boot verankert ist
local function isBoatAnchored(vehicle)
local vehicleNetId = NetworkGetNetworkIdFromEntity(vehicle)
return anchoredBoats[vehicleNetId] ~= nil
end
-- Überwache gespawnte Fahrzeuge für Anker-Wiederherstellung
-- Überwache gespawnte Fahrzeuge für Anker-Wiederherstellung (korrigierte Version)
CreateThread(function()
local checkedVehicles = {}
@ -159,10 +154,18 @@ CreateThread(function()
-- Prüfe ob dieses Boot einen gespeicherten Anker hat
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
if vehicleProps.plate then
QBCore.Functions.TriggerCallback('nordi_carmenu:server:getAnchorByPlate', function(anchorData)
QBCore.Functions.TriggerCallback('nord_carmenu:server:getAnchorByPlate', function(anchorData)
if anchorData then
-- Setze Boot an gespeicherte Position
SetEntityCoords(vehicle, anchorData.coords.x, anchorData.coords.y, anchorData.coords.z)
-- Finde die Wasseroberfläche unter dem Boot
local waterHeight = GetWaterHeightNoWaves(anchorData.coords.x, anchorData.coords.y, anchorData.coords.z)
-- Wenn kein Wasser gefunden wurde, nutze eine leichte Korrektur der gespeicherten Höhe
if waterHeight == 0 then
waterHeight = anchorData.coords.z - 0.5 -- Leichte Korrektur nach unten
end
-- Setze Boot an gespeicherte Position mit korrigierter Höhe
SetEntityCoords(vehicle, anchorData.coords.x, anchorData.coords.y, waterHeight)
SetEntityHeading(vehicle, anchorData.heading)
FreezeEntityPosition(vehicle, true)
SetEntityInvincible(vehicle, true)
@ -189,6 +192,7 @@ CreateThread(function()
end
end)
-- Funktion um verfügbare Sitze zu bekommen
local function getAvailableSeats(vehicle)
local seats = {}

View file

@ -389,7 +389,7 @@ function InitializeTaxiDriverAI(driver, vehicle)
personality = {
patience = math.random(7, 10) / 10, -- 0.7-1.0: Wie geduldig ist der Fahrer
caution = math.random(6, 10) / 10, -- 0.6-1.0: Wie vorsichtig fährt er
speedPreference = math.random(15, 25), -- 15-25: Bevorzugte Geschwindigkeit
speedPreference = math.random(15, 60), -- 15-25: Bevorzugte Geschwindigkeit
trafficRuleCompliance = math.random(8, 10)/10 -- 0.8-1.0: Wie genau hält er Verkehrsregeln ein
},
state = {