2025-04-07 01:41:12 +00:00

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)