forked from Tommo-101/Vehicle-UI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.lua
More file actions
211 lines (182 loc) · 6.06 KB
/
client.lua
File metadata and controls
211 lines (182 loc) · 6.06 KB
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
_menuPool = NativeUI.CreatePool()
function ShowNotification(text)
SetNotificationTextEntry("STRING")
AddTextComponentString(text)
DrawNotification(false, false)
end
function has_hash_value (tab, val)
for index, value in ipairs(tab) do
if GetHashKey(value) == val then
return true
end
end
return false
end
cardoors = {}
for k, v in pairs (Config.doors) do
cardoors[k] = v
end
carwindows = {}
for k, v in pairs (Config.windows) do
carwindows[k] = v
end
---- Creating Menus
function LiveryMenu(vehicle, menu)
local liveryMenu = _menuPool:AddSubMenu(menu, "Livery", "Edit vehicle liveries", true, true, true)
local livery_count = GetVehicleLiveryCount(vehicle)
local livery_list = {}
local fetched_liveries = false
for liveryID = 1, livery_count do
livery_list[liveryID] = liveryID
fetched_liveries = true
end
local liveryItem = NativeUI.CreateListItem("Livery", livery_list, GetVehicleLivery(vehicle))
liveryMenu:AddItem(liveryItem)
liveryMenu.OnListChange = function(sender, item, index)
if item == liveryItem then
SetVehicleLivery(vehicle,item:IndexToItem(index))
end
end
end
function ExtrasMenu(vehicle, menu)
local extrasMenu = _menuPool:AddSubMenu(menu, "Extras", "Edit vehicle extras", true, true)
local veh_extras = {['vehicleExtras'] = {}}
local items = {['vehicle'] = {}}
local fetched_extras = false
for extraID = 0, 20 do
if DoesExtraExist(vehicle, extraID) then
veh_extras.vehicleExtras[extraID] = (IsVehicleExtraTurnedOn(vehicle, extraID) == 1)
fetched_extras = true
end
end
if fetched_extras then
for k, v in pairs(veh_extras.vehicleExtras) do
local extraItem = NativeUI.CreateCheckboxItem('Extra ' .. k, veh_extras.vehicleExtras[k],"Toggle for Extra "..k)
extrasMenu:AddItem(extraItem)
items.vehicle[k] = extraItem
end
extrasMenu.OnCheckboxChange = function(sender, item, checked)
for k, v in pairs(items.vehicle) do
if item == v then
veh_extras.vehicleExtras[k] = checked
if veh_extras.vehicleExtras[k] then
SetVehicleExtra(vehicle, k, 0)
else
SetVehicleExtra(vehicle, k, 1)
end
end
end
end
end
end
function AddLocksEngineMenu(vehicle, menu)
local lockMenu = NativeUI.CreateItem("Toggle Locks", "Lock/Unlock vehicle")
local engineMenu = NativeUI.CreateItem("Toggle Engine", "Start/Stop engine")
menu:AddItem(lockMenu)
menu:AddItem(engineMenu)
menu.OnListChange = function(sender, item, index)
print("Beep Beep.")
end
menu.OnItemSelect = function(sender, item, index)
if item == lockMenu then
print("Lock status:")
print(GetVehicleDoorLockStatus(vehicle))
if GetVehicleDoorLockStatus(vehicle) == 1 or GetVehicleDoorLockStatus(vehicle) == 0 then
SetVehicleDoorsLocked(vehicle,4)
ShowNotification("Locking Doors")
else
SetVehicleDoorsLocked(vehicle,1)
ShowNotification("Unlocking Doors")
end
end
if item == engineMenu then
print("engine running?:")
print(GetIsVehicleEngineRunning(vehicle))
if GetIsVehicleEngineRunning(vehicle) then
SetVehicleEngineOn(vehicle,false,false,true)
else
SetVehicleEngineOn(vehicle,true,false,true)
end
end
end
end
function AddDoorsMenu(vehicle, menu)
local doorMenu = _menuPool:AddSubMenu(menu, "Doors", "Open/Close doors", true, true)
for k, v in pairs(cardoors) do
newIndex = k - 1
if DoesVehicleHaveDoor(vehicle, newIndex) then
local doorItem = NativeUI.CreateItem("Toggle "..v,"Toggle for "..v)
doorMenu:AddItem(doorItem)
end
end
doorMenu.OnItemSelect = function(sender, item, index)
newIndex = index - 1
if DoesVehicleHaveDoor(vehicle, newIndex) then
local isopen = GetVehicleDoorAngleRatio(vehicle,newIndex)
if isopen == 0 then
SetVehicleDoorOpen(vehicle,newIndex,0,0)
ShowNotification("Opening "..Config.doors[index].." Door")
else
SetVehicleDoorShut(vehicle,newIndex,0)
ShowNotification("Shutting "..Config.doors[index].." Door")
end
end
end
end
function AddWindowsMenu(vehicle, menu)
local windowMenu = _menuPool:AddSubMenu(menu, "Windows", "Open/Close windows", true, true)
for k, v in pairs(carwindows) do
local windowItem = NativeUI.CreateItem("Toggle "..v.." Window","")
windowMenu:AddItem(windowItem)
end
windowMenu.OnItemSelect = function(sender, item, index)
newIndex = index - 1
local isopen = IsVehicleWindowIntact(vehicle,newIndex)
if isopen then
RollDownWindow(vehicle,newIndex,0,0)
ShowNotification("Opening "..Config.windows[index].." Window")
else
RollUpWindow(vehicle,newIndex,0)
ShowNotification("Shutting "..Config.windows[index].." Window")
end
end
end
function openDynamicMenu(vehicle)
_menuPool:Remove()
if vehMenu ~= nil and vehMenu:Visible() then
vehMenu:Visible(false)
return
end
vehMenu = NativeUI.CreateMenu(Config.mTitle, 'Edit your vehicle', 5, 100,Config.mBG[1],Config.mBG[2])
_menuPool:Add(vehMenu)
LiveryMenu(vehicle, vehMenu)
ExtrasMenu(vehicle, vehMenu)
AddDoorsMenu(vehicle, vehMenu)
AddWindowsMenu(vehicle, vehMenu)
AddLocksEngineMenu(vehicle, vehMenu)
_menuPool:RefreshIndex()
_menuPool:MouseControlsEnabled (false);
_menuPool:MouseEdgeEnabled (false);
_menuPool:ControlDisablingEnabled(false);
end
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
_menuPool:ProcessMenus()
local ped = GetPlayerPed(-1)
local vehicle = GetVehiclePedIsIn(ped, false)
if IsControlJustReleased(1, Config.menuKey) then
if IsPedInAnyVehicle(ped, false) and GetPedInVehicleSeat(vehicle, -1) == ped then
print("Open Menu!")
collectgarbage()
openDynamicMenu(vehicle)
vehMenu:Visible(not vehMenu:Visible())
end
end
if IsPedInAnyVehicle(ped, false) == false then
if vehMenu ~= nil and vehMenu:Visible() then
vehMenu:Visible(false)
end
end
end
end)