From 52924f74cdb8bd1e7492ec9ae88ce2d93747f9ef Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Thu, 31 Jul 2025 07:00:54 +0200 Subject: [PATCH] ed --- .../[carscripts]/nordi_seats/client/main.lua | 64 ++++++++++--------- resources/[tools]/nordi_taxi/client/main.lua | 2 +- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/resources/[carscripts]/nordi_seats/client/main.lua b/resources/[carscripts]/nordi_seats/client/main.lua index f17ab4f3e..83f4e039b 100644 --- a/resources/[carscripts]/nordi_seats/client/main.lua +++ b/resources/[carscripts]/nordi_seats/client/main.lua @@ -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 = {} diff --git a/resources/[tools]/nordi_taxi/client/main.lua b/resources/[tools]/nordi_taxi/client/main.lua index e0cfcc1cd..da0d1dc56 100644 --- a/resources/[tools]/nordi_taxi/client/main.lua +++ b/resources/[tools]/nordi_taxi/client/main.lua @@ -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 = {