· 6 years ago · Nov 14, 2019, 11:24 PM
1/*
2
3 Remove the comments on the MARMA logs if you want to log the spawns to MARMA.
4
5 The _uid variable MUST be changed to a valid UID that already exists in the account table.
6
7 How it works -
8
9 On server init, the script will count AllMissionObjects (X) on a per vehicle basis listed in the array below. If there is less than the defined amount the server will spawn a persistent vehicle with a random pin number
10 UNLOCKED at the defined or random road position.
11
12 This script can be used to replace the standard EXILE world vehicle spawns, so that the vehicles that are spawned are persistent. Players will not know the pin number, but its still a "benefit" to them as the vehicle they find
13 is persistent. And hey, they might just guess the number..
14
15 This script accounts for ALL vehicles, purchased or other wise. So if players have bought vehicles, and those vehicles exceed the maximum defined number in tbe below array, the server wont spawn anymore.
16
17 Configure the _vehicleArray below
18 Adjust the safePos parameters line 132 - 138
19
20*/
21uiSleep 30;
22
23diag_log ["ExileServer - Spawning persistent vehicle spawns"];
24//["ExileServer - Spawning world persistent vehicles"] call MAR_fnc_log;
25
26private ["_count","_uid","_debugForSP","_vehicle","_vehicleArray","_count","_vehicleClass","_position","_positionCount","_pinCode","_vehicleObject","_nearVehicles","_nearVechicleCount","_marker","_cancelSpawn","_isRandomRoadPos","_road","_scriptComplete"];
27
28_scriptComplete = false;
29_debugForSP = false; // If true , when the script is run in the editor it will create markers on the vehicle spawns.
30
31_uid = "76561198079956410"; // Needs to be a valid UID that exists in the account table (best to use a server owners uid)
32
33/*
34 How the vehicle array works -
35
36 Select 0 - Vehicle class name
37 Select 1 - Number - amount limit, will only maintain this many vehicles on the server
38 Select 2 - Array of positions EG [] - Will randomly select one of the positions per vehicle, if the position is occupied it will try for the other positions
39 Select 3 - Boolean - If true, will spawn the vehicle on a random road, if false, will look to the positions above.
40
41*/
42
43_vehicleArray =
44[
45["Exile_Bike_QuadBike_Black",4,[],true],
46["Exile_Bike_QuadBike_Csat",4,[],true],
47["Exile_Car_Van_Box_Black",4,[],true],
48["Exile_Car_Offroad_White",4,[],true],
49["Exile_Car_MB4WDOpen",4,[],true],
50["Exile_Car_MB4WD",4,[],true],
51["Exile_Car_Hatchback_Sport_Red",4,[],true],
52["Exile_Car_ProwlerLight",4,[],true],
53["Exile_Car_ProwlerUnarmed",4,[],true],
54["Exile_Car_QilinUnarmed",4,[],true],
55["Exile_Car_SUV_Black",4,[],true],
56["Exile_Car_SUV_Grey",4,[],true],
57["Exile_Car_SUV_Orange",4,[],true],
58["Exile_Car_Volha_Blue",4,[],true],
59["Exile_Car_Volha_White",4,[],true],
60["Exile_Car_Volha_Black",4,[],true],
61["Exile_Car_Ikarus_Blue",4,[],true],
62["Exile_Car_Zamak",4,[],true],
63["Exile_Car_Ural_Covered_Blue",4,[],true],
64["Exile_Car_Ural_Covered_Yellow",4,[],true],
65["Exile_Car_Ural_Covered_Worker",4,[],true],
66["Exile_Car_Ural_Covered_Military",4,[],true],
67["Exile_Car_LandRover_Red",4,[],true],
68["Exile_Car_LandRover_Urban",4,[],true],
69["Exile_Car_LandRover_Green",4,[],true],
70["Exile_Car_LandRover_Sand",4,[],true],
71["Exile_Car_LandRover_Desert",4,[],true],
72["B_APC_Tracked_02_AA_F",4,[],true],
73["B_APC_Tracked_02_CRV_F",4,[],true],
74["B_APC_Tracked_02_rcws_F",4,[],true],
75["B_MBT_02_TUSK_F",4,[],true],
76["B_MBT_02_arty_F",4,[],true],
77["B_MBT_02_cannon_F",4,[],true],
78["B_MBT_02_mlrs_F",4,[],true],
79["I_APC_tracked_02_cannon_F",4,[],true],
80["I_MBT_02_cannon_F",4,[],true],
81["O_APC_Tracked_02_AA_F",4,[],true],
82["O_APC_Tracked_02_cannon_F",4,[],true],
83["O_APC_Wheeled_02_rcws_F",4,[],true],
84["O_APC_Wheeled_02_rcws_v2_F",4,[],true],
85["B_APC_Wheeled_02_cannon_F",4,[],true],
86["O_MBT_02_arty_F",4,[],true],
87["O_MBT_02_cannon_F",4,[],true],
88["B_MRAP_02_F",4,[],true],
89["B_MRAP_02_hmg_F",4,[],true],
90["B_MRAP_02_gmg_F",4,[],true],
91["O_G_Offroad_02_F",4,[],true],
92["O_G_Offroad_02_armed_F",4,[],true],
93["O_Quadbike_02_F",4,[],true],
94["O_G_Quadbike_02_F",4,[],true],
95["B_Truck_02_covered_F",4,[],true],
96["B_Truck_02_transport_F",4,[],true],
97["O_G_Van_02_transport_F",4,[],true],
98["B_T_MRAP_02_hmg_F",4,[],true],
99["O_T_MRAP_02_hmg_ghex_F",4,[],true],
100["O_T_MRAP_02_gmg_ghex_F",4,[],true],
101["C_Quadbike_02_black_F",4,[],true],
102["O_Truck_02_transport_F",4,[],true],
103["O_Truck_02_covered_F",4,[],true],
104["O_Truck_02_device_F",4,[],true],
105["B_G_Offroad_02_armed_F",4,[],true],
106["B_G_Van_02_transport_F",4,[],true],
107["O_G_Offroad_02_repair_F",4,[],true],
108["B_T_Truck_02_box_F",4,[],true],
109["B_T_Truck_02_medical_F",4,[],true],
110["O_G_Van_02_fuel_F",4,[],true],
111["B_Truck_02_Repair_F",4,[],true],
112["B_T_Truck_02_fuel_F",4,[],true],
113["B_Truck_02_medical_F",4,[],true],
114["RHS_AH2Z",4,[],true],
115["RHS_AH64D",4,[],true],
116["RHS_CH_47F",4,[],true],
117["RHS_UH2Y",4,[],true],
118["RHS_UH60M",4,[],true],
119["RHS_UH60M_MEV",4,[],true],
120["RHS_CH_47F",4,[],true],
121["O_Heli_Light_02_dynamicLoadout_F",4,[],true],
122["O_Heli_Transport_04_covered_black_F",4,[],true],
123["B_Heli_Light_02_F",4,[],true],
124["B_Heli_Transport_02_F",4,[],true],
125["B_Heli_Transport_02_camo_F",4,[],true],
126["B_Heli_Transport_02_camo_F",4,[],true],
127["I_Heli_light_02_dynamicLoadout_F",4,[],true],
128["B_Heli_Transport_02_unarmed_green_F",4,[],true],
129["B_Heli_Transport_02_unarmed_F",4,[],true],
130["B_T_VTOL_02_armed_F",4,[],true],
131["O_T_VTOL_02_vehicle_ghex_F",4,[],true],
132["rhsusf_M2078A2P2_B_M2_WD_fmtv_usarmy",4,[],true],
133["rhsusf_M2078A2P2_B_d_fmtv_usarmy",4,[],true],
134["rhsusf_M2078A2P2_B_wd_fmtv_usarmy",4,[],true],
135["rhsusf_M2078A2P2_d_fmtv_usarmy",4,[],true],
136["rhsusf_M2082A2P2_B_M2_D_fmtv_usarmy",4,[],true],
137["rhsusf_M2082A2P2_B_M2_wd_fmtv_usarmy",4,[],true],
138["rhsusf_M2082A2P2_B_D_fmtv_usarmy",4,[],true],
139["rhsusf_M2084A2P2_D_fmtv_usarmy",4,[],true],
140["rhsusf_M2084A2P2_WD_fmtv_usarmy",4,[],true],
141["rhsusf_m2025_w_mk29",4,[],true],
142["rhsusf_m998_w_2dr",4,[],true],
143["rhsusf_m998_w_4dr",4,[],true],
144["rhsusf_rg22_d",4,[],true],
145["rhsusf_rg22_m2_wd",4,[],true],
146["RHS_M2A2",4,[],true],
147["RHS_M2A2_BUSKI",4,[],true],
148["rhsusf_m209_usarmy",4,[],true],
149["rhsusf_m209d_usarmy",4,[],true],
150["rhsusf_m222_usarmy_M240",4,[],true],
151["rhsusf_m222_usarmy_MK29",4,[],true],
152["rhsusf_m222d_usarmy_medical",4,[],true],
153["rhsusf_m222_usarmy_supply",4,[],true],
154["rhsusf_m222_usarmy_unarmed",4,[],true],
155["rhsusf_m222d_usarmy",4,[],true],
156["rhsusf_m222d_usarmy_M240",4,[],true],
157["rhsusf_m222d_usarmy_MK29",4,[],true],
158["rhsusf_m222d_usarmy_medical",4,[],true],
159["rhsusf_m222d_usarmy_supply",4,[],true],
160["rhsusf_m222d_usarmy_unarmed",4,[],true],
161["rhsusf_m2a2aim_tuski_d",4,[],true],
162["rhsusf_m2a2aim_tuski_wd",4,[],true],
163["rhsusf_m2a2aimd_usarmy",4,[],true],
164["rhsusf_m2a2sep2tuskiwd_usarmy",4,[],true],
165["rhsusf_m2a2fep_d",4,[],true],
166["rhsusf_m2a2fep_od",4,[],true],
167["rhsusf_m2a2fep_wd",4,[],true],
168["rhsusf_m2a2sep2d_usarmy",4,[],true],
169["rhsusf_m2a2sep2tuskid_usarmy",4,[],true],
170["rhsusf_m2a2sep2tuskiid_usarmy",4,[],true],
171["rhsusf_m2a2sep2tuskiiwd_usarmy",4,[],true],
172["rhsusf_m2a2sep2tuskiwd_usarmy",4,[],true],
173["rhsusf_m2a2sep2wd_usarmy",4,[],true],
174["Exile_Chopper_Hellcat_Green",4,[],true],
175["Exile_Chopper_Hummingbird_Green",4,[],true],
176["Exile_Chopper_Mohawk_FIA",4,[],true],
177["Exile_Chopper_Orca_CSAT",4,[],true],
178["Exile_Bike_QuadBike_Black",4,[],true],
179["Exile_Bike_QuadBike_Csat",4,[],true],
180["Exile_Car_Van_Box_Black",4,[],true],
181["Exile_Car_Offroad_White",4,[],true],
182["Exile_Car_MB4WDOpen",4,[],true],
183["Exile_Car_MB4WD",4,[],true],
184["Exile_Car_Hatchback_Sport_Red",4,[],true],
185["Exile_Car_ProwlerLight",4,[],true],
186["Exile_Car_ProwlerUnarmed",4,[],true],
187["Exile_Car_QilinUnarmed",4,[],true],
188["Exile_Car_SUV_Black",4,[],true],
189["Exile_Car_SUV_Grey",4,[],true],
190["Exile_Car_SUV_Orange",4,[],true],
191["Exile_Car_Volha_Blue",4,[],true],
192["Exile_Car_Volha_White",4,[],true],
193["Exile_Car_Volha_Black",4,[],true],
194["Exile_Car_Ikarus_Blue",4,[],true],
195["Exile_Car_Zamak",4,[],true],
196["Exile_Car_Ural_Covered_Blue",4,[],true],
197["Exile_Car_Ural_Covered_Yellow",4,[],true],
198["Exile_Car_Ural_Covered_Worker",4,[],true],
199["Exile_Car_Ural_Covered_Military",4,[],true],
200["Exile_Car_LandRover_Red",4,[],true],
201["Exile_Car_LandRover_Urban",4,[],true],
202["Exile_Car_LandRover_Green",4,[],true],
203["Exile_Car_LandRover_Sand",4,[],true],
204["Exile_Car_LandRover_Desert",4,[],true],
205["B_APC_Tracked_02_AA_F",4,[],true],
206["B_APC_Tracked_02_CRV_F",4,[],true],
207["B_APC_Tracked_02_rcws_F",4,[],true],
208["B_MBT_02_TUSK_F",4,[],true],
209["B_MBT_02_arty_F",4,[],true],
210["B_MBT_02_cannon_F",4,[],true],
211["B_MBT_02_mlrs_F",4,[],true],
212["I_APC_tracked_02_cannon_F",4,[],true],
213["I_MBT_02_cannon_F",4,[],true],
214["O_APC_Tracked_02_AA_F",4,[],true],
215["O_APC_Tracked_02_cannon_F",4,[],true],
216["O_APC_Wheeled_02_rcws_F",4,[],true],
217["O_APC_Wheeled_02_rcws_v2_F",4,[],true],
218["B_APC_Wheeled_02_cannon_F",4,[],true],
219["O_MBT_02_arty_F",4,[],true],
220["O_MBT_02_cannon_F",4,[],true],
221["B_MRAP_02_F",4,[],true],
222["B_MRAP_02_hmg_F",4,[],true],
223["B_MRAP_02_gmg_F",4,[],true],
224["O_G_Offroad_02_F",4,[],true],
225["O_G_Offroad_02_armed_F",4,[],true],
226["O_Quadbike_02_F",4,[],true],
227["O_G_Quadbike_02_F",4,[],true],
228["B_Truck_02_covered_F",4,[],true],
229["B_Truck_02_transport_F",4,[],true],
230["O_G_Van_02_transport_F",4,[],true],
231["B_T_MRAP_02_hmg_F",4,[],true],
232["O_T_MRAP_02_hmg_ghex_F",4,[],true],
233["O_T_MRAP_02_gmg_ghex_F",4,[],true],
234["C_Quadbike_02_black_F",4,[],true],
235["O_Truck_02_transport_F",4,[],true],
236["O_Truck_02_covered_F",4,[],true],
237["O_Truck_02_device_F",4,[],true],
238["B_G_Offroad_02_armed_F",4,[],true],
239["B_G_Van_02_transport_F",4,[],true],
240["O_G_Offroad_02_repair_F",4,[],true],
241["B_T_Truck_02_box_F",4,[],true],
242["B_T_Truck_02_medical_F",4,[],true],
243["O_G_Van_02_fuel_F",4,[],true],
244["B_Truck_02_Repair_F",4,[],true],
245["B_T_Truck_02_fuel_F",4,[],true],
246["B_Truck_02_medical_F",4,[],true],
247["RHS_AH2Z",4,[],true],
248["RHS_AH64D",4,[],true],
249["RHS_CH_47F",4,[],true],
250["RHS_UH2Y",4,[],true],
251["RHS_UH60M",4,[],true],
252["RHS_UH60M_MEV",4,[],true],
253["RHS_CH_47F",4,[],true],
254["O_Heli_Light_02_dynamicLoadout_F",4,[],true],
255["O_Heli_Transport_04_covered_black_F",4,[],true],
256["B_Heli_Light_02_F",4,[],true],
257["B_Heli_Transport_02_F",4,[],true],
258["B_Heli_Transport_02_camo_F",4,[],true],
259["B_Heli_Transport_02_camo_F",4,[],true],
260["I_Heli_light_02_dynamicLoadout_F",4,[],true],
261["B_Heli_Transport_02_unarmed_green_F",4,[],true],
262["B_Heli_Transport_02_unarmed_F",4,[],true],
263["B_T_VTOL_02_armed_F",4,[],true],
264["O_T_VTOL_02_vehicle_ghex_F",4,[],true],
265["rhsusf_M2078A2P2_B_M2_WD_fmtv_usarmy",4,[],true],
266["rhsusf_M2078A2P2_B_d_fmtv_usarmy",4,[],true],
267["rhsusf_M2078A2P2_B_wd_fmtv_usarmy",4,[],true],
268["rhsusf_M2078A2P2_d_fmtv_usarmy",4,[],true],
269["rhsusf_M2082A2P2_B_M2_D_fmtv_usarmy",4,[],true],
270["rhsusf_M2082A2P2_B_M2_wd_fmtv_usarmy",4,[],true],
271["rhsusf_M2082A2P2_B_D_fmtv_usarmy",4,[],true],
272["rhsusf_M2084A2P2_D_fmtv_usarmy",4,[],true],
273["rhsusf_M2084A2P2_WD_fmtv_usarmy",4,[],true],
274["rhsusf_m2025_w_mk29",4,[],true],
275["rhsusf_m998_w_2dr",4,[],true],
276["rhsusf_m998_w_4dr",4,[],true],
277["rhsusf_rg22_d",4,[],true],
278["rhsusf_rg22_m2_wd",4,[],true],
279["RHS_M2A2",4,[],true],
280["RHS_M2A2_BUSKI",4,[],true],
281["rhsusf_m209_usarmy",4,[],true],
282["rhsusf_m209d_usarmy",4,[],true],
283["rhsusf_m222_usarmy_M240",4,[],true],
284["rhsusf_m222_usarmy_MK29",4,[],true],
285["rhsusf_m222d_usarmy_medical",4,[],true],
286["rhsusf_m222_usarmy_supply",4,[],true],
287["rhsusf_m222_usarmy_unarmed",4,[],true],
288["rhsusf_m222d_usarmy",4,[],true],
289["rhsusf_m222d_usarmy_M240",4,[],true],
290["rhsusf_m222d_usarmy_MK29",4,[],true],
291["rhsusf_m222d_usarmy_medical",4,[],true],
292["rhsusf_m222d_usarmy_supply",4,[],true],
293["rhsusf_m222d_usarmy_unarmed",4,[],true],
294["rhsusf_m2a2aim_tuski_d",4,[],true],
295["rhsusf_m2a2aim_tuski_wd",4,[],true],
296["rhsusf_m2a2aimd_usarmy",4,[],true],
297["rhsusf_m2a2sep2tuskiwd_usarmy",4,[],true],
298["rhsusf_m2a2fep_d",4,[],true],
299["rhsusf_m2a2fep_od",4,[],true],
300["rhsusf_m2a2fep_wd",4,[],true],
301["rhsusf_m2a2sep2d_usarmy",4,[],true],
302["rhsusf_m2a2sep2tuskid_usarmy",4,[],true],
303["rhsusf_m2a2sep2tuskiid_usarmy",4,[],true],
304["rhsusf_m2a2sep2tuskiiwd_usarmy",4,[],true],
305["rhsusf_m2a2sep2tuskiwd_usarmy",4,[],true],
306["rhsusf_m2a2sep2wd_usarmy",4,[],true],
307["Exile_Chopper_Hellcat_Green",4,[],true],
308["Exile_Chopper_Hummingbird_Green",4,[],true],
309["Exile_Chopper_Mohawk_FIA",4,[],true],
310["Exile_Chopper_Orca_CSAT",4,[],true],
311["CUP_C_Datsun",4,[],true],
312["CUP_C_Datsun_4seat",4,[],true],
313["CUP_C_Datsun_Plain",4,[],true],
314["CUP_C_Datsun_Covered",4,[],true],
315["CUP_C_Datsun_Tubeframe",4,[],true],
316["CUP_C_Ural_Civ_01",4,[],true],
317["CUP_C_Ural_Civ_02",4,[],true],
318["CUP_C_Ural_Civ_03",4,[],true],
319["CUP_C_Ural_Open_Civ_01",4,[],true],
320["CUP_C_Ural_Open_Civ_02",4,[],true],
321["CUP_C_Ural_Open_Civ_03",4,[],true],
322["CUP_O_Ural_TKA",4,[],true],
323["CUP_O_Ural_RU",4,[],true],
324["CUP_I_Ural_UN",4,[],true],
325["CUP_B_Ural_CDF",4,[],true],
326["CUP_O_Ural_CHDKZ",4,[],true],
327["CUP_O_Ural_SLA",4,[],true],
328["CUP_O_Ural_Open_TKA",4,[],true],
329["CUP_B_Ural_Open_CDF",4,[],true],
330["CUP_O_Ural_Open_RU",4,[],true],
331["CUP_O_Ural_Open_CHDKZ",4,[],true],
332["CUP_O_Ural_Open_SLA",4,[],true],
333["CUP_O_Ural_Empty_SLA",4,[],true],
334["CUP_B_Ural_Empty_CDF",4,[],true],
335["CUP_I_Ural_Empty_UN",4,[],true],
336["CUP_O_Ural_Empty_RU",4,[],true],
337["CUP_O_Ural_Empty_CHDKZ",4,[],true],
338["CUP_O_Ural_Empty_TKA",4,[],true],
339["CUP_O_Ural_Repair_SLA",4,[],true],
340["CUP_O_Ural_Repair_TKA",4,[],true],
341["CUP_O_Ural_Repair_CHDKZ",4,[],true],
342["CUP_O_Ural_Repair_RU",4,[],true],
343["CUP_I_Ural_Repair_UN",4,[],true],
344["CUP_B_Ural_Repair_CDF",4,[],true],
345["CUP_B_Ural_Refuel_CDF",4,[],true],
346["CUP_O_Ural_Refuel_RU",4,[],true],
347["CUP_O_Ural_Refuel_CHDKZ",4,[],true],
348["CUP_O_Ural_Refuel_TKA",4,[],true],
349["CUP_O_Ural_Refuel_SLA",4,[],true],
350["CUP_C_LR_Transport_CTK",4,[],true],
351["CUP_O_LR_Transport_TKA",4,[],true],
352["CUP_O_LR_Transport_TKM",4,[],true],
353["CUP_B_LR_Transport_CZ_W",4,[],true],
354["CUP_B_LR_Transport_CZ_D",4,[],true],
355["CUP_B_LR_Transport_GB_W",4,[],true],
356["CUP_B_LR_Transport_GB_D",4,[],true],
357["CUP_B_LR_Ambulance_CZ_W",4,[],true],
358["CUP_B_LR_Ambulance_CZ_D",4,[],true],
359["CUP_B_LR_Ambulance_GB_W",4,[],true],
360["CUP_B_LR_Ambulance_GB_D",4,[],true],
361["CUP_O_LR_Ambulance_TKA",4,[],true],
362["CUP_C_UAZ_Unarmed_TK_CIV",4,[],true],
363["CUP_O_UAZ_Unarmed_RU",4,[],true],
364["CUP_I_UAZ_Unarmed_UN",4,[],true],
365["CUP_O_UAZ_Unarmed_TKA",4,[],true],
366["CUP_O_UAZ_Unarmed_CHDKZ",4,[],true],
367["CUP_B_UAZ_Unarmed_ACR",4,[],true],
368["CUP_B_UAZ_Unarmed_CDF",4,[],true],
369["CUP_O_UAZ_Open_CHDKZ",4,[],true],
370["CUP_O_UAZ_Open_RU",4,[],true],
371["CUP_O_UAZ_Open_TKA",4,[],true],
372["CUP_I_UAZ_Open_UN",4,[],true],
373["CUP_B_UAZ_Open_ACR",4,[],true],
374["CUP_B_UAZ_Open_CDF",4,[],true],
375["CUP_C_UAZ_Open_TK_CIV",4,[],true],
376["CUP_B_HMMWV_Unarmed_USA",4,[],true],
377["CUP_B_HMMWV_Unarmed_USMC",4,[],true],
378["CUP_B_HMMWV_Ambulance_USMC",4,[],true],
379["CUP_B_HMMWV_Ambulance_USA",4,[],true],
380["CUP_B_HMMWV_Ambulance_ACR",4,[],true],
381["CUP_B_HMMWV_Transport_USA",4,[],true],
382["CUP_I_M113_Med_RACS",4,[],true],
383["CUP_I_M113_Med_UN",4,[],true],
384["CUP_B_MTVR_USA",4,[],true],
385["CUP_B_MTVR_Ammo_USA",4,[],true],
386["CUP_B_MTVR_Refuel_USA",4,[],true],
387["CUP_B_MTVR_Repair_USA",4,[],true],
388["CUP_B_MTVR_USMC",4,[],true],
389["CUP_B_MTVR_Ammo_USMC",4,[],true],
390["CUP_B_MTVR_Refuel_USMC",4,[],true],
391["CUP_B_MTVR_Repair_USMC",4,[],true],
392["CUP_O_LR_MG_TKM",4,[],true],
393["CUP_O_LR_MG_TKA",4,[],true],
394["CUP_I_Datsun_PK",4,[],true],
395["CUP_I_Datsun_PK_Random",4,[],true],
396["CUP_I_Datsun_PK_TK",4,[],true],
397["CUP_I_Datsun_PK_TK_Random",4,[],true],
398["CUP_O_Datsun_PK",4,[],true],
399["CUP_O_Datsun_PK_Random",4,[],true],
400["CUP_O_UAZ_MG_CHDKZ",4,[],true],
401["CUP_O_UAZ_MG_RU",4,[],true],
402["CUP_O_UAZ_MG_TKA",4,[],true],
403["CUP_I_UAZ_MG_UN",4,[],true],
404["CUP_B_UAZ_MG_ACR",4,[],true],
405["CUP_B_UAZ_MG_CDF",4,[],true],
406["CUP_B_UAZ_AGS30_CDF",4,[],true],
407["CUP_O_UAZ_AGS30_CHDKZ",4,[],true],
408["CUP_O_UAZ_AGS30_RU",4,[],true],
409["CUP_O_UAZ_AGS30_TKA",4,[],true],
410["CUP_I_UAZ_AGS30_UN",4,[],true],
411["CUP_I_M113_RACS",4,[],true],
412["CUP_I_M113_UN",4,[],true],
413["CUP_B_BRDM2_HQ_CDF",4,[],true],
414["CUP_I_BRDM2_HQ_UN",4,[],true],
415["CUP_I_BRDM2_HQ_NAPA",4,[],true],
416["CUP_I_BRDM2_HQ_TK_Gue",4,[],true],
417["CUP_O_BRDM2_HQ_TKA",4,[],true],
418["CUP_O_BRDM2_HQ_CHDKZ",4,[],true],
419["CUP_O_BRDM2_CHDKZ",4,[],true],
420["CUP_O_BRDM2_SLA",4,[],true],
421["CUP_O_BRDM2_TKA",4,[],true],
422["CUP_I_BRDM2_NAPA",4,[],true],
423["CUP_I_BRDM2_TK_Gue",4,[],true],
424["CUP_I_BRDM2_UN",4,[],true],
425["CUP_B_BRDM2_CDF",4,[],true],
426["CUP_BAF_Jackal2_L2A1_W",4,[],true],
427["CUP_BAF_Jackal2_L2A1_D",4,[],true],
428["CUP_BAF_Jackal2_GMG_D",4,[],true],
429["CUP_BAF_Jackal2_GMG_W",4,[],true],
430["CUP_B_LR_Special_CZ_W",4,[],true],
431["CUP_B_LR_Special_Des_CZ_D",4,[],true],
432["CUP_B_LR_MG_CZ_W",4,[],true],
433["CUP_B_LR_MG_GB_W",4,[],true],
434["CUP_B_HMMWV_M1114_USMC",4,[],true],
435["CUP_B_HMMWV_M2_USMC",4,[],true],
436["CUP_B_HMMWV_Crows_M2_USA",4,[],true],
437["CUP_B_HMMWV_M2_GPK_USA",4,[],true],
438["CUP_B_HMMWV_M2_USA",4,[],true],
439["CUP_B_HMMWV_DSHKM_GPK_ACR",4,[],true],
440["CUP_B_HMMWV_AGS_GPK_ACR",4,[],true],
441["CUP_B_HMMWV_MK19_USMC",4,[],true],
442["CUP_B_HMMWV_MK19_USA",4,[],true],
443["CUP_B_HMMWV_Crows_MK19_USA",4,[],true],
444["CUP_B_HMMWV_SOV_USA",4,[],true],
445["CUP_B_Ridgback_HMG_GB_D",4,[],true],
446["CUP_B_Ridgback_HMG_GB_W",4,[],true],
447["CUP_B_Ridgback_GMG_GB_D",4,[],true],
448["CUP_B_Ridgback_GMG_GB_W",4,[],true],
449["CUP_B_Ridgback_LMG_GB_D",4,[],true],
450["CUP_B_Ridgback_LMG_GB_W",4,[],true],
451["CUP_B_Wolfhound_HMG_GB_D",4,[],true],
452["CUP_B_Wolfhound_HMG_GB_W",4,[],true],
453["CUP_B_Wolfhound_GMG_GB_D",4,[],true],
454["CUP_B_Wolfhound_GMG_GB_W",4,[],true],
455["CUP_B_Wolfhound_LMG_GB_D",4,[],true],
456["CUP_B_Wolfhound_LMG_GB_W",4,[],true],
457["CUP_B_RG31_M2_USMC",4,[],true],
458["CUP_B_RG31_M2_OD_USMC",4,[],true],
459["CUP_B_RG31_M2_GC_USMC",4,[],true],
460["CUP_B_RG31_Mk19_USMC",4,[],true],
461["CUP_B_RG31_Mk19_OD_USMC",4,[],true],
462["CUP_B_RG31E_M2_USMC",4,[],true],
463["CUP_O_GAZ_Vodnik_BPPU_RU",4,[],true],
464["CUP_O_GAZ_Vodnik_PK_RU",4,[],true],
465["CUP_B_CH53E_USMC",4,[],true],
466["CUP_B_UH1Y_UNA_F",4,[],true],
467["CUP_B_UH1Y_MEV_F",4,[],true],
468["CUP_C_Mi17_Civilian_RU",4,[],true],
469["CUP_B_Mi17_CDF",4,[],true],
470["CUP_O_Mi17_TK",4,[],true],
471["CUP_B_Mi17_medevac_CDF",4,[],true],
472["CUP_B_Mi171Sh_Unarmed_ACR",4,[],true],
473["CUP_O_Mi8_medevac_CHDKZ",4,[],true],
474["CUP_O_Mi8_medevac_RU",4,[],true],
475["CUP_Merlin_HC3_FFV",4,[],true],
476["CUP_Merlin_HC3",4,[],true],
477["CUP_Merlin_HC3_MED",4,[],true],
478["CUP_B_MH60S_USMC",4,[],true],
479["CUP_B_MH60S_FFV_USMC",4,[],true],
480["CUP_B_AW159_Unarmed_BAF",4,[],true],
481["CUP_B_CH47F_USA",4,[],true],
482["CUP_B_CH47F_GB",4,[],true],
483["CUP_B_UH60M_US",4,[],true],
484["CUP_B_UH60L_US",4,[],true],
485["CUP_B_UH60M_FFV_US",4,[],true],
486["CUP_B_UH60L_FFV_US",4,[],true],
487["CUP_B_UH60M_Unarmed_US",4,[],true],
488["CUP_B_UH60L_Unarmed_US",4,[],true],
489["CUP_B_UH60M_Unarmed_FFV_US",4,[],true],
490["CUP_B_UH60L_Unarmed_FFV_US",4,[],true],
491["CUP_B_UH60M_Unarmed_FFV_MEV_US",4,[],true],
492["CUP_B_UH60L_Unarmed_FFV_MEV_US",4,[],true],
493["CUP_I_UH60L_RACS",4,[],true],
494["CUP_I_UH60L_FFV_RACS",4,[],true],
495["CUP_I_UH60L_Unarmed_RACS",4,[],true],
496["CUP_I_UH60L_Unarmed_FFV_Racs",4,[],true],
497["CUP_I_UH60L_Unarmed_FFV_MEV_Racs",4,[],true],
498["CUP_B_AH1Z_NoWeapons",4,[],true],
499["CUP_C_DC3_CIV",4,[],true],
500["CUP_C_C47_CIV",4,[],true],
501["CUP_B_MV22_USMC",4,[],true],
502["CUP_B_AV8B_Empty",4,[],true]
503];
504
505
506{
507 for "_i" from 0 to (_x select 1) do
508 {
509 _cancelSpawn = false;
510 _obj = _x select 0;
511 _count = count allMissionObjects _obj;
512 _positionCount = (count (_x select 2));
513 _isRandomRoadPos = _x select 3;
514
515 if !(_count >= _x select 1) then
516 {
517 _vehicleClass = _x select 0;
518 _position = selectRandom (_x select 2);
519
520 if !(_isRandomRoadPos) then
521 {
522 _foundSafePos = false;
523 _failSafe = 15;
524 _checks = 0;
525 waitUntil
526 {
527 _position = selectRandom (_x select 2);
528 _nearVehicles = nearestObjects [_position, ["car","air"], 10];
529 _nearVechicleCount = count _nearVehicles;
530 if (_nearVechicleCount == 0) then
531 {
532 _foundSafePos = true;
533 };
534 _checks = _checks + 1;
535 if (_checks >= _failSafe) then {_cancelSpawn = true; _foundSafePos = true;};
536 _foundSafePos
537 };
538 }
539 else
540 {
541 _foundSafePos = false;
542 waitUntil
543 {
544 _spawnCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"); //Center of your map
545 _min = 15; // minimum distance from the center position (Number) in meters
546 _max = 175561; // maximum distance from the center position (Number) in meters
547 _mindist = 5; // minimum distance from the nearest object (Number) in meters, ie. spawn at least this distance away from anything within x meters..
548 _water = 0; // water mode 0: cannot be in water , 1: can either be in water or not , 2: must be in water
549 _shoremode = 0; // 0: does not have to be at a shore , 1: must be at a shore
550 _blackList = [[[0, 0],[0,0]]];
551
552 _startPosRoad = [_spawnCenter,_min,_max,_mindist,_water,10,_shoremode,_blackList] call BIS_fnc_findSafePos; //Find random spot on the map
553 //_onRoadCheck = _startPosRoad nearRoads 100; //Find road objects 100m from spot
554 //_countPossibleRoads = count _onRoadCheck; // count road objects
555
556 //if (_countPossibleRoads == 0) then
557 //{
558 //}
559 //else
560 //{
561 // _road = _onRoadCheck select 0;
562 // _position = getPos _road;
563 // _foundSafePos = true;
564 //};
565 _startPosRoad pushBack 0;
566 _position = _startPosRoad;
567 _foundSafePos = true;
568 uiSleep 0.1;
569 _foundSafePos
570 };
571 };
572 if !(_cancelSpawn) then
573 {
574 if !(_debugForSP) then
575 {
576 _pinCode = format ["%1%2%3%4",round (random 8 +1),round (random 8 +1),round (random 8 +1),round (random 8 +1)];
577 _vehicleObject = [_vehicleClass, _position, (random 360), true,_pinCode] call ExileServer_object_vehicle_createPersistentVehicle;
578 _vehicleObject setDamage 0.6;
579 _vehicleObject setFuel round (random 15 +10);
580
581 if !((_x select 0) isKindOf "AIR") then
582 {
583 _wheels = ["HitLF2Wheel","HitLFWheel","HitRFWheel","HitRF2Wheel"];
584 {
585 if (random 1 > 0.5) then
586 {
587 _vehicleObject setHitPointDamage [_x,1];
588 };
589 } forEach _wheels;
590 };
591
592 _vehicleObject setVariable ["ExileOwnerUID", _uid];
593 _vehicleObject setVariable ["ExileIsLocked",0];
594 _vehicleObject lock 0;
595 _vehicleObject call ExileServer_object_vehicle_database_insert;
596 _vehicleObject call ExileServer_object_vehicle_database_update;
597
598 diag_log format ["[Event: Persistent Spawns] -- Spawned a %1 at location: %2 -- Max allowed: %3",_x select 0,_position, _x select 1];
599 //[format["[Event: Persistent Spawns] -- Spawned a %1 at location: %2 -- Max allowed: %3",_x select 0,_position, _x select 1]] call MAR_fnc_log;
600 }
601 else
602 {
603 _vehicleObject = createVehicle [_vehicleClass,_position,[], 0, "NONE"];
604
605 if !((_x select 0) isKindOf "AIR") then
606 {
607 _wheels = ["HitLF2Wheel","HitLFWheel","HitRFWheel","HitRF2Wheel"];
608 {
609 _vehicleObject setHitPointDamage [_x,1];
610 } forEach _wheels;
611 };
612
613 _marker = createMarker [format["HeliCrash%1", diag_tickTime], _position];
614 _marker setMarkerType "mil_dot";
615 _marker setMarkerText "Vehicle";
616 };
617 }
618 else
619 {
620 if !(_debugForSP) then
621 {
622 //[format["[Event: Persistent Spawns] -- Could not find valid spawn position for %1 at position %2 -- exiting try for this vehicle",_x select 0,_position]] call MAR_fnc_log;
623 diag_log format["[Event: Persistent Spawns] -- Could not find valid spawn position for %1 at position %2 -- exiting try for this vehicle",_x select 0,_position];
624 }
625 else
626 {
627 hint format["[Event: Persistent Spawns] -- Could not find valid spawn position for %1 at position %2 -- exiting try for this vehicle",_x select 0,_position];
628 };
629 };
630 };
631 };
632
633} forEach _vehicleArray;
634
635_scriptComplete = true;
636
637waitUntil
638{
639 diag_log format ["ExileServer - Finished spawning world vehicles"];
640 //["ExileServer - Finished spawning world vehicles"] call MAR_fnc_log;
641 _scriptComplete
642};