Build 141

fixed an issue with Hostage missions.
Fixed an issue whereby collisions between objects at missions caused them to fly about.
Changed the default for some objects to allow damage which should increase realism and make certain player tasks like loading crates easier.
This commit is contained in:
Ghostrider-GRG- 2018-06-19 08:03:50 -04:00
parent 411c3eac70
commit 461b89b44c
28 changed files with 1777 additions and 361 deletions

View File

@ -0,0 +1,130 @@
// self explanatory. Checks to see if the position is in either a black listed location or near a player spawn.
// As written this relies on BIS_fnc_findSafePos to ensure that the spawn point is not on water or an excessively steep slope.
//
/*
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 1-22-17
--------------------------
License
--------------------------
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole","_oldPos","_ignore"];
_findNew = true;
_tries = 0;
while {_findNew} do {
_findNew = false;
//[_centerForSearch,_minDistFromCenter,_maxDistanceFromCenter,_minDistanceFromNearestObj,_waterMode,_maxTerainGradient,_shoreMode] call BIS_fnc_findSafePos
// https://community.bistudio.com/wiki/BIS_fnc_findSafePos
_coords = [blck_mapCenter,0,blck_mapRange,30,0,5,0] call BIS_fnc_findSafePos;
//diag_log format["<<--->> _coords = %1",_coords];
{
if ((_x distance2D _coords) < blck_MinDistanceFromMission) then {
_findNew = true;
};
}forEach blck_heliCrashSites;
{
if ( ((_x select 0) distance2D _coords) < (_x select 1)) exitWith
{
_findNew = true;
};
} forEach blck_locationBlackList;
//diag_log format["#- findSafePosn -# blck_ActiveMissionCoords isEqualTo %1", blck_ActiveMissionCoords];
{
//diag_log format["#- findSafePosn -# blck_ActiveMissionCoords active mission item is %1", _x];
if ( (_x distance2D _coords) < blck_MinDistanceFromMission) exitWith
{
_FindNew = true;
};
} forEach blck_ActiveMissionCoords;
//diag_log format["#- findSafePosn -# blck_recentMissionCoords isEqualTo %1", blck_recentMissionCoords];
{
_ignore = false;
//diag_log format["-# findSafePosn.sqf -# Old Mission element is %1", _x];
if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location.
{
_ignore = true;
blck_recentMissionCoords= blck_recentMissionCoords - _x;
//diag_log format["-# findSafePosn.sqf -# Removing Old Mission element: %1", _x];
};
if !(_ignore) then
{
//diag_log format["-# findSafePosn.sqf -# testing _coords against Old Mission coords is %1", _x select 0];
if ( ((_x select 0) distance2D _coords) < blck_MinDistanceFromMission) then
{
_findNew = true;
//diag_log format["-# findSafePosn.sqf -# Too Close to Old Mission element: %1", _x];
};
};
} forEach blck_recentMissionCoords;
// test for water nearby
_dist = 100;
for [{_i=0}, {_i<360}, {_i=_i+20}] do
{
_xpos = (_coords select 0) + sin (_i) * _dist;
_ypos = (_coords select 1) + cos (_i) * _dist;
_newPos = [_xpos,_ypos,0];
if (surfaceIsWater _newPos) then
{
_findNew = true;
_i = 361;
};
};
// check that missions spawn at least 1 kkm from towns
{
_townPos = [((locationPosition _x) select 0), ((locationPosition _x) select 1), 0];
if (_townPos distance2D _coords < blck_minDistanceFromTowns) exitWith {
_findNew = true;
};
} forEach blck_townLocations;
// check for nearby plot pole/freq jammer within 800 meters
_mod = call blck_fnc_getModType;
_pole = "";
if (_mod isEqualTo "Epoch") then {_pole = "PlotPole_EPOCH"};
if (_mod isEqualTo "Exile") then {_pole = "Exile_Construction_Flag_Static"};
//diag_log format["_fnc_findSafePosn:: -- >> _mod = %1 and _pole = %2",_mod,_pole];
{
if ((_x distance2D _coords) < blck_minDistanceToBases) then
{
_findNew = true;
};
}forEach nearestObjects[blck_mapCenter, [_pole], blck_minDistanceToBases];
// check to be sure we do not spawn a mission on top of a player.
{
if (isPlayer _x && (_x distance2D _coords) < blck_minDistanceToPlayer) then
{
_findNew = true;
};
}forEach playableUnits;
if (toLower(worldName) isEqualTo "taviana") then
{
_tavTest = createVehicle ["SmokeShell",_coords,[], 0, "CAN_COLLIDE"];
_tavHeight = (getPosASL _tavTest) select 2;
deleteVehicle _tavTest;
if (_tavHeight > 100) then {_FindNew = true;};
};
_tries = _tries + 1;
};
if ((count _coords) > 2) then
{
private["_temp"];
_temp = [_coords select 0, _coords select 1];
_coords = _temp;
};
_coords;

View File

@ -5,7 +5,6 @@
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 1-22-17
--------------------------
License
--------------------------
@ -15,59 +14,112 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole","_oldPos","_ignore"];
private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole"];
private["_minDistFromBases","_minDistFromMission","_minDistanceFromTowns","_minSistanceFromPlayers","_weightBlckList","_weightBases","_weightMissions","_weightTowns","_weightPlayers"];
_findNew = true;
_tries = 0;
while {_findNew} do {
_findNew = false;
//[_centerForSearch,_minDistFromCenter,_maxDistanceFromCenter,_minDistanceFromNearestObj,_waterMode,_maxTerainGradient,_shoreMode] call BIS_fnc_findSafePos
// https://community.bistudio.com/wiki/BIS_fnc_findSafePos
_coords = [blck_mapCenter,0,blck_mapRange,30,0,5,0] call BIS_fnc_findSafePos;
//diag_log format["<<--->> _coords = %1",_coords];
_minDistFromBases = blck_minDistanceToBases;
_minDistFromMission = blck_MinDistanceFromMission;
_minDistanceFromTowns = blck_minDistanceFromTowns;
_minSistanceFromPlayers = blck_minDistanceToPlayer;
_weightBlckList = 0.95;
_weightBases = 0.9;
_weightMissions = 0.8;
_weightTowns = 0.7;
_weightPlayers = 0.6;
if (blck_modType isEqualTo "Epoch") then {_pole = "PlotPole_EPOCH"};
if (blck_modType isEqualTo "Exile") then {_pole = "Exile_Construction_Flag_Static"};
{
if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location.
{
if ((_x distance2D _coords) < blck_MinDistanceFromMission) then {
_findNew = true;
blck_recentMissionCoords deleteAt (blck_recentMissionCoords find _x);
};
}forEach blck_heliCrashSites;
}forEach blck_recentMissionCoords;
while {_findNew} do
{
_findNew = false;
_coords = [blck_mapCenter,0,blck_mapRange,30,0,5,0] call BIS_fnc_findSafePos;
//diag_log format["_fnc_findSafePosn: _coords = %1 | _tries = %2",_coords,_tries];
{
if ( ((_x select 0) distance2D _coords) < (_x select 1)) exitWith
{
_findNew = true;
};
} forEach blck_locationBlackList;
//diag_log format["#- findSafePosn -# blck_ActiveMissionCoords isEqualTo %1", blck_ActiveMissionCoords];
if !(_findNew) then
{
//diag_log format["#- findSafePosn -# blck_ActiveMissionCoords active mission item is %1", _x];
if ( (_x distance2D _coords) < blck_MinDistanceFromMission) exitWith
{
if ((_x distance2D _coords) < _minDistFromMission) then {
_findNew = true;
};
}forEach blck_heliCrashSites;
};
if !(_findNew) then
{
{
if ( (_x distance2D _coords) < _minDistFromMission) exitWith
{
_FindNew = true;
};
} forEach blck_ActiveMissionCoords;
//diag_log format["#- findSafePosn -# blck_recentMissionCoords isEqualTo %1", blck_recentMissionCoords];
{
_ignore = false;
//diag_log format["-# findSafePosn.sqf -# Old Mission element is %1", _x];
if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location.
{
_ignore = true;
blck_recentMissionCoords= blck_recentMissionCoords - _x;
//diag_log format["-# findSafePosn.sqf -# Removing Old Mission element: %1", _x];
};
if !(_ignore) then
if !(_findNew) then
{
//diag_log format["-# findSafePosn.sqf -# testing _coords against Old Mission coords is %1", _x select 0];
if ( ((_x select 0) distance2D _coords) < blck_MinDistanceFromMission) then
{
if ((_x distance2D _coords) < blck_minDistanceToBases) then
{
_findNew = true;
//diag_log format["-# findSafePosn.sqf -# Too Close to Old Mission element: %1", _x];
};
}forEach nearestObjects[blck_mapCenter, [_pole], blck_minDistanceToBases];
};
if !(_findNew) then
{
{
_townPos = [((locationPosition _x) select 0), ((locationPosition _x) select 1), 0];
if (_townPos distance2D _coords < blck_minDistanceFromTowns) exitWith {
_findNew = true;
};
} forEach blck_townLocations;
};
if !(_findNew) then
{
{
if (isPlayer _x && (_x distance2D _coords) < blck_minDistanceToPlayer) then
{
_findNew = true;
};
}forEach playableUnits;
};
if (_findNew) then
{
if (_tries in [3,6,9,12,15,18,21]) then
{
_minDistFromMission = _minDistFromMission * _weightMissions;
_minDistFromBases = _minDistFromBases * _weightBases;
_minSistanceFromPlayers = _minSistanceFromPlayers * _minSistanceFromPlayers;
_minDistanceFromTowns = _minDistanceFromTowns * _weightTowns;
};
if (_tries > 25) then
{
_findNew = false;
};
};
} forEach blck_recentMissionCoords;
};
if ((count _coords) > 2) then
{
private["_temp"];
_temp = [_coords select 0, _coords select 1];
_coords = _temp;
};
_coords;
/*
while {_findNew} do {
// test for water nearby
_dist = 100;
@ -82,34 +134,6 @@ while {_findNew} do {
_i = 361;
};
};
// check that missions spawn at least 1 kkm from towns
{
_townPos = [((locationPosition _x) select 0), ((locationPosition _x) select 1), 0];
if (_townPos distance2D _coords < blck_minDistanceFromTowns) exitWith {
_findNew = true;
};
} forEach blck_townLocations;
// check for nearby plot pole/freq jammer within 800 meters
_mod = call blck_fnc_getModType;
_pole = "";
if (_mod isEqualTo "Epoch") then {_pole = "PlotPole_EPOCH"};
if (_mod isEqualTo "Exile") then {_pole = "Exile_Construction_Flag_Static"};
//diag_log format["_fnc_findSafePosn:: -- >> _mod = %1 and _pole = %2",_mod,_pole];
{
if ((_x distance2D _coords) < blck_minDistanceToBases) then
{
_findNew = true;
};
}forEach nearestObjects[blck_mapCenter, [_pole], blck_minDistanceToBases];
// check to be sure we do not spawn a mission on top of a player.
{
if (isPlayer _x && (_x distance2D _coords) < blck_minDistanceToPlayer) then
{
_findNew = true;
};
}forEach playableUnits;
if (toLower(worldName) isEqualTo "taviana") then
{
@ -121,10 +145,4 @@ while {_findNew} do {
_tries = _tries + 1;
};
if ((count _coords) > 2) then
{
private["_temp"];
_temp = [_coords select 0, _coords select 1];
_coords = _temp;
};
_coords;

View File

@ -83,7 +83,7 @@ if !(isNull _groupSpawned) then
};
#endif
//params["_pos","_aiGroup",_skillLevel,_uniforms, _headGear,_vests,_backpacks,_Launcher,_weaponList,_sideArms,_scuba];
[_pos,_groupSpawned,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba, _antiGlitch] call blck_fnc_spawnUnit;
[_pos,_groupSpawned,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit;
};
_groupSpawned selectLeader (units _groupSpawned select 0);
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_pattern",["MOVE","SAD"]]];

View File

@ -47,124 +47,20 @@ if (isNil "_hostageConfig") then {_hostageConfig = []};
if (isNil "_enemyLeaderConfig") then {_enemyLeaderConfig = []};
if (isNil "_useMines") then {_useMines = blck_useMines;};
if (isNil "_weaponList") then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
if (isNil "_sideArms") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_sideArms = blck_Pistols_blue};
case "red": {_sideArms = blck_Pistols_red};
case "green": {_sideArms = blck_Pistols_green};
case "orange": {_sideArms = blck_Pistols_orange};
default {_sideArms = blck_Pistols};
};
};
if (isNil "_uniforms") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_uniforms = blck_SkinList_blue};
case "red": {_uniforms = blck_SkinList_red};
case "green": {_uniforms = blck_SkinList_green};
case "orange": {_uniforms = blck_SkinList_orange};
default {_uniforms = blck_SkinList};
};
};
if (isNil "_headGear") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_headGear = blck_headgear_blue};
case "red": {_headGear = blck_headgear_red};
case "green": {_headGear = blck_headgear_green};
case "orange": {_headGear = blck_headgear_orange};
default {_headGear = blck_headgear};
};
};
if (isNil "_vests") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_vests = blck_vests_blue};
case "red": {_vests = blck_vests_red};
case "green": {_vests = blck_vests_green};
case "orange": {_vests = blck_vests_orange};
default {_vests = blck_vests};
};
};
if (isNil "_backpacks") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_backpacks = blck_backpacks_blue};
case "red": {_backpacks = blck_backpacks_red};
case "green": {_backpacks = blck_backpacks_green};
case "orange": {_backpacks = blck_backpacks_orange};
default {_backpacks = blck_backpacks};
};
};
if (isNil "_chanceHeliPatrol") then
{
switch (toLower(_aiDifficultyLevel)) do
{
case "blue": {_chanceHeliPatrol = blck_chanceHeliPatrolBlue};
case "red": {_chanceHeliPatrol = blck_chanceHeliPatrolRed};
case "green": {_chanceHeliPatrol = blck_chanceHeliPatrolGreen};
case "orange": {_chanceHeliPatrol = blck_chanceHeliPatrolOrange};
default {_chanceHeliPatrol = 0};
};
};
if (isNil "_noChoppers") then
{
switch (toLower(_aiDifficultyLevel)) do
{
case "blue": {_noChoppers = blck_noPatrolHelisBlue};
case "red": {_noChoppers = blck_noPatrolHelisRed};
case "green": {_noChoppers = blck_noPatrolHelisGreen};
case "orange": {_noChoppers = blck_noPatrolHelisOrange};
default {_noChoppers = 0};
};
};
if (isNil "_chancePara") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_chancePara = blck_chanceParaBlue};
case "red": {_chancePara = blck_chanceParaRed};
case "green": {_chancePara = blck_chanceParaGreen};
case "orange": {_chancePara = blck_chanceParaOrange};
default {_chancePara = 0};
};
};
if (isNil "_missionHelis") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_missionHelis = blck_patrolHelisBlue};
case "red": {_missionHelis = blck_patrolHelisRed};
case "green": {_missionHelis = blck_patrolHelisGreen};
case "orange": {_missionHelis = blck_patrolHelisOrange};
default {_missionHelis = blck_patrolHelisBlue};
};
};
if (isNil "_noPara") then
{
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_noPara = blck_noParaBlue};
case "red": {_noPara = blck_noParaRed};
case "green": {_noPara = blck_noParaGreen};
case "orange": {_noPara = blck_noParaOrange};
default {_noPara = 0};
};
};
if (isNil "_sideArms") then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms};
if (isNil "_uniforms") then {_uniforms = [_aiDifficultyLevel] call blck_fnc_selectAIUniforms};
if (isNil "_headGear") then {_headGear = [_aiDifficultyLevel] call blck_fnc_selectAIHeadgear};
if (isNil "_vests") then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests};
if (isNil "_backpacks") then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks};
if (isNil "_chanceHeliPatrol") then {_chanceHeliPatrol = [_aiDifficultyLevel] call blck_fnc_selectChanceHeliPatrol};
if (isNil "_noChoppers") then {_noChoppers = [_aiDifficultyLevel] call blck_fnc_selectNumberAirPatrols};
if (isNil "_chancePara") then {_chancePara = [_aiDifficultyLevel] call blck_fnc_selectChanceParatroops};
if (isNil "_missionHelis") then {_missionHelis = [_aiDifficultyLevel] call blck_fnc_selectMissionHelis};
if (isNil "_noPara") then {_noPara = [_aiDifficultyLevel] call blck_fnc_selectNumberParatroops};
if (isNil "_chanceLoot") then {_chanceLoot = 1.0}; //0.5};
if (isNil "_paraTriggerDistance") then {_paraTriggerDistance = 400;};
if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Green};
if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed};
if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Green}; // Add diffiiculty based settings
if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed}; // Add difficulty based settings
_objects = [];

View File

@ -428,8 +428,16 @@ private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
_x setVariable["crateSpawnPos", (getPos _x)];
} forEach _crates;
private["_thresholdPercentageKilled","_result","_minPercentageKilled"];
_thresholdPercentageKilled = (1-blck_killPercentage);
private["_minNoAliveForCompletion","_result","_minPercentageKilled"];
if (_secureAsset) then
{
_minNoAliveForCompletion = round((1 - blck_killPercentage) * (({alive _x} count _blck_AllMissionAI) - 1));
if (_minNoAliveForCompletion < 2) then {_minNoAliveForCompletion = 2};
} else {
_minNoAliveForCompletion = floor((1 - blck_killPercentage) * ({alive _x} count _blck_AllMissionAI));
if (_minNoAliveForCompletion == 0) then {_minNoAliveForCompletion = 1};
};
while {_missionComplete isEqualTo -1} do
{
#ifdef blck_debugMode
@ -442,15 +450,11 @@ while {_missionComplete isEqualTo -1} do
if (_endIfAIKilled) then
{
_result = [_blck_AllMissionAI,1] call blck_fnc_countAliveAI;
// _result is an array of [no alive, total spawned];
//private _noneAlive = if (_result select 0 isEqualTo 0) then {true} else {false};
//private _aiCountBelowThreshold = if ( (_result select 0)/(_result select 1) < _thresholdPercentageKilled) then {true} else {false};
//diag_log format["_fnc_missionSpawner: _noneAlive = %1 | _result = %2 | PercentageKilled = %3",_noneAlive,_result,(_result select 0)/(_result select 1)];
if ((_result select 0) < 1 || ((_result select 0)/(_result select 1)) < _thresholdPercentageKilled ) then {_missionComplete = 1};
if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then {_missionComplete = 1};
};
if (_spawnCratesTiming isEqualTo "atMissionSpawn") then
{
// Re-evaluate this - may not need the forEach
{
if ({[_x] call blck_fnc_crateMoved} count _crates > 0) exitWith
{
@ -463,27 +467,27 @@ while {_missionComplete isEqualTo -1} do
{
if !(alive _assetSpawned) then
{
_missionComplete = 1
_missionComplete = 1;
} else {
//if (_assetSpawned getVariable["blck_AIState",0] > 0 && (({alive _x} count _blck_AllMissionAI) isEqualTo 1)) then {_missionComplete = 1};
_result = [_blck_AllMissionAI, 1] call blck_fnc_countAliveAI;
// _result is an array of [no alive, total spawned];
//private _noneAlive = if (_result select 0 isEqualTo 0) then {true} else {false};
//private _aiCountBelowThreshold = if ((_result select 0)/(_result select 1) < _thresholdPercentageKilled) then {true} else {false};
//diag_log format["_fnc_missionSpawner: _noneAlive = %1 | _result = %2 | PercentageKilled = %3",_noneAlive,_result,(_result select 0)/(_result select 1)];
if (((_result select 0)/(_result select 1)) < 0.18) then
if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then
{
if (_assetSpawned getVariable["blck_unguarded",0] isEqualTo 0) then {_assetSpawned setVariable["blck_unguarded",1,true]};
if ((_assetSpawned getVariable["blck_AIState",0] > 0)) then {
_missionComplete = 1:
if ((_assetSpawned getVariable["blck_unguarded",0]) isEqualTo 0) then
{
_assetSpawned setVariable["blck_unguarded",1,true];
};
if ((_assetSpawned getVariable["blck_AIState",0]) isEqualTo 1) then
{
_missionComplete = 1;
_assetSpawned allowdamage false;
};
};
};
};
if (_spawnPara) then
{
if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then
{
_spawnPara = false; // The player gets one try to spawn these.

View File

@ -32,19 +32,11 @@ _newObjs = [];
{
_simDam = _x select 3;
};
_obj = (_x select 0) createVehicle [0,0,0];
//diag_log format["_fnc_spawnBaseObjects: _obj = %1",_obj];
//_spawnPos = (_center vectorAdd (_x select 1));
//_obj = (_x select 0) createVehicle [0,0,0];
_obj = createVehicle[(_x select 0),_center vectorAdd (_x select 1),[],0,"CAN_COLLIDE"];
_newObjs pushback _obj;
//diag_log format["_fnc_spawnBaseObjects: _center = %1 and _x select 1 = %2",_center,_x select 1];
_spawnPos = (_center vectorAdd (_x select 1));
if (surfaceIsWater _spawnPos) then
{
_obj setPosASL _spawnPos;
//diag_log "_fnc_spawnBaseObjects: detected surface == water";
} else {
_obj setPosATL _spawnPos;
//diag_log "_fnc_spawnBaseObjects: detected surface = Land";
};
_obj setDir (_x select 2);
_obj enableDynamicSimulation (_simDam select 0);
_obj allowDamage (_simDam select 1);

View File

@ -15,14 +15,14 @@
params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]];
private["_objects","_wreck","_dir","_dirOffset"];
_objects = [];
_wreck = createVehicle ["Flag_AAF_F", _coords, [], 25, "NONE"];
//_wreck = createVehicle ["Flag_AAF_F", _coords, [], 25, "NONE"];
_objects pushBack _wreck;
{
//Random Position Objects based on distance in array
// https://community.bistudio.com/wiki/BIS_fnc_findSafePos
_pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos;
_wreck = createVehicle[_x, _pos, [], 25, "NONE"];
_wreck allowDamage false;
_wreck = createVehicle[_x, _pos, [], 0, "CAN_COLLIDE"];
_wreck allowDamage true;
_wreck enableSimulation false;
_wreck enableSimulationGlobal false;
_wreck enableDynamicSimulation false;

View File

@ -51,7 +51,7 @@ if (blck_modType isEqualTo "Exile") then
case "orange":{_unit setVariable["ExileMoney",8 + floor(random(blck_maxMoneyOrange)),true];};
};
};
_unit = _aiGroup createUnit[_unitType,_pos,[],5,"FORM"];
_unit = _aiGroup createUnit[_unitType,_pos,[],10,"FORM"];
//_unit setPos ( _pos findEmptyPosition [0.1,3,(typeOf _unit)]);
/*

View File

@ -83,7 +83,7 @@ blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_s
blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission.
blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf";
//blck_fnc_missionAIareDead = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionAIareDead.sqf";
blck_fnc_countAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_countAliveAI.sqf";
//blck_fnc_countAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_countAliveAI.sqf";
blck_fnc_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf";
blck_fnc_loadMissionCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf";
blck_fnc_crateMoved = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf";

View File

@ -12,7 +12,7 @@
*/
#include"\q\addons\custom_server\Configs\blck_defines.hpp";
blck_debugON = true;
blck_debugON = false;
blck_debugLevel = 0; // Sets level of detail for debugging info - WIP.
blck_minFPS = 8;

