Skip to content

Commit 0ec4e9d

Browse files
committed
sirenEdit: Tidy up
1 parent 200d391 commit 0ec4e9d

File tree

2 files changed

+128
-121
lines changed

2 files changed

+128
-121
lines changed

[gameplay]/sirenEdit/script.lua

Lines changed: 127 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,20 @@ guiComboBoxAddItem ( sirenType, "Single" )
6565
guiComboBoxAddItem ( sirenType, "Dual" )
6666
guiComboBoxSetSelected ( sirens, 0 )
6767
guiComboBoxSetSelected ( numberOfSirens, 0 )
68+
6869
function sirenCmd()
6970
local veh = getPedOccupiedVehicle ( localPlayer )
7071
if ( guiGetVisible ( myWindow ) == false ) then
71-
if ( veh ~= false ) then
72-
guiSetVisible ( myWindow, true )
73-
showCursor( true )
74-
InitUI ( )
75-
vParamsTable = getVehicleSirenParams( veh )
76-
if ( vParamsTable == false ) then
77-
vParamsTable = { SirenCount = 1, SirenType = 4, Flags = { Silent = true, DoLOSCheck = true, UseRandomiser = true, ["360"]=true } }
78-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
72+
if ( veh ~= false ) then
73+
guiSetVisible ( myWindow, true )
74+
showCursor( true )
75+
InitUI ( )
76+
vParamsTable = getVehicleSirenParams( veh )
77+
if ( vParamsTable == false ) then
78+
vParamsTable = { SirenCount = 1, SirenType = 4, Flags = { Silent = true, DoLOSCheck = true, UseRandomiser = true, ["360"]=true } }
79+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
80+
end
7981
end
80-
end
8182
else
8283
guiSetVisible ( myWindow, false )
8384
showCursor ( false )
@@ -105,33 +106,35 @@ function applySirenTable ( veh, sirenTable, bSync )
105106
end
106107
end
107108
end
109+
108110
function InitUI ( )
109111
local veh = getPedOccupiedVehicle ( localPlayer )
110-
local selectedItem = guiComboBoxGetSelected ( sirens ) + 1
111-
if ( veh ) then
112-
local sirensTable = getVehicleSirens(veh)
113-
guiScrollBarSetScrollPosition ( sirensX, 50 + ( sirensTable[selectedItem].x * 10 ) )
114-
guiScrollBarSetScrollPosition ( sirensY, 50 + ( sirensTable[selectedItem].y * 10 ) )
115-
guiScrollBarSetScrollPosition ( sirensZ, 50 + ( sirensTable[selectedItem].z * 10 ) )
116-
guiScrollBarSetScrollPosition ( sirensAlpha, 255 )
117-
guiScrollBarSetScrollPosition ( sirensMinAlpha, 255 )
118-
guiSetText ( posLabelX, "Position X: " .. string.format( "%.3f", sirensTable[selectedItem].x ) )
119-
guiSetText ( posLabelY, "Position Y: " .. string.format( "%.3f", sirensTable[selectedItem].y ) )
120-
guiSetText ( posLabelZ, "Position Z: " .. string.format( "%.3f", sirensTable[selectedItem].z ) )
121-
guiSetText ( alphaLabel, "Alpha: " .. sirensTable[selectedItem].Alpha )
122-
guiSetText ( minAlphaLabel, "Minimum Alpha: " .. sirensTable[selectedItem].Min_Alpha )
123-
guiSetText ( sirensBtnRGB, string.format ( "Colour: #%02X%02X%02X", sirensTable[selectedItem].Red, sirensTable[selectedItem].Green, sirensTable[selectedItem].Blue ) )
124-
guiCheckBoxSetSelected ( sirensChk360, vParamsTable.Flags["360"] )
125-
guiCheckBoxSetSelected ( sirensChkLOS, vParamsTable.Flags.DoLOSCheck )
126-
guiCheckBoxSetSelected ( sirensChkRand, vParamsTable.Flags.UseRandomiser )
127-
guiCheckBoxSetSelected ( sirensChkSilent, vParamsTable.Flags.Silent )
128-
guiComboBoxSetSelected ( numberOfSirens, vParamsTable.SirenCount - 1 )
129-
guiComboBoxSetSelected ( sirenType, vParamsTable.SirenType - 1 )
130-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
131-
sirensTable[selectedItem].Alpha = 255
132-
sirensTable[selectedItem].Min_Alpha = 255
133-
applySirenTable(veh, sirensTable, false)
112+
if ( not veh ) then
113+
return
134114
end
115+
local selectedItem = guiComboBoxGetSelected ( sirens ) + 1
116+
local sirensTable = getVehicleSirens(veh)
117+
guiScrollBarSetScrollPosition ( sirensX, 50 + ( sirensTable[selectedItem].x * 10 ) )
118+
guiScrollBarSetScrollPosition ( sirensY, 50 + ( sirensTable[selectedItem].y * 10 ) )
119+
guiScrollBarSetScrollPosition ( sirensZ, 50 + ( sirensTable[selectedItem].z * 10 ) )
120+
guiScrollBarSetScrollPosition ( sirensAlpha, 255 )
121+
guiScrollBarSetScrollPosition ( sirensMinAlpha, 255 )
122+
guiSetText ( posLabelX, "Position X: " .. string.format( "%.3f", sirensTable[selectedItem].x ) )
123+
guiSetText ( posLabelY, "Position Y: " .. string.format( "%.3f", sirensTable[selectedItem].y ) )
124+
guiSetText ( posLabelZ, "Position Z: " .. string.format( "%.3f", sirensTable[selectedItem].z ) )
125+
guiSetText ( alphaLabel, "Alpha: " .. sirensTable[selectedItem].Alpha )
126+
guiSetText ( minAlphaLabel, "Minimum Alpha: " .. sirensTable[selectedItem].Min_Alpha )
127+
guiSetText ( sirensBtnRGB, string.format ( "Colour: #%02X%02X%02X", sirensTable[selectedItem].Red, sirensTable[selectedItem].Green, sirensTable[selectedItem].Blue ) )
128+
guiCheckBoxSetSelected ( sirensChk360, vParamsTable.Flags["360"] )
129+
guiCheckBoxSetSelected ( sirensChkLOS, vParamsTable.Flags.DoLOSCheck )
130+
guiCheckBoxSetSelected ( sirensChkRand, vParamsTable.Flags.UseRandomiser )
131+
guiCheckBoxSetSelected ( sirensChkSilent, vParamsTable.Flags.Silent )
132+
guiComboBoxSetSelected ( numberOfSirens, vParamsTable.SirenCount - 1 )
133+
guiComboBoxSetSelected ( sirenType, vParamsTable.SirenType - 1 )
134+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
135+
sirensTable[selectedItem].Alpha = 255
136+
sirensTable[selectedItem].Min_Alpha = 255
137+
applySirenTable(veh, sirensTable, false)
135138
end
136139
InitUI ( )
137140

@@ -177,57 +180,59 @@ function scrollFunc(scrolled)
177180
end
178181
end
179182
addEventHandler("onClientGUIScroll", root, scrollFunc)
183+
180184
local bSelecting = false
181185
function btnFunc ( button, state )
182186
local veh = getPedOccupiedVehicle ( localPlayer )
183-
if ( veh ~= false ) then
184-
if ( source == sirensBtnRGB ) then
185-
if ( state == "up" ) then
186-
exports.cpicker:openPicker(source, "#FFAA00", "Pick a Beacon Colour")
187-
end
188-
end
189-
if ( source == sirensBtnGet ) then
190-
local selectedItem = guiComboBoxGetSelected ( sirens ) + 1
191-
local v = getVehicleSirens(veh)[selectedItem]
192-
outputChatBox("setVehicleSirens ( veh, " ..selectedItem .. ", " .. string.format( "%.3f", v.x ) .. ", " .. string.format( "%.3f", v.y ) .. ", " .. string.format( "%.3f", v.z ) .. ", " .. v.Red .. ", " .. v.Green .. ", " .. v.Blue .. ", " .. v.Alpha .. ", " .. v.Min_Alpha .. " )" )
193-
outputChatBox("addVehicleSirens ( veh, " .. vParamsTable.SirenCount .. ", " .. vParamsTable.SirenType .. ", " .. tostring ( vParamsTable.Flags["360"] ) .. ", " .. tostring ( vParamsTable.Flags.DoLOSCheck ) .. ", " .. tostring ( vParamsTable.Flags.UseRandomiser ) .. ", " .. tostring ( vParamsTable.Flags.Silent ) .. " ) " )
194-
end
195-
if ( source == sirensBtn ) then
196-
local sirensTable = getVehicleSirens(veh)
197-
applySirenTable ( veh, sirensTable, true )
198-
end
199-
if ( source == sirensBtnClose ) then
200-
guiSetVisible ( myWindow, false )
201-
showCursor( false )
202-
end
203-
if ( source == sirensBtnSelect ) then
204-
guiSetVisible ( myWindow, false )
205-
showCursor( true )
206-
bSelecting = true
207-
end
208-
if ( source == sirensChk360 ) then
209-
local bValue = guiCheckBoxGetSelected ( source )
210-
vParamsTable.Flags["360"] = bValue
211-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
212-
end
213-
if ( source == sirensChkLOS ) then
214-
local bValue = guiCheckBoxGetSelected ( source )
215-
vParamsTable.Flags.DoLOSCheck = bValue
216-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
217-
end
218-
if ( source == sirensChkRand ) then
219-
local bValue = guiCheckBoxGetSelected ( source )
220-
vParamsTable.Flags.UseRandomiser = bValue
221-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
222-
end
223-
if ( source == sirensChkSilent ) then
224-
local bValue = guiCheckBoxGetSelected ( source )
225-
vParamsTable.Flags.Silent = bValue
226-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
187+
if ( not veh ) then
188+
return
189+
end
190+
if ( source == sirensBtnRGB ) then
191+
if ( state == "up" ) then
192+
exports.cpicker:openPicker(source, "#FFAA00", "Pick a Beacon Colour")
227193
end
228194
end
195+
if ( source == sirensBtnGet ) then
196+
local selectedItem = guiComboBoxGetSelected ( sirens ) + 1
197+
local v = getVehicleSirens(veh)[selectedItem]
198+
outputChatBox("setVehicleSirens ( veh, " ..selectedItem .. ", " .. string.format( "%.3f", v.x ) .. ", " .. string.format( "%.3f", v.y ) .. ", " .. string.format( "%.3f", v.z ) .. ", " .. v.Red .. ", " .. v.Green .. ", " .. v.Blue .. ", " .. v.Alpha .. ", " .. v.Min_Alpha .. " )" )
199+
outputChatBox("addVehicleSirens ( veh, " .. vParamsTable.SirenCount .. ", " .. vParamsTable.SirenType .. ", " .. tostring ( vParamsTable.Flags["360"] ) .. ", " .. tostring ( vParamsTable.Flags.DoLOSCheck ) .. ", " .. tostring ( vParamsTable.Flags.UseRandomiser ) .. ", " .. tostring ( vParamsTable.Flags.Silent ) .. " ) " )
200+
end
201+
if ( source == sirensBtn ) then
202+
local sirensTable = getVehicleSirens(veh)
203+
applySirenTable ( veh, sirensTable, true )
204+
end
205+
if ( source == sirensBtnClose ) then
206+
guiSetVisible ( myWindow, false )
207+
showCursor( false )
208+
end
209+
if ( source == sirensBtnSelect ) then
210+
guiSetVisible ( myWindow, false )
211+
showCursor( true )
212+
bSelecting = true
213+
end
214+
if ( source == sirensChk360 ) then
215+
local bValue = guiCheckBoxGetSelected ( source )
216+
vParamsTable.Flags["360"] = bValue
217+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
218+
end
219+
if ( source == sirensChkLOS ) then
220+
local bValue = guiCheckBoxGetSelected ( source )
221+
vParamsTable.Flags.DoLOSCheck = bValue
222+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
223+
end
224+
if ( source == sirensChkRand ) then
225+
local bValue = guiCheckBoxGetSelected ( source )
226+
vParamsTable.Flags.UseRandomiser = bValue
227+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
228+
end
229+
if ( source == sirensChkSilent ) then
230+
local bValue = guiCheckBoxGetSelected ( source )
231+
vParamsTable.Flags.Silent = bValue
232+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
233+
end
229234
end
230-
addEventHandler("onClientGUIClick", root, btnFunc)
235+
addEventHandler("onClientGUIClick", resourceRoot, btnFunc)
231236

