Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private _debugMarkers = ((getNumber(configFile >> "CfgSettings" >> "VehicleSpawn" >> "vehiclesDebugMarkers")) isEqualTo 1);
- private _vehicleClassNames = getArray (configFile >> "CfgSettings" >> "VehicleSpawn" >> "ground");
- private _maximumDamage = getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "maximumDamage");
- private _damageChance = getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "damageChance");
- private _max = 40;
- private _count = 0;
- private _middle = worldSize/2;
- private _pos = [_middle,_middle,0];
- private _maxDist = _middle;
- positionToUse = [0,0,0];
- if (worldName == 'Namalsk') then
- {
- _max = 30;
- };
- // Get position of nearest roads
- private _nearRoads = _pos nearRoads _maxDist;
- for "_i" from 1 to _max do
- {
- private _vehicleToSpawn = (_vehicleClassNames) call BIS_fnc_selectRandom;
- private _validspot = false;
- while{!_validspot} do
- {
- private _selectedRoad = (_nearRoads) call BIS_fnc_selectRandom;
- //diag_log format["[Random Vehicle Spawning]: Selected road %1 (%2)",_selectedRoad,time];
- private _road = position _selectedRoad;
- private _startPosition = [_road select 0, _road select 1, 0];
- private _position = _startPosition findEmptyPosition [0,25,_vehicleToSpawn];
- if(!isNil "_position" && (count _position != 0)) then
- {
- _validspot = true;
- //Check if near player territory
- private _nearBase = (nearestObjects [_position,["Exile_Construction_Flag_Static"],500]) select 0;
- if (!isNil "_nearBase") then { _validspot = false; };
- // Don't spawn AI near traders and spawn zones
- {
- switch (getMarkerType _x) do
- {
- case "ExileSpawnZone":
- {
- if(_position distance (getMarkerPos _x) < 1500) exitWith
- {
- _validspot = false;
- };
- };
- case "ExileTraderZone":
- {
- if(_position distance (getMarkerPos _x) < 1500) exitWith
- {
- _validspot = false;
- };
- };
- };
- }
- forEach allMapMarkers;
- //diag_log format["[Random Vehicle Spawning]: valid spot found from %1 @ %2 (%3)",_startPosition,_position,time];
- positionToUse = _position;
- };
- };
- private _vehicle = [_vehicleToSpawn, positionToUse, random 360, true] call ExileServer_object_vehicle_createNonPersistentVehicle;
- // Add items to vehicle
- clearMagazineCargoGlobal _vehicle;
- clearWeaponCargoGlobal _vehicle;
- clearItemCargoGlobal _vehicle;
- _vehicle addItemCargoGlobal ["Exile_Item_DuctTape", (random 1)];
- _vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
- _vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", (random 2)];
- _vehicle addItemCargoGlobal ["Exile_Item_EMRE", (random 2)];
- private _hitpoints = (getAllHitPointsDamage _vehicle) select 0;
- {
- if ((random 75) < _damageChance) then
- {
- _vehicle setHitPointDamage [_x, random (_maximumDamage)];
- };
- } forEach _hitpoints;
- if (_debugMarkers) then
- {
- private _debugMarker = createMarker ["vehicleMarker#"+str _count, positionToUse];
- _debugMarker setMarkerColor "ColorOrange";
- _debugMarker setMarkerType "mil_dot_noShadow";
- };
- private _logDetail = format["[Random Vehicle Spawning]: creating vehicle %1 @ %2 (%3)",_vehicleToSpawn,positionToUse,time];
- diag_log _logDetail;
- _count = _count + 1;
- };
- format ["[Random Vehicle Spawning]: Vehicles Spawned: %1", _count] call ExileServer_util_log;
- true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement