1
+ --[[ **********************************
2
+ *
3
+ * Multi Theft Auto - Admin Panel
4
+ *
5
+ * client\widgets\admin_server_conf.lua
6
+ *
7
+ **************************************]]
8
+ aServerConfig = {
9
+ Intervals = {
10
+ player_sync_interval = " Player Sync" ,
11
+ lightweight_sync_interval = " Lightweight Sync" ,
12
+ camera_sync_interval = " Camera Sync" ,
13
+ ped_sync_interval = " Ped Sync" ,
14
+ unoccupied_vehicle_sync_interval = " Unoccupied Vehicle Sync" ,
15
+ keysync_mouse_sync_interval = " Mouse Key Sync" ,
16
+ keysync_analog_sync_interval = " Analog Key Sync" ,
17
+ player_triggered_event_interval = " Player Triggered Event"
18
+ }
19
+ }
20
+
21
+ function aServerConfig .Open ()
22
+ if (not isElement (aServerConfig .Form )) then
23
+ local x ,y = guiGetScreenSize ()
24
+
25
+ aServerConfig .Form = guiCreateWindow (x / 2 - 240 , y / 2 - 215 , 480 , 430 , " Server Configuration" , false )
26
+
27
+ guiCreateHeader (0.05 , 0.052 , 0.3 , 0.04 , " Connection:" , true , aServerConfig .Form )
28
+
29
+ aServerConfig .minVersion = guiCreateLabel (0.1 , 0.089 , 0.5 , 0.04 , " Minimum Client Version:" , true , aServerConfig .Form )
30
+ aServerConfig .minVersionField = guiCreateEdit (0.725 , 0.089 , 0.25 , 0.04 , " " , true , aServerConfig .Form )
31
+
32
+ aServerConfig .recVersion = guiCreateLabel (0.1 , 0.141 , 0.5 , 0.04 , " Recommended Client Version:" , true , aServerConfig .Form )
33
+ aServerConfig .recVersionField = guiCreateEdit (0.725 , 0.141 , 0.25 , 0.04 , " " , true , aServerConfig .Form )
34
+
35
+ guiCreateHeader (0.05 , 0.193 , 0.3 , 0.04 , " Performance:" , true , aServerConfig .Form )
36
+
37
+ aServerConfig .bandwidth = guiCreateLabel (0.1 , 0.23 , 0.5 , 0.04 , " Bandwidth Reduction:" , true , aServerConfig .Form )
38
+
39
+ aServerConfig .bandwidthCombo = guiCreateComboBox (0.725 , 0.23 , 0.2 , 0.2 , " " , true , aServerConfig .Form )
40
+ guiComboBoxAddItem (aServerConfig .bandwidthCombo , " None" )
41
+ guiComboBoxAddItem (aServerConfig .bandwidthCombo , " Medium" )
42
+ guiComboBoxAddItem (aServerConfig .bandwidthCombo , " Maximum" )
43
+
44
+ aServerConfig .bulletSync = guiCreateLabel (0.1 , 0.292 , 0.5 , 0.04 , " Bullet Sync:" , true , aServerConfig .Form )
45
+ aServerConfig .bulletSyncCombo = guiCreateComboBox (0.725 , 0.292 , 0.2 , 0.2 , " " , true , aServerConfig .Form )
46
+ guiComboBoxAddItem (aServerConfig .bulletSyncCombo , " False" )
47
+ guiComboBoxAddItem (aServerConfig .bulletSyncCombo , " True" )
48
+
49
+ aServerConfig .maxTriggers = guiCreateLabel (0.1 , 0.354 , 0.55 , 0.04 , " Max player triggered events per interval:" , true , aServerConfig .Form )
50
+ aServerConfig .maxTriggersField = guiCreateEdit (0.725 , 0.354 , 0.2 , 0.04 , " " , true , aServerConfig .Form )
51
+ guiEditSetMaxLength (aServerConfig .maxTriggersField , 4 )
52
+
53
+ guiCreateHeader (0.05 , 0.406 , 0.3 , 0.04 , " Intervals:" , true , aServerConfig .Form );
54
+
55
+ local i = 1
56
+ local py = 0
57
+ for k ,v in pairs (aServerConfig .Intervals ) do
58
+ py = 0.443 + 0.052 * (i - 1 )
59
+ guiCreateLabel (0.1 , py , 0.5 , 0.04 , v .. " :" , true , aServerConfig .Form )
60
+
61
+ aServerConfig [k ] = guiCreateEdit (0.725 , py , 0.2 , 0.04 , " " , true , aServerConfig .Form )
62
+ guiEditSetMaxLength (aServerConfig [k ], 4 )
63
+ i = i + 1
64
+ end
65
+
66
+ aServerConfig .infoLabel = guiCreateLabel (0 , py + 0.052 , 1 , 0.2 , " WARNING\n If you don't know what you're doing, close this window." , true , aServerConfig .Form )
67
+ guiLabelSetHorizontalAlign (aServerConfig .infoLabel , " center" , true )
68
+ guiLabelSetColor (aServerConfig .infoLabel , 255 ,0 ,0 )
69
+ guiSetFont (aServerConfig .infoLabel , " default-bold-small" )
70
+
71
+ aServerConfig .saveButton = guiCreateButton (0.25 , 0.93 , 0.2 , 0.1 , " Save" , true , aServerConfig .Form )
72
+ aServerConfig .closeButton = guiCreateButton (0.55 , 0.93 , 0.2 , 0.1 , " Close" , true , aServerConfig .Form )
73
+
74
+ guiSetVisible (aServerConfig .Form , false )
75
+
76
+ aRegister (" ServerConfig" , aServerConfig .Form , aServerConfig .Open , aServerConfig .Close )
77
+ else
78
+ guiSetVisible (aServerConfig .Form , true )
79
+ guiBringToFront (aServerConfig .Form )
80
+ end
81
+
82
+ addEventHandler (" onClientGUIClick" , aServerConfig .Form , aServerConfig .onClientClick )
83
+ addEventHandler (' onClientGUIChanged' , aServerConfig .Form , aServerConfig .onClientChanged )
84
+ addEventHandler (" onAdminRefresh" , aServerConfig .Form , aServerConfig .Refresh )
85
+
86
+ aServerConfig .Refresh ()
87
+ end
88
+
89
+ function aServerConfig .Close (destroy )
90
+ if (destroy ) then
91
+ destroyElement (aServerConfig .Form )
92
+ else
93
+ removeEventHandler (' onClientGUIClick' , aServerConfig .Form , aServerConfig .onClientClick )
94
+ removeEventHandler (' onClientGUIChanged' , aServerConfig .Form , aServerConfig .onClientChanged )
95
+ removeEventHandler (' onAdminRefresh' , aServerConfig .Form , aServerConfig .Refresh )
96
+
97
+ guiSetVisible (aServerConfig .Form , false )
98
+ end
99
+ end
100
+
101
+ function aServerConfig .onClientChanged ()
102
+ local actualText = guiGetText (source )
103
+ local character = actualText :sub (# actualText , # actualText )
104
+ if (not tonumber (character ) and character ~= ' .' and character ~= ' -' ) then
105
+ guiSetText (source , actualText :sub (0 , # actualText - 1 ))
106
+ end
107
+ end
108
+
109
+ function aServerConfig .onClientClick (button )
110
+ if (button == " left" ) then
111
+ if (source == aServerConfig .closeButton ) then
112
+ aServerConfig .Close ()
113
+ elseif (source == aServerConfig .saveButton ) then
114
+ local triggersPerInterval = guiGetText (aServerConfig .maxTriggersField )
115
+ local cameraSyncInterval = guiGetText (aServerConfig .camera_sync_interval )
116
+ local playerSyncInterval = guiGetText (aServerConfig .player_sync_interval )
117
+ local playerTriggeredEventInterval = guiGetText (aServerConfig .player_triggered_event_interval )
118
+ local keySyncAnalogInterval = guiGetText (aServerConfig .keysync_analog_sync_interval )
119
+ local keySyncMouseInterval = guiGetText (aServerConfig .keysync_mouse_sync_interval )
120
+ local pedSyncInterval = guiGetText (aServerConfig .ped_sync_interval )
121
+ local unoccupiedVehicleSyncInterval = guiGetText (aServerConfig .unoccupied_vehicle_sync_interval )
122
+ local lightWeightSyncInterval = guiGetText (aServerConfig .lightweight_sync_interval )
123
+
124
+ if (# triggersPerInterval <= 0 or tonumber (triggersPerInterval ) < 1 or tonumber (triggersPerInterval ) > 1000 ) then
125
+ messageBox (" The range for 'Max player triggered events per interval' is: 1-1000" , MB_ERROR , MB_OK )
126
+ return
127
+ end
128
+
129
+ if (# cameraSyncInterval <= 0 or tonumber (cameraSyncInterval ) < 50 or tonumber (cameraSyncInterval ) > 4000 ) then
130
+ messageBox (" The range for 'Camera sync interval' is: 50-4000" , MB_ERROR , MB_OK )
131
+ return
132
+ end
133
+
134
+ if (# playerSyncInterval <= 0 or tonumber (playerSyncInterval ) < 50 or tonumber (playerSyncInterval ) > 4000 ) then
135
+ messageBox (" The range for 'Player sync interval' is: 50-4000" , MB_ERROR , MB_OK )
136
+ return
137
+ end
138
+
139
+ if (# playerTriggeredEventInterval <= 0 or tonumber (playerTriggeredEventInterval ) < 50 or tonumber (playerTriggeredEventInterval ) > 5000 ) then
140
+ messageBox (" The range for 'Player triggered event interval' is: 50-5000" , MB_ERROR , MB_OK )
141
+ return
142
+ end
143
+
144
+ if (# keySyncAnalogInterval <= 0 or tonumber (keySyncAnalogInterval ) < 50 or tonumber (keySyncAnalogInterval ) > 4000 ) then
145
+ messageBox (" The range for 'Analog key sync interval' is: 50-4000" , MB_ERROR , MB_OK )
146
+ return
147
+ end
148
+
149
+ if (# keySyncMouseInterval <= 0 or tonumber (keySyncMouseInterval ) < 50 or tonumber (keySyncMouseInterval ) > 4000 ) then
150
+ messageBox (" The range for 'Mouse key sync interval' is: 50-4000" , MB_ERROR , MB_OK )
151
+ return
152
+ end
153
+
154
+ if (# pedSyncInterval <= 0 or tonumber (pedSyncInterval ) < 50 or tonumber (pedSyncInterval ) > 4000 ) then
155
+ messageBox (" The range for 'Ped sync interval' is: 50-4000" , MB_ERROR , MB_OK )
156
+ return
157
+ end
158
+
159
+ if (# unoccupiedVehicleSyncInterval <= 0 or tonumber (unoccupiedVehicleSyncInterval ) < 50 or tonumber (unoccupiedVehicleSyncInterval ) > 4000 ) then
160
+ messageBox (" The range for 'Unoccupied vehicle sync interval' is: 50-4000" , MB_ERROR , MB_OK )
161
+ return
162
+ end
163
+
164
+ if (# lightWeightSyncInterval <= 0 or tonumber (lightWeightSyncInterval ) < 200 or tonumber (lightWeightSyncInterval ) > 4000 ) then
165
+ messageBox (" The range for 'Lightweight sync interval' is: 200-4000" , MB_ERROR , MB_OK )
166
+ return
167
+ end
168
+
169
+ if (messageBox (" Are you sure you want to save the server configuration changes?" , MB_QUESTION , MB_YESNO )) then
170
+ triggerServerEvent (" aServer" , localPlayer , " setconfig" , {
171
+ minclientversion = guiGetText (aServerConfig .minVersionField ),
172
+ recommendedclientversion = guiGetText (aServerConfig .recVersionField ),
173
+ bandwidth_reduction = guiComboBoxGetItemText (aServerConfig .bandwidthCombo , guiComboBoxGetSelected (aServerConfig .bandwidthCombo )):lower () or " medium" ,
174
+ bullet_sync = tostring (guiComboBoxGetSelected (aServerConfig .bulletSyncCombo )),
175
+ max_player_triggered_events_per_interval = triggersPerInterval ,
176
+ camera_sync_interval = cameraSyncInterval ,
177
+ player_sync_interval = playerSyncInterval ,
178
+ player_triggered_event_interval = playerTriggeredEventInterval ,
179
+ keysync_analog_sync_interval = keySyncAnalogInterval ,
180
+ keysync_mouse_sync_interval = keySyncMouseInterval ,
181
+ ped_sync_interval = pedSyncInterval ,
182
+ unoccupied_vehicle_sync_interval = unoccupiedVehicleSyncInterval ,
183
+ lightweight_sync_interval = lightWeightSyncInterval
184
+ })
185
+
186
+ aServerConfig .Close ()
187
+ end
188
+ end
189
+ end
190
+ end
191
+
192
+ function aServerConfig .Refresh ()
193
+ triggerServerEvent (" aServerConfigRefresh" , localPlayer )
194
+ end
195
+
196
+ addEvent (" aClientConfigRefresh" , true )
197
+ addEventHandler (" aClientConfigRefresh" , localPlayer , function (minclientversion , recommendedclientversion , bandwidthreduction , bulletsync , maxplayertriggers , camerasync_interval , playersync_interval , playertriggers_interval , keysync_analog_interval , keysync_mousse_interval , pedsync_interval , unoccupiedvehicle_interval , lightweight_interval )
198
+ guiSetText (aServerConfig .minVersionField , minclientversion )
199
+ guiSetText (aServerConfig .recVersionField , recommendedclientversion )
200
+
201
+ guiComboBoxSetSelected (aServerConfig .bandwidthCombo , (bandwidthreduction == " none" and 0 or (bandwidthreduction == " medium" and 1 or 2 )) or 0 )
202
+ guiComboBoxSetSelected (aServerConfig .bulletSyncCombo , tonumber (bulletsync ))
203
+
204
+ guiSetText (aServerConfig .maxTriggersField , maxplayertriggers )
205
+ guiSetText (aServerConfig .camera_sync_interval , camerasync_interval )
206
+ guiSetText (aServerConfig .player_sync_interval , playersync_interval )
207
+ guiSetText (aServerConfig .player_triggered_event_interval , playertriggers_interval )
208
+ guiSetText (aServerConfig .keysync_analog_sync_interval , keysync_analog_interval )
209
+ guiSetText (aServerConfig .keysync_mouse_sync_interval , keysync_mousse_interval )
210
+ guiSetText (aServerConfig .ped_sync_interval , pedsync_interval )
211
+ guiSetText (aServerConfig .unoccupied_vehicle_sync_interval , unoccupiedvehicle_interval )
212
+ guiSetText (aServerConfig .lightweight_sync_interval , lightweight_interval )
213
+ end )
0 commit comments