232237
function PickedBeaconStuff ( element, hex, red, green, blue )
233238
local veh = getPedOccupiedVehicle ( localPlayer )
@@ -241,24 +246,25 @@ function PickedBeaconStuff ( element, hex, red, green, blue )
241246
guiSetText ( sirensBtnRGB, string.format ( "Colour: #%02X%02X%02X", sirensTable[selectedItem].Red, sirensTable[selectedItem].Green, sirensTable[selectedItem].Blue ) )
242247
end
243248
end
244-
245249
addEventHandler("onColorPickerOK", root, PickedBeaconStuff)
250+
246251
function SelectedSiren ( )
247252
local veh = getPedOccupiedVehicle ( localPlayer )
248-
if ( veh ~= false ) then
249-
if ( source == sirens ) then
250-
InitUI()
251-
end
252-
if ( source == sirenType ) then
253-
local Value = guiComboBoxGetSelected ( source ) + 1
254-
vParamsTable.SirenType = Value
255-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
256-
end
257-
if ( source == numberOfSirens ) then
258-
local Value = guiComboBoxGetSelected ( source ) + 1
259-
vParamsTable.SirenCount = Value
260-
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
261-
end
253+
if ( not veh ) then
254+
return
255+
end
256+
if ( source == sirens ) then
257+
InitUI()
258+
end
259+
if ( source == sirenType ) then
260+
local Value = guiComboBoxGetSelected ( source ) + 1
261+
vParamsTable.SirenType = Value
262+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
263+
end
264+
if ( source == numberOfSirens ) then
265+
local Value = guiComboBoxGetSelected ( source ) + 1
266+
vParamsTable.SirenCount = Value
267+
triggerServerEvent( "sirens_sync2", veh, vParamsTable )
262268
end
263269
end
264270
addEventHandler("onClientGUIComboBoxAccepted", root, SelectedSiren)
@@ -269,6 +275,7 @@ function matTransformVector( mat, vec )
269275
local offZ = vec[1] * mat[1][3] + vec[2] * mat[2][3] + vec[3] * mat[3][3] + mat[4][3]
270276
return {offX, offY, offZ}
271277
end
278+
272279
function fixOutput ( out )
273280
if ( out < 0 ) then
274281
return out - 0.003
@@ -278,38 +285,41 @@ function fixOutput ( out )
278285
end
279286

280287
function test ( button, state, l, f, x, y, z, element )
288+
if ( not element or not bSelecting ) then
289+
return
290+
end
281291
local veh = getPedOccupiedVehicle ( localPlayer )
282-
if ( element == veh and veh ~= false and bSelecting == true ) then
283-
local selectedItem = guiComboBoxGetSelected ( sirens ) + 1
284-
local sirensTable = getVehicleSirens(veh)
292+
if ( not veh or veh ~= element ) then
293+
return
294+
end
295+
local selectedItem = guiComboBoxGetSelected ( sirens ) + 1
296+
local sirensTable = getVehicleSirens(veh)
285297

286-
local x2,y2,z2 = getElementPosition( veh )
287-
local rx, ry, rz = getElementRotation ( veh )
298+
local x2,y2,z2 = getElementPosition( veh )
299+
local rx, ry, rz = getElementRotation ( veh )
288300

289-
local vehmat = matrix(getElementMatrix ( veh ))
290-
vehmat[1][4] = 0
291-
vehmat[2][4] = 0
292-
vehmat[3][4] = 0
293-
vehmat[4][4] = 1
294-
local vehmatInv = matrix.invert( vehmat )
295-
local result = matTransformVector( vehmatInv, {x, y, z} )
301+
local vehmat = matrix(getElementMatrix ( veh ))
302+
vehmat[1][4] = 0
303+
vehmat[2][4] = 0
304+
vehmat[3][4] = 0
305+
vehmat[4][4] = 1
306+
local vehmatInv = matrix.invert( vehmat )
307+
local result = matTransformVector( vehmatInv, {x, y, z} )
296308

297309

298-
sirensTable[selectedItem].x = fixOutput ( result[1] )
299-
guiSetText( posLabelX, "Position X: " .. string.format( "%.3f", sirensTable[selectedItem].x ) )
310+
sirensTable[selectedItem].x = fixOutput ( result[1] )
311+
guiSetText( posLabelX, "Position X: " .. string.format( "%.3f", sirensTable[selectedItem].x ) )
300312

301-
sirensTable[selectedItem].y = fixOutput ( result[2] )
302-
guiSetText( posLabelY, "Position Y: " .. string.format( "%.3f", sirensTable[selectedItem].y ) )
313+
sirensTable[selectedItem].y = fixOutput ( result[2] )
314+
guiSetText( posLabelY, "Position Y: " .. string.format( "%.3f", sirensTable[selectedItem].y ) )
303315

304-
sirensTable[selectedItem].z = fixOutput ( result[3] )
305-
guiSetText( posLabelY, "Position Y: " .. string.format( "%.3f", sirensTable[selectedItem].y ) )
316+
sirensTable[selectedItem].z = fixOutput ( result[3] )
317+
guiSetText( posLabelY, "Position Y: " .. string.format( "%.3f", sirensTable[selectedItem].y ) )
306318

307-
applySirenTable ( veh, sirensTable, false )
319+
applySirenTable ( veh, sirensTable, false )
308320

309-
bSelecting = false
310-
guiSetVisible ( myWindow, true )
311-
showCursor( true )
312-
end
321+
bSelecting = false
322+
guiSetVisible ( myWindow, true )
323+
showCursor( true )
313324
end
314-
315325
addEventHandler("onClientClick", root, test)

[gameplay]/sirenEdit/server.lua

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@ function siren_sync ( sirenTable )
44
setVehicleSirens(veh, k, v.x ~= nil and v.x or 0, v.y ~= nil and v.y or 0, v.z ~= nil and v.z or 0, v.Red ~= nil and v.Red or 0, v.Green ~= nil and v.Green or 0, v.Blue ~= nil and v.Blue or 255, v.Alpha ~= nil and v.Alpha or 255, v.Min_Alpha ~= nil and v.Min_Alpha or 128)
55
end
66
end
7-
8-
97
addEvent("sirens_sync", true)
108
addEventHandler("sirens_sync", root, siren_sync)
9+
1110
function siren_sync2 ( sirenTable )
1211
local veh = source
1312
addVehicleSirens ( veh, sirenTable.SirenCount ~= nil and sirenTable.SirenCount or 1, sirenTable.SirenType ~= nil and sirenTable.SirenType or 2, sirenTable.Flags["360"] ~= nil and sirenTable.Flags["360"] or false, sirenTable.Flags.DoLOSCheck ~= nil and sirenTable.Flags.DoLOSCheck or false, sirenTable.Flags.UseRandomiser ~= nil and sirenTable.Flags.UseRandomiser or false, sirenTable.Flags.Silent ~= nil and sirenTable.Flags.Silent or false )
1413
end
15-
16-
1714
addEvent("sirens_sync2", true)
1815
addEventHandler("sirens_sync2", root, siren_sync2)

0 commit comments

Comments
 (0)