View File

@ -363,7 +363,7 @@
blck_configsExileLoaded = nil;
if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";};
};
if (true /*blck_useConfigsGeneratedLoadouts*/) then
if (blck_useConfigsGeneratedLoadouts) then
{
diag_log format["[blckeagles] Dynamic Configs Enabled"];
execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf";

View File

@ -3,6 +3,7 @@
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-14-17
--------------------------
License
@ -16,10 +17,6 @@
diag_log "[blckeagls] Loading Configuration Overides";
/*
See the examples below as a guide for adding configs that are unique for each of several servers.
*/
/*
private["_startTime"];
_startTime = diag_tickTime;
_world = toLower format ["%1", worldName];
@ -29,6 +26,7 @@ switch (_world) do {
case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;};
case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;};
case "namalsk":{_nightAccel = 12; _dayAccel = 2; _duskAccel = 6;};
};
switch (toLower (worldName)) do
@ -82,9 +80,9 @@ switch (toLower (worldName)) do
blck_maxCrashSites = 1; // recommended settings: 3 for Altis, 2 for Tanoa, 1 for smaller maps. Set to -1 to disable
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
blck_timeAccelerationDay = ((_serverUpTime + 2)/_daylight); // Daytime time accelearation
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
blck_timeAccelerationNight = (3/_nightTime); // Nighttim time acceleration
blck_timeAccelerationDay = 2; // Daytime time accelearation
blck_timeAccelerationDusk = 6; // Dawn/dusk time accelearation
blck_timeAccelerationNight = (12); // Nighttim time acceleration
};
case "esseker":
{
@ -131,13 +129,99 @@ switch (toLower (worldName)) do
blck_maxCrashSites = 3;
};
};
*/
if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in \custom_server\compiles\blck_variables.sqf
{
// Used primarily for debugging.
diag_log "[blckeagls] Debug seting is ON, Custom configurations used";
//blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
//blck_timeAccelerationDay = 1; // Daytime time accelearation
//blck_timeAccelerationDusk = 18; // Dawn/dusk time accelearation
//blck_timeAccelerationNight = 24; // Nighttim time acceleration
blck_useHC = true;
blck_maxSpawnedMissions = 15;
blck_mainThreadUpdateInterval = 10;
blck_enableOrangeMissions = -1;
blck_enableGreenMissions = -1;
blck_enableRedMissions = -1;
blck_enableBlueMissions = 1;
blck_numberUnderwaterDynamicMissions = -1;
blck_enableHunterMissions = -1;
blck_enableScoutsMissions = -1;
blck_maxCrashSites = -3;
blck_cleanupCompositionTimer = 20; // Time after mission completion at which items in the composition are deleted.
blck_AliveAICleanUpTimer = 20; // Time after mission completion at which any remaining live AI are deleted.
blck_bodyCleanUpTimer = 20;
blck_vehicleDeleteTimer = 20;
//blck_MissionTimeout = 30;
blck_noPatrolHelisOrange = 1;
blck_chanceHeliPatrolOrange = 1;
blck_chanceParaOrange = 1;
blck_chanceHeliPatrolBlue = -1;
blck_noPatrolHelisBlue = -1;
blck_chanceParaBlue = -1; // [0 - 1] set to 0 to deactivate and 1 to always have paratroops spawn over the center of the mission. This value can be a range as well [0.1,0.3]
blck_noParaBlue = 3; // [1-N]
blck_paraTriggerDistanceBlue = 400;
//blck_chanceHeliPatrolBlue = 1;
blck_SpawnEmplaced_Orange = 1; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = 1; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Blue = -1; // Number of static weapons at Blue Missions
blck_SpawnEmplaced_Red = 1;
blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions
blck_SpawnVeh_Green = 1; // Number of vehicles at Green Missions
blck_SpawnVeh_Blue = -4; // Number of vehicles at Blue Missions
blck_SpawnVeh_Red = 1;
blck_TMin_Blue = 7;
blck_TMin_Red = 10;
blck_TMin_Green = 13;
blck_TMin_Orange = 16;
blck_TMin_Hunter = 20;
blck_TMin_Scouts = 20;
blck_TMin_Crashes = 5;
blck_TMin_UMS = 20;
//Maximum Spawn time between missions in seconds
blck_TMax_Blue = 12;
blck_TMax_Red = 15;
blck_TMax_Green = 17;
blck_TMax_Orange = 21;
blck_TMax_Hunter = 22;
blck_TMax_Scouts = 22;
blck_TMax_Crashes = 15;
blck_TMax_UMS = 25;
//blck_MinAI_Orange = 1;
//blck_MaxAI_Orange = 2;
//blck_AIGrps_Orange = 1;
blck_MinAI_Blue = 1;
blck_MaxAI_Blue = 2;
blck_AIGrps_Blue = 1;
blck_AIPatrolVehicles = ["Exile_Car_MB4WDOpen"];
/*
blck_SkillsBlue = [
["aimingAccuracy",0.01],
["aimingShake",0.01],
["aimingSpeed",0.01],
["endurance",0.01],
["spotDistance",0.01],
["spotTime",0.01],
["courage",0.01],
["reloadSpeed",0.80],
["commanding",0.8],
["general",1.00]
];
*/
};
/*
You can define configs for additional mods or loadouts here
*/
/*
blck_CUPWeapons = [
"CUP_lmg_L7A2",
"CUP_lmg_L110A1",
@ -1266,4 +1350,3 @@ blck_NIA_WeaponsSniper = [
"hlc_rifle_psg1",
"hlc_rifle_psg1A1"
];
*/

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,5 @@
#define groupSpawned 2
#define timesSpawned 3
#define respawnAt 4
#define antiGlitchOn 1

View File

@ -24,42 +24,61 @@ _markerColor = "ColorBlue";
_markerMissionName = "Rescue Hostage";
_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise"
_missionLandscape = [
["Flag_AAF_F",[-10.6914,-10.541,0],0,[true,false]],
["Land_SM_01_shelter_wide_F",[-6.29883,9.57617,0],0,[true,false]],
["Land_ContainerLine_01_F",[-5.54492,40.8184,0],0,[true,false]],
["Land_ContainerLine_01_F",[-6.92578,-38.2188,0],0,[true,false]],
["Land_ContainerLine_01_F",[-65.8438,-28.4023,0],90,[true,false]],
["Land_ContainerLine_01_F",[-66.0664,21.3496,0],90,[true,false]],
["Land_ContainerLine_01_F",[195.047,-23.9395,0],87.9345,[true,false]],
["Land_ContainerLine_01_F",[42.6172,-23.9395,0],90.5197,[true,false]],
["Land_ContainerLine_01_F",[42.8398,27.5977,0],270,[true,false]],
//["B_G_Soldier_AR_F",[-6.74219,-78.625,-0.00143886],0,[true,false]],
//["B_G_Soldier_AR_F",[-86.3281,-5.14453,-0.00143886],0,[true,false]],
//["B_G_Soldier_AR_F",[61.4609,-1.92773,-0.00143838],0,[true,false]],
//["B_G_Soldier_AR_F",[-43.3359,54.0898,-0.00143838],0,[true,false]],
//["B_Soldier_F",[70.5156,-90.3867,-2.75806],0,[true,false]],
//["B_Soldier_F",[70.5156,-90.3867,-2.75806],0,[true,false]],
//["B_MRAP_01_hmg_F",[70.5156,-90.3867,4.76837e-007],0,[true,false]],
//["B_Soldier_F",[-78.834,72.0566,-2.20595],0,[true,false]],
//["B_MRAP_01_F",[-78.834,72.0566,4.76837e-007],0,[true,false]],
["Campfire_burning_F",[-8.68555,-2.57813,0],0,[true,false]],
["Land_ChairPlastic_F",[-2.36719,16.1875,0],0,[true,false]],
["Land_ChairPlastic_F",[-2.99609,13.2813,0],0,[true,false]],
["Land_ChairPlastic_F",[-2.84766,10.3398,0],0,[true,false]],
["Land_ChairPlastic_F",[-3.06055,8.08203,0],0,[true,false]],
["Land_ChairPlastic_F",[-2.70313,5.98047,0],0,[true,false]],
["Land_Stone_4m_F",[-5.71484,21.2051,0],0,[true,false]],
["Land_Stone_4m_F",[-1.30469,21.2266,0],0,[true,false]],
["Land_Stone_4m_F",[-10.1836,21.166,0],0,[true,false]],
["Land_Stone_4m_F",[3.01953,10.2051,0],90.8324,[true,false]],
["Land_Stone_4m_F",[2.97656,5.79492,0],90.8324,[true,false]],
["Land_Stone_4m_F",[3.04492,14.6738,0],90.8324,[true,false]],
["Land_Stone_4m_F",[-6.16992,-0.855469,0],0,[true,false]],
["Land_Stone_4m_F",[-1.75977,-0.833984,0],0,[true,false]],
["Land_Stone_4m_F",[-10.6387,-0.894531,0],0,[true,false]],
["Land_Stone_4m_F",[-15.4609,9.93164,0],90.8324,[true,false]],
["Land_Stone_4m_F",[-15.5039,5.52148,0],90.8324,[true,false]],
["Land_Stone_4m_F",[-15.4355,14.4004,0],90.8324,[true,false]]
["Flag_AAF_F",[0.935547,-24.3027,0],0,[true,false]],
["Land_SM_01_shelter_wide_F",[0.298828,4.63867,0],0,[true,false]],
["Campfire_burning_F",[-2.08789,-7.51563,0],0,[true,false]],
["Land_Stone_8m_F",[-10.0313,-6.46875,0],268.936,[true,false]],
["Land_Stone_8m_F",[-10.2402,1.90039,0],268.936,[true,false]],
["Land_Stone_8m_F",[-10.3984,10.1035,0],268.936,[true,false]],
["Land_Stone_8m_F",[10.125,-4.10156,0],270,[true,false]],
["Land_Stone_8m_F",[10.0723,4.26953,0],270,[true,false]],
["Land_Stone_8m_F",[10.0664,12.4746,0],270,[true,false]],
["Land_Stone_8m_F",[7.95117,20.252,0],0,[true,false]],
["Land_Stone_8m_F",[-0.314453,20.2656,0],0,[true,false]],
["Land_Stone_8m_F",[-8.54102,20.3066,0],0,[true,false]],
["Land_Stone_8m_F",[8.16016,-15.1113,0],0,[true,false]],
["Land_Stone_8m_F",[-0.105469,-15.0977,0],0,[true,false]],
["Land_Stone_8m_F",[-8.33203,-15.0566,0],0,[true,false]],
["Land_HBarrierWall6_F",[-50.875,38.2676,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-50.3516,21.4355,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-50.6055,29.8965,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-49.4141,1.33203,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-49.918,13.0254,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-48.5371,-15.6992,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-49.0938,-7.12305,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-47.7773,-28.3535,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[-47.1641,-36.5547,0],89.1786,[true,false]],
["Land_HBarrierWall6_F",[50.0566,-17.4785,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[50.1484,-25.9414,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[49.5039,2.64063,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[49.7852,-9.06055,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[48.9531,19.6855,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[49.3457,11.0996,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[48.4355,32.3516,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[47.9785,40.5625,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[50.2598,-34.3164,0],270.274,[true,false]],
["Land_HBarrierWall6_F",[44.7031,55.5176,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[27.8652,55.1797,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[36.3281,55.3418,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[7.75195,54.4629,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[19.4512,54.8379,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-9.28711,53.7734,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-0.705078,54.2363,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-21.9492,53.1523,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-30.1563,52.6289,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-38.5195,52.3809,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-46.9727,52.0313,0],179.807,[true,false]],
["Land_HBarrierWall6_F",[-44.418,-50.7617,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[-27.5898,-50.1348,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[-36.0488,-50.4434,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[-7.49023,-49.0723,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[-19.1816,-49.6484,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[9.5332,-48.0918,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[0.960938,-48.7012,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[22.1836,-47.252,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[30.3809,-46.5879,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[38.6406,-46.1328,0],358.823,[true,false]],
["Land_HBarrierWall6_F",[47.0762,-45.5215,0],358.823,[true,false]]
]; // list of objects to spawn as landscape; // list of objects to spawn as landscape
_hostageConfig = ["C_man_polo_6_F",
@ -92,10 +111,10 @@ _missionLootVehicles = [
_missionGroups =
[
//_x params["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"];
[[26.9961,-29.9551,-0.00143886],3,3,"Blue",10,20],
[[32.2461,33.0605,-0.00143886],3,3,"Blue",10,20],
[[-35.6035,32.1855,-0.00143886],3,3,"Blue",10,20],
[[-47.4219,-19.8906,-0.00143886],3,3,"Blue",10,20]
//[[26.9961,-29.9551,-0.00143886],3,3,"Blue",10,20],
//[[32.2461,33.0605,-0.00143886],3,3,"Blue",10,20],
//[[-35.6035,32.1855,-0.00143886],3,3,"Blue",10,20],
[[-47.4219,-19.8906,-0.00143886],1,1,"Blue",10,20]
]; // Can be used to define spawn positions of AI patrols
_missionEmplacedWeapons = [

View File

@ -14,8 +14,8 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
_pathBlue = "Blue";
//_missionListBlue = ["resupplyCamp"];
_missionListBlue = ["default"/*,"default2"/*,"medicalCamp","redCamp","resupplyCamp"*/];
_missionListBlue = ["hostage1"];
//_missionListBlue = ["default"/*,"default2"/*,"medicalCamp","redCamp","resupplyCamp"*/];
_pathRed = "Red";
//_missionListRed = ["resupplyCamp"];

View File

@ -29,19 +29,19 @@ _missionLandscape = [
["Land_dp_transformer_F",[1.698242,-10.4668,-0.00763702],271.32,[true,true]],
["Land_Wreck_BRDM2_F",[1.37012,13.498,0.00109863],184.487,[true,true]],
["Land_BagBunker_Small_F",[18.4512,-3.66406,0.00780487],305.003,[true,true]],
["Land_Cargo_HQ_V1_F",[-20.1367,11.7539,0],90.8565,[true,false]],
["Land_Cargo_HQ_V1_F",[-20.1367,11.7539,0],90.8565,[true,true]],
["Land_BagBunker_Small_F",[-22.707,-3.75586,-0.0130234],44.9901,[true,true]],
["Land_Cargo_House_V1_F",[24.3584,7.45313,0.00111389],91.6329,[true,true]],
["StorageBladder_01_fuel_forest_F",[1.29492,29.3184,0.000999451],179.65,[false,false]],
["Land_GarbageBags_F",[-9.45996,31.252,0.02005],184.595,[false,false]],
["Land_GarbageBags_F",[-13.0459,32.668,-0.0283051],184.595,[false,false]],
["Land_GarbageBags_F",[-11.5957,33.125,-0.598007],184.595,[false,false]],
["Land_GarbageBags_F",[-8.98145,34.5801,-0.00514221],184.592,[false,false]],
["Land_Addon_02_V1_ruins_F",[24.8369,24.6582,-0.00820923],90.9637,[false,false]],
["Land_GarbageBags_F",[-10.9443,35.0449,0.577057],184.592,[false,false]],
["Land_Cargo20_military_green_F",[14.6533,32.9004,0.000480652],90.0989,[false,false]],
["Land_BagBunker_Small_F",[-23.0186,28.6738,-0.0271301],120.012,[false,false]],
["Land_BagBunker_Small_F",[37.1504,34.5742,0.0146866],255,[false,false]]
["StorageBladder_01_fuel_forest_F",[1.29492,29.3184,0.000999451],179.65,[false,true]],
["Land_GarbageBags_F",[-9.45996,31.252,0.02005],184.595,[false,true]],
["Land_GarbageBags_F",[-13.0459,32.668,-0.0283051],184.595,[false,true]],
["Land_GarbageBags_F",[-11.5957,33.125,-0.598007],184.595,[false,true]],
["Land_GarbageBags_F",[-8.98145,34.5801,-0.00514221],184.592,[false,true]],
["Land_Addon_02_V1_ruins_F",[24.8369,24.6582,-0.00820923],90.9637,[false,true]],
["Land_GarbageBags_F",[-10.9443,35.0449,0.577057],184.592,[false,true]],
["Land_Cargo20_military_green_F",[14.6533,32.9004,0.000480652],90.0989,[false,true]],
["Land_BagBunker_Small_F",[-23.0186,28.6738,-0.0271301],120.012,[false,true]],
["Land_BagBunker_Small_F",[37.1504,34.5742,0.0146866],255,[false,true]]
]; // list of objects to spawn as landscape
_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.
_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.

View File

@ -27,48 +27,48 @@ _markerMissionName = "Bandit Camp";
_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise"
_missionLandscape = [
["Flag_AAF_F",[0,0,0],0,[false,false]],
["Land_CampingChair_V1_F",[1.32227,2.07813,8.2016e-005],108.293,[false,false]],
["Land_CampingChair_V1_F",[-2.01465,2.91992,3.05176e-005],236.049,[false,false]],
["FirePlace_burning_F",[0.0302734,4.26563,2.47955e-005],359.997,[false,false]],
["Land_CampingChair_V1_F",[2.47168,4.21484,0.000102997],108.293,[false,false]],
["Land_CampingChair_V1_F",[-1.86816,5.07422,3.05176e-005],319.489,[false,false]],
["Land_CampingChair_V1_F",[0.915039,6.20898,1.71661e-005],51.7207,[false,false]],
["Land_Sleeping_bag_brown_F",[8.27441,0.609375,0.00414658],98.0314,[false,false]],
["Land_Sleeping_bag_brown_F",[8.27344,2.76758,0.00447083],91.7928,[false,false]],
["Land_Sleeping_bag_brown_F",[7.9082,4.95898,-0.00173759],85.1176,[false,false]],
["Land_Garbage_square3_F",[-4.95508,8.24023,0.00018692],60.0024,[false,false]],
["Land_Camping_Light_F",[8.92773,3.80273,-0.000205994],344.236,[false,false]],
["Land_Sleeping_bag_brown_F",[7.32129,7.55859,-0.0051899],60.1216,[false,false]],
["Land_TentDome_F",[-9.75488,3.13477,0.00125313],146.574,[false,false]],
["Land_WoodPile_F",[-0.322266,9.97266,-0.000553131],35.0017,[false,false]],
["Land_Razorwire_F",[-0.0185547,-9.84961,0.0752335],1.7831,[false,false]],
["Land_CampingChair_V1_folded_F",[3.8584,9.59375,0],60,[false,false]],
["Land_TentDome_F",[-8.76855,7.85156,-0.00471497],207.522,[false,false]],
["Land_BagFence_Round_F",[8.99707,-8.01367,-0.00951576],326.002,[false,false]],
["Land_BagFence_Round_F",[-10.8164,-6.33594,-0.0038681],59.9991,[false,false]],
["Land_TentDome_F",[-7.12207,11.8398,-0.00328445],231.101,[false,false]],
["Land_CampingTable_small_F",[-4.62598,13.2754,7.62939e-005],344.243,[false,false]],
["Land_Camping_Light_F",[-4.5957,13.332,0.687943],344.243,[false,false]],
["Land_Razorwire_F",[15.5459,0.605469,0.145557],102.505,[false,false]],
["Land_BagFence_Round_F",[7.16211,13.8516,0.000429153],221.639,[false,false]],
["Land_Razorwire_F",[15.9678,8.35938,0.0635166],85.7459,[false,false]],
["Land_Razorwire_F",[-19.1553,-1.61328,-0.0238552],70.0997,[false,false]],
["Land_Razorwire_F",[-12.3906,-15.4492,0.0128002],19.2641,[false,false]],
["Land_Razorwire_F",[-19.4629,5.67969,0.0492821],102.505,[false,false]],
["Land_BagFence_Round_F",[-11.2891,17.6777,-0.00759888],128.563,[false,false]],
["Land_Razorwire_F",[15.2949,-14.3027,0.0502853],139.224,[false,false]],
["Land_Razorwire_F",[15.2852,16.2656,-0.0208111],85.1363,[false,false]],
["Land_Razorwire_F",[4.80273,21.8223,-0.0563145],49.2133,[false,false]],
["Land_Razorwire_F",[-17.7891,13.4863,-0.0646877],102.5,[false,false]],
["Land_Razorwire_F",[-14.7109,20.2871,0.0674477],306.189,[false,false]],
["Land_BagFence_Round_F",[25.3975,-6.08008,0.00466537],272.26,[false,false]],
["Land_Wreck_Truck_F",[26.6289,12.2441,0.00333214],344.243,[false,false]],
["Land_GarbageBags_F",[-24.9463,17.3066,0.000968933],60.0003,[false,false]],
["Land_BagFence_Round_F",[11.167,28.832,-0.00405121],178.394,[false,false]],
["Land_BagFence_Round_F",[-6.36914,30.6953,-0.000207901],178.378,[false,false]],
["Land_Wreck_Hunter_F",[21.0391,25.9707,0.0118179],325.412,[false,false]],
["Land_Camping_Light_F",[-33.7852,10.0371,0.000759125],344.235,[false,false]],
["Land_BagFence_Round_F",[-34.3232,10.1035,0.00181007],60.0012,[false,false]]
["Land_CampingChair_V1_F",[1.32227,2.07813,8.2016e-005],108.293,[false,true]],
["Land_CampingChair_V1_F",[-2.01465,2.91992,3.05176e-005],236.049,[false,true]],
["FirePlace_burning_F",[0.0302734,4.26563,2.47955e-005],359.997,[false,true]],
["Land_CampingChair_V1_F",[2.47168,4.21484,0.000102997],108.293,[false,true]],
["Land_CampingChair_V1_F",[-1.86816,5.07422,3.05176e-005],319.489,[false,true]],
["Land_CampingChair_V1_F",[0.915039,6.20898,1.71661e-005],51.7207,[false,true]],
["Land_Sleeping_bag_brown_F",[8.27441,0.609375,0.00414658],98.0314,[false,true]],
["Land_Sleeping_bag_brown_F",[8.27344,2.76758,0.00447083],91.7928,[false,true]],
["Land_Sleeping_bag_brown_F",[7.9082,4.95898,-0.00173759],85.1176,[false,true]],
["Land_Garbage_square3_F",[-4.95508,8.24023,0.00018692],60.0024,[false,true]],
["Land_Camping_Light_F",[8.92773,3.80273,-0.000205994],344.236,[false,true]],
["Land_Sleeping_bag_brown_F",[7.32129,7.55859,-0.0051899],60.1216,[false,true]],
["Land_TentDome_F",[-9.75488,3.13477,0.00125313],146.574,[false,true]],
["Land_WoodPile_F",[-0.322266,9.97266,-0.000553131],35.0017,[false,true]],
["Land_Razorwire_F",[-0.0185547,-9.84961,0.0752335],1.7831,[false,true]],
["Land_CampingChair_V1_folded_F",[3.8584,9.59375,0],60,[false,true]],
["Land_TentDome_F",[-8.76855,7.85156,-0.00471497],207.522,[false,true]],
["Land_BagFence_Round_F",[8.99707,-8.01367,-0.00951576],326.002,[false,true]],
["Land_BagFence_Round_F",[-10.8164,-6.33594,-0.0038681],59.9991,[false,true]],
["Land_TentDome_F",[-7.12207,11.8398,-0.00328445],231.101,[false,true]],
["Land_CampingTable_small_F",[-4.62598,13.2754,7.62939e-005],344.243,[false,true]],
["Land_Camping_Light_F",[-4.5957,13.332,0.687943],344.243,[false,true]],
["Land_Razorwire_F",[15.5459,0.605469,0.145557],102.505,[false,true]],
["Land_BagFence_Round_F",[7.16211,13.8516,0.000429153],221.639,[false,true]],
["Land_Razorwire_F",[15.9678,8.35938,0.0635166],85.7459,[false,true]],
["Land_Razorwire_F",[-19.1553,-1.61328,-0.0238552],70.0997,[false,true]],
["Land_Razorwire_F",[-12.3906,-15.4492,0.0128002],19.2641,[false,true]],
["Land_Razorwire_F",[-19.4629,5.67969,0.0492821],102.505,[false,true]],
["Land_BagFence_Round_F",[-11.2891,17.6777,-0.00759888],128.563,[false,true]],
["Land_Razorwire_F",[15.2949,-14.3027,0.0502853],139.224,[false,true]],
["Land_Razorwire_F",[15.2852,16.2656,-0.0208111],85.1363,[false,true]],
["Land_Razorwire_F",[4.80273,21.8223,-0.0563145],49.2133,[false,true]],
["Land_Razorwire_F",[-17.7891,13.4863,-0.0646877],102.5,[false,true]],
["Land_Razorwire_F",[-14.7109,20.2871,0.0674477],306.189,[false,true]],
["Land_BagFence_Round_F",[25.3975,-6.08008,0.00466537],272.26,[false,true]],
["Land_Wreck_Truck_F",[26.6289,12.2441,0.00333214],344.243,[false,true]],
["Land_GarbageBags_F",[-24.9463,17.3066,0.000968933],60.0003,[false,true]],
["Land_BagFence_Round_F",[11.167,28.832,-0.00405121],178.394,[false,true]],
["Land_BagFence_Round_F",[-6.36914,30.6953,-0.000207901],178.378,[false,true]],
["Land_Wreck_Hunter_F",[21.0391,25.9707,0.0118179],325.412,[false,true]],
["Land_Camping_Light_F",[-33.7852,10.0371,0.000759125],344.235,[false,true]],
["Land_BagFence_Round_F",[-34.3232,10.1035,0.00181007],60.0012,[false,true]]
]; // list of objects to spawn as landscape
_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.
_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.

View File

@ -27,12 +27,12 @@ _missionLandscapeMode = "precise"; // acceptable values are "none","random","pre
_missionLandscape = [
["Land_Cargo_Patrol_V1_F",[-29.41016,0.13477,-0.0224228],359.992,[true,true]],
["Land_Cargo_House_V1_F",[29.2988,-0.1,0.150505],54.9965,[true,true]],
["CamoNet_INDP_big_F",[-20.4346,15.43164,-0.00395203],54.9965,[false,false]],
["Land_BagBunker_Small_F",[-20.4346,15.43164,-0.0138168],119.996,[false,false]],
["Land_BagBunker_Small_F",[-20.3604,-15.6035,-0.0130463],44.9901,[false,false]],
["Land_BagBunker_Small_F",[18.4453,-15.791,0.00744629],305.003,[false,false]],
["Land_BagBunker_Small_F",[18.3711,15.5703,0.0101624],254.999,[false,false]],
["CamoNet_INDP_big_F",[18.3711,15.5703,-0.00395203],54.9965,[false,false]]
["CamoNet_INDP_big_F",[-20.4346,15.43164,-0.00395203],54.9965,[false,true]],
["Land_BagBunker_Small_F",[-20.4346,15.43164,-0.0138168],119.996,[false,true]],
["Land_BagBunker_Small_F",[-20.3604,-15.6035,-0.0130463],44.9901,[false,true]],
["Land_BagBunker_Small_F",[18.4453,-15.791,0.00744629],305.003,[false,true]],
["Land_BagBunker_Small_F",[18.3711,15.5703,0.0101624],254.999,[false,true]],
["CamoNet_INDP_big_F",[18.3711,15.5703,-0.00395203],54.9965,[false,true]]
]; // list of objects to spawn as landscape
_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.
_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position.

View File

@ -47,7 +47,7 @@ _sm_groups = +blck_sm_surfaceShips;
{
_return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols;
//diag_log format["_fnc_monitorShips: _return = %1",_return];
_group = group ((_return select 0) select 0);
_group = group ((_return select 1) select 0);
_timesSpawned = _timesSpawned + 1;
_groupSpawned = 1;
_respawnAt = 0;

View File

@ -47,6 +47,7 @@ _sm_groups = +blck_sm_submarines;
{
_return = [_pos,1,_difficulty,[_groupParameters],false,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,blck_backpacks,blck_UMS_weapons,blck_Pistols,true] call blck_fnc_spawnMissionVehiclePatrols;
//diag_log format["_fnc_monitorSubs: _return = %1",_return];
_group = group ((_return select 1) select 0);
_timesSpawned = _timesSpawned + 1;
_groupSpawned = 1;
_respawnAt = 0;

View File

@ -47,7 +47,8 @@ _sm_groups = +blck_sm_Vehicles;
if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then
{
_return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols;
_group = group (driver (_return select 0));
//diag_log format["_fnc_monitorVehicles: _return = %1",_return];
_group = group ((_return select 1) select 0);
_timesSpawned = _timesSpawned + 1;
_groupSpawned = 1;
_respawnAt = 0;

View File

@ -15,8 +15,8 @@ private ["_staticMissions"];
_staticMissions = [
// [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)];
["Epoch","Altis","staticMissionExample2_Epoch.sqf"],
["Exile","Altis","staticMissionExample2_Exile.sqf"]
//["Epoch","Altis","staticMissionExample2_Epoch.sqf"],
//["Exile","Altis","staticMissionExample2_Exile.sqf"]
];
//diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf <Loaded>";

View File

@ -55,10 +55,10 @@ _missionLandscapeMode = "precise"; // acceptable values are "random","precise"
// In precise mode objects will be spawned at the relative positions specified.
// In the random mode, objects will be randomly spawned within the mission area.
_missionLandscape = [ // Paste appropriate lines from M3EDEN output here.
//["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]],
//["Land_Cargo_HQ_V1_F",[22918.1,16761.9,3.18151],[[0,1,0],[0,0,1]],[true,false]],
//["Land_Cargo_HQ_V3_F",[22907.6,16740.3,3.17544],[[0,1,0],[0,0,1]],[true,false]],
//["Land_Dome_Small_F",[22908.2,16808.8,3.19],[[0,1,0],[0,0,1]],[true,false]]
["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]],
["Land_Cargo_HQ_V1_F",[22918.1,16761.9,3.18151],[[0,1,0],[0,0,1]],[true,false]],
["Land_Cargo_HQ_V3_F",[22907.6,16740.3,3.17544],[[0,1,0],[0,0,1]],[true,false]],
["Land_Dome_Small_F",[22908.2,16808.8,3.19],[[0,1,0],[0,0,1]],[true,false]]
]; // list of objects to spawn as landscape using output from M3EDEN editor.
_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray
@ -104,7 +104,7 @@ _aiGroupParameters = [
//[[22849,16720.4,7.33123],"red",4, 75,9000],
//[[22832.9,16805.6,4.59315],"red",4, 75,900],
//[[22909.8,16778.6,3.19144],"red",4, 75,900],
//[[22809.4,16929.5,5.33892],"blue",1, 75,0],
[[22809.4,16929.5,5.33892],"blue",1, 75,0],
[[22819.4,16929.5,0],"red",1, 75, 10]
];
@ -122,7 +122,7 @@ _noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined val
// Note: this value is ignored if you specify air patrols in the array below.
_airPatrols = [
//["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red",1000,900]//,
//[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60]
[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60]
];
// Change _useMines to true/false below to enable mission-specific settings.
_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby.

View File

@ -16,8 +16,8 @@ private ["_staticMissions"];
_staticMissions = [
// [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)];
["Epoch","Altis","staticMissionExample2_Epoch.sqf"],
["Exile","Altis","staticMissionExample2_Exile.sqf"]
//["Epoch","Altis","staticMissionExample2_Epoch.sqf"],
//["Exile","Altis","staticMissionExample2_Exile.sqf"]
];
//diag_log "[blckeagls] GMS_UMS_StaticMissions_Lists.sqf <Loaded>";

View File

@ -82,7 +82,7 @@ _missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output her
_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below.
// Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground.
//["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]],
//["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],[[0,1,0],[0,0,1]],[true,false],_crateLoot, _lootCounts]
["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],[[0,1,0],[0,0,1]],[true,false],_crateLoot, _lootCounts]
]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)];
// When blank nothing is spawned.
// You can use the same format used for _missionLootBoxes to add vehicles with/without loot.
@ -110,14 +110,14 @@ _aiGroupParameters = [
_aiScubaGroupParameters = [
// [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/]
//[[22584.9,15304.8,-4.27578],"red",4, 75,0],
//[[22613.5,15269.1,-4.28332],"red",3, 75,900],
//[[22549,15288.9,0],"red",1, 75,0]
[[22613.5,15269.1,-4.28332],"red",3, 75,900],
[[22549,15288.9,0],"red",1, 75,0]
];
_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4];
// Note that this value is ignored if you define vehicle patrols in the array below.
_vehiclePatrolParameters = [
//["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],"red",75,60],
//["B_T_Boat_Armed_01_minigun_F",[22578.6,15273.3,-0.0354593],"red",75,0]
["B_T_Boat_Armed_01_minigun_F",[22578.6,15273.3,-0.0354593],"red",75,0]
]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ]
// When this array is empty, vehicle patrols will be scattered randomely around the mission.
// Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc).

View File

@ -1,6 +1,6 @@
private ["_version","_versionDate"];
blck_version = "6.83 Build 138";
blck_version = "6.83 Build 141";
_blck_version = blck_version;
_blck_versionDate = "6-13-18 5:00 PM";
_blck_versionDate = "6-16-18 5:00 PM";
blck_pvs_version = _blck_version;
publicVariable blck_pvs_version;

View File

@ -17,6 +17,10 @@ Added functions to despawn static patrols invehicles on on foot when no players
Added: Static units will now be spawned with gear specific to difficulty level (blue, red, green, orange) as specified in blck_config.sqf etc.
Changed: Hostage missions redesigned to reduce chances of AI being glitched into containers and of mission objects flying about when spawned in.
Fixed: Collisions between objects at missions caused issues.
Fixed: Attempted a fix to reduce the chance that AI will spawn inside or under objects like rocks or containers.
Fixed: Captive missions now complete properly.
Version 1.82 Build 134
Added: configs for blue, red, green and orange pistol, vest, backpack and uniforms (with thanks to Grahame for suggesting this change and doing most of the coding)