forked from Simnation/Main
ed
This commit is contained in:
parent
eab6dc1464
commit
16b0058156
2 changed files with 60 additions and 21 deletions
|
@ -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')
|
||||||
|
|
||||||
|
|
|
@ -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},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue