diff --git a/fxmanifest.lua b/fxmanifest.lua index a9912ff..975faf3 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -33,6 +33,7 @@ server_scripts { 'modules/notify/**/server.lua', 'modules/housing/**/server.lua', 'modules/skills/**/server.lua', + 'modules/bossmenu/**/server.lua', "lib/**/server.lua", 'init.lua', } @@ -59,6 +60,7 @@ client_scripts { 'modules/shops/**/client.lua', 'modules/housing/**/client.lua', 'modules/skills/**/client.lua', + 'modules/bossmenu/**/client.lua', 'init.lua', -- 'unit_tests/input_test.lua', } diff --git a/init.lua b/init.lua index 9751263..bfd4c31 100644 --- a/init.lua +++ b/init.lua @@ -46,6 +46,7 @@ end --Bridge Bridge.RegisterModule("Framework", Framework) +Bridge.RegisterModule("BossMenu", BossMenu) Bridge.RegisterModule("Inventory", Inventory) Bridge.RegisterModule("Notify", Notify) Bridge.RegisterModule("HelpText", HelpText) diff --git a/modules/bossmenu/_default/client.lua b/modules/bossmenu/_default/client.lua new file mode 100644 index 0000000..63a8efa --- /dev/null +++ b/modules/bossmenu/_default/client.lua @@ -0,0 +1,24 @@ +---@diagnostic disable: duplicate-set-field +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "default" +end + +RegisterNetEvent('community_bridge:client:OpenBossMenu', function(jobName, jobType) + -- these systems seem to do the verification for isboss themselves, so we don't need to check if the player is a boss. + -- also this source check is to ensure that the event is only triggered by the server. + if source ~= 65535 then return end + if BossMenu.GetResourceName() == "esx_society" then + local ESX = exports["es_extended"]:getSharedObject() -- better solution needed but fuck it for now. + TriggerEvent('esx_society:openBossMenu', jobName, function(menu) + ESX.CloseContext() + end, {wash = false}) + elseif BossMenu.GetResourceName() == "qbx_management" then + exports.qbx_management:OpenBossMenu(jobType) + end +end) + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/_default/server.lua b/modules/bossmenu/_default/server.lua new file mode 100644 index 0000000..24693c7 --- /dev/null +++ b/modules/bossmenu/_default/server.lua @@ -0,0 +1,14 @@ +---@diagnostic disable: duplicate-set-field +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "default" +end + +BossMenu.OpenBossMenu = function(src, jobName, jobType) + print("You are using the community_bridge module for boss menus. Please ensure you have the correct dependencies installed.") +end + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/esx_society/client.lua b/modules/bossmenu/esx_society/client.lua new file mode 100644 index 0000000..8794fb2 --- /dev/null +++ b/modules/bossmenu/esx_society/client.lua @@ -0,0 +1,12 @@ +---@diagnostic disable: duplicate-set-field +if GetResourceState('esx_society') ~= 'started' then return end + +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "esx_society" +end + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/esx_society/server.lua b/modules/bossmenu/esx_society/server.lua new file mode 100644 index 0000000..5bfd98e --- /dev/null +++ b/modules/bossmenu/esx_society/server.lua @@ -0,0 +1,21 @@ +---@diagnostic disable: duplicate-set-field +if GetResourceState('esx_society') ~= 'started' then return end + +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "esx_society" +end + +local registeredSocieties = {} +BossMenu.OpenBossMenu = function(src, jobName, jobType) + if not registeredSocieties[jobName] then + exports["esx_society"]:registerSociety(jobName, jobName, 'society_' .. jobName, 'society_' .. jobName, 'society_' .. jobName, {type = 'private'}) + registeredSocieties[jobName] = true + end + TriggerClientEvent("community_bridge:client:OpenBossMenu", src, jobName, jobType) +end + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/qb-management/client.lua b/modules/bossmenu/qb-management/client.lua new file mode 100644 index 0000000..3c91a62 --- /dev/null +++ b/modules/bossmenu/qb-management/client.lua @@ -0,0 +1,13 @@ +---@diagnostic disable: duplicate-set-field +if GetResourceState('qb-management') ~= 'started' then return end +if GetResourceState('qbx_management') == 'started' then return end + +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "qb-management" +end + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/qb-management/server.lua b/modules/bossmenu/qb-management/server.lua new file mode 100644 index 0000000..3515c8f --- /dev/null +++ b/modules/bossmenu/qb-management/server.lua @@ -0,0 +1,17 @@ +---@diagnostic disable: duplicate-set-field +if GetResourceState('qb-management') ~= 'started' then return end +if GetResourceState('qbx_management') == 'started' then return end + +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "qb-management" +end + +BossMenu.OpenBossMenu = function(src, jobName, jobType) + TriggerClientEvent("qb-bossmenu:client:OpenMenu", src) +end + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/qbx_management/client.lua b/modules/bossmenu/qbx_management/client.lua new file mode 100644 index 0000000..8aaa008 --- /dev/null +++ b/modules/bossmenu/qbx_management/client.lua @@ -0,0 +1,12 @@ +---@diagnostic disable: duplicate-set-field +if GetResourceState('qbx_management') ~= 'started' then return end + +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "qbx_management" +end + +return BossMenu \ No newline at end of file diff --git a/modules/bossmenu/qbx_management/server.lua b/modules/bossmenu/qbx_management/server.lua new file mode 100644 index 0000000..da3d3c9 --- /dev/null +++ b/modules/bossmenu/qbx_management/server.lua @@ -0,0 +1,16 @@ +---@diagnostic disable: duplicate-set-field +if GetResourceState('qbx_management') ~= 'started' then return end + +BossMenu = BossMenu or {} + +---This will get the name of the module being used. +---@return string +BossMenu.GetResourceName = function() + return "qbx_management" +end + +BossMenu.OpenBossMenu = function(src, jobName, jobType) + TriggerClientEvent("community_bridge:client:OpenBossMenu", src, jobName, jobType) +end + +return BossMenu \ No newline at end of file