Files
red-valley/cache/files/qb-management/resource.rpf

1361 lines
60 KiB
Plaintext
Raw Normal View History

2026-03-29 21:41:17 +03:00
RPF2 <00><00><<00><00><00>K<00> ~3~3H
HH
#[4X[4/d<00>dS <00> Z2 <00>2 aU<00>Uh <00> oS<00>S/clientcl_boss.luacl_config.luacl_gang.luacl_utils.luafxmanifest.lualocalescs.luaen.luafr.luapt.luaro.lualocal QBCore = exports['qb-core']:GetCoreObject()
local PlayerJob = QBCore.Functions.GetPlayerData().job
local shownBossMenu = false
local DynamicMenuItems = {}
-- UTIL
local function CloseMenuFull()
exports['qb-menu']:closeMenu()
exports['qb-core']:HideText()
shownBossMenu = false
end
local function comma_value(amount)
local formatted = amount
while true do
local k
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k == 0) then
break
end
end
return formatted
end
local function AddBossMenuItem(data, id)
local menuID = id or (#DynamicMenuItems + 1)
DynamicMenuItems[menuID] = deepcopy(data)
return menuID
end
exports("AddBossMenuItem", AddBossMenuItem)
local function RemoveBossMenuItem(id)
DynamicMenuItems[id] = nil
end
exports("RemoveBossMenuItem", RemoveBossMenuItem)
AddEventHandler('onResourceStart', function(resource)
if resource == GetCurrentResourceName() then
PlayerJob = QBCore.Functions.GetPlayerData().job
end
end)
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
PlayerJob = QBCore.Functions.GetPlayerData().job
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate', function(JobInfo)
PlayerJob = JobInfo
end)
RegisterNetEvent('qb-bossmenu:client:OpenMenu', function()
if not PlayerJob.name or not PlayerJob.isboss then return end
local bossMenu = {
{
header = Lang:t("headers.bsm").. string.upper(PlayerJob.label),
icon = "fa-solid fa-circle-info",
isMenuHeader = true,
},
{
header = Lang:t("body.manage"),
txt = Lang:t("body.managed"),
icon = "fa-solid fa-list",
params = {
event = "qb-bossmenu:client:employeelist",
}
},
{
header = Lang:t("body.hire"),
txt = Lang:t("body.hired"),
icon = "fa-solid fa-hand-holding",
params = {
event = "qb-bossmenu:client:HireMenu",
}
},
{
header = Lang:t("body.storage"),
txt = Lang:t("body.storaged"),
icon = "fa-solid fa-box-open",
params = {
event = "qb-bossmenu:client:Stash",
}
},
{
header = Lang:t("body.outfits"),
txt = Lang:t("body.outfitsd"),
icon = "fa-solid fa-shirt",
params = {
event = "qb-bossmenu:client:Wardrobe",
}
},
{
header = Lang:t("body.money"),
txt = Lang:t("body.moneyd"),
icon = "fa-solid fa-sack-dollar",
params = {
event = "qb-bossmenu:client:SocietyMenu",
}
},
}
for _, v in pairs(DynamicMenuItems) do
bossMenu[#bossMenu + 1] = v
end
bossMenu[#bossMenu + 1] = {
header = Lang:t("body.exit"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-menu:closeMenu",
}
}
exports['qb-menu']:openMenu(bossMenu)
end)
RegisterNetEvent('qb-bossmenu:client:employeelist', function()
local EmployeesMenu = {
{
header = Lang:t("body.mempl").. string.upper(PlayerJob.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info",
},
}
QBCore.Functions.TriggerCallback('qb-bossmenu:server:GetEmployees', function(cb)
for _, v in pairs(cb) do
EmployeesMenu[#EmployeesMenu + 1] = {
header = v.name,
txt = v.grade.name,
icon = "fa-solid fa-circle-user",
params = {
event = "qb-bossmenu:client:ManageEmployee",
args = {
player = v,
work = PlayerJob
}
}
}
end
EmployeesMenu[#EmployeesMenu + 1] = {
header = Lang:t("body.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-bossmenu:client:OpenMenu",
}
}
exports['qb-menu']:openMenu(EmployeesMenu)
end, PlayerJob.name)
end)
RegisterNetEvent('qb-bossmenu:client:ManageEmployee', function(data)
local EmployeeMenu = {
{
header = Lang:t("body.mngpl").. data.player.name .. " - " .. string.upper(PlayerJob.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info"
},
}
for k, v in pairs(QBCore.Shared.Jobs[data.work.name].grades) do
EmployeeMenu[#EmployeeMenu + 1] = {
header = v.name,
txt = Lang:t("body.grade") .. k,
params = {
isServer = true,
event = "qb-bossmenu:server:GradeUpdate",
icon = "fa-solid fa-file-pen",
args = {
cid = data.player.empSource,
grade = tonumber(k),
gradename = v.name
}
}
}
end
EmployeeMenu[#EmployeeMenu + 1] = {
header = Lang:t("body.fireemp"),
icon = "fa-solid fa-user-large-slash",
params = {
isServer = true,
event = "qb-bossmenu:server:FireEmployee",
args = data.player.empSource
}
}
EmployeeMenu[#EmployeeMenu + 1] = {
header = Lang:t("body.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-bossmenu:client:OpenMenu",
}
}
exports['qb-menu']:openMenu(EmployeeMenu)
end)
RegisterNetEvent('qb-bossmenu:client:Stash', function()
TriggerServerEvent("inventory:server:OpenInventory", "stash", "boss_" .. PlayerJob.name, {
maxweight = 4000000,
slots = 25,
})
TriggerEvent("inventory:client:SetCurrentStash", "boss_" .. PlayerJob.name)
end)
RegisterNetEvent('qb-bossmenu:client:Wardrobe', function()
TriggerEvent('qb-clothing:client:openOutfitMenu')
end)
RegisterNetEvent('qb-bossmenu:client:HireMenu', function()
local HireMenu = {
{
header = Lang:t("body.hireemp").. string.upper(PlayerJob.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info",
},
}
QBCore.Functions.TriggerCallback('qb-bossmenu:getplayers', function(players)
for _, v in pairs(players) do
if v and v ~= PlayerId() then
HireMenu[#HireMenu + 1] = {
header = v.name,
txt = Lang:t("body.cid").. v.citizenid .. " - ID: " .. v.sourceplayer,
icon = "fa-solid fa-user-check",
params = {
isServer = true,
event = "qb-bossmenu:server:HireEmployee",
args = v.sourceplayer
}
}
end
end
HireMenu[#HireMenu + 1] = {
header = Lang:t("body.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-bossmenu:client:OpenMenu",
}
}
exports['qb-menu']:openMenu(HireMenu)
end)
end)
RegisterNetEvent('qb-bossmenu:client:SocietyMenu', function()
QBCore.Functions.TriggerCallback('qb-bossmenu:server:GetAccount', function(cb)
local SocietyMenu = {
{
header = Lang:t("body.balance").. comma_value(cb) .. " - " .. string.upper(PlayerJob.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info",
},
{
header = Lang:t("body.deposit"),
icon = "fa-solid fa-money-bill-transfer",
txt = Lang:t("body.depositd"),
params = {
event = "qb-bossmenu:client:SocetyDeposit",
args = comma_value(cb)
}
},
{
header = Lang:t("body.withdraw"),
icon = "fa-solid fa-money-bill-transfer",
txt = Lang:t("body.withdrawd"),
params = {
event = "qb-bossmenu:client:SocetyWithDraw",
args = comma_value(cb)
}
},
{
header = Lang:t("body.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-bossmenu:client:OpenMenu",
}
},
}
exports['qb-menu']:openMenu(SocietyMenu)
end, PlayerJob.name)
end)
RegisterNetEvent('qb-bossmenu:client:SocetyDeposit', function(money)
local deposit = exports['qb-input']:ShowInput({
header = Lang:t("body.depositm").. money,
submitText = Lang:t("body.submit"),
inputs = {
{
type = 'number',
isRequired = true,
name = 'amount',
text = Lang:t("body.amount")
}
}
})
if deposit then
if not deposit.amount then return end
TriggerServerEvent("qb-bossmenu:server:depositMoney", tonumber(deposit.amount))
end
end)
RegisterNetEvent('qb-bossmenu:client:SocetyWithDraw', function(money)
local withdraw = exports['qb-input']:ShowInput({
header = Lang:t("body.withdrawm").. money,
submitText = Lang:t("body.submit"),
inputs = {
{
type = 'number',
isRequired = true,
name = 'amount',
text = Lang:t("body.amount")
}
}
})
if withdraw then
if not withdraw.amount then return end
TriggerServerEvent("qb-bossmenu:server:withdrawMoney", tonumber(withdraw.amount))
end
end)
-- MAIN THREAD
CreateThread(function()
if Config.UseTarget then
for job, zones in pairs(Config.BossMenuZones) do
for index, data in ipairs(zones) do
exports['qb-target']:AddBoxZone(job.."-BossMenu-"..index, data.coords, data.length, data.width, {
name = job.."-BossMenu-"..index,
heading = data.heading,
-- debugPoly = true,
minZ = data.minZ,
maxZ = data.maxZ,
}, {
options = {
{
type = "client",
event = "qb-bossmenu:client:OpenMenu",
icon = "fas fa-sign-in-alt",
label = Lang:t("target.label"),
canInteract = function() return job == PlayerJob.name and PlayerJob.isboss end,
},
},
distance = 2.5
})
end
end
else
while true do
local wait = 2500
local pos = GetEntityCoords(PlayerPedId())
local inRangeBoss = false
local nearBossmenu = false
if PlayerJob then
wait = 0
for k, menus in pairs(Config.BossMenus) do
for _, coords in ipairs(menus) do
if k == PlayerJob.name and PlayerJob.isboss then
if #(pos - coords) < 5.0 then
inRangeBoss = true
if #(pos - coords) <= 1.5 then
nearBossmenu = true
if not shownBossMenu then
exports['qb-core']:DrawText(Lang:t("drawtext.label"), 'left')
shownBossMenu = true
end
if IsControlJustReleased(0, 38) then
exports['qb-core']:HideText()
TriggerEvent("qb-bossmenu:client:OpenMenu")
end
end
if not nearBossmenu and shownBossMenu then
CloseMenuFull()
shownBossMenu = false
end
end
end
end
end
if not inRangeBoss then
Wait(1500)
if shownBossMenu then
CloseMenuFull()
shownBossMenu = false
end
end
end
Wait(wait)
end
end
end)
-- Zones for Menues
Config = Config or {}
Config.UseTarget = GetConvar('UseTarget', 'false') == 'true' -- Use qb-target interactions (don't change this, go to your server.cfg and add `setr UseTarget true` to use this and just that from true to false or the other way around)
Config.BossMenus = {
['police'] = {
vector3(461.45, -986.2, 30.73),
},
['ambulance'] = {
vector3(335.46, -594.52, 43.28),
},
['realestate'] = {
vector3(-716.11, 261.21, 84.14),
},
['taxi'] = {
vector3(894.96, -179.07, 74.7),
},
['cardealer'] = {
vector3(-27.47, -1107.13, 27.27),
},
['noremorse'] = {
vector3(760.32, -1302.96, 29.84),
},
['weedshop'] = {
vector3(-1335.83, -1240.33, 9.73),
},
}
Config.BossMenuZones = {
['police'] = {
{ coords = vector3(447.23, -974.3, 31.47), length = 1.35, width = 1.45, heading = 351.0, minZ = 30.00, maxZ = 31.73 },
},
['ambulance'] = {
{ coords = vector3(335.46, -594.52, 43.28), length = 1.2, width = 0.6, heading = 341.0, minZ = 43.13, maxZ = 43.73 },
},
['realestate'] = {
{ coords = vector3(-716.11, 261.21, 84.14), length = 0.6, width = 1.0, heading = 25.0, minZ = 83.943, maxZ = 84.74 },
},
['taxi'] = {
{ coords = vector3(894.96, -179.07, 74.7), length = 1.0, width = 3.4, heading = 327.0, minZ = 73.17, maxZ = 74.57 },
},
['cardealer'] = {
{ coords = vector3(-27.47, -1107.13, 27.27), length = 2.4, width = 1.05, heading = 340.0, minZ = 27.07, maxZ = 27.67 },
},
['noremorse'] = {
{ coords = vector3(760.60, -1302.92, 29.84), length = 1.15, width = 2.6, heading = 30.97, minZ = 28.59, maxZ = 30.99 },
},
['weedshop'] = {
{ coords = vector3(-1335.83, -1240.33, 9.73), length = 1.15, width = 2.6, heading = 353.0, minZ = 9.25, maxZ = 10.73 },
},
}
Config.GangMenus = {
['lostmc'] = {
vector3(0, 0, 0),
},
['ballas'] = {
vector3(0, 0, 0),
},
['noremorse'] = {
vector3(273.62, 2985.26, 46.37),
},
['cartel'] = {
vector3(0, 0, 0),
},
['royalties'] = {
vector3(4.19, 252.85, 102.16),
},
}
Config.GangMenuZones = {
['royalties'] = {
{ coords = vector3(4.19, 252.85, 102.16), length = 3.0, width = 3.0, heading = 175.00, minZ = 101.15, maxZ = 102.16 },
},
['noremorse'] = {
{ coords = vector3(273.62, 2985.26, 46.37), length = 3.0, width = 3.0, heading = 9.96, minZ = 46.15, maxZ = 48.50 },
},
}
local QBCore = exports['qb-core']:GetCoreObject()
local PlayerGang = QBCore.Functions.GetPlayerData().gang
local shownGangMenu = false
local DynamicMenuItems = {}
-- UTIL
local function CloseMenuFullGang()
exports['qb-menu']:closeMenu()
exports['qb-core']:HideText()
shownGangMenu = false
end
local function comma_valueGang(amount)
local formatted = amount
while true do
local k
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k == 0) then
break
end
end
return formatted
end
--//Events
AddEventHandler('onResourceStart', function(resource)--if you restart the resource
if resource == GetCurrentResourceName() then
Wait(200)
PlayerGang = QBCore.Functions.GetPlayerData().gang
end
end)
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
PlayerGang = QBCore.Functions.GetPlayerData().gang
end)
RegisterNetEvent('QBCore:Client:OnGangUpdate', function(InfoGang)
PlayerGang = InfoGang
end)
RegisterNetEvent('qb-gangmenu:client:Stash', function()
TriggerServerEvent("inventory:server:OpenInventory", "stash", "boss_" .. PlayerGang.name, {
maxweight = 4000000,
slots = 100,
})
TriggerEvent("inventory:client:SetCurrentStash", "boss_" .. PlayerGang.name)
end)
RegisterNetEvent('qb-gangmenu:client:Warbobe', function()
TriggerEvent('qb-clothing:client:openOutfitMenu')
end)
local function AddGangMenuItem(data, id)
local menuID = id or (#DynamicMenuItems + 1)
DynamicMenuItems[menuID] = deepcopy(data)
return menuID
end
exports("AddGangMenuItem", AddGangMenuItem)
local function RemoveGangMenuItem(id)
DynamicMenuItems[id] = nil
end
exports("RemoveGangMenuItem", RemoveGangMenuItem)
RegisterNetEvent('qb-gangmenu:client:OpenMenu', function()
shownGangMenu = true
local gangMenu = {
{
header = Lang:t("headersgang.bsm").. string.upper(PlayerGang.label),
icon = "fa-solid fa-circle-info",
isMenuHeader = true,
},
{
header = Lang:t("bodygang.manage"),
txt = Lang:t("bodygang.managed"),
icon = "fa-solid fa-list",
params = {
event = "qb-gangmenu:client:ManageGang",
}
},
{
header = Lang:t("bodygang.hire"),
txt = Lang:t("bodygang.hired"),
icon = "fa-solid fa-hand-holding",
params = {
event = "qb-gangmenu:client:HireMembers",
}
},
{
header = Lang:t("bodygang.storage"),
txt = Lang:t("bodygang.storaged"),
icon = "fa-solid fa-box-open",
params = {
event = "qb-gangmenu:client:Stash",
}
},
{
header = Lang:t("bodygang.outfits"),
txt = Lang:t("bodygang.outfitsd"),
icon = "fa-solid fa-shirt",
params = {
event = "qb-gangmenu:client:Warbobe",
}
},
{
header = Lang:t("bodygang.money"),
txt = Lang:t("bodygang.moneyd"),
icon = "fa-solid fa-sack-dollar",
params = {
event = "qb-gangmenu:client:SocietyMenu",
}
},
}
for _, v in pairs(DynamicMenuItems) do
gangMenu[#gangMenu + 1] = v
end
gangMenu[#gangMenu + 1] = {
header = Lang:t("bodygang.exit"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-menu:closeMenu",
}
}
exports['qb-menu']:openMenu(gangMenu)
end)
RegisterNetEvent('qb-gangmenu:client:ManageGang', function()
local GangMembersMenu = {
{
header = Lang:t("bodygang.mempl").. string.upper(PlayerGang.label),
icon = "fa-solid fa-circle-info",
isMenuHeader = true,
},
}
QBCore.Functions.TriggerCallback('qb-gangmenu:server:GetEmployees', function(cb)
for _, v in pairs(cb) do
GangMembersMenu[#GangMembersMenu + 1] = {
header = v.name,
txt = v.grade.name,
icon = "fa-solid fa-circle-user",
params = {
event = "qb-gangmenu:lient:ManageMember",
args = {
player = v,
work = PlayerGang
}
}
}
end
GangMembersMenu[#GangMembersMenu + 1] = {
header = Lang:t("bodygang.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-gangmenu:client:OpenMenu",
}
}
exports['qb-menu']:openMenu(GangMembersMenu)
end, PlayerGang.name)
end)
RegisterNetEvent('qb-gangmenu:lient:ManageMember', function(data)
local MemberMenu = {
{
header = Lang:t("bodygang.mngpl").. data.player.name .. " - " .. string.upper(PlayerGang.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info",
},
}
for k, v in pairs(QBCore.Shared.Gangs[data.work.name].grades) do
MemberMenu[#MemberMenu + 1] = {
header = v.name,
txt = Lang:t("bodygang.grade") .. k,
params = {
isServer = true,
event = "qb-gangmenu:server:GradeUpdate",
icon = "fa-solid fa-file-pen",
args = {
cid = data.player.empSource,
grade = tonumber(k),
gradename = v.name
}
}
}
end
MemberMenu[#MemberMenu + 1] = {
header = Lang:t("bodygang.fireemp"),
icon = "fa-solid fa-user-large-slash",
params = {
isServer = true,
event = "qb-gangmenu:server:FireMember",
args = data.player.empSource
}
}
MemberMenu[#MemberMenu + 1] = {
header = Lang:t("bodygang.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-gangmenu:client:ManageGang",
}
}
exports['qb-menu']:openMenu(MemberMenu)
end)
RegisterNetEvent('qb-gangmenu:client:HireMembers', function()
local HireMembersMenu = {
{
header = Lang:t("bodygang.hireemp") .. string.upper(PlayerGang.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info",
},
}
QBCore.Functions.TriggerCallback('qb-gangmenu:getplayers', function(players)
for _, v in pairs(players) do
if v and v ~= PlayerId() then
HireMembersMenu[#HireMembersMenu + 1] = {
header = v.name,
txt = Lang:t("bodygang.cid") .. v.citizenid .. " - ID: " .. v.sourceplayer,
icon = "fa-solid fa-user-check",
params = {
isServer = true,
event = "qb-gangmenu:server:HireMember",
args = v.sourceplayer
}
}
end
end
HireMembersMenu[#HireMembersMenu + 1] = {
header = Lang:t("bodygang.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-gangmenu:client:OpenMenu",
}
}
exports['qb-menu']:openMenu(HireMembersMenu)
end)
end)
RegisterNetEvent('qb-gangmenu:client:SocietyMenu', function()
QBCore.Functions.TriggerCallback('qb-gangmenu:server:GetAccount', function(cb)
local SocietyMenu = {
{
header = Lang:t("bodygang.balance").. comma_valueGang(cb) .. " - " .. string.upper(PlayerGang.label),
isMenuHeader = true,
icon = "fa-solid fa-circle-info",
},
{
header = Lang:t("bodygang.deposit"),
icon = "fa-solid fa-money-bill-transfer",
txt = Lang:t("bodygang.depositd"),
params = {
event = "qb-gangmenu:client:SocietyDeposit",
args = comma_valueGang(cb)
}
},
{
header = Lang:t("bodygang.withdraw"),
icon = "fa-solid fa-money-bill-transfer",
txt = Lang:t("bodygang.withdrawd"),
params = {
event = "qb-gangmenu:client:SocietyWithdraw",
args = comma_valueGang(cb)
}
},
{
header = Lang:t("bodygang.return"),
icon = "fa-solid fa-angle-left",
params = {
event = "qb-gangmenu:client:OpenMenu",
}
},
}
exports['qb-menu']:openMenu(SocietyMenu)
end, PlayerGang.name)
end)
RegisterNetEvent('qb-gangmenu:client:SocietyDeposit', function(saldoattuale)
local deposit = exports['qb-input']:ShowInput({
header = Lang:t("bodygang.depositm").. saldoattuale,
submitText = Lang:t("bodygang.submit"),
inputs = {
{
type = 'number',
isRequired = true,
name = 'amount',
text = Lang:t("bodygang.amount")
}
}
})
if deposit then
if not deposit.amount then return end
TriggerServerEvent("qb-gangmenu:server:depositMoney", tonumber(deposit.amount))
end
end)
RegisterNetEvent('qb-gangmenu:client:SocietyWithdraw', function(saldoattuale)
local withdraw = exports['qb-input']:ShowInput({
header = Lang:t("bodygang.withdrawm").. saldoattuale,
submitText = Lang:t("bodygang.submit"),
inputs = {
{
type = 'number',
isRequired = true,
name = 'amount',
text = Lang:t("bodygang.amount")
}
}
})
if withdraw then
if not withdraw.amount then return end
TriggerServerEvent("qb-gangmenu:server:withdrawMoney", tonumber(withdraw.amount))
end
end)
-- MAIN THREAD
CreateThread(function()
if Config.UseTarget then
for gang, zones in pairs(Config.GangMenuZones) do
for index, data in ipairs(zones) do
exports['qb-target']:AddBoxZone(gang.."-GangMenu"..index, data.coords, data.length, data.width, {
name = gang.."-GangMenu"..index,
heading = data.heading,
-- debugPoly = true,
minZ = data.minZ,
maxZ = data.maxZ,
}, {
options = {
{
type = "client",
event = "qb-gangmenu:client:OpenMenu",
icon = "fas fa-sign-in-alt",
label = Lang:t("targetgang.label"),
canInteract = function() return gang == PlayerGang.name and PlayerGang.isboss end,
},
},
distance = 2.5
})
end
end
else
while true do
local wait = 2500
local pos = GetEntityCoords(PlayerPedId())
local inRangeGang = false
local nearGangmenu = false
if PlayerGang then
wait = 0
for k, menus in pairs(Config.GangMenus) do
for _, coords in ipairs(menus) do
if k == PlayerGang.name and PlayerGang.isboss then
if #(pos - coords) < 5.0 then
inRangeGang = true
if #(pos - coords) <= 1.5 then
nearGangmenu = true
if not shownGangMenu then
exports['qb-core']:DrawText(Lang:t("drawtextgang.label"), 'left')
end
if IsControlJustReleased(0, 38) then
exports['qb-core']:HideText()
TriggerEvent("qb-gangmenu:client:OpenMenu")
end
end
if not nearGangmenu and shownGangMenu then
CloseMenuFullGang()
shownGangMenu = false
end
end
end
end
end
if not inRangeGang then
Wait(1500)
if shownGangMenu then
CloseMenuFullGang()
shownGangMenu = false
end
end
end
Wait(wait)
end
end
end)
function deepcopy(orig, copies)
copies = copies or {}
local orig_type = type(orig)
local copy
if orig_type == 'table' then
if copies[orig] then
copy = copies[orig]
else
copy = {}
copies[orig] = copy
for orig_key, orig_value in next, orig, nil do
copy[deepcopy(orig_key, copies)] = deepcopy(orig_value, copies)
end
setmetatable(copy, deepcopy(getmetatable(orig), copies))
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
fx_version 'cerulean'
game 'gta5'
description 'qb-bossmenu'
version '2.1.2'
shared_scripts {
'@qb-core/shared/locale.lua',
'locales/en.lua',
'locales/*.lua',
}
client_scripts {
'client/*.lua'
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/*.lua'
}
server_exports {
'AddMoney',
'AddGangMoney',
'RemoveMoney',
'RemoveGangMoney',
'GetAccount',
'GetGangAccount',
}
lua54 'yes'
-- Add translations by MC
local Translations = {
headers = {
['bsm'] = 'Boss Menu - ',
},
body = {
['manage'] = 'Zaměstnanci',
['managed'] = 'List zaměstnanců',
['hire'] = 'Nabrat civilistu',
['hired'] = 'Nabrat nejbližšího civilistu',
['storage'] = 'Trezor',
['storaged'] = 'Otevřít trezor',
['outfits'] = 'Oblečení',
['outfitsd'] = 'Uložené oblečení',
['money'] = 'Finance',
['moneyd'] = 'Zkontrolovat stav účtu',
['mempl'] = 'Spravovat zaměstnance - ',
['mngpl'] = 'Spravovat ',
['grade'] = 'Hodnost: ',
['fireemp'] = 'Propustit zaměstnance',
['hireemp'] = 'Nabrat civilistu - ',
['cid'] = 'ID hráče: ',
['balance'] = 'Stav účtu: $',
['deposit'] = 'Vložit peníze',
['depositd'] = 'Vložit peníze na účet',
['withdraw'] = 'Vybrat peníze',
['withdrawd'] = 'Vybrat penize z kasy',
['depositm'] = 'Vložit peníze <br> Zůstatek financí: $',
['withdrawm'] = 'Vybrat peníze <br> Zůstatek financí: $',
['submit'] = 'Potrvdit',
['amount'] = 'Hodnota',
['return'] = 'Zpět',
['exit'] = 'Odejít',
},
drawtext = {
['label'] = '[E] Open Job Management',
},
target = {
['label'] = 'Vedení Frakce',
},
headersgang = {
['bsm'] = 'Vedení gangů - ',
},
bodygang = {
['manage'] = 'Spravovat členy gangu',
['managed'] = 'Přijímání nebo propouštění členů gangu',
['hire'] = 'Nábor členů',
['hired'] = 'Najmout členy Gangu',
['storage'] = 'Přístup k úložišti',
['storaged'] = 'Otevřít Gang Uložiště',
['outfits'] = 'Outfity',
['outfitsd'] = 'Výměna oblečení',
['money'] = 'Správa peněz',
['moneyd'] = 'Kontrola zůstatku Gangu',
['mempl'] = 'Spravovat Gang členy - ',
['mngpl'] = 'Spravovat ',
['grade'] = 'Hodnost: ',
['fireemp'] = 'Propustit člena',
['hireemp'] = 'Nabrat civilistu - ',
['cid'] = 'ID hráče: ',
['balance'] = 'Stav účtu: $',
['deposit'] = 'Vložit peníze',
['depositd'] = 'Vložit peníze na účet',
['withdraw'] = 'Vybrat peníze',
['withdrawd'] = 'Vybrat penize z kasy',
['depositm'] = 'Vložit peníze <br> Zůstatek financí: $',
['withdrawm'] = 'Vybrat peníze <br> Zůstatek financí: $',
['submit'] = 'Confirm',
['amount'] = 'Potrvdit',
['return'] = 'Zpět',
['exit'] = 'Odejít',
},
drawtextgang = {
['label'] = '[E] Open Gang Management',
},
targetgang = {
['label'] = 'Gang Menu',
}
}
if GetConvar('qb_locale', 'en') == 'cs' then
Lang = Locale:new({
phrases = Translations,
warnOnMissing = true,
fallbackLang = Lang,
})
end
-- Add translations by MC
local Translations = {
headers = {
['bsm'] = 'Boss Menu - ',
},
body = {
['manage'] = 'Manage Employees',
['managed'] = 'Check your Employees List',
['hire'] = 'Hire Employees',
['hired'] = 'Hire Nearby Civilians',
['storage'] = 'Storage Access',
['storaged'] = 'Open Storage',
['outfits'] = 'Outfits',
['outfitsd'] = 'See Saved Outfits',
['money'] = 'Money Management',
['moneyd'] = 'Check your Company Balance',
['mempl'] = 'Manage Employees - ',
['mngpl'] = 'Manage ',
['grade'] = 'Grade: ',
['fireemp'] = 'Fire Employee',
['hireemp'] = 'Hire Employees - ',
['cid'] = 'Citizen ID: ',
['balance'] = 'Balance: $',
['deposit'] = 'Deposit',
['depositd'] = 'Deposit Money into account',
['withdraw'] = 'Withdraw',
['withdrawd'] = 'Withdraw Money from account',
['depositm'] = 'Deposit Money <br> Available Balance: $',
['withdrawm'] = 'Withdraw Money <br> Available Balance: $',
['submit'] = 'Confirm',
['amount'] = 'Amount',
['return'] = 'Return',
['exit'] = 'Return',
},
drawtext = {
['label'] = '[E] Open Job Management',
},
target = {
['label'] = 'Boss Menu',
},
headersgang = {
['bsm'] = 'Gang Management - ',
},
bodygang = {
['manage'] = 'Manage Gang Members',
['managed'] = 'Recruit or Fire Gang Members',
['hire'] = 'Recruit Members',
['hired'] = 'Hire Gang Members',
['storage'] = 'Storage Access',
['storaged'] = 'Open Gang Stash',
['outfits'] = 'Outfits',
['outfitsd'] = 'Change Clothes',
['money'] = 'Money Management',
['moneyd'] = 'Check your Gang Balance',
['mempl'] = 'Manage Gang Members - ',
['mngpl'] = 'Manage ',
['grade'] = 'Grade: ',
['fireemp'] = 'Fire',
['hireemp'] = 'Hire Gang Members - ',
['cid'] = 'Citizen ID: ',
['balance'] = 'Balance: $',
['deposit'] = 'Deposit',
['depositd'] = 'Deposit Money into account',
['withdraw'] = 'Withdraw',
['withdrawd'] = 'Withdraw Money from account',
['depositm'] = 'Deposit Money <br> Available Balance: $',
['withdrawm'] = 'Withdraw Money <br> Available Balance: $',
['submit'] = 'Confirm',
['amount'] = 'Amount',
['return'] = 'Return',
['exit'] = 'Exit',
},
drawtextgang = {
['label'] = '[E] Open Gang Management',
},
targetgang = {
['label'] = 'Gang Menu',
}
}
Lang = Lang or Locale:new({
phrases = Translations,
warnOnMissing = true
})
local Translations = {
headers = {
['bsm'] = 'Gestion Job - ',
},
drawtext = {
['label'] = '[E] Gestion Job',
},
target = {
['label'] = 'Menu Job',
},
body = {
['manage'] = 'Gérer les membres',
['managed'] = 'Regarder la liste des membres',
['hire'] = 'Recruter une personne',
['hired'] = 'Recruter un civil à proximité',
['storage'] = 'Accès au coffre',
['storaged'] = 'Ouvrir le coffre',
['outfits'] = 'Tenues',
['outfitsd'] = 'Voir les tenues',
['money'] = 'Gestion d\'argent',
['moneyd'] = 'Consulter le solde',
['mempl'] = 'Gérer un membre - ',
['mngpl'] = 'Gérer ',
['grade'] = 'Grade: ',
['fireemp'] = 'Expulser',
['hireemp'] = 'Recruter - ',
['hiredpeople'] = 'Vous embauchez %s %s en tant que %s',
['hiredas'] = 'Vous êtes embauché en tant que %s',
['cannotpromote'] = 'Vous ne pouvez pas promouvoir à ce grade',
['sucessfulluypromoted'] = 'Membre promu avec succès.',
['bepromoted'] = 'Vous avez été promu en tant que %s',
['gradenotexists'] = 'Ce grade n\'existe pas',
['civiliannotincity'] = 'La personne n\'est pas en ville',
['successfired'] = 'Employé licencié',
['befired'] = 'Vous avez été licencié, bonne chance',
['cantfiremyself'] = 'Vous ne pouvez pas vous licencier vous même',
['error'] = 'Erreur',
['cid'] = 'Citizen ID: ',
['balance'] = 'Solde: $',
['deposit'] = 'Déposer',
['depositd'] = 'Déposer de l\'argent dans le compte',
['withdraw'] = 'Retirer',
['withdrawd'] = 'Retirer de l\'argent depuis le compte',
['depositm'] = 'Dépôt d\'argent <br> Solde disponible: $',
['withdrawm'] = 'Retrait d\'argent <br> Solde disponible: $',
['submit'] = 'Confirmer',
['amount'] = 'Montant',
['return'] = 'Retour',
['exit'] = 'Quitter',
},
headersgang = {
['bsm'] = 'Gestion Gang - ',
},
drawtextgang = {
['label'] = '[E] Gestion Gang',
},
targetgang = {
['label'] = 'Menu Gang',
},
bodygang = {
['manage'] = 'Gérer les membres',
['managed'] = 'Regarder la liste de smembres',
['hire'] = 'Recruter une personne',
['hired'] = 'Recruter un civil à proximité',
['storage'] = 'Accès au coffre',
['storaged'] = 'Ouvrir le coffre',
['outfits'] = 'Tenues',
['outfitsd'] = 'Voir les tenues',
['money'] = 'Gestion d\'argent',
['moneyd'] = 'Consulter le solde',
['mempl'] = 'Gérer un membre - ',
['mngpl'] = 'Gérer ',
['grade'] = 'Grade: ',
['fireemp'] = 'Expulser',
['hireemp'] = 'Recruter - ',
['cid'] = 'Citizen ID: ',
['balance'] = 'Solde: $',
['deposit'] = 'Déposer',
['depositd'] = 'Déposer de l\'argent dans le compte',
['withdraw'] = 'Retirer',
['withdrawd'] = 'Retirer de l\'argent depuis le compte',
['depositm'] = 'Dépôt d\'argent <br> Solde disponible: $',
['withdrawm'] = 'Retrait d\'argent <br> Solde disponible: $',
['submit'] = 'Confirmer',
['amount'] = 'Montant',
['return'] = 'Retour',
['exit'] = 'Quitter',
}
}
if GetConvar('qb_locale', 'en') == 'fr' then
Lang = Locale:new({
phrases = Translations,
warnOnMissing = true,
fallbackLang = Lang,
})
end
local Translations = {
headers = {
['bsm'] = 'Menu do Chefe - ',
},
body = {
['manage'] = 'Gerir Funcionários',
['managed'] = 'Verificar sua Lista de Funcionários',
['hire'] = 'Contratar Funcionários',
['hired'] = 'Contratar Civis próximos',
['storage'] = 'Acesso ao Armazenamento',
['storaged'] = 'Abrir Armazenamento',
['outfits'] = 'Fatos',
['outfitsd'] = 'Ver Fatos Salvos',
['money'] = 'Gestão de Dinheiro',
['moneyd'] = 'Verificar o Saldo da Empresa',
['mempl'] = 'Gerir Funcionários - ',
['mngpl'] = 'Gerir ',
['grade'] = 'Cargo: ',
['fireemp'] = 'Despedir Funcionário',
['hireemp'] = 'Contratar Funcionários - ',
['cid'] = 'Número de Cidadão: ',
['balance'] = 'Saldo: €',
['deposit'] = 'Depósito',
['depositd'] = 'Depositar Dinheiro na conta',
['withdraw'] = 'Levantar',
['withdrawd'] = 'Levantar Dinheiro da conta',
['depositm'] = 'Depositar Dinheiro <br> Saldo Disponível: €',
['withdrawm'] = 'Levantar Dinheiro <br> Saldo Disponível: €',
['submit'] = 'Confirmar',
['amount'] = 'Montante',
['return'] = 'Voltar',
['exit'] = 'Voltar',
},
drawtext = {
['label'] = '[E] Abrir Gestão ',
},
target = {
['label'] = 'Menu do Chefe',
},
headersgang = {
['bsm'] = 'Gerir Gang - ',
},
bodygang = {
['manage'] = 'Gerir Membros do Gang',
['managed'] = 'Recrutar ou Despedir Membros do Gang',
['hire'] = 'Recrutar Membros',
['hired'] = 'Contratar Membros do Gang',
['storage'] = 'Acesso ao Armazenamento',
['storaged'] = 'Abrir Armazenamento do Gang',
['outfits'] = 'Roupas',
['outfitsd'] = 'Mudar de Roupa',
['money'] = 'Gestão de Dinheiro',
['moneyd'] = 'Verificar o Saldo do Gang',
['mempl'] = 'Gerir Membros do Gang - ',
['mngpl'] = 'Gerir ',
['grade'] = 'Grau: ',
['fireemp'] = 'Despedir',
['hireemp'] = 'Contratar Membros - ',
['cid'] = 'ID de cidadão: ',
['balance'] = 'Saldo: €',
['deposit'] = 'Depositar',
['depositd'] = 'Depositar dinheiro na conta',
['withdraw'] = 'Levantamento',
['withdrawd'] = 'Levantar dinheiro da conta',
['depositm'] = 'Depositar Dinheiro <br> Saldo Disponível: €',
['withdrawm'] = 'Levantar Dinheiro <br> Saldo Disponível: €',
['submit'] = 'Confirmar',
['amount'] = 'Montante',
['return'] = 'Voltar',
['exit'] = 'Voltar',
},
drawtextgang = {
['label'] = '[E] Abrir Gestão Gang',
},
targetgang = {
['label'] = 'Gang Menu',
}
}
if GetConvar('qb_locale', 'en') == 'pt' then
Lang = Locale:new({
phrases = Translations,
warnOnMissing = true,
fallbackLang = Lang,
})
end
-- Traduceri in Romana - cu diacritice corecte
local Translations = {
headers = {
['bsm'] = 'Meniu Sef - ',
},
body = {
['manage'] = 'Gestioneaza Angajatii',
['managed'] = 'Verifica Lista Angajatilor',
['hire'] = 'Angajeaza Personal',
['hired'] = 'Angajeaza Civili din Apropiere',
['storage'] = 'Acces Depozit',
['storaged'] = 'Deschide Depozitul',
['outfits'] = 'Tinute',
['outfitsd'] = 'Vezi Tinutele Salvate',
['money'] = 'Gestiune Financiara',
['moneyd'] = 'Verifica Soldul Companiei',
['mempl'] = 'Gestioneaza Angajatii - ',
['mngpl'] = 'Gestioneaza ',
['grade'] = 'Grad: ',
['fireemp'] = 'Concediaza Angajatul',
['hireemp'] = 'Angajeaza Personal - ',
['hiredpeople'] = 'L-ai angajat pe %s %s ca %s',
['hiredas'] = 'Ai fost angajat ca %s',
['cannotpromote'] = 'Nu poti promova la acest rang',
['sucessfulluypromoted'] = 'Angajat promovat cu succes!',
['bepromoted'] = 'Ai fost promovat la rangul %s',
['gradenotexists'] = 'Acest grad nu exista',
['civiliannotincity'] = 'Civilul nu este in oras',
['successfired'] = 'Angajat concediat!',
['befired'] = 'Ai fost concediat, mult succes!',
['cantfiremyself'] = 'Nu te poti concedia pe tine insuti',
['error'] = 'Eroare',
['cid'] = 'ID Cetatean: ',
['balance'] = 'Sold: $',
['deposit'] = 'Depunere',
['depositd'] = 'Depune Bani in Cont',
['withdraw'] = 'Retragere',
['withdrawd'] = 'Retrage Bani din Cont',
['depositm'] = 'Depune Bani <br> Sold Disponibil: $',
['withdrawm'] = 'Retrage Bani <br> Sold Disponibil: $',
['submit'] = 'Confirma',
['amount'] = 'Suma',
['return'] = 'Inapoi',
['exit'] = 'Inapoi',
},
drawtext = {
['label'] = '[E] Deschide Management Job',
},
target = {
['label'] = 'Meniu Sef',
},
headersgang = {
['bsm'] = 'Management Gang - ',
},
bodygang = {
['manage'] = 'Gestioneaza Membrii Gangului',
['managed'] = 'Recruteaza sau Concediaza Membri',
['hire'] = 'Recruteaza Membri',
['hired'] = 'Angajeaza Membri in Gang',
['storage'] = 'Acces Depozit',
['storaged'] = 'Deschide Depozitul Gangului',
['outfits'] = 'Tinute',
['outfitsd'] = 'Schimba Hainele',
['money'] = 'Gestiune Financiara',
['moneyd'] = 'Verifica Soldul Gangului',
['mempl'] = 'Gestioneaza Membrii Gangului - ',
['mngpl'] = 'Gestioneaza ',
['grade'] = 'Grad: ',
['fireemp'] = 'Concediaza',
['hireemp'] = 'Angajeaza Membri Gang - ',
['cid'] = 'ID Cetatean: ',
['balance'] = 'Sold: $',
['deposit'] = 'Depunere',
['depositd'] = 'Depune Bani in Cont',
['withdraw'] = 'Retragere',
['withdrawd'] = 'Retrage Bani din Cont',
['depositm'] = 'Depune Bani <br> Sold Disponibil: $',
['withdrawm'] = 'Retrage Bani <br> Sold Disponibil: $',
['submit'] = 'Confirma',
['amount'] = 'Suma',
['return'] = 'Inapoi',
['exit'] = 'Iesire',
},
drawtextgang = {
['label'] = '[E] Deschide Management Gang',
},
targetgang = {
['label'] = 'Meniu Gang',
}
}
if GetConvar('qb_locale', 'en') == 'ro' then
Lang = Locale:new({
phrases = Translations,
warnOnMissing = true,
fallbackLang = Lang,
})
end