1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-07-31 07:29:59 +02:00
parent eab6dc1464
commit 16b0058156
2 changed files with 60 additions and 21 deletions

View file

@ -14,12 +14,12 @@ local seatNames = {
[1] = "Hinten Links", [1] = "Hinten Links",
[2] = "Hinten Rechts", [2] = "Hinten Rechts",
[3] = "Hinten Mitte", [3] = "Hinten Mitte",
[4] = "Deck 1", [4] = "Extra 1",
[5] = "Deck 2", [5] = "Extra 2",
[6] = "Deck 3", [6] = "Extra 3",
[7] = "Deck 4", [7] = "Extra 4",
[8] = "Deck 5", [8] = "Extra 5",
[9] = "Deck 6" [9] = "Extra 6"
} }
-- Funktion um aktuellen Sitz zu bekommen -- Funktion um aktuellen Sitz zu bekommen
@ -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 (korrigierte Version) -- Lade verankerte Boote vom Server
local function loadAnchoredBoats() local function loadAnchoredBoats()
QBCore.Functions.TriggerCallback('nord_carmenu:server:getAnchoredBoats', function(serverAnchors) QBCore.Functions.TriggerCallback('nordi_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
@ -88,7 +88,23 @@ local function loadAnchoredBoats()
end) end)
end end
-- Anker setzen/entfernen (korrigierte Version) -- 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
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')
@ -139,7 +155,13 @@ local function toggleAnchor(vehicle)
end end
end end
-- Überwache gespawnte Fahrzeuge für Anker-Wiederherstellung (korrigierte Version) -- 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
CreateThread(function() CreateThread(function()
local checkedVehicles = {} local checkedVehicles = {}
@ -154,7 +176,7 @@ 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('nord_carmenu:server:getAnchorByPlate', function(anchorData) QBCore.Functions.TriggerCallback('nordi_carmenu:server:getAnchorByPlate', function(anchorData)
if anchorData then if anchorData then
-- Finde die Wasseroberfläche unter dem Boot -- Finde die Wasseroberfläche unter dem Boot
local waterHeight = GetWaterHeightNoWaves(anchorData.coords.x, anchorData.coords.y, anchorData.coords.z) local waterHeight = GetWaterHeightNoWaves(anchorData.coords.x, anchorData.coords.y, anchorData.coords.z)
@ -192,7 +214,6 @@ 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 = {}
@ -374,7 +395,7 @@ local function switchSeat(vehicle, newSeatIndex)
end end
end end
-- Tür-Kontrollfunktion (korrigierte Version) -- Tür-Kontrollfunktion
local function controlDoor(vehicle, doorIndex) local function controlDoor(vehicle, doorIndex)
if GetVehicleDoorAngleRatio(vehicle, doorIndex) > 0.0 then if GetVehicleDoorAngleRatio(vehicle, doorIndex) > 0.0 then
SetVehicleDoorShut(vehicle, doorIndex, false) SetVehicleDoorShut(vehicle, doorIndex, false)
@ -388,7 +409,7 @@ local function controlDoor(vehicle, doorIndex)
showDoorControlMenu(vehicle) showDoorControlMenu(vehicle)
end end
-- Fenster-Kontrollfunktion (korrigierte Version) -- Fenster-Kontrollfunktion
local function controlWindow(vehicle, windowIndex) local function controlWindow(vehicle, windowIndex)
if IsVehicleWindowIntact(vehicle, windowIndex) then if IsVehicleWindowIntact(vehicle, windowIndex) then
RollDownWindow(vehicle, windowIndex) RollDownWindow(vehicle, windowIndex)
@ -415,7 +436,7 @@ local function controlExtra(vehicle, extraId)
end end
end end
-- Türen-Kontrollmenü (korrigierte Version) -- Türen-Kontrollmenü
function showDoorControlMenu(vehicle) function showDoorControlMenu(vehicle)
local options = { local options = {
{ {
@ -503,7 +524,7 @@ function showDoorControlMenu(vehicle)
lib.showContext('vehicle_door_menu') lib.showContext('vehicle_door_menu')
end end
-- Fenster-Kontrollmenü (korrigierte Version) -- Fenster-Kontrollmenü
function showWindowControlMenu(vehicle) function showWindowControlMenu(vehicle)
local options = { local options = {
{ {
@ -801,8 +822,6 @@ function showSeatMenu(vehicle)
description = exitDesc, description = exitDesc,
icon = 'fas fa-door-open', icon = 'fas fa-door-open',
onSelect = function() onSelect = function()
TaskLeaveVehicle(playerPed, vehicle, 0)
local exitMsg = isVehicleBoat and 'Du gehst von Bord...'
TaskLeaveVehicle(playerPed, vehicle, 0) TaskLeaveVehicle(playerPed, vehicle, 0)
local exitMsg = isVehicleBoat and 'Du gehst von Bord...' or 'Du steigst aus dem Fahrzeug aus...' local exitMsg = isVehicleBoat and 'Du gehst von Bord...' or 'Du steigst aus dem Fahrzeug aus...'
QBCore.Functions.Notify(exitMsg, 'primary') QBCore.Functions.Notify(exitMsg, 'primary')
@ -917,8 +936,15 @@ function showVehicleInfo(vehicle)
lib.showContext('vehicle_info_menu') lib.showContext('vehicle_info_menu')
end end
-- QB-Target Setup -- QB-Target Setup (korrigierte Version)
CreateThread(function() CreateThread(function()
-- Entferne zuerst alle vorhandenen Target-Optionen für Fahrzeuge, die wir gesetzt haben
exports['qb-target']:RemoveGlobalVehicle({
'vehicle:openSeatMenu',
'vehicle:openControlMenu'
})
-- Registriere nur einen neuen Target-Punkt
exports['qb-target']:AddGlobalVehicle({ exports['qb-target']:AddGlobalVehicle({
options = { options = {
{ {
@ -942,6 +968,16 @@ RegisterNetEvent('vehicle:openControlMenu', function(data)
end end
end) end)
-- Entferne den alten Event Handler, falls er noch existiert
RegisterNetEvent('vehicle:openSeatMenu', function(data)
local vehicle = data.entity
if DoesEntityExist(vehicle) and IsEntityAVehicle(vehicle) then
showVehicleControlMenu(vehicle) -- Leite zum neuen Hauptmenü weiter
else
QBCore.Functions.Notify('Kein gültiges Fahrzeug gefunden!', 'error')
end
end)
-- Lade Anker beim Start -- Lade Anker beim Start
CreateThread(function() CreateThread(function()
Wait(2000) -- Warte bis QBCore geladen ist Wait(2000) -- Warte bis QBCore geladen ist
@ -1003,3 +1039,4 @@ end, false)
-- Keybinds registrieren -- Keybinds registrieren
RegisterKeyMapping('carmenu', 'Fahrzeug Menü öffnen', 'keyboard', 'F1') RegisterKeyMapping('carmenu', 'Fahrzeug Menü öffnen', 'keyboard', 'F1')
RegisterKeyMapping('anchor', 'Anker werfen/lichten', 'keyboard', 'H') RegisterKeyMapping('anchor', 'Anker werfen/lichten', 'keyboard', 'H')

View file

@ -41,8 +41,10 @@ Config = {
owned = true, owned = true,
myHouse = {label = "Mein Haus", size = 0.7, sprite = 40, color = 53}, myHouse = {label = "Mein Haus", size = 0.7, sprite = 40, color = 53},
myGarage = {label = "Meine Garage", size = 0.7, sprite = 357, color = 53}, myGarage = {label = "Meine Garage", size = 0.7, sprite = 357, color = 53},
hasKeyHouse = {label = "Schlüssel für Haus", size = 0.7, sprite = 40, color = 53}, hasKeyHouse = {label = "Haus", size = 0.7, sprite = 40, color = 53},
hasKeyGarage = {label = "Schlüssel für Garage", size = 0.7, sprite = 40, color = 53}, hasKeyGarage = {label = "Haus", size = 0.7, sprite = 40, color = 53},
ownedHouse = {label = "Haus", size = 0.7, sprite = 40, color = 1},
ownedGarage = {label = "Garage", size = 0.7, sprite = 357, color = 1},
police = true, police = true,
burglarAlarm = {label = "Einbruch Alarm", size = 1.0, sprite = 161, color = 1}, burglarAlarm = {label = "Einbruch Alarm", size = 1.0, sprite = 161, color = 1},
}, },