-
Notifications
You must be signed in to change notification settings - Fork 0
/
client_menu.lua
159 lines (128 loc) · 6.16 KB
/
client_menu.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
local showMenu = false
local Config = {}
-- Keybind Lookup table
local keybindControls = {
["`"] = 243, ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118
}
local MAX_MENU_ITEMS = 10
-- Main thread
CreateThread(function()
local keyBind = "F1"
local keyBind2 = "-"
while true do
Wait(0)
SetBigmapActive(false, false)
if IsControlPressed(1, keybindControls[keyBind]) or IsControlPressed(1, keybindControls[keyBind2]) and GetLastInputMethod(2) and showMenu then
showMenu = false
SetNuiFocus(false, false)
end
if IsControlPressed(1, keybindControls[keyBind]) or IsControlPressed(1, keybindControls[keyBind2]) and GetLastInputMethod(2) then
showMenu = true
local enabledMenus = {}
--local entity = exports['rhodinium-callbacks']:GetCurrentEntity()
for _, menuConfig in ipairs(rootMenuConfig) do
if menuConfig:enableMenu() then
local dataElements = {}
local hasSubMenus = false
if menuConfig.subMenus ~= nil and #menuConfig.subMenus > 0 then
hasSubMenus = true
local previousMenu = dataElements
local currentElement = {}
for i = 1, #menuConfig.subMenus do
-- if newSubMenus[menuConfig.subMenus[i]] ~= nil and newSubMenus[menuConfig.subMenus[i]].enableMenu ~= nil and not newSubMenus[menuConfig.subMenus[i]]:enableMenu() then
-- goto continue
-- end
currentElement[#currentElement+1] = newSubMenus[menuConfig.subMenus[i]]
currentElement[#currentElement].id = menuConfig.subMenus[i]
currentElement[#currentElement].enableMenu = nil
if i % MAX_MENU_ITEMS == 0 and i < (#menuConfig.subMenus - 1) then
previousMenu[MAX_MENU_ITEMS + 1] = {
id = "_more",
title = "More",
icon = "#more",
items = currentElement
}
previousMenu = currentElement
currentElement = {}
end
--::continue::
end
if #currentElement > 0 then
previousMenu[MAX_MENU_ITEMS + 1] = {
id = "_more",
title = "More",
icon = "#more",
items = currentElement
}
end
dataElements = dataElements[MAX_MENU_ITEMS + 1].items
end
enabledMenus[#enabledMenus+1] = {
id = menuConfig.id,
title = menuConfig.displayName,
functionName = menuConfig.functionName,
icon = menuConfig.icon,
}
if hasSubMenus then
enabledMenus[#enabledMenus].items = dataElements
end
end
end
SendNUIMessage({
state = "show",
resourceName = GetCurrentResourceName(),
data = enabledMenus,
--entity = entity,
menuKeyBind = keyBind
})
SetCursorLocation(0.5, 0.5)
SetNuiFocus(true, true)
-- Play sound
PlaySoundFrontend(-1, "NAV", "HUD_AMMO_SHOP_SOUNDSET", 1)
while showMenu == true do Wait(100) end
Wait(100)
while IsControlPressed(1, keybindControls[keyBind]) or IsControlPressed(1, keybindControls[keyBind2]) and GetLastInputMethod(2) do Wait(100) end
end
end
end)
-- Callback function for closing menu
RegisterNUICallback('closemenu', function(data, cb)
-- Clear focus and destroy UI
showMenu = false
SetNuiFocus(false, false)
SendNUIMessage({
state = 'destroy'
})
-- Play sound
PlaySoundFrontend(-1, "NAV", "HUD_AMMO_SHOP_SOUNDSET", 1)
-- Send ACK to callback function
cb('ok')
end)
-- Callback function for when a slice is clicked, execute command
RegisterNUICallback('triggerAction', function(data, cb)
-- Clear focus and destroy UI
showMenu = false
SetNuiFocus(false, false)
SendNUIMessage({
state = 'destroy'
})
-- Play sound
PlaySoundFrontend(-1, "NAV", "HUD_AMMO_SHOP_SOUNDSET", 1)
-- Run command
--ExecuteCommand(data.action)
TriggerEvent(data.action, data.parameters)
-- Send ACK to callback function
cb('ok')
end)
RegisterNetEvent("menu:menuexit")
AddEventHandler("menu:menuexit", function()
showMenu = false
SetNuiFocus(false, false)
end)
RegisterCommand("nui_false", function(source, args)
showMenu = false
SetNuiFocus(false, false)
SendNUIMessage({
state = 'destroy'
})
end)