forked from Simnation/Main
166 lines
5.1 KiB
Lua
166 lines
5.1 KiB
Lua
![]() |
local QBCore = exports['qb-core']:GetCoreObject()
|
||
|
|
||
|
-- Get vehicle state text
|
||
|
local function GetStateText(state)
|
||
|
if state == 0 then
|
||
|
return "Ausgefahren"
|
||
|
elseif state == 1 then
|
||
|
return "In Garage"
|
||
|
elseif state == 2 then
|
||
|
return "Beschlagnahmt"
|
||
|
else
|
||
|
return "Unbekannt"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Get vehicle condition text
|
||
|
local function GetConditionText(value)
|
||
|
if value >= 900 then
|
||
|
return "Sehr gut"
|
||
|
elseif value >= 700 then
|
||
|
return "Gut"
|
||
|
elseif value >= 500 then
|
||
|
return "Mittelmäßig"
|
||
|
elseif value >= 300 then
|
||
|
return "Schlecht"
|
||
|
else
|
||
|
return "Sehr schlecht"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Show vehicle actions menu
|
||
|
local function ShowVehicleActions(vehicle)
|
||
|
QBCore.Functions.TriggerCallback('vehicleadmin:getGarages', function(garages)
|
||
|
if not garages then return end
|
||
|
|
||
|
local garageOptions = {}
|
||
|
for i = 1, #garages do
|
||
|
table.insert(garageOptions, {
|
||
|
value = garages[i].name,
|
||
|
label = garages[i].label
|
||
|
})
|
||
|
end
|
||
|
|
||
|
local input = lib.inputDialog('Fahrzeug Aktionen - ' .. vehicle.plate, {
|
||
|
{
|
||
|
type = 'select',
|
||
|
label = 'Aktion wählen',
|
||
|
options = {
|
||
|
{value = 'move', label = 'In Garage stellen'},
|
||
|
{value = 'delete', label = 'Von Map löschen'},
|
||
|
{value = 'repair', label = 'Reparieren'}
|
||
|
},
|
||
|
required = true
|
||
|
},
|
||
|
{
|
||
|
type = 'select',
|
||
|
label = 'Garage auswählen (nur für "In Garage stellen")',
|
||
|
options = garageOptions,
|
||
|
required = false
|
||
|
}
|
||
|
})
|
||
|
|
||
|
if input then
|
||
|
local action = input[1]
|
||
|
local garage = input[2]
|
||
|
|
||
|
if action == 'move' then
|
||
|
if not garage then
|
||
|
lib.notify({
|
||
|
title = 'Fehler',
|
||
|
description = 'Bitte wähle eine Garage aus',
|
||
|
type = 'error'
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
TriggerServerEvent('vehicleadmin:moveToGarage', vehicle.plate, garage)
|
||
|
elseif action == 'delete' then
|
||
|
TriggerServerEvent('vehicleadmin:deleteFromMap', vehicle.plate)
|
||
|
elseif action == 'repair' then
|
||
|
TriggerServerEvent('vehicleadmin:repairVehicle', vehicle.plate)
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
-- Show vehicles for selected player
|
||
|
local function ShowPlayerVehicles(citizenid, playerName)
|
||
|
QBCore.Functions.TriggerCallback('vehicleadmin:getPlayerVehicles', function(vehicles)
|
||
|
if not vehicles then return end
|
||
|
|
||
|
if #vehicles == 0 then
|
||
|
lib.notify({
|
||
|
title = 'Keine Fahrzeuge',
|
||
|
description = 'Dieser Spieler hat keine Fahrzeuge',
|
||
|
type = 'info'
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local options = {}
|
||
|
for i = 1, #vehicles do
|
||
|
local vehicle = vehicles[i]
|
||
|
local vehicleLabel = QBCore.Shared.Vehicles[vehicle.vehicle]?.name or vehicle.vehicle
|
||
|
|
||
|
table.insert(options, {
|
||
|
title = vehicleLabel .. ' (' .. vehicle.plate .. ')',
|
||
|
description = 'Zustand: ' .. GetStateText(vehicle.state) .. ' | Garage: ' .. (vehicle.garage or 'Keine') ..
|
||
|
'\nMotor: ' .. GetConditionText(vehicle.engine) .. ' | Karosserie: ' .. GetConditionText(vehicle.body) ..
|
||
|
'\nSprit: ' .. math.floor(vehicle.fuel) .. '%',
|
||
|
icon = 'car',
|
||
|
onSelect = function()
|
||
|
ShowVehicleActions(vehicle)
|
||
|
end
|
||
|
})
|
||
|
end
|
||
|
|
||
|
lib.registerContext({
|
||
|
id = 'vehicle_list',
|
||
|
title = 'Fahrzeuge von ' .. playerName,
|
||
|
options = options
|
||
|
})
|
||
|
|
||
|
lib.showContext('vehicle_list')
|
||
|
end, citizenid)
|
||
|
end
|
||
|
|
||
|
-- Show player selection menu
|
||
|
local function ShowPlayerMenu()
|
||
|
QBCore.Functions.TriggerCallback('vehicleadmin:getPlayers', function(players)
|
||
|
if not players then
|
||
|
lib.notify({
|
||
|
title = 'Fehler',
|
||
|
description = 'Keine Berechtigung oder Fehler beim Laden',
|
||
|
type = 'error'
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local options = {}
|
||
|
for i = 1, #players do
|
||
|
local player = players[i]
|
||
|
table.insert(options, {
|
||
|
title = player.name,
|
||
|
description = 'Citizen ID: ' .. player.citizenid,
|
||
|
icon = 'user',
|
||
|
onSelect = function()
|
||
|
ShowPlayerVehicles(player.citizenid, player.name)
|
||
|
end
|
||
|
})
|
||
|
end
|
||
|
|
||
|
lib.registerContext({
|
||
|
id = 'player_selection',
|
||
|
title = 'Spieler auswählen',
|
||
|
options = options
|
||
|
})
|
||
|
|
||
|
lib.showContext('player_selection')
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
-- Event to open main menu
|
||
|
RegisterNetEvent('vehicleadmin:openMenu', function()
|
||
|
ShowPlayerMenu()
|
||
|
end)
|