forked from Simnation/Main
ed
This commit is contained in:
parent
8a47b4502d
commit
52924f74cd
2 changed files with 35 additions and 31 deletions
|
@ -50,9 +50,9 @@ local function isBoat(vehicle)
|
||||||
return boatClasses[vehicleClass] or false
|
return boatClasses[vehicleClass] or false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Lade verankerte Boote vom Server
|
-- Lade verankerte Boote vom Server (korrigierte Version)
|
||||||
local function loadAnchoredBoats()
|
local function loadAnchoredBoats()
|
||||||
QBCore.Functions.TriggerCallback('nordi_carmenu:server:getAnchoredBoats', function(serverAnchors)
|
QBCore.Functions.TriggerCallback('nord_carmenu:server:getAnchoredBoats', function(serverAnchors)
|
||||||
if serverAnchors then
|
if serverAnchors then
|
||||||
for plate, anchorData in pairs(serverAnchors) do
|
for plate, anchorData in pairs(serverAnchors) do
|
||||||
-- Finde Fahrzeug mit dieser Kennzeichen
|
-- Finde Fahrzeug mit dieser Kennzeichen
|
||||||
|
@ -62,7 +62,15 @@ local function loadAnchoredBoats()
|
||||||
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
|
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
|
||||||
if vehicleProps.plate == plate and isBoat(vehicle) then
|
if vehicleProps.plate == plate and isBoat(vehicle) then
|
||||||
-- Setze Boot an gespeicherte Position
|
-- 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)
|
SetEntityHeading(vehicle, anchorData.heading)
|
||||||
FreezeEntityPosition(vehicle, true)
|
FreezeEntityPosition(vehicle, true)
|
||||||
SetEntityInvincible(vehicle, true)
|
SetEntityInvincible(vehicle, true)
|
||||||
|
@ -80,23 +88,7 @@ local function loadAnchoredBoats()
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Speichere Anker auf Server
|
-- Anker setzen/entfernen (korrigierte Version)
|
||||||
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
|
|
||||||
local function toggleAnchor(vehicle)
|
local function toggleAnchor(vehicle)
|
||||||
if not isBoat(vehicle) then
|
if not isBoat(vehicle) then
|
||||||
QBCore.Functions.Notify('Nur Boote können verankert werden!', 'error')
|
QBCore.Functions.Notify('Nur Boote können verankert werden!', 'error')
|
||||||
|
@ -120,6 +112,15 @@ local function toggleAnchor(vehicle)
|
||||||
local coords = GetEntityCoords(vehicle)
|
local coords = GetEntityCoords(vehicle)
|
||||||
local heading = GetEntityHeading(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)
|
FreezeEntityPosition(vehicle, true)
|
||||||
SetEntityInvincible(vehicle, true)
|
SetEntityInvincible(vehicle, true)
|
||||||
|
|
||||||
|
@ -138,13 +139,7 @@ local function toggleAnchor(vehicle)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Prüfe ob Boot verankert ist
|
-- Überwache gespawnte Fahrzeuge für Anker-Wiederherstellung (korrigierte Version)
|
||||||
local function isBoatAnchored(vehicle)
|
|
||||||
local vehicleNetId = NetworkGetNetworkIdFromEntity(vehicle)
|
|
||||||
return anchoredBoats[vehicleNetId] ~= nil
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Überwache gespawnte Fahrzeuge für Anker-Wiederherstellung
|
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
local checkedVehicles = {}
|
local checkedVehicles = {}
|
||||||
|
|
||||||
|
@ -159,10 +154,18 @@ CreateThread(function()
|
||||||
-- Prüfe ob dieses Boot einen gespeicherten Anker hat
|
-- Prüfe ob dieses Boot einen gespeicherten Anker hat
|
||||||
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
|
local vehicleProps = QBCore.Functions.GetVehicleProperties(vehicle)
|
||||||
if vehicleProps.plate then
|
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
|
if anchorData then
|
||||||
-- Setze Boot an gespeicherte Position
|
-- Finde die Wasseroberfläche unter dem Boot
|
||||||
SetEntityCoords(vehicle, anchorData.coords.x, anchorData.coords.y, anchorData.coords.z)
|
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)
|
SetEntityHeading(vehicle, anchorData.heading)
|
||||||
FreezeEntityPosition(vehicle, true)
|
FreezeEntityPosition(vehicle, true)
|
||||||
SetEntityInvincible(vehicle, true)
|
SetEntityInvincible(vehicle, true)
|
||||||
|
@ -189,6 +192,7 @@ CreateThread(function()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
-- Funktion um verfügbare Sitze zu bekommen
|
-- Funktion um verfügbare Sitze zu bekommen
|
||||||
local function getAvailableSeats(vehicle)
|
local function getAvailableSeats(vehicle)
|
||||||
local seats = {}
|
local seats = {}
|
||||||
|
|
|
@ -389,7 +389,7 @@ function InitializeTaxiDriverAI(driver, vehicle)
|
||||||
personality = {
|
personality = {
|
||||||
patience = math.random(7, 10) / 10, -- 0.7-1.0: Wie geduldig ist der Fahrer
|
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
|
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
|
trafficRuleCompliance = math.random(8, 10)/10 -- 0.8-1.0: Wie genau hält er Verkehrsregeln ein
|
||||||
},
|
},
|
||||||
state = {
|
state = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue