1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-06 12:21:15 +02:00
parent 8c28aa9419
commit a8696c338d
4 changed files with 206 additions and 230 deletions

View file

@ -61,8 +61,6 @@ local function ShowVehicleActions(vehicle, playerJob)
actionOptions = {
{value = 'move', label = '🏠 In Garage stellen'},
{value = 'delete', label = '🗑️ Von Map löschen'},
{value = 'impound', label = '🚫 Beschlagnahmen'},
{value = 'release', label = '✅ Aus Beschlagnahme freigeben'},
{value = 'repair', label = '🔧 Reparieren'}
}
elseif playerJob.jobName == 'mechanic' then
@ -87,15 +85,13 @@ local function ShowVehicleActions(vehicle, playerJob)
actionOptions = {
{value = 'move', label = '🏠 In Garage stellen'},
{value = 'delete', label = '🗑️ Von Map löschen'},
{value = 'repair', label = '🔧 Reparieren'},
{value = 'impound', label = '🚫 Beschlagnahmen'},
{value = 'release', label = '✅ Aus Beschlagnahme freigeben'}
{value = 'repair', label = '🔧 Reparieren'}
}
end
}
local vehicleLabel = QBCore.Shared.Vehicles[vehicle.vehicle]?.name or vehicle.vehicle
local input = lib.inputDialog('Fahrzeug Aktionen - ' .. vehicleLabel .. ' (' .. vehicle.plate .. ')', {
local input = lib.inputDialog('Fahrzeug Aktionen - ' .. (vehicle.name or vehicleLabel) .. ' (' .. vehicle.plate .. ')', {
{
type = 'select',
label = 'Aktion wählen (' .. playerJob.jobLabel .. ')',
@ -106,7 +102,7 @@ local function ShowVehicleActions(vehicle, playerJob)
{
type = 'select',
label = 'Garage auswählen',
description = 'Nur für "In Garage stellen" und "Freigeben" benötigt',
description = 'Nur für "In Garage stellen" benötigt',
options = garageOptions,
required = false
}
@ -129,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 ' .. vehicleLabel .. ' (' .. vehicle.plate .. ') von der Map löschen möchtest?',
content = 'Bist du sicher, dass du das Fahrzeug ' .. (vehicle.name or vehicleLabel) .. ' (' .. vehicle.plate .. ') von der Map löschen möchtest?',
centered = true,
cancel = true
})
@ -139,41 +135,13 @@ local function ShowVehicleActions(vehicle, playerJob)
elseif action == 'repair' then
local alert = lib.alertDialog({
header = 'Fahrzeug reparieren',
content = 'Möchtest du das Fahrzeug ' .. vehicleLabel .. ' (' .. vehicle.plate .. ') vollständig reparieren?',
content = 'Möchtest du das Fahrzeug ' .. (vehicle.name or vehicleLabel) .. ' (' .. vehicle.plate .. ') vollständig reparieren?',
centered = true,
cancel = true
})
if alert == 'confirm' then
TriggerServerEvent('vehicleadmin:repairVehicle', vehicle.plate)
end
elseif action == 'impound' then
local alert = lib.alertDialog({
header = 'Fahrzeug beschlagnahmen',
content = 'Möchtest du das Fahrzeug ' .. vehicleLabel .. ' (' .. vehicle.plate .. ') beschlagnahmen? (500€ Gebühr)',
centered = true,
cancel = true
})
if alert == 'confirm' then
TriggerServerEvent('vehicleadmin:impoundVehicle', vehicle.plate)
end
elseif action == 'release' then
if not garage then
lib.notify({
title = 'Fehler',
description = 'Bitte wähle eine Garage für die Freigabe aus',
type = 'error'
})
return
end
local alert = lib.alertDialog({
header = 'Fahrzeug freigeben',
content = 'Möchtest du das Fahrzeug ' .. vehicleLabel .. ' (' .. vehicle.plate .. ') aus der Beschlagnahme freigeben?',
centered = true,
cancel = true
})
if alert == 'confirm' then
TriggerServerEvent('vehicleadmin:releaseFromImpound', vehicle.plate, garage)
end
end
end
end)
@ -196,7 +164,7 @@ local function ShowPlayerVehicles(citizenid, playerName, playerJob)
local options = {}
for i = 1, #vehicles do
local vehicle = vehicles[i]
local vehicleLabel = QBCore.Shared.Vehicles[vehicle.vehicle]?.name or vehicle.vehicle
local vehicleLabel = vehicle.name or QBCore.Shared.Vehicles[vehicle.vehicle]?.name or vehicle.vehicle
-- Color coding based on state
local icon = 'car'
@ -213,14 +181,22 @@ local function ShowPlayerVehicles(citizenid, playerName, playerJob)
iconColor = '#ef4444'
end
local description = GetStateText(vehicle.state) .. ' | 🏠 ' .. (vehicle.garage or 'Keine Garage') ..
'\n🔧 Motor: ' .. GetConditionText(vehicle.engine) .. ' | 🚗 Karosserie: ' .. GetConditionText(vehicle.body) ..
'\n' .. GetFuelText(vehicle.fuel)
if vehicle.depotprice and vehicle.depotprice > 0 then
description = description .. '\n💰 Gebühr: ' .. vehicle.depotprice .. ''
-- Parse mods if needed
local mods = {}
if type(vehicle.mods) == 'string' then
mods = json.decode(vehicle.mods) or {}
else
mods = vehicle.mods or {}
end
local engineHealth = mods.engineHealth or 1000
local bodyHealth = mods.bodyHealth or 1000
local fuelLevel = mods.fuelLevel or 100
local description = GetStateText(vehicle.state) .. ' | 🏠 ' .. (vehicle.garage or 'Keine Garage') ..
'\n🔧 Motor: ' .. GetConditionText(engineHealth) .. ' | 🚗 Karosserie: ' .. GetConditionText(bodyHealth) ..
'\n' .. GetFuelText(fuelLevel)
table.insert(options, {
title = vehicleLabel .. ' (' .. vehicle.plate .. ')',
description = description,
@ -295,34 +271,7 @@ RegisterNetEvent('vehicleadmin:openMenu', function()
ShowPlayerMenu()
end)
-- Keybind for quick access (optional)
RegisterKeyMapping('vehicleadmin', 'Öffne Fahrzeug Admin Menu', 'keyboard', '')
-- Show help text when menu is opened
RegisterNetEvent('vehicleadmin:showHelp', function()
lib.notify({
title = 'Fahrzeugverwaltung',
description = 'Verwende /vehicleadmin oder die entsprechenden Job-Befehle um das Menu zu öffnen',
type = 'info',
duration = 5000
})
end)
-- Auto-refresh function for real-time updates
local function RefreshCurrentMenu()
-- This can be used to refresh the current menu if needed
-- Implementation depends on your specific needs
end
-- Export functions for other scripts
exports('OpenVehicleAdmin', function()
ShowPlayerMenu()
end)
exports('HasVehicleAdminPermission', function()
local hasPermission = false
QBCore.Functions.TriggerCallback('vehicleadmin:getPlayerJob', function(jobData)
hasPermission = jobData and jobData.hasPermission or false
end)
return hasPermission
end)