Advertisement
Uwilldie

Untitled

Jan 17th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. /**
  2. * ExileServer_world_spawnVehicles
  3. *
  4. * Exile Mod
  5. * www.exilemod.com
  6. * © 2015 Exile Mod Team
  7. *
  8. * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
  9. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
  10. */
  11.  
  12. private["_mapsizeX","_mapsizeY","_gridSize","_gridVehicles","_gridSizeOffset","_vehicleCount","_debugMarkers","_vehicleClassNames","_maximumDamage","_damageChance","_xSize","_workingXSize","_ySize","_workingYSize","_position","_spawned","_spawnedPositions","_positionReal","_spawnControl","_vehicleClassName","_vehicle","_hitpoints","_debugMarker","_vehicleItemsAllowed","_allowedItems","_maximumItemsPerVehicle","_itemsAdded","_itemsPerVehicle","_itemAdd","_cargoType"];
  13. _mapsizeX = worldSize;
  14. _mapsizeY = worldSize;
  15. _gridSize = getNumber(configFile >> "CfgSettings" >> "VehicleSpawn" >> "vehiclesGridSize");
  16. _gridVehicles = getNumber(configFile >> "CfgSettings" >> "VehicleSpawn" >> "vehiclesGridAmount");
  17. format ["Spawning Dynamic Vehicles. GridSize: %1 Vehs/Grid : %2",_gridSize,_gridVehicles] call ExileServer_util_log;
  18. _gridSizeOffset = _gridSize % 2;
  19. _vehicleCount = 0;
  20. _debugMarkers = ((getNumber(configFile >> "CfgSettings" >> "VehicleSpawn" >> "vehiclesDebugMarkers")) isEqualTo 1);
  21. _vehicleClassNames = getArray (configFile >> "CfgSettings" >> "VehicleSpawn" >> "ground");
  22. _maximumDamage = getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "maximumDamage");
  23. _damageChance = getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "damageChance");
  24. _vehicleItemsAllowed = getNumber (missionConfigFile >> "SpawnVehicleItems" >> "WorldVehicles" >> "vehicleItemsAllowed");
  25. _allowedItems = getArray (missionConfigFile >> "SpawnVehicleItems" >> "WorldVehicles" >> "allowedItems");
  26. _maximumItemsPerVehicle = getNumber (missionConfigFile >> "SpawnVehicleItems" >> "WorldVehicles" >> "maximumItemsPerVehicle");
  27. _maximumItemsPerVehicle = _maximumItemsPerVehicle +1;
  28. for "_xSize" from 0 to _mapsizeX step _gridSize do
  29. {
  30. _workingXSize = _xSize + _gridSizeOffset;
  31. for "_ySize" from 0 to _mapsizeY step _gridSize do
  32. {
  33. _workingYSize = _ySize + _gridSizeOffset;
  34. _position = [_workingXSize,_workingYSize];
  35. _spawned = 0;
  36. _spawnedPositions = [];
  37. while {_spawned < _gridVehicles} do
  38. {
  39. _positionReal = [_position, 25, _gridSize, 5, 0 , 1 , 0 , _spawnedPositions] call BIS_fnc_findSafePos;
  40. if(count _positionReal isEqualTo 3)exitWith{};
  41. _spawnControl = [[(_positionReal select 0) - 50, (_positionReal select 1) + 50],[(_positionReal select 0) + 50,(_positionReal select 1) - 50]];
  42. _spawnedPositions pushBack _spawnControl;
  43. _positionReal pushBack 0;
  44. _vehicleClassName = _vehicleClassNames select (floor (random (count _vehicleClassNames)));
  45. _vehicle = [_vehicleClassName, _positionReal, random 360, true] call ExileServer_object_vehicle_createNonPersistentVehicle;
  46. _hitpoints = (getAllHitPointsDamage _vehicle) select 0;
  47. {
  48. if ((random 100) < _damageChance) then
  49. {
  50. _vehicle setHitPointDamage [_x, random _maximumDamage];
  51. };
  52. }
  53. forEach _hitpoints;
  54. if (_debugMarkers) then
  55. {
  56. _debugMarker = createMarker ["vehicleMarker#"+str _vehicleCount, _positionReal];
  57. _debugMarker setMarkerColor "ColorOrange";
  58. _debugMarker setMarkerType "mil_dot_noShadow";
  59. };
  60. if (_vehicleItemsAllowed isEqualTo 1) then {
  61. _itemsAdded = 0;
  62. _itemsPerVehicle = floor (random _maximumItemsPerVehicle);
  63. while{_itemsAdded < _itemsPerVehicle} do {
  64. _itemAdd = _allowedItems select (floor (random (count _allowedItems)));
  65. _cargoType = _itemAdd call ExileClient_util_cargo_getType;
  66. switch (_cargoType) do {
  67. case 1: { _vehicle addMagazineAmmoCargo [_itemAdd, 1, 1]; };
  68. case 2: { _vehicle addWeaponCargoGlobal [_itemAdd, 1]; };
  69. case 3: { _vehicle addBackpackCargoGlobal [_itemAdd, 1]; };
  70. default { _vehicle addItemCargoGlobal [_itemAdd, 1, 1]; };
  71. };
  72. _itemsAdded = _itemsAdded + 1;
  73. };
  74. };
  75. _spawned = _spawned + 1;
  76. _vehicleCount = _vehicleCount + 1;
  77. };
  78. };
  79. };
  80.  
  81. //Limit Map
  82.  
  83. private["_max", "_count", "_roads", "_road", "_position", "_vehicle", "_hitpoints"];
  84.  
  85. _max = 100;
  86. _count = 0;
  87.  
  88. for "_i" from 1 to _max do {
  89. _road = getPos (([7700, 7900, 0] nearRoads 11000) call BIS_fnc_selectRandom);
  90. _position = [_road, 0, 5, 5, 0, 99999, 0] call BIS_fnc_findSafePos;
  91. _vehicle = [((getArray (configFile >> "CfgSettings" >> "VehicleSpawn" >> "ground")) call BIS_fnc_selectRandom), _road, random 360, true] call ExileServer_object_vehicle_createNonPersistentVehicle;
  92. _hitpoints = (getAllHitPointsDamage _vehicle) select 0;
  93. {
  94. if ((random 75) < (getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "damageChance"))) then {
  95. _vehicle setHitPointDamage [_x, random (getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "maximumDamage"))];
  96. };
  97. } forEach _hitpoints;
  98. _count = _count + 1;
  99. };
  100.  
  101. format ["Vehicles Spawned: %1", _count] call ExileServer_util_log;
  102. true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement