308 lines
16 KiB
Lua
308 lines
16 KiB
Lua
local selectedPlayer
|
|
local playerOptions = {
|
|
function()
|
|
lib.showMenu('qbx_adminmenu_player_general_menu', MenuIndexes.qbx_adminmenu_player_general_menu)
|
|
end,
|
|
function()
|
|
lib.showMenu('qbx_adminmenu_player_administration_menu', MenuIndexes.qbx_adminmenu_player_administration_menu)
|
|
end,
|
|
function()
|
|
lib.showMenu('qbx_adminmenu_player_extra_menu', MenuIndexes.qbx_adminmenu_player_extra_menu)
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Name Change', {'Firstname', 'Lastname'})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'name', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Food', {
|
|
{type = 'number', label = 'Percentage', min = 0, max = 100}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'food', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Thirst', {
|
|
{type = 'number', label = 'Percentage', min = 0, max = 100}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'thirst', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Stress', {
|
|
{type = 'number', label = 'Percentage', min = 0, max = 100}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'stress', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Armor', {
|
|
{type = 'number', label = 'Percentage', min = 0, max = 100}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'armor', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Phone', {'Number'})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'phone', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Crafting', {
|
|
{type = 'number', label = 'Reputation'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'crafting', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Dealer', {
|
|
{type = 'number', label = 'Reputation'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'dealer', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Money', {
|
|
{type = 'number', label = 'Cash'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'cash', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Money', {
|
|
{type = 'number', label = 'Bank'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'bank', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Job', {
|
|
{type = 'input', label = 'Name'},
|
|
{type = 'number', label = 'Grade'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'job', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Gang', {
|
|
{type = 'input', label = 'Name'},
|
|
{type = 'number', label = 'Grade'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'gang', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local input = lib.inputDialog('Radio', {
|
|
{type = 'number', label = 'Frequency'}
|
|
})
|
|
if not input then GeneratePlayersMenu() return end
|
|
TriggerServerEvent('qbx_admin:server:changePlayerData', 'radio', selectedPlayer, input)
|
|
GeneratePlayersMenu()
|
|
end,
|
|
function()
|
|
local license = selectedPlayer.license:gsub('license:', '')
|
|
lib.setClipboard(license)
|
|
lib.showMenu(('qbx_adminmenu_player_menu_%s'):format(selectedPlayer.id), MenuIndexes[('qbx_adminmenu_player_menu_%s'):format(selectedPlayer.id)])
|
|
end,
|
|
function()
|
|
local discord = selectedPlayer.discord:gsub('discord:', '')
|
|
lib.setClipboard(discord)
|
|
lib.showMenu(('qbx_adminmenu_player_menu_%s'):format(selectedPlayer.id), MenuIndexes[('qbx_adminmenu_player_menu_%s'):format(selectedPlayer.id)])
|
|
end,
|
|
function()
|
|
local steam = selectedPlayer.steam:gsub('steam:', '')
|
|
lib.setClipboard(steam)
|
|
lib.showMenu(('qbx_adminmenu_player_menu_%s'):format(selectedPlayer.id), MenuIndexes[('qbx_adminmenu_player_menu_%s'):format(selectedPlayer.id)])
|
|
end,
|
|
}
|
|
|
|
function GeneratePlayersMenu()
|
|
local players = lib.callback.await('qbx_admin:server:getPlayers', false)
|
|
if not players then
|
|
lib.showMenu('qbx_adminmenu_main_menu', MenuIndexes.qbx_adminmenu_main_menu)
|
|
return
|
|
end
|
|
local optionsList = {}
|
|
for i = 1, #players do
|
|
optionsList[#optionsList + 1] = {label = string.format('ID: %s | Name: %s', players[i].id, players[i].name), description = string.format('CID: %s', players[i].cid), args = {players[i]}}
|
|
end
|
|
lib.registerMenu({
|
|
id = 'qbx_adminmenu_players_menu',
|
|
title = locale('title.players_menu'),
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, 'qbx_adminmenu_main_menu')
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes.qbx_adminmenu_players_menu = selected
|
|
end,
|
|
options = optionsList
|
|
}, function(_, _, args)
|
|
local player = lib.callback.await('qbx_admin:server:getPlayer', false, args[1].id)
|
|
if not player then
|
|
lib.showMenu('qbx_adminmenu_main_menu', MenuIndexes.qbx_adminmenu_main_menu)
|
|
return
|
|
end
|
|
lib.registerMenu({
|
|
id = ('qbx_adminmenu_player_menu_%s'):format(args[1].id),
|
|
title = player.name,
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, 'qbx_adminmenu_players_menu')
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes[('qbx_adminmenu_player_menu_%s'):format(args[1].id)] = selected
|
|
end,
|
|
options = {
|
|
{label = locale('player_options.label1'), description = locale('player_options.desc1'), icon = 'fas fa-wrench'},
|
|
{label = locale('player_options.label2'), description = locale('player_options.desc2'), icon = 'fas fa-file-invoice'},
|
|
{label = locale('player_options.label3'), description = locale('player_options.desc3'), icon = 'fas fa-gamepad'},
|
|
{label = string.format('Name: %s', player.name)},
|
|
{label = string.format('Food: %s', player.food)},
|
|
{label = string.format('Water: %s', player.water)},
|
|
{label = string.format('Stress: %s', player.stress)},
|
|
{label = string.format('Armor: %s', player.armor)},
|
|
{label = string.format('Phone: %s', player.phone)},
|
|
{label = string.format('Crafting Rep: %s', player.craftingrep)},
|
|
{label = string.format('Dealer Rep: %s', player.dealerrep)},
|
|
{label = string.format('Cash: %s', lib.math.groupdigits(player.cash))},
|
|
{label = string.format('Bank: %s', lib.math.groupdigits(player.bank))},
|
|
{label = string.format('Job: %s', player.job)},
|
|
{label = string.format('Gang: %s', player.gang)},
|
|
{label = string.format('Radio: %s', Player(args[1].id).state.radioChannel)},
|
|
{label = string.format('%s', player.license), description = 'License'},
|
|
{label = string.format('%s', player.discord), description = 'Discord'},
|
|
{label = string.format('%s', player.steam), description = 'Steam'}
|
|
}
|
|
}, function(selected)
|
|
playerOptions[selected]()
|
|
end)
|
|
selectedPlayer = player
|
|
lib.showMenu(('qbx_adminmenu_player_menu_%s'):format(args[1].id), MenuIndexes[('qbx_adminmenu_player_menu_%s'):format(args[1].id)])
|
|
end)
|
|
lib.showMenu('qbx_adminmenu_players_menu', MenuIndexes.qbx_adminmenu_players_menu)
|
|
end
|
|
|
|
lib.registerMenu({
|
|
id = 'qbx_adminmenu_player_general_menu',
|
|
title = locale('player_options.label1'),
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, ('qbx_adminmenu_player_menu_%s'):format(selectedPlayer?.id))
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes.qbx_adminmenu_player_general_menu = selected
|
|
end,
|
|
options = {
|
|
{label = locale('player_options.general.labelkill'), description = locale('player_options.general.desckill'), icon = 'fas fa-skull', close = false},
|
|
{label = locale('player_options.general.labelrevive'), description = locale('player_options.general.descrevive'), icon = 'fas fa-cross', close = false},
|
|
{label = locale('player_options.general.labelfreeze'), description = locale('player_options.general.descfreeze'), icon = 'fas fa-icicles', close = false},
|
|
{label = locale('player_options.general.labelgoto'), description = locale('player_options.general.descgoto'), icon = 'fas fa-arrow-right-long', close = false},
|
|
{label = locale('player_options.general.labelbring'), description = locale('player_options.general.descbring'), icon = 'fas fa-arrow-left-long', close = false},
|
|
{label = locale('player_options.general.labelsitinveh'), description = locale('player_options.general.descsitinveh'), icon = 'fas fa-chair', close = false},
|
|
{label = locale('player_options.general.labelrouting'), description = locale('player_options.general.descrouting'), icon = 'fas fa-bucket'},
|
|
}
|
|
}, function(selected)
|
|
if selected == 7 then
|
|
local input = lib.inputDialog(selectedPlayer.name, {
|
|
{type = 'number', label = locale('player_options.general.labelrouting'), placeholder = '25'}
|
|
})
|
|
if not input then return end if not input[1] then return end
|
|
TriggerServerEvent('qbx_admin:server:playerOptionsGeneral', selected, selectedPlayer, input[1])
|
|
lib.showMenu(('qbx_adminmenu_player_menu_%s'):format(selectedPlayer?.id), MenuIndexes[('qbx_adminmenu_player_menu_%s'):format(selectedPlayer?.id)])
|
|
else
|
|
TriggerServerEvent('qbx_admin:server:playerOptionsGeneral', selected, selectedPlayer)
|
|
end
|
|
end)
|
|
|
|
lib.registerMenu({
|
|
id = 'qbx_adminmenu_player_administration_menu',
|
|
title = locale('player_options.label2'),
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, ('qbx_adminmenu_player_menu_%s'):format(selectedPlayer?.id))
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes.qbx_adminmenu_player_administration_menu = selected
|
|
end,
|
|
options = {
|
|
{label = locale('player_options.administration.labelkick'), description = locale('player_options.administration.desckick'), icon = 'fas fa-plane-departure'},
|
|
{label = locale('player_options.administration.labelban'), description = locale('player_options.administration.descban'), icon = 'fas fa-gavel'},
|
|
{label = locale('player_options.administration.labelperm'), description = locale('player_options.administration.descperm'), values = {locale('player_options.administration.permvalue1'),
|
|
locale('player_options.administration.permvalue2'), locale('player_options.administration.permvalue3'), locale('player_options.administration.permvalue4')}, args = {'remove', 'mod', 'admin', 'god'}, icon = 'fas fa-book-bookmark'},
|
|
}
|
|
}, function(selected, scrollIndex, args)
|
|
if selected == 1 then
|
|
local input = lib.inputDialog(selectedPlayer.name, {locale('player_options.administration.inputkick')})
|
|
if not input then lib.showMenu('qbx_adminmenu_player_administration_menu', MenuIndexes.qbx_adminmenu_player_administration_menu) return end if not input[1] then return end
|
|
TriggerServerEvent('qbx_admin:server:playerAdministration', selected, selectedPlayer, input[1])
|
|
lib.showMenu('qbx_adminmenu_player_administration_menu', MenuIndexes.qbx_adminmenu_player_administration_menu)
|
|
elseif selected == 2 then
|
|
local input = lib.inputDialog(selectedPlayer.name, {
|
|
{ type = 'input', label = locale('player_options.administration.inputkick'), placeholder = 'VDM'},
|
|
{ type = 'number', label = locale('player_options.administration.input1ban')},
|
|
{ type = 'number', label = locale('player_options.administration.input2ban')},
|
|
{ type = 'number', label = locale('player_options.administration.input3ban')}
|
|
})
|
|
if not input then lib.showMenu('qbx_adminmenu_player_administration_menu', MenuIndexes.qbx_adminmenu_player_general_menu) return end if not input[1] or not input[2] and not input[3] and not input[4] then return end
|
|
TriggerServerEvent('qbx_admin:server:playerAdministration', selected, selectedPlayer, input)
|
|
lib.showMenu('qbx_adminmenu_player_administration_menu', MenuIndexes.qbx_adminmenu_player_administration_menu)
|
|
else
|
|
TriggerServerEvent('qbx_admin:server:playerAdministration', selected, selectedPlayer, args[scrollIndex])
|
|
lib.showMenu('qbx_adminmenu_player_administration_menu', MenuIndexes.qbx_adminmenu_player_administration_menu)
|
|
end
|
|
end)
|
|
|
|
lib.registerMenu({
|
|
id = 'qbx_adminmenu_player_extra_menu',
|
|
title = locale('player_options.label2'),
|
|
position = 'top-right',
|
|
onClose = function(keyPressed)
|
|
CloseMenu(false, keyPressed, ('qbx_adminmenu_player_menu_%s'):format(selectedPlayer?.id))
|
|
end,
|
|
onSelected = function(selected)
|
|
MenuIndexes.qbx_adminmenu_player_extra_menu = selected
|
|
end,
|
|
options = {
|
|
{label = 'Open Inventory'},
|
|
{label = 'Give Clothing Menu'},
|
|
{label = 'Give Item'},
|
|
{label = 'Mute'}
|
|
}
|
|
}, function(selected)
|
|
if selected == 1 then
|
|
exports.ox_inventory:openInventory('player', selectedPlayer.id)
|
|
elseif selected == 2 then
|
|
local succeeded = lib.callback.await('qbx_admin:server:clothingMenu', false, selectedPlayer.id)
|
|
if succeeded then return end
|
|
lib.showMenu('qbx_adminmenu_player_extra_menu', MenuIndexes.qbx_adminmenu_player_extra_menu)
|
|
elseif selected == 3 then
|
|
local dialog = lib.inputDialog('Give Item', {
|
|
{type = 'input', label = 'Item', placeholder = 'phone'},
|
|
{type = 'number', label = 'Amount', default = 1}
|
|
})
|
|
if not dialog or not dialog[1] or dialog[1] == '' or not dialog[2] or dialog[2] < 1 then
|
|
lib.showMenu('qbx_adminmenu_player_extra_menu', MenuIndexes.qbx_adminmenu_player_extra_menu)
|
|
return
|
|
end
|
|
ExecuteCommand('giveitem ' .. selectedPlayer.id .. ' ' .. dialog[1] .. ' ' .. dialog[2])
|
|
elseif selected == 4 then
|
|
exports['pma-voice']:toggleMutePlayer(selectedPlayer.id)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('qbx_admin:client:killPlayer', function()
|
|
SetEntityHealth(cache.ped, 0)
|
|
end) |