159 lines
5.4 KiB
Lua
159 lines
5.4 KiB
Lua
local coreVehicles = exports.qbx_core:GetVehiclesByName()
|
|
|
|
function GenerateVehiclesSpawnMenu()
|
|
local canUseMenu = lib.callback.await('qbx_admin:server:canUseMenu', false)
|
|
if not canUseMenu then
|
|
lib.showMenu('qbx_adminmenu_main_menu', MenuIndexes.qbx_adminmenu_main_menu)
|
|
return
|
|
end
|
|
|
|
local indexedCategories = {}
|
|
local categories = {}
|
|
local vehs = {}
|
|
for _, v in pairs(coreVehicles) do
|
|
categories[v.category] = true
|
|
end
|
|
|
|
local categoryIndex = 1
|
|
local newCategories = {}
|
|
for k in pairs(categories) do
|
|
newCategories[categoryIndex] = k
|
|
categoryIndex += 1
|
|
end
|
|
|
|
categories = newCategories
|
|
|
|
table.sort(categories, function(a, b)
|
|
return a < b
|
|
end)
|
|
|
|
for i = 1, #categories do
|
|
lib.setMenuOptions('qbx_adminmenu_spawn_vehicles_menu', {label = qbx.string.capitalize(categories[i]), args = {('qbx_adminmenu_spawn_vehicles_menu_%s'):format(categories[i])}}, i)
|
|
|
|
lib.registerMenu({
|
|
id = ('qbx_adminmenu_spawn_vehicles_menu_%s'):format(categories[i]),
|
|
title = categories[i],
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, 'qbx_adminmenu_spawn_vehicles_menu')
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes[('qbx_adminmenu_spawn_vehicles_menu_%s'):format(categories[i])] = selected
|
|
end,
|
|
options = {}
|
|
}, function(_, _, args)
|
|
local vehNetId = lib.callback.await('qbx_admin:server:spawnVehicle', false, args[1])
|
|
if not vehNetId then return end
|
|
local veh
|
|
repeat
|
|
veh = NetToVeh(vehNetId)
|
|
Wait(100)
|
|
until DoesEntityExist(veh)
|
|
TriggerEvent('qb-vehiclekeys:client:AddKeys', qbx.getVehiclePlate(veh))
|
|
SetVehicleNeedsToBeHotwired(veh, false)
|
|
SetVehicleHasBeenOwnedByPlayer(veh, true)
|
|
SetEntityAsMissionEntity(veh, true, false)
|
|
SetVehicleIsStolen(veh, false)
|
|
SetVehicleIsWanted(veh, false)
|
|
SetVehicleEngineOn(veh, true, true, true)
|
|
SetPedIntoVehicle(cache.ped, veh, -1)
|
|
SetVehicleOnGroundProperly(veh)
|
|
SetVehicleRadioEnabled(veh, true)
|
|
SetVehRadioStation(veh, 'OFF')
|
|
end)
|
|
indexedCategories[categories[i]] = 1
|
|
end
|
|
|
|
for k in pairs(coreVehicles) do
|
|
vehs[#vehs + 1] = k
|
|
end
|
|
|
|
table.sort(vehs, function(a, b)
|
|
return a < b
|
|
end)
|
|
|
|
for i = 1, #vehs do
|
|
local v = coreVehicles[vehs[i]]
|
|
lib.setMenuOptions(('qbx_adminmenu_spawn_vehicles_menu_%s'):format(v.category), {label = v.name, args = {v.model}}, indexedCategories[v.category])
|
|
indexedCategories[v.category] += 1
|
|
end
|
|
|
|
lib.showMenu('qbx_adminmenu_spawn_vehicles_menu', MenuIndexes.qbx_adminmenu_spawn_vehicles_menu)
|
|
end
|
|
|
|
lib.registerMenu({
|
|
id = 'qbx_adminmenu_vehicles_menu',
|
|
title = 'Vehicles',
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, 'qbx_adminmenu_main_menu')
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes.qbx_adminmenu_vehicles_menu = selected
|
|
end,
|
|
options = {
|
|
{label = 'Spawn Vehicle'},
|
|
{label = 'Fix Vehicle', close = false},
|
|
{label = 'Buy Vehicle', close = true},
|
|
{label = 'Remove Vehicle', close = false},
|
|
{label = 'Tune Vehicle'},
|
|
{label = 'Change Plate'}
|
|
}
|
|
}, function(selected)
|
|
if selected == 1 then
|
|
GenerateVehiclesSpawnMenu()
|
|
elseif selected == 2 then
|
|
ExecuteCommand('fix')
|
|
elseif selected == 3 then
|
|
ExecuteCommand('admincar')
|
|
elseif selected == 4 then
|
|
ExecuteCommand('dv')
|
|
elseif selected == 5 then
|
|
if not cache.vehicle then
|
|
exports.qbx_core:Notify('You have to be in a vehicle, to use this', 'error')
|
|
lib.showMenu('qbx_adminmenu_vehicles_menu', MenuIndexes.qbx_adminmenu_vehicles_menu)
|
|
return
|
|
end
|
|
exports.qbx_customs:OpenMenu()
|
|
elseif selected == 6 then
|
|
if not cache.vehicle then
|
|
exports.qbx_core:Notify('You have to be in a vehicle, to use this', 'error')
|
|
lib.showMenu('qbx_adminmenu_vehicles_menu', MenuIndexes.qbx_adminmenu_vehicles_menu)
|
|
return
|
|
end
|
|
|
|
local dialog = lib.inputDialog('Custom License Plate (Max. 8 characters)', {'License Plate'})
|
|
|
|
if not dialog or not dialog[1] or dialog[1] == '' then
|
|
Wait(200)
|
|
lib.showMenu('qbx_adminmenu_vehicles_menu', MenuIndexes.qbx_adminmenu_vehicles_menu)
|
|
return
|
|
end
|
|
|
|
if #dialog[1] > 8 then
|
|
Wait(200)
|
|
exports.qbx_core:Notify('You can only enter a maximum of 8 characters', 'error')
|
|
lib.showMenu('qbx_adminmenu_vehicles_menu', MenuIndexes.qbx_adminmenu_vehicles_menu)
|
|
return
|
|
end
|
|
|
|
SetVehicleNumberPlateText(cache.vehicle, dialog[1])
|
|
TriggerEvent('qb-vehiclekeys:client:AddKeys', dialog[1])
|
|
end
|
|
end)
|
|
|
|
lib.registerMenu({
|
|
id = 'qbx_adminmenu_spawn_vehicles_menu',
|
|
title = 'Spawn Vehicle',
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, 'qbx_adminmenu_main_menu')
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes.qbx_adminmenu_spawn_vehicles_menu = selected
|
|
end,
|
|
options = {}
|
|
}, function(_, _, args)
|
|
lib.showMenu(args[1], MenuIndexes[args[1]])
|
|
end)
|