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)