1
0
Fork 0
forked from Simnation/Main
Main/resources/[carscripts]/nordi_car_admin/client.lua

166 lines
5.1 KiB
Lua
Raw Normal View History

2025-08-06 10:11:58 +02:00
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)