forked from Simnation/Main
ed
This commit is contained in:
parent
ab111fdebf
commit
c50fb7209c
4 changed files with 136 additions and 19 deletions
|
@ -0,0 +1,56 @@
|
|||
-- vehicleadmin_integration.lua
|
||||
-- Diese Datei integriert das Fahrzeugadmin-System mit dem Garagensystem
|
||||
|
||||
-- Füge einen Menüpunkt für das Fahrzeugadmin-System zum NPC-Menü hinzu
|
||||
local function AddVehicleAdminOption()
|
||||
-- Prüfe, ob der Spieler die Berechtigung hat
|
||||
QBCore.Functions.TriggerCallback('vehicleadmin:getPlayerJob', function(jobData)
|
||||
if jobData and jobData.hasPermission then
|
||||
-- Füge den Menüpunkt zum NPC hinzu, wenn der Spieler berechtigt ist
|
||||
if npcHandle and DoesEntityExist(npcHandle) then
|
||||
exports['qb-target']:AddTargetEntity(npcHandle, {
|
||||
options = {
|
||||
{
|
||||
type = "client",
|
||||
event = "vehicleadmin:openMenu",
|
||||
icon = "fas fa-car-mechanic",
|
||||
label = "Fahrzeugverwaltung",
|
||||
}
|
||||
},
|
||||
distance = 2.5
|
||||
})
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Überschreibe die AddTargetOptions-Funktion, um unsere Option hinzuzufügen
|
||||
local originalAddTargetOptions = AddTargetOptions
|
||||
if originalAddTargetOptions then
|
||||
AddTargetOptions = function()
|
||||
originalAddTargetOptions()
|
||||
AddVehicleAdminOption()
|
||||
end
|
||||
end
|
||||
|
||||
-- Registriere einen Event-Handler für das Hinzufügen der Target-Optionen
|
||||
RegisterNetEvent('mh_garage:targetOptionsAdded')
|
||||
AddEventHandler('mh_garage:targetOptionsAdded', function()
|
||||
AddVehicleAdminOption()
|
||||
end)
|
||||
|
||||
-- Füge einen Event-Handler hinzu, der nach dem Spawnen des NPCs ausgeführt wird
|
||||
RegisterNetEvent('mh_garage:npcSpawned')
|
||||
AddEventHandler('mh_garage:npcSpawned', function()
|
||||
Wait(500) -- Warte kurz, damit der NPC vollständig gespawnt ist
|
||||
AddVehicleAdminOption()
|
||||
end)
|
||||
|
||||
-- Füge einen Hook in die SpawnGuardNPC-Funktion ein, um unseren Event auszulösen
|
||||
local originalSpawnGuardNPC = SpawnGuardNPC
|
||||
if originalSpawnGuardNPC then
|
||||
SpawnGuardNPC = function(npc)
|
||||
originalSpawnGuardNPC(npc)
|
||||
TriggerEvent('mh_garage:npcSpawned')
|
||||
end
|
||||
end
|
|
@ -89,9 +89,9 @@ local function ShowVehicleActions(vehicle, playerJob)
|
|||
}
|
||||
end
|
||||
|
||||
local vehicleLabel = QBCore.Shared.Vehicles[vehicle.vehicle]?.name or vehicle.vehicle
|
||||
local vehicleName = vehicle.name or "Unbekanntes Fahrzeug"
|
||||
|
||||
local input = lib.inputDialog('Fahrzeug Aktionen - ' .. (vehicle.name or vehicleLabel) .. ' (' .. vehicle.plate .. ')', {
|
||||
local input = lib.inputDialog('Fahrzeug Aktionen - ' .. vehicleName .. ' (' .. vehicle.plate .. ')', {
|
||||
{
|
||||
type = 'select',
|
||||
label = 'Aktion wählen (' .. playerJob.jobLabel .. ')',
|
||||
|
@ -125,7 +125,7 @@ local function ShowVehicleActions(vehicle, playerJob)
|
|||
elseif action == 'delete' then
|
||||
local alert = lib.alertDialog({
|
||||
header = 'Fahrzeug löschen',
|
||||
content = 'Bist du sicher, dass du das Fahrzeug ' .. (vehicle.name or vehicleLabel) .. ' (' .. vehicle.plate .. ') von der Map löschen möchtest?',
|
||||
content = 'Bist du sicher, dass du das Fahrzeug ' .. vehicleName .. ' (' .. vehicle.plate .. ') von der Map löschen möchtest?',
|
||||
centered = true,
|
||||
cancel = true
|
||||
})
|
||||
|
@ -135,7 +135,7 @@ local function ShowVehicleActions(vehicle, playerJob)
|
|||
elseif action == 'repair' then
|
||||
local alert = lib.alertDialog({
|
||||
header = 'Fahrzeug reparieren',
|
||||
content = 'Möchtest du das Fahrzeug ' .. (vehicle.name or vehicleLabel) .. ' (' .. vehicle.plate .. ') vollständig reparieren?',
|
||||
content = 'Möchtest du das Fahrzeug ' .. vehicleName .. ' (' .. vehicle.plate .. ') vollständig reparieren?',
|
||||
centered = true,
|
||||
cancel = true
|
||||
})
|
||||
|
@ -164,12 +164,11 @@ local function ShowPlayerVehicles(citizenid, playerName, playerJob)
|
|||
local options = {}
|
||||
for i = 1, #vehicles do
|
||||
local vehicle = vehicles[i]
|
||||
local vehicleLabel = vehicle.name or QBCore.Shared.Vehicles[vehicle.vehicle]?.name or vehicle.vehicle
|
||||
local vehicleName = vehicle.name or "Unbekanntes Fahrzeug"
|
||||
|
||||
-- Color coding based on state
|
||||
local icon = 'car'
|
||||
local iconColor = '#3b82f6'
|
||||
|
||||
if vehicle.state == 0 then
|
||||
icon = 'car-side' -- Ausgefahren
|
||||
iconColor = '#10b981'
|
||||
|
@ -198,7 +197,7 @@ local function ShowPlayerVehicles(citizenid, playerName, playerJob)
|
|||
'\n' .. GetFuelText(fuelLevel)
|
||||
|
||||
table.insert(options, {
|
||||
title = vehicleLabel .. ' (' .. vehicle.plate .. ')',
|
||||
title = vehicleName .. ' (' .. vehicle.plate .. ')',
|
||||
description = description,
|
||||
icon = icon,
|
||||
iconColor = iconColor,
|
||||
|
@ -275,3 +274,5 @@ end)
|
|||
exports('OpenVehicleAdmin', function()
|
||||
ShowPlayerMenu()
|
||||
end)
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,8 @@ shared_scripts {
|
|||
}
|
||||
|
||||
client_scripts {
|
||||
'client.lua'
|
||||
'client.lua',
|
||||
'vehicleadmin_integration.lua'
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
|
|
|
@ -49,12 +49,6 @@ local AdminConfig = {
|
|||
|
||||
-- Versuche, die Garagen aus dem externen Config zu laden
|
||||
local ExternalGarages = {}
|
||||
if _G.Config and _G.Config.Zonen then
|
||||
ExternalGarages = _G.Config.Zonen
|
||||
print("[Fahrzeugadmin] Garagen aus dem Hauptsystem geladen: " .. #ExternalGarages .. " Garagen gefunden.")
|
||||
else
|
||||
print("[Fahrzeugadmin] Konnte keine Garagen aus dem Hauptsystem laden, verwende Standard-Garagen.")
|
||||
end
|
||||
|
||||
-- Job Permission Check
|
||||
local function HasPermission(source)
|
||||
|
@ -98,6 +92,49 @@ QBCore.Functions.CreateCallback('vehicleadmin:getPlayers', function(source, cb)
|
|||
end)
|
||||
end)
|
||||
|
||||
-- Funktion zum Abrufen des Fahrzeugnamens
|
||||
local function GetVehicleDisplayName(model)
|
||||
-- Versuche zuerst, den Namen aus QBCore zu bekommen
|
||||
local vehicleData = QBCore.Shared.Vehicles[model]
|
||||
if vehicleData and vehicleData.name then
|
||||
return vehicleData.name
|
||||
end
|
||||
|
||||
-- Fallback: Versuche, den Namen aus der Fahrzeugklasse zu bekommen
|
||||
local vehicleClass = GetVehicleClassFromName(model)
|
||||
if vehicleClass then
|
||||
local classes = {
|
||||
[0] = "Kompakt",
|
||||
[1] = "Limousine",
|
||||
[2] = "SUV",
|
||||
[3] = "Coupé",
|
||||
[4] = "Muscle",
|
||||
[5] = "Sport Classic",
|
||||
[6] = "Sport",
|
||||
[7] = "Super",
|
||||
[8] = "Motorrad",
|
||||
[9] = "Geländewagen",
|
||||
[10] = "Industrie",
|
||||
[11] = "Nutzfahrzeug",
|
||||
[12] = "Van",
|
||||
[13] = "Fahrrad",
|
||||
[14] = "Boot",
|
||||
[15] = "Hubschrauber",
|
||||
[16] = "Flugzeug",
|
||||
[17] = "Service",
|
||||
[18] = "Notdienst",
|
||||
[19] = "Militär",
|
||||
[20] = "Kommerziell",
|
||||
[21] = "Zug",
|
||||
[22] = "Öffentlich"
|
||||
}
|
||||
return model .. " (" .. (classes[vehicleClass] or "Unbekannt") .. ")"
|
||||
end
|
||||
|
||||
-- Wenn alles fehlschlägt, gib einfach den Modellnamen zurück
|
||||
return model
|
||||
end
|
||||
|
||||
-- Get vehicles for specific player
|
||||
QBCore.Functions.CreateCallback('vehicleadmin:getPlayerVehicles', function(source, cb, citizenid)
|
||||
if not HasPermission(source) then
|
||||
|
@ -114,6 +151,12 @@ QBCore.Functions.CreateCallback('vehicleadmin:getPlayerVehicles', function(sourc
|
|||
local vehicles = {}
|
||||
for i = 1, #result do
|
||||
local vehicle = result[i]
|
||||
local displayName = vehicle.name
|
||||
|
||||
-- Wenn kein Name gesetzt ist, versuche den Namen aus dem Modell zu bekommen
|
||||
if not displayName or displayName == "" then
|
||||
displayName = GetVehicleDisplayName(vehicle.vehicle)
|
||||
end
|
||||
|
||||
table.insert(vehicles, {
|
||||
plate = vehicle.plate or 'UNKNOWN',
|
||||
|
@ -124,7 +167,7 @@ QBCore.Functions.CreateCallback('vehicleadmin:getPlayerVehicles', function(sourc
|
|||
engine = vehicle.engine or 1000,
|
||||
body = vehicle.body or 1000,
|
||||
citizenid = vehicle.citizenid,
|
||||
name = vehicle.name or "Unbekanntes Fahrzeug",
|
||||
name = displayName,
|
||||
mods = vehicle.mods or "{}"
|
||||
})
|
||||
end
|
||||
|
@ -141,7 +184,7 @@ QBCore.Functions.CreateCallback('vehicleadmin:getGarages', function(source, cb)
|
|||
|
||||
local garages = {}
|
||||
|
||||
-- Verwende die externen Garagen, wenn verfügbar
|
||||
-- Verwende die externen Garagen aus dem Garagensystem
|
||||
if next(ExternalGarages) ~= nil then
|
||||
for k, v in pairs(ExternalGarages) do
|
||||
table.insert(garages, {
|
||||
|
@ -512,13 +555,29 @@ QBCore.Commands.Add('dealeradmin', 'Öffne Autohändler Fahrzeug Menu', {}, fals
|
|||
TriggerClientEvent('vehicleadmin:openMenu', src)
|
||||
end)
|
||||
|
||||
-- Versuche, die Garagen aus dem externen Config zu laden (erneut)
|
||||
-- Lade die Garagen aus dem Garagensystem
|
||||
Citizen.CreateThread(function()
|
||||
Wait(5000) -- Warte länger, damit das Hauptsystem sicher geladen ist
|
||||
Wait(1000) -- Warte kurz, damit das Hauptsystem geladen ist
|
||||
|
||||
-- Versuche, die Garagen aus dem Hauptsystem zu laden
|
||||
if _G.Config and _G.Config.Zonen then
|
||||
ExternalGarages = _G.Config.Zonen
|
||||
for k, v in pairs(_G.Config.Zonen) do
|
||||
table.insert(ExternalGarages, v)
|
||||
end
|
||||
print("[Fahrzeugadmin] Garagen aus dem Hauptsystem geladen: " .. #ExternalGarages .. " Garagen gefunden.")
|
||||
else
|
||||
print("[Fahrzeugadmin] Konnte keine Garagen aus dem Hauptsystem laden, versuche es später erneut.")
|
||||
end
|
||||
end)
|
||||
|
||||
-- Versuche erneut, die Garagen zu laden, falls sie beim ersten Mal nicht verfügbar waren
|
||||
Citizen.CreateThread(function()
|
||||
Wait(5000) -- Warte länger, damit das Hauptsystem sicher geladen ist
|
||||
|
||||
if #ExternalGarages == 0 and _G.Config and _G.Config.Zonen then
|
||||
for k, v in pairs(_G.Config.Zonen) do
|
||||
table.insert(ExternalGarages, v)
|
||||
end
|
||||
print("[Fahrzeugadmin] Garagen aus dem Hauptsystem nachgeladen: " .. #ExternalGarages .. " Garagen gefunden.")
|
||||
end
|
||||
end)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue