Added UMS; Added respawn timer to statics; Fixed event handler errors.

This commit is contained in:
Ghostrider-DbD- 2017-12-17 17:51:44 -05:00
parent 4c2fdd89d7
commit 927b1b0550
152 changed files with 3415 additions and 630 deletions

View File

@ -1,5 +1,5 @@
//This script sends Message Information to allplayers
// Last modified 1/4/17 by Ghostrider-DBD-
// Last modified 1/4/17 by Ghostrider [GRG]
/*
--------------------------
License

View File

@ -1,9 +1,9 @@
/*
Determines the total number of spawned groups on the side used by the mission system and returns this value.
By Ghostrider-DbD-
By Ghostrider [GRG]
Last updated 12/21/16
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -6,7 +6,7 @@
If _item is a string then add 1 of that item to the container.
If _item is an array with 2 elements ["itemName",3] then assume that the first element is a string and is the name of the item, and the second is the number to add.
if _item is an array with 3 elements ["itemName",2,6] assume that the first element is the item name (string), the second the min # to add and the third the max # to add.
by Ghostrider-DbD-
by Ghostrider [GRG]
11/14/16
--------------------------
@ -26,7 +26,10 @@
_isBackpack = false;
_quant = 0;
#ifdef blck_debugMode
diag_log format["blck_addItemToCrate:: -- >> itemInfo = %1 | _crate %2 | _addAmmo %3",_itemInfo, _crate, _addAmmo];
if (blck_debugLevel > 2) then
{
diag_log format["blck_addItemToCrate:: -- >> itemInfo = %1 | _crate %2 | _addAmmo %3",_itemInfo, _crate, _addAmmo];
};
#endif
if (typeName _itemInfo isEqualTo "STRING") then {_item = _itemInfo; _quant = 1}; // case where only the item descriptor was provided
if (typeName _itemInfo isEqualTo "ARRAY") then {

View File

@ -2,7 +2,7 @@
// Returns an array of all players on the server
/*
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last Modified 8/16/17
--------------------------

View File

@ -1,7 +1,7 @@
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,7 +1,7 @@
/*
call as [] call blck_fnc_cleanEmptyGroups;
Deletes any empty groups and thereby prevents errors resulting from createGroup returning nullGroup.
By Ghostrider-DbD-
By Ghostrider [GRG]
11/16/16
--------------------------
License

View File

@ -1,7 +1,7 @@
/*
Generates an array of equidistant positions along the circle of diameter _radius
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 1-22-17
--------------------------

View File

@ -2,8 +2,8 @@
// As written this relies on BIS_fnc_findSafePos to ensure that the spawn point is not on water or an excessively steep slope.
//
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 1-22-17
--------------------------

View File

@ -1,5 +1,5 @@
// Last modified 8/13/17 by Ghostrider-DBD-
// Last modified 8/13/17 by Ghostrider [GRG]
/*
--------------------------
License

View File

@ -1,6 +1,6 @@
// pull trader cities from config
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,6 +1,6 @@
// pull trader cities from config
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -15,7 +15,7 @@
case 1: [["item1",...,"itemN"],6]; The script will randomly select from the array of item names 6 times and call the loot loader each time.
case 2: [["item1",...,"itemN"],6, 9]; As above except that an item will be selected a minimum of 6 and maximum of 9 times.
by Ghostrider-DbD-
by Ghostrider [GRG]
8/13/17
--------------------------
@ -30,28 +30,24 @@
params["_loadout","_crate",["_addAmmo",0]];
#ifdef blck_debugMode
diag_log format["blck_fnc_loadLootFromItemsArray:: _this %1",_this];
diag_log format["blck_fnc_loadLootFromItemsArray:: _crate %1 | _addAmmo %2 | _loadout %3",_crate,_addAmmo,_loadout];
if (blck_debugLevel > 2) then
{
diag_log format["blck_fnc_loadLootFromItemsArray:: _this %1",_this];
diag_log format["blck_fnc_loadLootFromItemsArray:: _crate %1 | _addAmmo %2 | _loadout %3",_crate,_addAmmo,_loadout];
};
#endif
if ((_loadout select 0) isEqualTo []) exitWith {};
{
private["_tries","_q","_item"];
_tries = 0;
#ifdef blck_debugMode
diag_log format["blck_fnc_loadLootFromItemsArray:: -- >> now loading for %1",_x];
if (blck_debugLevel > 2) then
{
diag_log format["blck_fnc_loadLootFromItemsArray:: -- >> now loading for %1",_x];
};
#endif
_q = _x select 1; // this can be a number or array.
_tries = [_q] call blck_fnc_getNumberFromRange;
/*
if ( (typeName _q) isEqualTo "ARRAY") then // Assume the array contains a min/max number to add
{
if ((count _q) isEqualTo 2) then {_tries = (_q select 0) + round(random(((_q select 1) - (_q select 0))));} else {_tries = 0;};
};
if ((typeName _q) isEqualTo "SCALAR") then
{
_tries = _q;
};
*/
for "_i" from 1 to _tries do
{
_item = selectRandom (_x select 0);

View File

@ -1,5 +1,5 @@
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
Last modified 8-15-17
--------------------------
License
@ -10,10 +10,10 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime];
//diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime];
#ifdef DBDserver
diag_log "running DBDServer version of _fnc_mainThread";
#ifdef GRGserver
diag_log "running GRGserver version of _fnc_mainThread";
#endif
private["_modType","_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"];
@ -30,7 +30,7 @@ while {true} do
if (diag_tickTime - _timer1sec > 1) then
{
[] call blck_fnc_vehicleMonitor;
#ifdef DBDserver
#ifdef GRGserver
[] call blck_fnc_broadcastServerFPS;
#endif
_timer1sec = diag_tickTime;
@ -39,6 +39,7 @@ while {true} do
{
_timer5sec = diag_tickTime;
[] call blck_fnc_missionGroupMonitor;
[] call blck_fnc_sm_monitorStaticMissionUnits;
//[] call blck_fnc_sm_checkForPlayerNearMission;
};
if (diag_tickTime - _timer20sec > 20) then
@ -52,11 +53,13 @@ while {true} do
if ((diag_tickTime - _timer1min) > 60) then
{
_timer1min = diag_tickTime;
if (blck_useTimeAcceleration) then {[] call blck_fnc_timeAcceleration};
[] call blck_fnc_timeAcceleration;
//diag_log format["_fnc_mainThread: calling blck_fnc_spawnPendingMissions at %1",diag_tickTime];
[] call blck_fnc_spawnPendingMissions;
if !(blck_useHC) then
//diag_log format["_fnc_mainThread: control returned to _fnc_mainThread from _fnc_spawnPendingMissions at %1",diag_tickTime];
if (blck_useHC) then
{
diag_log format["_mainThread:: calling blck_fnc_passToHCs at diag_tickTime = %1",diag_tickTime];
//diag_log format["_mainThread:: calling blck_fnc_passToHCs at diag_tickTime = %1",diag_tickTime];
[] call blck_fnc_passToHCs;
};
//[] call blck_fnc_missionGroupMonitor;
@ -67,6 +70,10 @@ while {true} do
[] call blck_fnc_cleanEmptyGroups;
}; // Exile cleans up empty groups automatically so this should not be needed with that mod.
*/
#ifdef blck_debugMode
//diag_log format["_fnc_mainThread: active SQFscripts include: %1",diag_activeSQFScripts];
diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts];
#endif
};
if (blck_useTimeAcceleration) then
{
@ -75,4 +82,5 @@ while {true} do
_timer5min = diag_tickTime;
};
};
};

View File

@ -1,9 +1,9 @@
/*
Check if an HC is connected and if so transfer some AI to it.
By Ghostrider-DbD-
By Ghostrider [GRG]
Last modified 11-8-16
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,12 +1,12 @@
//////////////////////////////////////////////////////
// Test whether one object (e.g., a player) is within a certain range of any of an array of other objects
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 2/24/17
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,12 +1,12 @@
//////////////////////////////////////////////////////
// Test whether one object (e.g., a player) is within a certain range of any of an array of other objects
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 2/24/17
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,12 +1,12 @@
//////////////////////////////////////////////
// returns a position array at random position within a radius of _range relative to _pos.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 8-13-16
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,6 +1,6 @@
//////////////////////////////////////////////////////
// test if a timeout condition exists.
// by Ghostrider-DBD-
// by Ghostrider [GRG]
// Last modified 1/22/17
// [_startTime] call blck_fnc_timedOut
// Returns true (timed out) or false (not timed out)

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 8-13-16
@ -9,7 +9,7 @@
[_minTime, _maxTime] call blck_fnc_waitTimer
Returns true;
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------

View File

@ -1,7 +1,7 @@
// Changes type of waypont0 for the specified group to "MOVE" and updates time stamps, WP postion and Timout parameters accordinglyD.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 4/23/17

View File

@ -1,7 +1,7 @@
// Sets the WP type for WP for the specified group and updates other atributes accordingly.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 4/29/17

View File

@ -1,7 +1,7 @@
// Sets the WP type for WP for the specified group and updates other atributes accordingly.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 4/29/17

View File

@ -1,7 +1,7 @@
/*
call as [] call blck_fnc_cleanEmptyGroups;
Deletes any empty groups and thereby prevents errors resulting from createGroup returning nullGroup.
By Ghostrider-DbD-
By Ghostrider [GRG]
3/18/17
--------------------------
License

View File

@ -1,7 +1,7 @@
// Sets the WP type for WP for the specified group and updates other atributes accordingly.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 4/23/17

View File

@ -5,7 +5,7 @@
If not it directs them to the next waypoint.
It uses a timestamp attached to the group that is cleared upon waypoint completion.
By Ghostrider-DbD-
By Ghostrider [GRG]
Last modified 3/14/17
--------------------------

View File

@ -1,7 +1,7 @@
// Sets the WP type for WP for the specified group and updates other atributes accordingly.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 3/14/17

View File

@ -1,7 +1,7 @@
// Sets up waypoints for a specified group.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 3/17/17

View File

@ -1,7 +1,7 @@
// Sets up waypoints for a specified group.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 6/1/17
@ -14,14 +14,19 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
#ifdef blck_debugMode
diag_log "_fnc_setupWaypoints: blck_debugMode enabled";
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_setupWaypoints: -> -This = %1",_this];
};
#endif
private["_dir","_arc","_noWp","_newpos","_wpradius","_wp"];
params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_wpPatrolMode","SAD"],["_soldierType","null"] ];
_wp = [_group, 0];
#ifdef blck_debugMode
diag_log format["_fnc_setupWaypoints (4/29/17): configuring waypoints for group %1: _mode = %2 | _wpPatrolMode = %3 _soldierType = %4",_group, _mode, _wpPatrolMode,_soldierType];
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_setupWaypoints (4/29/17): configuring waypoints for group %1: _mode = %2 | _wpPatrolMode = %3 _soldierType = %4",_group, _mode, _wpPatrolMode,_soldierType];
};
#endif
if (_soldierType isEqualTo "emplaced") then
{
@ -36,10 +41,10 @@ if (_soldierType isEqualTo "emplaced") then
_group setVariable["soldierType",_soldierType,true];
#ifdef blck_debugMode
_wp setWaypointStatements ["true","this call blck_fnc_emplacedWeaponWaypoint; diag_log format['====Updating timestamp for group %1 and changing its WP to an emplaced weapon Waypoint',group this];"];
if (blck_debugLevel > 2) then {diag_log format["_fnc_setupWaypoints: configuring weapoints for group %2 for emplaced weapon with _soldierType = %1",_soldierType,_group];};
#else
_wp setWaypointStatements ["true","this call blck_fnc_emplacedWeaponWaypoint;"];
#endif
if (blck_debugLevel > 1) then {diag_log format["_fnc_setupWaypoints: configuring weapoints for group %2 for emplaced weapon with _soldierType = %1",_soldierType,_group];};
};
if !(_soldierType isEqualTo "emplaced") then
{
@ -75,7 +80,7 @@ if !(_soldierType isEqualTo "emplaced") then
_wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint;"];
#endif
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
if (blck_debugLevel > 2) then
{
_marker = createMarker [format["GroupMarker%1",_group],_newPos];
_group setVariable["wpMarker",_marker,true];

View File

@ -1,9 +1,9 @@
/*
Spawn and configure a group
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 4/25/17
Last modified 11/12/17
--------------------------
License
@ -16,14 +16,12 @@
#ifdef blck_debugMode
if (blck_debugLevel >=2) then
{
{
diag_log format["_fnc_spawnGroup:: _this select %1 = %2",_forEachIndex,_x];
}forEach _this;
diag_log format["_fnc_spawnGroup: _this = %1",_this];
};
#endif
private["_numbertospawn","_groupSpawned","_safepos","_weaponList","_useLauncher","_launcherType"];
params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true] ];
params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true],["_weaponList",[]],["_vests",blck_vests],["_scuba",false] ];
if (blck_debugLevel >= 1) then
{
diag_log format["[blckeagls] _fnc_spawnGroup called parameters: _numai1 %1, _numbai2 %2, _skillLevel %3, _center %4",_numai1,_numai2,_skillLevel,_center];
@ -70,19 +68,12 @@ if !(isNull _groupSpawned) then
_groupSpawned setVariable ["blck_group",true,true];
//diag_log format["spawnGroup:: group is %1",_groupSpawned];
// Determines whether or not the group has launchers
_useLauncher = blck_useLaunchers;
// define weapons list for the group
switch (_skillLevel) do {
case "blue": {_weaponList = blck_WeaponList_Blue;};
case "red": {_weaponList = blck_WeaponList_Red;};
case "green": {_weaponList = blck_WeaponList_Green;};
case "orange": {_weaponList = blck_WeaponList_Orange;};
default {_weaponList = blck_WeaponList_Blue;};
if (count _weaponList == 0) then
{
_weaponList = [_skillLevel] call blck_fnc_selectAILoadout;
};
//Spawns the correct number of AI Groups, each with the correct number of units
//Counter variable
_i = 0;
@ -96,17 +87,23 @@ if !(isNull _groupSpawned) then
};
//Finds a safe positon to spawn the AI in the area given
_safepos = [_pos,0,30,2,0,20,0] call BIS_fnc_findSafePos;
//_safepos = [_pos,0,30,2,0,20,0] call BIS_fnc_findSafePos;
//Spawns the AI unit
//diag_log format["spawnGroup:: spawning unit #%1",_i];
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["spawnGroup:: spawning unit #%1",_i];
};
#endif
// params["_pos","_weaponList","_aiGroup",["_skillLevel","red"],["_Launcher","none"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]];
[_safepos,_weaponList,_groupSpawned,_skillLevel,_launcherType,_uniforms,_headGear] call blck_fnc_spawnAI;
[_pos,_weaponList,_groupSpawned,_skillLevel,_launcherType,_uniforms,_headGear,_vests,_scuba] call blck_fnc_spawnAI;
};
_groupSpawned selectLeader (units _groupSpawned select 0);
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_pattern",["MOVE","SAD"]]];
if (_configureWaypoints) then
{
if (_scuba) then {_infantryType = "scuba"} else {_infantryType = "infantry"};
[_pos,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints;
};
//[_pos,_minDist,_maxDist,_groupSpawned,"random","SENTRY"] spawn blck_fnc_setupWaypoints;

View File

@ -15,7 +15,7 @@
case 1: [["item1",...,"itemN"],6]; The script will randomly select from the array of item names 6 times and call the loot loader each time.
case 2: [["item1",...,"itemN"],6, 9]; As above except that an item will be selected a minimum of 6 and maximum of 9 times.
by Ghostrider-DbD-
by Ghostrider [GRG]
11/14/16
--------------------------

View File

@ -6,7 +6,7 @@
If _item is a string then add 1 of that item to the container.
If _item is an array with 2 elements ["itemName",3] then assume that the first element is a string and is the name of the item, and the second is the number to add.
if _item is an array with 3 elements ["itemName",2,6] assume that the first element is the item name (string), the second the min # to add and the third the max # to add.
by Ghostrider-DbD-
by Ghostrider [GRG]
11/14/16
--------------------------

View File

@ -2,7 +2,7 @@
Adds a list of live AI associated with a mission to a que of live AI that will be deleted at a later time by the main thread
call as [ [list of AI], time] call blck_fnc_addLiveAItoQue; where time is the time delay before deletion occurs
by Ghostrider-DbD-
by Ghostrider [GRG]
Last modified 3-13-17
--------------------------

View File

@ -1,7 +1,7 @@
/*
Adds the basic list of parameters that define a mission such as the marker name, mission list, mission path, AI difficulty, and timer settings, to the arrays that the main thread inspects.
by Ghostrider-DbD-
by Ghostrider [GRG]
Last modified 1-21-17
--------------------------

View File

@ -2,7 +2,7 @@
Adds a list of live AI associated with a mission to a que of live AI that will be deleted at a later time by the main thread
call as [ [list of AI], time] call blck_fnc_addLiveAItoQue; where time is the time delay before deletion occurs
by Ghostrider-DbD-
by Ghostrider [GRG]
Last modified 10-14-16
--------------------------

View File

@ -3,8 +3,8 @@
//http://forums.bistudio.com/showthread.php?165184-Delete-Fire-Effect/page1
// http://forums.bistudio.com/showthread.php?165184-Delete-Fire-Effect/page2
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 4-11-17

View File

@ -1,7 +1,7 @@
// removes mines in a region centered around a specific position.
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 8-13-16

View File

@ -1,6 +1,6 @@
/*
[_mines,_objects,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission] call blck_fnc_endMission;
[_mines,_objects,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,_isScubaMission] call blck_fnc_endMission;
schedules deletion of all remaining alive AI and mission objects.
Updates the mission que.
Updates mission markers.
@ -14,29 +14,45 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp"
#include "\q\addons\custom_server\Configs\blck_defines.hpp"
private["_cleanupAliveAITimer","_cleanupCompositionTimer","_isScubaMission"];
_fn_missionCleanup = {
params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer"];
params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]];
[_mines] spawn blck_fnc_clearMines;
//diag_log format["_fnc_endMission: (103) _objects = %1",_objects];
[_objects, _cleanupCompositionTimer] spawn blck_fnc_addObjToQue;
//diag_log format["_fnc_endMission:: (106) _blck_AllMissionAI = %1",_blck_AllMissionAI];
[_blck_AllMissionAI, (_cleanupAliveAITimer)] spawn blck_fnc_addLiveAItoQue;
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
blck_recentMissionCoords pushback [_coords,diag_tickTime];
//diag_log format["_fnc_endMission:: (109) _mission = %1",_mission];
[_mission,"inactive",[0,0,0]] call blck_fnc_updateMissionQue;
blck_missionsRunning = blck_missionsRunning - 1;
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
if !(_isScubaMission) then
{
blck_recentMissionCoords pushback [_coords,diag_tickTime];
[_mission,"inactive",[0,0,0]] call blck_fnc_updateMissionQue;
//diag_log format["_fnc_endMission:: (109) _mission = %1",_mission];
};
if (_isScubaMission) then
{
blck_priorDynamicUMS_Missions pushback [_coords,diag_tickTime];
blck_UMS_ActiveDynamicMissions = blck_UMS_ActiveDynamicMissions - [_coords];
blck_dynamicUMS_MissionsRuning = blck_dynamicUMS_MissionsRuning - 1;
};
};
params["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_blck_localMissionMarker","_coords","_mission",["_aborted",false],["_vehicles",[]]];
private["_cleanupAliveAITimer","_cleanupCompositionTimer"];
///////////////////////////////////////////////////////////////////////
// MAIN FUNCTION STARTS HERE
//////////////////////////////////////////////////////////////////////
diag_log format["_fnc_endMission: _this = %1",_this];
params["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_blck_localMissionMarker","_coords","_mission",["_aborted",false],["_vehicles",[]],["_isScubaMission",false]];
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["_fnc_endMission: _blck_localMissionMarker %1 | _coords %2 | _mission %3 | _aborted %4",_blck_localMissionMarker,_coords,_mission,_aborted];
diag_log format["_fnc_endMission: _aborted = %1",_aborted];
diag_log format["_fnc_endMission: _isScubaMission = %1",_isScubaMission];
diag_log format["_fnc_endMission: prior to running mission end functions -> blck_missionsRunning = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_missionsRunning,blck_dynamicUMS_MissionsRuning];
};
#endif
@ -54,7 +70,8 @@ _fn_missionCleanup = {
[_blck_localMissionMarker select 0] call blck_fnc_deleteMarker;
_cleanupCompositionTimer = 0;
_cleanupAliveAITimer = 0;
[_mines,_objects,_blck_AllMissionAI,_mission,_cleanupAliveAITimer,_cleanupCompositionTimer] call _fn_missionCleanup;
// params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]];
[_mines,_objects,_blck_AllMissionAI,_mission,_cleanupAliveAITimer,_cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup;
{
deleteVehicle _x;
}forEach _crates;
@ -111,6 +128,9 @@ _fn_missionCleanup = {
blck_monitoredVehicles pushback _x;
};
} forEach _vehicles;
[_mines,_objects,_blck_AllMissionAI,_mission,_cleanupAliveAITimer,_cleanupCompositionTimer] call _fn_missionCleanup;
[_mines,_objects,_blck_AllMissionAI,_mission,_cleanupAliveAITimer,_cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup;
};
#ifdef blck_debugMode
diag_log format["_fnc_endMission: after to running mission end functions -> blck_missionsRunning = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_missionsRunning,blck_dynamicUMS_MissionsRuning];
#endif
_aborted

View File

@ -1,7 +1,7 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 8-13-17
Fill a crate with items

View File

@ -1,8 +1,8 @@
// removes mines in a region centered around a specific position.
/*
[_missionAIGroups] call blck_fnc_missionAIareDead; // _missionAIGroups is an array of groups.
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-13-17
--------------------------

View File

@ -1,9 +1,8 @@
/*
Generic Mission Spawner
for DBD Clan
By Ghostrider-DBD-
By Ghostrider GRG
Copyright 2016
Last modified 8/13/17
Last modified 10/9/17
--------------------------
License
@ -14,9 +13,9 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles","_timeOut","_aiDifficultyLevel"];
private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups"];
params["_coords","_mission",["_allowReinforcements",true]];
diag_log format["_missionSpawner (18):: _allowReinforcements = %1",_allowReinforcements];
//diag_log format["_missionSpawner (18):: _allowReinforcements = %1",_allowReinforcements];
////////
// set all variables needed for the missions
@ -28,8 +27,6 @@ diag_log format["_missionSpawner (18):: _allowReinforcements = %1",_allowReinfo
_markerClass = _mission select 2;
_aiDifficultyLevel = _mission select 3;
if (blck_debugLevel > 0) then {diag_log format["_fnc_mainThread:: -->> _markerClass = %1",_markerClass];};
[_mission,"active",_coords] call blck_fnc_updateMissionQue;
blck_ActiveMissionCoords pushback _coords;
diag_log format["[blckeagls] missionSpawner (17):: Initializing mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
@ -40,7 +37,12 @@ if (isNil "_markerColor") then {_markerColor = "ColorBlack"};
if (isNil "_markerType") then {_markerType = ["mil_box",[]]};
//if (isNil "_timeOut") then {_timeOut = -1;};
if (isNil "_loadCratesTiming") then {_loadCratesTiming = blck_loadCratesTiming}; // valid choices are "atMissionCompletion" and "atMissionSpawn";
if (isNil "_missionPatrolVehicles") then {
//diag_log format["_missionSpawner (44):: _missionPatrolVehicles isNil, Definining it as an empty array"];
_missionPatrolVehicles = [];
//diag_log format["_missionSpawner (46):: _missionPatrolVehicles is %1",_missionPatrolVehicles];
};
if (isNil "_missionGroups") then {_missionGroups = []};
private["_useMines","_blck_AllMissionAI","_delayTime","_groupPatrolRadius"];
if (isNil "_useMines") then {_useMines = blck_useMines;};
@ -66,12 +68,11 @@ if !(blck_preciseMapMarkers) then
_blck_localMissionMarker set [1,[_coords,75] call blck_fnc_randomPosition];
};
_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name?
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (91) message players and spawn a mission marker";};
[["start",_startMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
[_blck_localMissionMarker] execVM "debug\spawnMarker.sqf";
[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers;
[_blck_localMissionMarker] call blck_fnc_spawnMarker;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (94) waiting for player to trigger the mission";};
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (91) message players and spawn a mission marker";};
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (77) waiting for player to trigger the mission";};
#endif
////////
// All parameters are defined, lets wait until a player is nearby or the mission has timed out
@ -82,7 +83,10 @@ _missionStartTime = diag_tickTime;
_playerInRange = false;
_missionTimedOut = false;
_wait = true;
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (105) starting mission trigger loop"};
#ifdef blck_debugMode
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (90) starting mission trigger loop"};
#endif
while {_wait} do
{
@ -124,7 +128,7 @@ if (_missionTimedOut) exitWith
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (105) Mission Timed Out: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["[blckeagls] missionSpawner:: (133) Mission Timed Out: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
};
@ -135,30 +139,7 @@ if (_missionTimedOut) exitWith
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (112) -- >> Mission tripped: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
if (count _missionLootBoxes > 0) then
{
_crates = [_coords,_missionLootBoxes,_loadCratesTiming] call blck_fnc_spawnMissionCrates;
}
else
{
_crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming] call blck_fnc_spawnMissionCrates;
};
if (blck_cleanUpLootChests) then
{
_objects append _crates;
};
//uisleep 2;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (136) Crates Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["[blckeagls] missionSpawner:: (142) -- >> Mission tripped: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
@ -180,11 +161,13 @@ if (_useMines) then
};
uiSleep _delayTime;
_temp = [];
diag_log format["_missionSpawner"" _missionLandscape = %1",_missionLandscape];
if (_missionLandscapeMode isEqualTo "random") then
{
_temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape;
} else {
_temp = [_coords, floor(random(360)),_missionLandscape,true] call blck_fnc_spawnCompositionObjects;
params["_center","_objects"];
_temp = [_coords, _missionLandscape] call blck_fnc_spawnCompositionObjects;
//uiSleep 1;
};
if (typeName _temp isEqualTo "ARRAY") then
@ -196,13 +179,13 @@ if (typeName _temp isEqualTo "ARRAY") then
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (170) Landscape spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["[blckeagls] missionSpawner:: (190) Landscape spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
uiSleep _delayTime;;
_temp = [_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
_temp = [_coords,_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
//uisleep 1;
_crates append _temp;
@ -210,26 +193,25 @@ uiSleep _delayTime;
_abort = false;
_temp = [[],[],false];
_temp = [_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI;
//[_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI;
_temp = [_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear,_missionGroups] call blck_fnc_spawnMissionAI;
#ifdef blck_debugMode
if (blck_debugLevel > 2) then {
diag_log format["missionSpawner :: (185) blck_fnc_spawnMissionAI returned a value of _temp = %1",_temp]; uiSleep 1;
diag_log format["missionSpawner :: (209) blck_fnc_spawnMissionAI returned a value of _temp = %1",_temp]; uiSleep 1;
};
_abort = _temp select 1;
if (blck_debugLevel > 2) then {
diag_log format["missionSpawner :: (190) blck_fnc_spawnMissionAI returned a value of _abort = %1",_abort]; uiSleep 1;
diag_log format["missionSpawner :: (214) blck_fnc_spawnMissionAI returned a value of _abort = %1",_abort]; uiSleep 1;
};
#endif
if (_abort) exitWith
{
if (blck_debugLevel > 1) then {
diag_log "missionSpawner:: (194) grpNull returned, mission termination criteria met, calling blck_fnc_endMission"
diag_log "missionSpawner:: (220) grpNull returned, mission termination criteria met, calling blck_fnc_endMission"
};
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,true] call blck_fnc_endMission;
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
};
if !(_abort) then
{
@ -241,23 +223,24 @@ uiSleep _delayTime;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (202) AI Patrols Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["[blckeagls] missionSpawner:: (235) AI Patrols Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
uiSleep 3;
uiSleep _delayTime;
_temp = [[],[],false];
_abort = false;
private["_patrolVehicles","_vehToSpawn"];
_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
diag_log format["_missionSpawner:: _vehToSpawn = %1",_vehToSpawn];
if (blck_useVehiclePatrols && (_vehToSpawn > 0)) then
//diag_log format["_missionSpawner:: _vehToSpawn = %1",_vehToSpawn];
//diag_log format["_missionSpawner (245):: _missionPatrolVehicles = %1",_missionPatrolVehicles];
if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then
{
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_markerClass] call blck_fnc_spawnMissionVehiclePatrols;
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_missionPatrolVehicles] call blck_fnc_spawnMissionVehiclePatrols;
//[_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear,_markerClass] call blck_fnc_spawnMissionVehiclePatrols;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {
diag_log format["missionSpawner :: (216) blck_fnc_spawnMissionVehiclePatrols returned _temp = %1",_temp];
diag_log format["missionSpawner :: (251) blck_fnc_spawnMissionVehiclePatrols returned _temp = %1",_temp];
};
#endif
@ -273,7 +256,7 @@ if (blck_useVehiclePatrols && (_vehToSpawn > 0)) then
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (272) Vehicle Patrols Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["[blckeagls] missionSpawner:: (267) Vehicle Patrols Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
@ -284,76 +267,17 @@ if (_abort) exitWith
{
#ifdef blck_debugMode
if (blck_debugLevel > 0) then {
diag_log "missionSpawner:: (222) grpNull returned, mission termination criteria met, calling blck_endMission";
diag_log "missionSpawner:: (279) grpNull returned, mission termination criteria met, calling blck_endMission";
};
#endif
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,true] call blck_fnc_endMission;
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
};
uiSleep _delayTime;
_temp = [[],[],false];
_abort = false;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (234) preparing to spawn emplaced weapons for _coords %4 | _markerClass %3 | blck_useStatic = %1 | _noEmplacedWeapons = %2",blck_useStatic,_noEmplacedWeapons,_markerClass,_coords];};
#endif
uiSleep 3;
private["_noEmplacedToSpawn"];
_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange;
diag_log format["_missionSpawner:: _noEmplacedToSpawn = %1",_vehToSpawn];
if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
{
// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"];
_temp = [_missionEmplacedWeapons,_noEmplacedToSpawn,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnEmplacedWeaponArray;
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format ["missionSpawner:: (232) blck_fnc_spawnEmplacedWeaponArray returned _temp = %1",_temp];
};
#endif
if (typeName _temp isEqualTo "ARRAY") then
{
_abort = _temp select 2;
};
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format ["missionSpawner:: (241) _abort = %1",_abort];
};
#endif
if !(_abort) then
{
_objects append (_temp select 0);
_blck_AllMissionAI append (_temp select 1);
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (253) Static Weapons Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
};
};
if (_abort) exitWith
{
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log "missionSpawner:: (261) grpNull ERROR in blck_fnc_spawnEmplacedWeaponArray, mission termination criteria met, calling blck_endMission";
};
#endif
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,true,_patrolVehicles] call blck_fnc_endMission;
};
uiSleep 3;
if (_allowReinforcements) then
{
_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout;
@ -362,7 +286,7 @@ if (_allowReinforcements) then
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["[blckeagls] missionSpawner:: (268) calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["[blckeagls] missionSpawner:: (298) calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
private _noChoppers = 0;
@ -386,7 +310,9 @@ if (_allowReinforcements) then
_chancePara = [blck_chanceParaOrange] call blck_fnc_getNumberFromRange;
};
};
diag_log format["_missionSpawner:: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara];
#ifdef blck_debugMode
diag_log format["_missionSpawner(322):: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara];
#endif
for "_i" from 1 to (_noChoppers) do
{
//params["_coords","_aiSkillsLevel","_weapons","_uniforms","_headgear"];
@ -396,8 +322,8 @@ if (_allowReinforcements) then
#ifdef blck_debugMode
if (blck_debugLevel >= 2) then
{
diag_log format["missionSpawner:: blck_fnc_spawnMissionReinforcements call for chopper # %1 out of a total of %2 choppers",_i, _noChoppers];
diag_log format["missionSpawner:: _temp = %1",_temp];
diag_log format["missionSpawner(334):: blck_fnc_spawnMissionReinforcements call for chopper # %1 out of a total of %2 choppers",_i, _noChoppers];
diag_log format["missionSpawner(335):: _temp = %1",_temp];
};
#endif
@ -409,20 +335,105 @@ if (_allowReinforcements) then
};
if (_abort) then
{
#ifdef blck_debugMode
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log "missionSpawner:: (276) grpNul or ERROR in blck_fnc_spawnMissionReinforcements, mission termination criteria met, calling blck_endMission";
diag_log "missionSpawner:: (349) grpNul or ERROR in blck_fnc_spawnMissionReinforcements, mission termination criteria met, calling blck_endMission";
};
#endif
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,true,_patrolVehicles] call blck_fnc_endMission;
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
};
};
};
//////////////////////////
// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects.
#ifdef blck_debugMode
if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (361) preparing to spawn emplaced weapons for _coords %4 | _markerClass %3 | blck_useStatic = %1 | _noEmplacedWeapons = %2",blck_useStatic,_noEmplacedWeapons,_markerClass,_coords];};
#endif
uiSleep 15;
private["_noEmplacedToSpawn"];
_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange;
//diag_log format["_missionSpawner:: _noEmplacedToSpawn = %1",_vehToSpawn];
if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
{
// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"];
_temp = [_missionEmplacedWeapons,_noEmplacedToSpawn,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnEmplacedWeaponArray;
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format ["missionSpawner:: (375) blck_fnc_spawnEmplacedWeaponArray returned _temp = %1",_temp];
};
#endif
if (typeName _temp isEqualTo "ARRAY") then
{
_abort = _temp select 2;
};
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format ["missionSpawner:: (387) _abort = %1",_abort];
};
#endif
if !(_abort) then
{
_objects append (_temp select 0);
_blck_AllMissionAI append (_temp select 1);
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (400) Static Weapons Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
};
};
if (_abort) exitWith
{
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log "missionSpawner:: (410) grpNull ERROR in blck_fnc_spawnEmplacedWeaponArray, mission termination criteria met, calling blck_endMission";
};
#endif
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
};
uiSleep _delayTime;
if (count _missionLootBoxes > 0) then
{
_crates = [_coords,_missionLootBoxes,_loadCratesTiming] call blck_fnc_spawnMissionCrates;
}
else
{
_crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming] call blck_fnc_spawnMissionCrates;
};
if (blck_cleanUpLootChests) then
{
_objects append _crates;
};
//uisleep 2;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (428) Crates Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
// Trigger for mission end
//diag_log format["[blckeagls] mission Spawner _endCondition = %1",_endCondition];
#ifdef blck_debugMode
diag_log format["[blckeagls] mission Spawner(436) _endCondition = %1",_endCondition];
#endif
private["_missionComplete","_endIfPlayerNear","_endIfAIKilled"];
_missionComplete = -1;
_startTime = diag_tickTime;
@ -433,35 +444,61 @@ switch (_endCondition) do
case "allUnitsKilled": {_endIfPlayerNear = false;_endIfAIKilled = true;};
case "allKilledOrPlayerNear": {_endIfPlayerNear = true;_endIfAIKilled = true;};
};
//diag_log format["missionSpawner :: (269) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
#ifdef blck_debugMode
diag_log format["missionSpawner :: (449) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
#endif
private["_locations"];
_locations = [_coords];
{
_locations pushback (getPos _x);
_x setVariable["crateSpawnPos", (getPos _x)];
} forEach _crates;
//diag_log format["missionSpawner:: _coords = %1 | _crates = %2 | _locations = %3",_coords,_crates,_locations];
//diag_log format["missionSpawner:: Waiting for player to satisfy mission end criteria of _endIfPlayerNear %1 with _endIfAIKilled %2",_endIfPlayerNear,_endIfAIKilled];
while {_missionComplete isEqualTo -1} do
#ifdef blck_debugMode
diag_log format["missionSpawner (458):: _coords = %1 | _crates = %2 | _locations = %3",_coords,_crates,_locations];
#endif
private _crateStolen = false;
#ifdef blck_debugMode
diag_log format["missionSpawner(462):: Waiting for player to satisfy mission end criteria of _endIfPlayerNear %1 with _endIfAIKilled %2",_endIfPlayerNear,_endIfAIKilled];
#endif
_fn_crateMoved = {
params["_crate"];
private _result = (_x distance (_x getVariable["crateSpawnPos",[0,0,0]])) > 10;
//diag_log format["_fn_crateMoved:: _result = %1",_result];
_result;
};
while {_missionComplete isEqualTo -1} do
{
//if (blck_debugLevel isEqualTo 3) exitWith {uiSleep 180};
if ((_endIfPlayerNear) && [_locations,10,true] call blck_fnc_playerInRangeArray) exitWith {};
if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1 /*[_blck_AllMissionAI] call blck_fnc_missionAIareDead*/ ) exitWith {};
//diag_log format["missionSpawner:: (283) missionCompleteLoop - > players near = %1 and ai alive = %2",[_coords,20] call blck_fnc_playerInRange, {alive _x} count _blck_AllMissionAI];
if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1) exitWith {};
{
if ({[_x] call _fn_crateMoved} count _crates > 0) exitWith
{
_missionComplete = 1;
_crateStolen = true;
};
}forEach _crates;
//diag_log format["missionSpawner:: (483) missionCompleteLoop - > players near = %1 and ai alive = %2 and crates stolen = %3",[_coords,20] call blck_fnc_playerInRange, {alive _x} count _blck_AllMissionAI, _crateStolen];
uiSleep 4;
};
if (_crateStolen) exitWith
{
diag_log format["missionSpawner:: (491) Crate Stolen Callening _fnc_endMission - > players near = %1 and ai alive = %2 and crates stolen = %3",[_locations,10,true] call blck_fnc_playerInRangeArray, {alive _x} count _blck_AllMissionAI, _crateStolen];
[_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_blck_localMissionMarker,_coords,_mission,2] call blck_fnc_endMission;
};
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
diag_log format["[blckeagls] missionSpawner:: (414) Mission completion criteria fulfilled: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["missionSpawner :: (415) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
diag_log format["[blckeagls] missionSpawner:: (496) Mission completion criteria fulfilled: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
diag_log format["missionSpawner :: (497) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
diag_log format["[blckeagls] missionSpawner:: (498) calling endMission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
};
#endif
//diag_log format["[blckeagls] missionSpawner:: (418) calling endMission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
private["_result"];
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,false,_patrolVehicles] call blck_fnc_endMission;
// Force passing the mission name for informational purposes.
_blck_localMissionMarker set [2, _markerMissionName];
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,0] call blck_fnc_endMission;
//diag_log format["[blckeagls] missionSpawner:: (420)end of mission: blck_fnc_endMission returned value of %1","pending"];
diag_log format["[blckeagls] missionSpawner:: (507)end of mission: blck_fnc_endMission has returned control to _fnc_missionSpawner"];

View File

@ -12,7 +12,7 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
#define delayTime 1
private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups"];
params["_coords","_mission",["_allowReinforcements",true]];
//diag_log format["_missionSpawner (18):: _allowReinforcements = %1",_allowReinforcements];
@ -185,7 +185,7 @@ if (blck_debugLevel > 0) then
uiSleep _delayTime;;
_temp = [_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
_temp = [_coords,_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
//uisleep 1;
_crates append _temp;
@ -218,8 +218,6 @@ if !(_abort) then
_blck_AllMissionAI append (_temp select 0);
};
uiSleep _delayTime;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{
@ -421,8 +419,6 @@ if (blck_cleanUpLootChests) then
_objects append _crates;
};
//uisleep 2;
#ifdef blck_debugMode
if (blck_debugLevel > 0) then
{

View File

@ -5,7 +5,7 @@
returns:
_lootarray
by Ghostrider-DbD-
by Ghostrider [GRG]
1/9-17
--------------------------

View File

@ -1,6 +1,6 @@
//////////////////////////////////////////////////////
// Attach a marker of type _marker to an object _crate
// by Ghostrider-DBD- based on code from Wicked AI for Arma 2 Dayz Epoch
// by Ghostrider [GRG] based on code from Wicked AI for Arma 2 Dayz Epoch
// Last modified 8/2/15
/////////////////////////////////////////////////////
/*

View File

@ -1,7 +1,7 @@
/*
Spawns a smoking wreck or object at a specified location and returns the objects spawn (wreck and the particle effects object)
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last updated 8-14-16

View File

@ -14,18 +14,28 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_center","_objects"];
if (count _center == 2) then {_center pushBack 0};
//diag_log format["_spawnBaseObjects:: -> _objects = %1",_objects];
private ["_newObjs"];
_newObjs = [];
{
//diag_log format["_fnc_spawnBaseObjects::-->> _x = %1",_x];
private _obj = (_x select 0) createVehicle [0,0,0];
//diag_log format["_fnc_spawnBaseObjects: _obj = %1",_obj];
_newObjs pushback _obj;
//diag_log format["_fnc_spawnBaseObjects: _center = %1 and _x select 1 = %2",_center,_x select 1];
private _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 setPosATL (_center vectorAdd (_x select 1));
_obj enableDynamicSimulation true;
_obj allowDamage true;
// Lock any vehicles placed as part of the mission landscape. Note that vehicles that can be taken by players can be added via the mission template.
@ -34,4 +44,6 @@ _newObjs = [];
[_obj] call blck_fnc_configureMissionVehicle;
};
} forEach _objects;
//diag_log format["_fnc_spawnBaseObjects: _newObjs = 51",_newObjs];
_newObjs

View File

@ -1,10 +1,10 @@
/*
spawn a crate at a specific location and protect it against cleanup by Epoch
spawn a crate at a specific location
returns the object (crate) that was created.
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last updated 9-4-16
Last updated 12-5-17
--------------------------
License
@ -15,18 +15,33 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private ["_crate","_px","_py","_defaultCrate"];
_defaultCrate = "Box_NATO_Wps_F";
params["_coords",["_crateType",_defaultCrate]];
private ["_crate"];
params["_coords",["_crateType","Box_NATO_Wps_F"]];
_px = _coords select 0;
_py = _coords select 1;
_crate = objNull;
_crate = createVehicle [_crateType,_coords,[], 0, "CAN_COLLIDE"];
_crate setVariable ["LAST_CHECK", 100000];
_crate setPosATL [_px, _py, 0.5];
_crate allowDamage false;
_crate enableRopeAttach false;
[_crate] call blck_fnc_emptyObject;
_crate setPosATL _coords;
_crate setVectorUp [0,0,0];
if ((_coords select 2) < 0 || surfaceIsWater (_coords)) then
{
private["_lantern","_bbr","_p1","_p2","_maxHeight"];
//_lantern = createVehicle ["PortableHelipadLight_01_red_F", [0,0,0],[],0,"CAN_COLLIDE"];// Land_Camping_Light_F
//_lantern enableSimulationGlobal true;
//_lantern switchLight "on";
_light = "#lightpoint" createVehicle (getPos _crate);
_light setLightDayLight true;
_light setLightBrightness 1.0;
_light setLightAmbient [0.0, 1.0, 0.0];
_light setLightColor [0.0, 1.0, 0.0];
_bbr = boundingBoxReal _crate;
_p1 = _bbr select 0;
_p2 = _bbr select 1;
_maxHeight = abs ((_p2 select 2) - (_p1 select 2));
//diag_log format["_fnc_spawnCrate: _bbr = %1 | _maxHeight = %2",_bbr,_maxHeight];
_light attachTo [_crate, [0,0,(_maxHeight + 0.5)]];
};
_crate;

View File

@ -2,7 +2,7 @@
[_missionEmplacedWeapons,_noEmplacedWeapons,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnEmplacedWeaponArray;
Last modified 4/27/17
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License

View File

@ -1,6 +1,6 @@
// Spawns mines in a region centered around a specific position and returns an array with the spawned mines for later use, i.e. deletion
/*
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 8-14-16

View File

@ -1,6 +1,6 @@
/*
blck_fnc_spawnMissionAI
by Ghostrider-DbD-
by Ghostrider [GRG]
8/13/17
[_coords, // center of the area within which to spawn AI
_minNoAI, // minimum number of AI to spawn
@ -22,20 +22,21 @@
#ifdef blck_debugMode
if (blck_debugLevel >=2) then
{
diag_log format["_fnc_spawnMissionAI: _this = %1",_this];
{
diag_log format["_fnc_spawnMissionAI:: _this select %1 = %2",_forEachIndex,_x];
}forEach _this;
};
#endif
params["_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],"_missionGroups"];
// [_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,_scubaGroupParameters,blck_UMS_weapons,blck_UMS_vests,isScubaGroup]
params["_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],"_missionGroups",["_weapons",[]],["_vests",blck_vests],["_isScubaGroup",false]];
private["_unitsToSpawn","_unitsPerGroup","_ResidualUnits","_newGroup","_blck_AllMissionAI","_abort"];
_unitsToSpawn = [[_minNoAI,_maxNoAI]] call blck_fnc_getNumberFromRange; //round(_minNoAI + round(random(_maxNoAI - _minNoAI)));
_unitsPerGroup = floor(_unitsToSpawn/_noAIGroups);
_ResidualUnits = _unitsToSpawn - (_unitsPerGroup * _noAIGroups);
_blck_AllMissionAI = [];
_abort = false;
if (count _weapons == 0) then {_weapons = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
#ifdef blck_debugMode
if (blck_debugLevel >= 2) then
{
@ -44,15 +45,11 @@ if (blck_debugLevel >=2) then
#endif
if (count _missionGroups > 0) then
{
{
_x params["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"];
{ // [[1,-1,-1],"red",4, 5,10]
_x params["_position","_skillLevel","_numAI","_minPatrolRadius","_maxPatrolRadius"];
_groupSpawnPos = _coords vectorAdd _position;
diag_log format["_fnc_spawnMissionAI:: _x= %1",_x];
diag_log format["_fnc_spawnMissionAI:: _coords = %1 | _groupSpawnPos = %2 | _position = %3",_coords,_groupSpawnPos,_position];
// player modelToWorld [0,-1,3];
// params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true] ];
_newGroup = [_groupSpawnPos,_minAI,_maxAI,_skillLevel,_coords,_minPatrolRadius,_maxPatrolRadius,_uniforms,_headGear,true] call blck_fnc_spawnGroup;
// params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true],["_weaponList",[]],["_vests",blck_vests],["_scuba",false] ];
_newGroup = [_groupSpawnPos,_numAI,_numAI,_skillLevel,_coords,_minPatrolRadius,_maxPatrolRadius,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
#ifdef blck_debugMode
if (blck_debugLevel >= 2) then
@ -88,15 +85,16 @@ if (_missionGroups isEqualTo []) then
case 1: { // spawn the group near the mission center
#ifdef blck_debugMode
//params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ];
//params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true],["_weaponList",[]],["_vests",blck_vests],["_scuba",false] ];
if (blck_debugLevel >= 2) then
{
diag_log format["missionSpawner: Spawning Groups: _noAIGroups=1"];
};
#endif
_minDist = 20;
_maxDist = 35;
_newGroup = [_coords,_unitsToSpawn,_unitsToSpawn,_aiDifficultyLevel,_coords,_minDist,_maxDist,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
_newGroup = [_coords,_unitsToSpawn,_unitsToSpawn,_aiDifficultyLevel,_coords,25,30,_uniforms,_headGear,true] call blck_fnc_spawnGroup;
#ifdef blck_debugMode
if (blck_debugLevel >= 2) then
{
@ -131,7 +129,8 @@ if (_missionGroups isEqualTo []) then
diag_log format["_fnc_spawnMissionAI(47): Spawning Groups: _noAIGroups=2"]; // spawn groups on either side of the mission area
};
#endif
_minDist = 20;
_maxDist = 35;
_groupLocations = [_coords,_noAIGroups,15,30] call blck_fnc_findPositionsAlongARadius;
{
private["_adjusttedGroupSize"];
@ -142,7 +141,8 @@ if (_missionGroups isEqualTo []) then
} else {
_adjusttedGroupSize = _unitsPerGroup;
};
_newGroup = [_x,_adjusttedGroupSize,_adjusttedGroupSize,_aiDifficultyLevel,_coords,15,25,_uniforms,_headGear] call blck_fnc_spawnGroup;
_newGroup = [_x,_adjusttedGroupSize,_adjusttedGroupSize,_aiDifficultyLevel,_coords,_minDist,_maxDist,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _newGroup) then
{
_abort = true;
@ -171,9 +171,10 @@ if (_missionGroups isEqualTo []) then
diag_log format["_fnc_spawnMissionAI (68): Spawning Groups: _noAIGroups=3"];
};
#endif
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,10,15,_uniforms,_headGear] call blck_fnc_spawnGroup;
_minDist = 20;
_maxDist = 35;
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,_minDist,_maxDist,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _newGroup) then
{
_abort = true;
@ -193,7 +194,7 @@ if (_missionGroups isEqualTo []) then
_groupLocations = [_coords,2,20,35] call blck_fnc_findPositionsAlongARadius;
{
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,_minDist,_maxDist,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _newGroup) then
{
_abort = true;
@ -223,7 +224,7 @@ if (_missionGroups isEqualTo []) then
};
#endif
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
_newGroup = [_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _newGroup) then
{
_abort = true;
@ -240,7 +241,9 @@ if (_missionGroups isEqualTo []) then
_blck_AllMissionAI append _newAI;
_groupLocations = [_coords,(_noAIGroups - 1),20,40] call blck_fnc_findPositionsAlongARadius;
{
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,1,12,_uniforms,_headGear] call blck_fnc_spawnGroup;
_minDist = 20;
_maxDist = 35;
_newGroup = [_x,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_coords,_minDist,_maxDist,_uniforms,_headGear,true,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _newGroup) then
{
_abort = true;
@ -248,10 +251,12 @@ if (_missionGroups isEqualTo []) then
else
{
_newAI = units _newGroup;
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_spawnMissionAI(99): _newGroup=%1",_newGroup];
};
#endif
_blck_AllMissionAI append _newAI;
};
}forEach _groupLocations;

View File

@ -1,6 +1,6 @@
/*
Spawn some crates using an array containing crate types and their offsets relative to a reference position and prevent their cleanup.
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 3-20-17
@ -15,7 +15,7 @@
private ["_objs","_pos","_offset"];
params[ ["_coords", [0,0,0]], ["_crates",[]], ["_loadCrateTiming","atMissionSpawn"] ];
//diag_log format["_fnc_spawnMissionLootcrates: _this = %1",_this];
if ((count _coords) == 2) then // assume only X and Y offsets are provided
{
_coords pushback 0;; // calculate the world coordinates
@ -28,6 +28,9 @@ _objs = [];
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_spawnMissionCrates: _crateType = %1 | _crateOffset = %2 | _lootArray = %3 | _lootCounts = %4",_crateType,_crateOffset,_lootArray,_lootCounts];
_marker = createMarker [format["crateMarker%1",random(1000000)], _pos];
_marker setMarkerType "mil_triangle";
_marker setMarkerColor "colorGreen";
};
#endif
_pos = _coords vectorAdd _crateOffset;

View File

@ -13,12 +13,13 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_missionLootVehicles",["_loadCrateTiming","atMissionSpawn"]];
params["_coords","_missionLootVehicles",["_loadCrateTiming","atMissionSpawn"]];
if (count _coords == 2) then {_coords pushBack 0};
private _vehs = [];
{
//diag_log format["spawnMissionCVehicles.sqf _x = %1",_x];
diag_log format["spawnMissionCVehicles.sqf _x = %1",_x];
_x params["_vehType","_vehOffset","_lootArray","_lootCounts"];
//diag_log format["spawnMissionCVehicles: _vehType = %1 | _vehOffset = %2 | _lootArray = %3 | _lootCounts = %4",_vehType,_vehOffset,_lootArray,_lootCounts];
diag_log format["spawnMissionCVehicles: _vehType = %1 | _vehOffset = %2 | _lootArray = %3 | _lootCounts = %4",_vehType,_vehOffset,_lootArray,_lootCounts];
_pos = _coords vectorAdd _vehOffset;
_veh = [_vehType, _pos] call blck_fnc_spawnVehicle;
[_veh] call blck_fnc_emptyObject;
@ -28,7 +29,7 @@ private _vehs = [];
}forEach ["getin","getout"];
if (_loadCrateTiming isEqualTo "atMissionSpawn") then
{
//diag_log format["blck_fnc_spawnMissionLootVehicles::-> loading loot at mission spawn for veh %1",_x];
diag_log format["blck_fnc_spawnMissionLootVehicles::-> loading loot at mission spawn for veh %1",_x];
[_veh,_lootArray,_lootCounts] call blck_fnc_fillBoxes;
_veh setVariable["lootLoaded",true];
}

View File

@ -1,6 +1,6 @@
/*
[_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionVehiclePatrols
by Ghostrider-DbD-
by Ghostrider [GRG]
3/17/17
returns [] if no groups could be created
returns [_AI_Vehicles,_missionAI] otherwise;
@ -14,11 +14,12 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_uniforms","_headGear","_missionPatrolVehicles"];
params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_uniforms","_headGear","_missionPatrolVehicles",["_useRelativePos",true],["_weapons",[]],["_vests",blck_vests],["_isScubaGroup",false]];
if (count _weapons == 0) then {_weapons = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_spawnMissionVehiclePatrols: _this = %1",_this];
diag_log format["_fnc_spawnMissionVehiclePatrols:: _coords = %1 | _noVehiclePatrols = %2 | _aiDifficultyLevel = %3",_coords,_noVehiclePatrols,_aiDifficultyLevel];
};
#endif
@ -27,17 +28,16 @@ private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missi
_vehicles = [];
_missionAI = [];
_abort = false;
_useRelativePos = false;
//_useRelativePos = false;
if (_missionPatrolVehicles isEqualTo []) then
{
_useRelativePos = false;
_vehiclePatrolSpawns = [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
{
private _v = selectRandom blck_AIPatrolVehicles;
//diag_log format["_fnc_spawnMissionVehiclePatrols (36):: position = %1 and vehicle = %2",_x, _v];
_missionPatrolVehicles pushBack [_v, _x];
}forEach _vehiclePatrolSpawns;
} else {
_useRelativePos = true;
};
{
@ -56,7 +56,7 @@ if (_missionPatrolVehicles isEqualTo []) then
};
_vehicle = _x select 0;
_vehGroup = [_spawnPos,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup;
_vehGroup = [_spawnPos,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear,false,_weapons,_vests,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _vehGroup) exitWith
{
_abort = true;
@ -70,8 +70,8 @@ if (_missionPatrolVehicles isEqualTo []) then
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_spawnMissionVehiclePatrols: group spawned = %1",_vehGroup];
//diag_log format["_fnc_spawnMissionVehiclePatrols (40):: -> _missionType = %3 _vehGroup = %1 and units _vehGroup = %2",_vehGroup, units _vehGroup,_missionType];
diag_log format["_fnc_spawnMissionVehiclePatrols (73): group spawned = %1",_vehGroup];
//diag_log format["_fnc_spawnMissionVehiclePatrols (74):: -> _missionType = %3 _vehGroup = %1 and units _vehGroup = %2",_vehGroup, units _vehGroup,_missionType];
};
#endif
@ -83,7 +83,7 @@ if (_missionPatrolVehicles isEqualTo []) then
#endif
//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]];
_patrolVehicle = [_coords,_spawnPos,_vehicle,35,45,_vehGroup] call blck_fnc_spawnVehiclePatrol;
_patrolVehicle = [_coords,_spawnPos,_vehicle,30,45,_vehGroup] call blck_fnc_spawnVehiclePatrol;
_vehGroup setVariable["groupVehicle",_vehicle];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then

View File

@ -1,11 +1,11 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last modified 4/29/17
checks the status of each entry in
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License
--------------------------
@ -19,7 +19,6 @@
if (blck_debugLevel > 0) then {
diag_log format["_fnc_spawnPendingMissions:: blck_pendingMissions = %1", blck_pendingMissions];
};
diag_log format["_fnc_spawnPendingMissions: -- >> blck_missionsRunning = %1",blck_missionsRunning];
#endif
if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {
@ -61,7 +60,18 @@ if (count _readyToSpawnQue > 0) then
_missionName = selectRandom (_missionToSpawn select 0);
_missionPath = _missionToSpawn select 1;
_allowReinforcements = _missionToSpawn select 8;
[_coords,_missionToSpawn,_allowReinforcements] execVM format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
//[_coords,_missionToSpawn,_allowReinforcements] execVM format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
[_coords,_missionToSpawn,_allowReinforcements] spawn compileFinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
blck_missionsRunning = blck_missionsRunning + 1;
};
//diag_log format["_fnc_spawnPendingMissions: blck_numberUnderwaterDynamicMissions = %1 |
if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then
{
diag_log "Adding dyanamic UMS Mission";
private ["_spawnPos"];
_spawnPos = call blck_fnc_findShoreLocation;
[_spawnPos] spawn blck_fnc_addDyanamicUMS_Mission;
//_spawnPos call compileFinal preprocessFileLineNumbers format["q\addons\custom_server\Missions\UMS\dynamicMissiones\%1.sqf";
};
true

View File

@ -1,6 +1,6 @@
/*
spawn a group of objects in random locations aligned with the radial from the center of the region to the object.
By Ghostrider-DbD-
By Ghostrider [GRG]
Last modified 1/22/17
copyright 2016

View File

@ -1,7 +1,7 @@
/*
Update the parameters for a mission in the list of missions running at that time.
Call with the name of the marker associated with the mission and either "Active" or "Completed"
by Ghostrider-DbD-
by Ghostrider [GRG]
Last modified 1-22-17
--------------------------

View File

@ -1,5 +1,5 @@
/*
Author: Ghostrider-DbD-
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
Last Modified 1/23/17

View File

@ -1,5 +1,5 @@
/*
Author: Ghostrider-DbD-
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
call with

View File

@ -51,7 +51,7 @@ if (_time > (_sunset + 0.5) || _time < (_sunrise - 0.5)) exitWith {
// Day
if (_time > (_sunrise + 0.5) && _time < (_sunset - 0.5)) exitWith {
setTimeMultiplier blck_timeAccelerationDay;
diag_log format["DAYTIME ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime];
//diag_log format["DAYTIME ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime];
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{

View File

@ -1,7 +1,7 @@
/*
Deals with instances in which a unit is damaged (not in use).
By Ghostrider-DbD-
By Ghostrider [GRG]
Last modified 4-11-17
unit: Object - Object the event handler is assigned to.

View File

@ -1,5 +1,5 @@
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
Last Modified 7-27-17
Handles the case where a unit is hit.
@ -13,39 +13,6 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private ["_unit","_instigator","_group","_wp"];
diag_log format["_EH_AIHit::-->> _this = %1",_this];
_unit = _this select 0 select 0;
_instigator = _this select 0 select 3;
_this remoteExec["blck_fnc_processAIHit",2];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
};
#endif
if (!(alive _unit)) exitWith {};
if (!(isPlayer _instigator)) exitWith {};
[_unit,_instigator] call blck_fnc_alertGroupUnits;
[_instigator] call blck_fnc_alertNearbyVehicles;
_group = group _unit;
//_group setBehavior "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
_wp setWaypointCombatMode "RED";
if (_unit getVariable ["hasHealed",false]) exitWith {};
if ((damage _unit) > 0.1 ) then
{
diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
_unit setVariable["hasHealed",true,true];
_unit addMagazine "SmokeShellOrange";
_unit fire "SmokeShellMuzzle";
_unit addItem "FAK";
_unit action ["HealSoldierSelf", _unit];
_unit setDamage 0;
_unit removeItem "FAK";
};

View File

@ -15,5 +15,11 @@
params["_unit","_killer"];
diag_log format["EH_AIKilled:: _units = %1 and _killer = %2",_unit,_killer];
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
private _vars = ["unit","killer","instigator","useEffects"];
diag_log format["EH_AIKilled:: _this select %1 (_var select %2) = %3",_forEachIndex,_vars select _forEachIndex,_this select _forEachIndex];
};
#endif
[_unit,_killer] remoteExec ["blck_fnc_processAIKill",2];

View File

@ -2,7 +2,7 @@
Handle case where a unit reloads weapon.
This was used in place of fired event handlers to add realism and deal with issues with the arma engine post v1.64
By Ghostrider-DbD-
By Ghostrider [GRG]
Last modified 4-11-17
https://community.bistudio.com/wiki/Arma_3:_Event_Handlers/Reloaded
@ -32,11 +32,10 @@
//_mag = _this select 3 select 0;
(_this select 0) addMagazine (_this select 3 select 0);
#ifdef blck_debugMode
if (blck_debugON) then {
if (blck_debugON || blck_debugLevel > 2) then {
//diag_log format["_EH_unitWeaponReloaded:: unit %1 reloaded weapon %2 with magazine %3",_this select 0, (_this select 3 select 0)];
//diag_log format["_EH_unitWeaponReloaded:: unit %1 currently has the following magazines 2",_this select 0,magazines (_this select 0)];
diag_log format["_EH_unitWeaponReloaded:: one magazine of type %1 added to inventory of unit %2",_mag,_unit];
};
#endif
if (blck_debugLevel > 2) then (diag_log format["_EH_unitWeaponReloaded:: one magazine of type %1 added to inventory of unit %2",_mag,_unit];

View File

@ -14,7 +14,7 @@
private["_knowsAbout","_intelligence","_group"];
params["_unit","_target"];
diag_log format["_fnc_alertGroupUnits called _unit = %1 and _targert = %2",_unit,_target];
//diag_log format["_fnc_alertGroupUnits called _unit = %1 and _targert = %2",_unit,_target];
_intelligence = _unit getVariable ["intelligence",1];
_group = group _unit;
{

View File

@ -32,7 +32,7 @@ _fn_allertNearbyVehicleGroups = {
if (_target distance2D (leader _vehGroup) < 1000) then {[_vehGroup,_target] call _fn_alertGroupUnits;};
}forEach _vehicles;
};
diag_log format["_fnc_alertNearbyVehicles called: _target = %1",_target];
//diag_log format["_fnc_alertNearbyVehicles called: _target = %1",_target];
[blck_monitoredVehicles,_target] call _fn_allertNearbyVehicleGroups;

View File

@ -18,7 +18,11 @@ params["_unit"];
{
_unit removeAllEventHandlers _x;
}forEach ["killed","mpkilled","hit","reloaded","Fired","HandleDamage","HandleHeal","FiredNear"];
//_unit removeAllMPEventHandlers _x;
}forEach ["killed","hit","reloaded","fired","handledamage","handleheal","firednear"];
{
_unit removeAllMPEventHandlers _x;
} forEach ["MPKilled"];
private _group = (group _unit);
[_unit] joinSilent grpNull;
deleteVehicle _unit;

View File

@ -1,7 +1,7 @@
/*
Handle AI Deaths
Last Modified 7/27/17
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
--------------------------
License

View File

@ -1,6 +1,6 @@
/*
Remove all gear from an AI _unit
By Ghostrider-DbD-
By Ghostrider [GRG]
--------------------------
License

View File

@ -3,7 +3,7 @@
Modified by Ghostrider
Logic for adding AI Ammo, GL Shells and Attachments addapted from that by Buttface (A3XAI).
Everything having to do with spawning and configuring an AI should happen here
Last Modified 1/22/17
Last Modified 11/12/17
--------------------------
License
--------------------------
@ -13,19 +13,27 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
//Defines private variables so they don't interfere with other scripts
private ["_i","_weap","_skin","_ai1","_skillLevel","_aiSkills",
"_launcherRound","_index","_ammoChoices"];
params["_pos","_weaponList","_aiGroup",["_skillLevel","red"],["_Launcher","none"],["_uniforms", blck_SkinList],["_headGear",blck_headgear],["_underwater",false]];
//_pos = _this select 0; // Position at which to spawn AI
//_weaponList = _this select 1; // List of weapons with which to arm the AI
//_aiGroup = _this select 2; // Group to which AI belongs
//_skillLevel = [_this,3,"red"] call BIS_fnc_param; // Assign a skill level in case one was not passed."blue", "red", "green", "orange"
//_Launcher = [_this, 4, "none"] call BIS_fnc_param; // Set launchers to "none" if no setting was passed.
//_uniforms = [_this, 5, blck_SkinList] call BIS_fnc_param; // skins to add to AI
//_headGear = [_this, 6, _shemag] call BIS_fnc_param;// headGear to add to AI
private ["_i","_weap","_skin","_ai1","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices"];
params["_pos","_weaponList","_aiGroup",["_skillLevel","red"],["_Launcher","none"],["_uniforms", blck_SkinList],["_headGear",blck_headgear],["_vests",blck_vests],["_scuba",false]];
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
private _params = ["_pos","_weaponList","_aiGroup","_skillLevel","_Launcher","_uniforms","_headGear","_vests","_scuba"];
{
diag_log format["_fnc_spawnUnit::-> _this select %1 (%2) = %3",_forEachIndex, _params select _forEachIndex, _this select _forEachIndex];
}forEach _this;
//_pos = _this select 0; // Position at which to spawn AI
//_weaponList = _this select 1; // List of weapons with which to arm the AI
//_aiGroup = _this select 2; // Group to which AI belongs
//_skillLevel = [_this,3,"red"] call BIS_fnc_param; // Assign a skill level in case one was not passed."blue", "red", "green", "orange"
//_Launcher = [_this, 4, "none"] call BIS_fnc_param; // Set launchers to "none" if no setting was passed.
//_uniforms = [_this, 5, blck_SkinList] call BIS_fnc_param; // skins to add to AI
//_headGear = [_this, 6, _shemag] call BIS_fnc_param;// headGear to add to AI
{
diag_log format["_fnc_spawnUnit:: _this select %1 = %2",_forEachIndex,_x];
}forEach _this;
};
#endif
if (isNull _aiGroup) exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnUnit"};
_ai1 = ObjNull;
@ -52,7 +60,23 @@ if (_modType isEqualTo "Exile") then
case "orange":{_ai1 setVariable["ExileMoney",8 + floor(random(blck_maxMoneyOrange)),true];};
};
};
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_spawnUnit::-->> unit spawned = %1",_ai1];
};
#endif
[_ai1] call blck_fnc_removeGear;
if (_scuba) then
{
_ai1 swiminDepth (_pos select 2);
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_spawnUnit:: -- >> unit depth = %1 and underwater for unit = %2",_pos select 2, underwater _ai1];
};
#endif
};
_skin = "";
_counter = 1;
while {_skin isEqualTo "" && _counter < 10} do
@ -60,7 +84,12 @@ while {_skin isEqualTo "" && _counter < 10} do
_skin = selectRandom _uniforms;
_ai1 forceAddUniform _skin;
_skin = uniform _ai1;
//diag_log format["_fnc_spawnUnit::-->> for unit _ai1 % uniform is %2",_ai1, uniform _ai1];
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_spawnUnit::-->> for unit _ai1 % uniform is %2",_ai1, uniform _ai1];
};
#endif
_counter =+1;
};
//Sets AI Tactics
@ -78,14 +107,11 @@ if (_modType isEqualTo "Epoch") then
// do this so the AI or corpse hangs around on Epoch servers.
_ai1 setVariable ["LAST_CHECK",28800,true];
};
_ai1 addHeadgear (selectRandom _headGear);
// Add a vest to AI for storage
_ai1 addVest selectRandom blck_vests;
_ai1 addVest selectRandom _vests;
if ( random (1) < blck_chanceBackpack) then
{
//_bpck = selectRandom blck_backpack;
{
_ai1 addBackpack selectRandom blck_backpacks;
};
@ -106,7 +132,8 @@ if (random 1 < 0.4) then {_ai1 addPrimaryWeaponItem (selectRandom _legalOptics);
if (random 1 < 0.4) then {_ai1 addPrimaryWeaponItem (selectRandom _pointers);};
if (random 1 < 0.4) then {_ai1 addPrimaryWeaponItem (selectRandom _muzzles);};
if (random 1 < 0.4) then {_ai1 addPrimaryWeaponItem (selectRandom _underbarrel);};
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then {
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
{
_ai1 addMagazine "1Rnd_HE_Grenade_shell";
};
@ -116,12 +143,12 @@ _ai1 addWeaponGlobal _weap;
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
_ai1 addMagazines [selectRandom _ammoChoices, 2];
//add random items to AI. _other = ["ITEM","COUNT"]
for "_i" from 1 to (1+floor(random(3))) do {
for "_i" from 1 to (1+floor(random(3))) do
{
_ai1 addItem (selectRandom blck_ConsumableItems);
};
// Add an First Aid or Grenade 50% of the time
// Add First Aid or Grenade 50% of the time
if (round(random 10) <= 5) then
{
//_item = selectRandom blck_specialItems;
@ -151,11 +178,17 @@ else
_ai1 setVariable ["hasNVG", false,true];
};
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_spawnUnit:: --> unit loadout = %1", getUnitLoadout _ai1];
};
#endif
// Infinite ammo
//_ai1 addeventhandler ["fired", {(_this select 0) setvehicleammo 1;}];
_ai1 addMPEventHandler ["reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}];
_ai1 addMPEventHandler ["mpkilled", {[(_this select 0), (_this select 1)] call compile preprocessfilelinenumbers blck_EH_AIKilled;}]; // changed to reduce number of concurrent threads, but also works as spawn blck_AIKilled; }];
_ai1 addMPEventHandler ["Hit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIHit;}];
_ai1 addEventHandler ["Reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}];
_ai1 addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call compile preprocessfilelinenumbers blck_EH_AIKilled;}]; // changed to reduce number of concurrent threads, but also works as spawn blck_AIKilled; }];
_ai1 addMPEventHandler ["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIHit;}];
//_ai1 addEventHandler ["FiredNear",{diag_log "-------->>>>>>>> Weapon fired Near Unit";}];
//_ai1 addEventHandler ["FiredNear",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIFiredNear;};];

View File

@ -0,0 +1,55 @@
/*
By Ghostrider [GRG]
Last Modified 7-27-17
Handles the case where a unit is hit.
--------------------------
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 ["_unit","_instigator","_group","_wp"];
_unit = _this select 0 select 0;
_instigator = _this select 0 select 3;
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_fnc_processAIHit::-->> _this = %1",_this];
diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
};
#endif
if (!(alive _unit)) exitWith {};
if (!(isPlayer _instigator)) exitWith {};
[_unit,_instigator] call blck_fnc_alertGroupUnits;
[_instigator] call blck_fnc_alertNearbyVehicles;
_group = group _unit;
//_group setBehavior "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
_wp setWaypointCombatMode "RED";
if (_unit getVariable ["hasHealed",false]) exitWith {};
if ((damage _unit) > 0.1 ) then
{
#ifdef blck_debugMode
if (blck_debugLevel > 2) then
{
diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
};
_unit setVariable["hasHealed",true,true];
_unit addMagazine "SmokeShellOrange";
_unit fire "SmokeShellMuzzle";
_unit addItem "FAK";
_unit action ["HealSoldierSelf", _unit];
_unit setDamage 0;
_unit removeItem "FAK";
};

View File

@ -1,5 +1,5 @@
/*
By Ghostrider-DbD-
By Ghostrider [GRG]
Last Modified 7-27-17
Handles the case where a vehicle is hit.
@ -13,29 +13,6 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private ["_veh","_instigator","_group","_wp"];
//diag_log format["_EH_AIVehicle_HandleDamage::-->> _this = %1",_this];
//diag_log format["_EH_AIVehicle_HandleDamage:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
_veh = _this select 0 select 0;
_instigator = _this select 0 select 3;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_EH_AIVehicle_HandleDamage:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
};
#endif
if (!(alive _veh)) exitWith {};
if (!(isPlayer _instigator)) exitWith {};
_crew = crew _veh;
[_crew select 0,_instigator] call blck_fnc_alertGroupUnits;
[_instigator] call blck_fnc_alertNearbyVehicles;
_group = group (_veh select 0);
//_group setBehavior "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
_wp setWaypointCombatMode "RED";
_this remoteExec ["blck_fnc_HandleAIVehicleDamage",2];

View File

@ -0,0 +1,61 @@
/*
By Ghostrider [GRG]
Last Modified 7-27-17
Handles the case where a vehicle is hit.
--------------------------
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 ["_veh","_instigator","_group","_wp"];
/*
_this select 1 contains:
unit: Object - Object the event handler is assigned to.
hitSelection: String - Name of the selection where the unit was damaged. "" for over-all structural damage, "?" for unknown selections.
damage: Number - Resulting level of damage for the selection.
source: Object - The source unit that caused the damage.
projectile: String - Classname of the projectile that caused inflicted the damage. ("" for unknown, such as falling damage.)
(Since Arma 3 v1.49)
hitPartIndex: Number - Hit part index of the hit point, -1 otherwise.
(Since Arma 3 v1.65)
instigator: Object - Person who pulled the trigger
(Since Arma 3 v 1.67)
hitPoint: String - hit point Cfg name
*/
_veh = _this select 0 select 0;
_instigator = _this select 0 select 3;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["_fnc_HandleAIVehicleDamage: _this = %1",_this];
diag_log format["_EH_AIVehicle_HandleDamage:: _units = %1 and _instigator = %2 units damage is %3",_veh,_instigator, damage _veh];
};
#endif
if (!(alive _veh)) exitWith {};
if (!(isPlayer _instigator)) exitWith {};
_crew = crew _veh;
[_crew select 0,_instigator] call blck_fnc_alertGroupUnits;
[_instigator] call blck_fnc_alertNearbyVehicles;
_group = group (_crew select 0);
_group setBehaviour "COMBAT";
_wp = [_group, currentWaypoint _group];
_wp setWaypointBehaviour "COMBAT";
_group setCombatMode "RED";
_wp setWaypointCombatMode "RED";

View File

@ -1,6 +1,6 @@
// Configures a mission vehicle
/*
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 3-14-17

View File

@ -1,5 +1,5 @@
/*
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 3-14-17

View File

@ -1,5 +1,5 @@
// Protect Vehicles from being cleaned up by the server
// Last modified 2/26/16 by Ghostrider-DBD-
// Last modified 2/26/16 by Ghostrider [GRG]
/*
--------------------------
License

View File

@ -2,7 +2,7 @@
Handle the case that all AI assigned to a vehicle are dead.
Allows players to enter and use the vehicle.
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 3-24-17
--------------------------

View File

@ -1,5 +1,5 @@
/*
Author: Ghostrider-DbD-
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
Last Modified 1/23/17

View File

@ -0,0 +1,37 @@
/*
Spawn a vehicle and protect it against cleanup by Epoch
Returns the object (vehicle) created.
By Ghostrider [GRG]
Last modified 1-27-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["_veh","_modType"];
params["_vehType","_pos",["_clearInventory",true]];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf: _vehType = %1 | _pos = %2",_vehType,_pos];};
#endif
_veh = createVehicle[_vehType, _pos, [], 0, "NONE"];
_veh setVariable["blck_vehicle",true];
[_veh] call blck_fnc_protectVehicle;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf:: vehicle spawned is %1",_veh];};
#endif
// params["_veh",["_clearInventory",true]];
[_veh,_clearInventory] call blck_fnc_configureMissionVehicle;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle:: returning parameter _veh = %1",_veh];};
#endif
_veh

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 8-15-17
@ -22,8 +22,8 @@ _uniforms = _this select 3;
_headGear = _this select 4;
_helis = _this select 5;
*/
diag_log format["_fnc_spawnMissionHeli:: _this = %1",_this];
diag_log format["_fnc_spawnMissionHeli:: _helis = %1 && _chanceParas = %2",_helis,_chanceParas];
//diag_log format["_fnc_spawnMissionHeli:: _this = %1",_this];
//diag_log format["_fnc_spawnMissionHeli:: _helis = %1 && _chanceParas = %2",_helis,_chanceParas];
/*
Handles upper level functions of reinforcements utilizing helicoptor patrols and/or spawned from a helicopter.
Calls on functions that spawn paratroops and/or loot chests at the heli's location.

View File

@ -1,5 +1,5 @@
/*
Author: Ghostrider-DbD-
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
3/17/17

View File

@ -1,5 +1,5 @@
/*
Author: Ghostrider-DbD-
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
call with

View File

@ -1,5 +1,5 @@
/*
Author: Ghostrider-DbD-
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
3/17/17

View File

@ -1,6 +1,6 @@
/*
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last Modified 8-16-17

View File

@ -0,0 +1,37 @@
/*
Spawn a vehicle and protect it against cleanup by Epoch
Returns the object (vehicle) created.
By Ghostrider [GRG]
Last modified 1-27-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["_veh","_modType"];
params["_vehType","_pos",["_clearInventory",true]];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf: _vehType = %1 | _pos = %2",_vehType,_pos];};
#endif
_veh = createVehicle[_vehType, _pos, [], 0, "NONE"];
_veh setVariable["blck_vehicle",true];
[_veh] call blck_fnc_protectVehicle;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf:: vehicle spawned is %1",_veh];};
#endif
// params["_veh",["_clearInventory",true]];
[_veh,_clearInventory] call blck_fnc_configureMissionVehicle;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle:: returning parameter _veh = %1",_veh];};
#endif
_veh

View File

@ -1,7 +1,7 @@
/*
Spawn a vehicle and protect it against cleanup by Epoch
Returns the object (vehicle) created.
By Ghostrider-DBD-
By Ghostrider [GRG]
Last modified 1-27-17
--------------------------
License

View File

@ -1,5 +1,5 @@
/*
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 3-17-17
@ -35,7 +35,7 @@ if (blck_debugLevel > 1) then
if !(isNull _group) then
{ // exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnVehiclePatrol"; objNull;};
_veh = [_vehType,_pos] call blck_fnc_spawnVehicle;
_veh addMPEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
_veh addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
_group setVariable["groupVehicle",_veh];
//#ifdef blck_debugMode
if (blck_debugLevel > 1) then

View File

@ -10,7 +10,7 @@
4) All AI Killed and players MAY keep vehicles -> release vehicle
5) vehicle ammo low AND vehicle gunner is alive - > reloaded
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last updated 1-22-17

View File

@ -35,9 +35,9 @@ blck_fnc_loadLootItemsFromArray = compileFinal preprocessFileLineNumbers "\q\add
blck_fnc_getNumberFromRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf";
blck_fnc_passToHCs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_passToHCs.sqf";
#ifdef DBDserver
#ifdef GRGserver
blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf";
diag_log "blck_functions loaded using DBDServer settings ---- >>>> ";
diag_log "blck_functions loaded using GRGserver settings ---- >>>> ";
#endif
// Player-related functions
@ -91,6 +91,7 @@ blck_fnc_spawnMissionParatroops = compileFinal preprocessFileLineNumbers "\q\add
blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnParaUnits.sqf"; // Lumped here because these 'jump' from aircraft
blck_fnc_releaseVehicleToPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"; // GMS_fnc_releaseVehicleToPlayers
blck_EH_AIVehicle_HandleDamage = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_HandleDamage.sqf";
blck_fnc_HandleAIVehicleDamage = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleDamage.sqf";
// functions to support Units
blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear.
@ -110,6 +111,7 @@ blck_fnc_cleanupDeadAI = compileFinal preprocessFileLineNumbers "\q\addons\cust
blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf";
blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf";
blck_fnc_deleteAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf";
blck_fnc_processAIHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_processAIHit.sqf";
// HC support functions
blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf";

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-17-17
@ -20,21 +20,26 @@
#endif
diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf";
/*
/***************************************************************
BLCKEAGLS SUPPLEMENTAL MODULES
****************************************************************
Configuration for Addons that support the overall Mission system.
These are a module to spawn map addons generated with the Eden Editor
And a moduel to spawn static loot crates at specific location
A time acceleration module.
These are:
1) a module to spawn map addons generated with the Eden Editor
2) And a moduel to spawn static loot crates at specific location
3) A time acceleration module.
*/
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
//blck_enableStaticUnits = true; // When true static missions are loaded and functions for spawning static AI groups on foot, in vehicles/aircraft or manning emplaced weapons are enabled.
//blck_enableUMS = true; // when true, blck_numberUnderwaterMissions Underwater missions will be spawned; static UMS units and subs will be spawned.
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
blck_useTimeAcceleration = true; // 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_timeAccelerationDay = 0.25; // Daytime time accelearation
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
blck_timeAccelerationNight = 8; // Nighttim time acceleration
blck_timeAccelerationNight = 12; // Nighttim time acceleration
/**************************************************************
@ -51,7 +56,7 @@
***********************************************************/
////////
// Headless Client Configurations
blck_useHC = false; // Not Yet Working
blck_useHC = true; // Experimental (death messages and rewards not yet working).
///////////////////////////////
// Kill message configurations
@ -176,8 +181,8 @@
////////////////////
// Maximum number of missions shown on the map at any one time.
#ifdef DBDserver
blck_maxSpawnedMissions = 6;
#ifdef GRGserver
blck_maxSpawnedMissions = 15;
#else
// Change this value to reduce the number of spawned missions at any one time.
blck_maxSpawnedMissions = 4;
@ -186,9 +191,11 @@
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups.
blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1;
blck_enableRedMissions = 1;
blck_enableBlueMissions = 1;
#ifdef DBDserver
blck_enableRedMissions = 2;
blck_enableBlueMissions = 2;
blck_numberUnderwaterDynamicMissions = 5; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
#ifdef GRGserver
blck_enableHunterMissions = 1;
blck_enableScoutsMissions = 1;
blck_maxcrashsites = 3;
@ -203,11 +210,12 @@
blck_TMin_Green = 200;
blck_TMin_Blue = 120;
blck_TMin_Red = 150;
#ifdef DBDserver
blck_TMin_UMS = 180;
#ifdef GRGserver
blck_TMin_Hunter = 120;
blck_TMin_Scouts = 115;
blck_TMin_Crashes = 115;
//blck_TMin_UMS = 200;
#endif
//Maximum Spawn time between missions in seconds
@ -215,11 +223,11 @@
blck_TMax_Green = 300;
blck_TMax_Blue = 200;
blck_TMax_Red = 250;
#ifdef DBDserver
blck_TMax_UMS = 200;
#ifdef GRGserver
blck_TMax_Hunter = 200;
blck_TMax_Scouts = 200;
blck_TMax_Crashes = 200;
//blck_TMax_UMS = 280;
#endif
///////////////////////////////
@ -233,9 +241,9 @@
// Mission Vehicle Settings
////////////////////
//Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high
blck_SpawnVeh_Orange = 3; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = 3; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = -1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Orange = [3,4]; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = [2,3]; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Red = 1; // Number of static weapons at Red Missions
///////////////////////////////
@ -251,7 +259,7 @@
////////////////////
// Defines how many static weapons to spawn. Set this to -1 to disable spawning
blck_SpawnEmplaced_Orange = 3; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Orange = [3,4]; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = 3; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions
@ -337,7 +345,7 @@
blck_maxMoneyRed = 15;
blck_maxMoneyBlue = 10;
#ifdef DBDserver
#ifdef GRGserver
blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
//blck_AIAlertDistance = [150,225,400,500];
// How precisely player locations will be revealed to AI after an AI kill

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-14-17

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-14-17

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-14-17

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-14-17
@ -59,10 +59,14 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
//"O_MRAP_03_gmg_ghex_F",
//"O_MRAP_03_hmg_ghex_F",
"B_MBT_01_cannon_F",
"B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others
//"B_MBT_01_mlrs_base_F",
"B_MBT_01_mlrs_F",
//"B_MBT_01_mlrs_F",
"B_MBT_01_TUSK_F",
"B_MBT_01_TUSK_F",// Duplicate to increase chance that these will spawn relative to others
"B_APC_Tracked_01_AA_F",
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
"B_APC_Tracked_01_CRV_F",
"B_APC_Tracked_01_rcws_F"
]; // Type of vehicle spawned to defend AI bases

View File

@ -1,6 +1,5 @@
/*
for DBD Clan
By Ghostrider-DBD-
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-17-17
@ -16,15 +15,20 @@
diag_log "[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers";
/*
/***************************************************************
BLCKEAGLS SUPPLEMENTAL MODULES
****************************************************************
Configuration for Addons that support the overall Mission system.
These are a module to spawn map addons generated with the Eden Editor
And a moduel to spawn static loot crates at specific location
A time acceleration module.
These are:
1) a module to spawn map addons generated with the Eden Editor
2) And a moduel to spawn static loot crates at specific location
3) A time acceleration module.
*/
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
//blck_enableStaticUnits = true; // When true static missions are loaded and functions for spawning static AI groups on foot, in vehicles/aircraft or manning emplaced weapons are enabled.
//blck_enableUMS = true; // when true, blck_numberUnderwaterMissions Underwater missions will be spawned; static UMS units and subs will be spawned.
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
@ -47,12 +51,12 @@
***********************************************************/
////////
// Headless Client Configurations
blck_useHC = false; // Not Yet Working
blck_useHC = true; //
///////////////////////////////
// Kill message configurations
// These determine whether and when messages are sent to players regarding AI Kills or illegal kills that might damage a vehicle.
blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed; may impact server performance.
blck_useKillMessages = true; // when true a message will be broadcast to all players each time an AI is killed; may impact server performance.
blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information
blck_useIEDMessages = true; // Displayes a message when a player vehicle detonates and IED (such as would happen if a player killed AI with a forbidden weapon).
@ -77,7 +81,7 @@
// It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission.
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
blck_loadCratesTiming = "atMissionCompletion"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
///////////////////////////////
// PLAYER PENALTIES
@ -136,10 +140,10 @@
_blck_armed_attackHelis = ["B_Heli_Attack_01_F"];
_blck_armed_heavyAttackHelis = ["O_Heli_Attack_02_F","O_Heli_Attack_02_black_F"];
_blck_fighters = [
"O_Plane_CAS_02_F", // /ti-199 Neophron (CAS)
//"O_Plane_CAS_02_F", // /ti-199 Neophron (CAS)
"I_Plane_Fighter_03_AA_F", // A-143 Buzzard (AA)
"I_Plane_Fighter_04_F", // A-149 Gryphon
"B_Plane_CAS_01_F", // A-164 Wipeout (CAS)
//"I_Plane_Fighter_04_F", // A-149 Gryphon
//"B_Plane_CAS_01_F", // A-164 Wipeout (CAS)
"B_Plane_Fighter_01_F" // F/A-181 Black Wasp II
];
/*
@ -165,24 +169,24 @@
blck_noPatrolHelisBlue = 1;
blck_chanceHeliPatrolRed = 0.8; // 0.4;
blck_patrolHelisRed = _blck_armed_hellcats+_blck_armed_orcas + _blck_armed_ghosthawks;
blck_patrolHelisRed = _blck_armed_hellcats;
blck_noPatrolHelisRed = 1;
blck_chanceHeliPatrolGreen = 0.9999;
blck_patrolHelisGreen = _blck_armed_heavyAttackHelis+_blck_armed_ghosthawks;
blck_noPatrolHelisGreen = 2; //[1,3];
blck_patrolHelisGreen = _blck_armed_ghosthawks;
blck_noPatrolHelisGreen = [1,3];
blck_chanceHeliPatrolOrange = 0.9999;
blck_patrolHelisOrange = _blck_armed_heavyAttackHelis + _blck_fighters;
blck_noPatrolHelisOrange = 3; //[2,3];
blck_patrolHelisOrange = _blck_armed_ghosthawks; // + _blck_fighters;
blck_noPatrolHelisOrange = [2,4];
////////////////////
// Enable / Disable Missions
////////////////////
// Maximum number of missions shown on the map at any one time.
#ifdef DBDserver
blck_maxSpawnedMissions = 6;
#ifdef GRGserver
blck_maxSpawnedMissions = 15;
#else
// Change this value to reduce the number of spawned missions at any one time.
blck_maxSpawnedMissions = 4;
@ -191,9 +195,11 @@
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups.
blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1;
blck_enableRedMissions = 1;
blck_enableBlueMissions = 1;
#ifdef DBDserver
blck_enableRedMissions = 2;
blck_enableBlueMissions = 2;
blck_numberUnderwaterDynamicMissions = 5; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
#ifdef GRGserver
blck_enableHunterMissions = 1;
blck_enableScoutsMissions = 1;
blck_maxcrashsites = 3;
@ -208,11 +214,12 @@
blck_TMin_Green = 200;
blck_TMin_Blue = 120;
blck_TMin_Red = 150;
#ifdef DBDserver
blck_TMin_UMS = 180;
#ifdef GRGserver
blck_TMin_Hunter = 120;
blck_TMin_Scouts = 115;
blck_TMin_Crashes = 115;
//blck_TMin_UMS = 200;
#endif
//Maximum Spawn time between missions in seconds
@ -220,11 +227,11 @@
blck_TMax_Green = 300;
blck_TMax_Blue = 200;
blck_TMax_Red = 250;
#ifdef DBDserver
blck_TMax_UMS = 200;
#ifdef GRGserver
blck_TMax_Hunter = 200;
blck_TMax_Scouts = 200;
blck_TMax_Crashes = 200;
//blck_TMax_UMS = 280;
#endif
///////////////////////////////
@ -238,9 +245,9 @@
// Mission Vehicle Settings
////////////////////
//Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high
blck_SpawnVeh_Orange = 4; //[3,5]; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = 3; //[3,4]; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = -1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Orange = [3,5]; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = [3,4]; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Red = 2; // Number of static weapons at Red Missions
///////////////////////////////
@ -249,6 +256,7 @@
blck_useStatic = true; // When true, AI will man static weapons spawned 20-30 meters from the mission center. These are very effective against most vehicles
blck_killEmptyStaticWeapons = true; // When true, static weapons will have damage set to 1 when the AI manning them is killed.
// B_Mortar_01_F, B_HMG_01_F, B_GMG_01_F
blck_staticWeapons = ["B_HMG_01_high_F","B_GMG_01_high_F"]; // [0.50 cal, grenade launcher, AT Launcher]
////////////////////
@ -256,8 +264,8 @@
////////////////////
// Defines how many static weapons to spawn. Set this to -1 to disable spawning
blck_SpawnEmplaced_Orange = 4; //[3,5]; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = 3; //[3,4]; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Orange = [3,5]; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = [3,4]; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnEmplaced_Red = 2; // Number of static weapons at Red Missions
@ -277,13 +285,19 @@
blck_useNVG = true; // When true, AI will be spawned with NVG if is dark
blck_removeNVG = false; // When true, NVG will be removed from AI when they are killed.
blck_useLaunchers = true; // When true, some AI will be spawned with RPGs; they do not however fire on vehicles for some reason so I recommend this be set to false for now
blck_launcherTypes = ["launch_NLAW_F","launch_RPG32_F","launch_B_Titan_F","launch_I_Titan_F","launch_O_Titan_F","launch_B_Titan_short_F","launch_I_Titan_short_F","launch_O_Titan_short_F"];
blck_launcherTypes = ["launch_NLAW_F","launch_RPG32_F","launch_B_Titan_F","launch_I_Titan_F","launch_O_Titan_F","launch_B_Titan_short_F"];
//blck_launcherTypes = ["launch_RPG32_F"];
blck_launchersPerGroup = 5; // Defines the number of AI per group spawned with a launcher
blck_launcherCleanup = false;// When true, launchers and launcher ammo are removed from dead AI.
//This defines how long after an AI dies that it's body disappears.
blck_bodyCleanUpTimer = 1200; // time in seconds after which dead AI bodies are deleted
#ifdef GRGserver
#ifdef blck_milServer
blck_bodyCleanUpTimer = 900; // Trying to reduce lag with player counts > 20
#endif
#endif
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
// values are ordered as follows [blue, red, green, orange];
blck_AliveAICleanUpTimer = 1200; // Time after mission completion at which any remaining live AI are deleted.
@ -342,7 +356,7 @@
blck_maxMoneyRed = 30;
blck_maxMoneyBlue = 20;
#ifdef DBDserver
#ifdef GRGserver
blck_AIAlertDistance = [250,425,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
//blck_AIAlertDistance = [150,225,400,500];
// How precisely player locations will be revealed to AI after an AI kill

View File

@ -1,7 +1,7 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 3-14-17
@ -32,10 +32,18 @@ switch (toLower (worldName)) do
{
case "altis":
{
private ["_arr","_sunrise","_sunset","_time"];
_arr = date call BIS_fnc_sunriseSunsetTime;
_sunrise = _arr select 0;
_sunset = _arr select 1;
_daylight = _sunset - _sunrise;
_nightTime = abs(24 - _daylight);
_time = dayTime;
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 = 0.5; // Daytime time accelearation
blck_timeAccelerationDay = (_daylight)/6; // Daytime time accelearation
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
blck_timeAccelerationNight = 8; // Nighttim time acceleration
blck_timeAccelerationNight = _nightTime / 6; // Nighttim time acceleration
blck_maxCrashSites = 3;
};
case"tanoa":
@ -104,33 +112,38 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
// 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_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 = 10;
blck_mainThreadUpdateInterval = 10;
blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1;
blck_enableRedMissions = 1;
blck_enableBlueMissions = 1;
blck_enableHunterMissions = 1;
blck_enableRedMissions = 2;
blck_enableBlueMissions = 2;
blck_numberUnderwaterDynamicMissions = 3;
blck_enableHunterMissions = -1;
blck_enableScoutsMissions = 1;
blck_maxCrashSites = 3;
//blck_enabeUnderwaterMissions = 1;
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_cleanupCompositionTimer = 10; // Time after mission completion at which items in the composition are deleted.
blck_AliveAICleanUpTimer = 10; // Time after mission completion at which any remaining live AI are deleted.
blck_bodyCleanUpTimer = 10;
blck_noPatrolHelisOrange = [2,4];
//blck_chanceHeliPatrolBlue = 1;
blck_SpawnEmplaced_Orange = 4; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Orange = [2,4]; // Number of static weapons at Orange Missions
blck_SpawnEmplaced_Green = 3; // Number of static weapons at Green Missions
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnEmplaced_Red = 2;
blck_SpawnVeh_Orange = 4; // Number of static weapons at Orange Missions
blck_SpawnVeh_Orange = [2,4]; // Number of static weapons at Orange Missions
blck_SpawnVeh_Green = 3; // Number of static weapons at Green Missions
blck_SpawnVeh_Blue = 1; // Number of static weapons at Blue Missions
blck_SpawnVeh_Red = 2;
@ -142,7 +155,7 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
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;
@ -151,13 +164,14 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
blck_TMax_Hunter = 22;
blck_TMax_Scouts = 22;
blck_TMax_Crashes = 15;
blck_TMax_UMS = 25;
//blck_MissionTimout = 360; // 40 min
/*
blck_MinAI_Blue = 3;
blck_MaxAI_Blue = 5;
blck_AIGrps_Blue = 1;
*/
/*
blck_SkillsBlue = [
["aimingAccuracy",0.01],
["aimingShake",0.01],
@ -170,7 +184,7 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
["commanding",0.8],
["general",1.00]
];
*/
};

View File

@ -1,6 +1,6 @@
/*
for DBD Clan
By Ghostrider-DBD-
for ghostridergaming
By Ghostrider [GRG]
Copyright 2016
Last Modified 6/7/17
@ -12,7 +12,7 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
//#define DBDserver
#define GRGserver
#define wpModeMove
#define useAPEX
#define useDynamicSimulation

View File

@ -0,0 +1,5 @@
["B_HMG_01_high_F",[47.1777,73.5469,-3.12644],0,[true,false]],
["B_GMG_01_high_F",[-32.8926,-35.8047,-3.1268],0,[true,false]],
["B_G_Mortar_01_F",[33.1582,-34.8867,-4.76837e-007],0,[true,false]],

View File

@ -0,0 +1,18 @@
/*
by Ghostrider [GRG]
for ghostridergaming
12/5/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";
//diag_log format["_sm_addAircraft: _this = %5",_this];
params["_aircraftPatrol"];
//diag_log format["_sm_addAircraft: _aircraftPatrol = %1",_aircraftPatrol];
blck_sm_Aircraft pushBack [_aircraftPatrol,grpNull,0];
//diag_log format["_sm_addAircraft: updated blck_sm_Aircraft = %1",blck_sm_Aircraft];
true

View File

@ -0,0 +1,17 @@
/*
by Ghostrider [GRG]
for ghostridergaming
12/5/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";
params["_emplacedWeapon"];
blck_sm_Emplaced pushBack [_emplacedWeapon,grpNull,0];
diag_log format["_sm_AddEmplaced::-> _emplacedWeapon = %1, blck_sm_Emplaced = %2",_emplacedWeapon,blck_sm_Emplaced];
true

View File

@ -0,0 +1,17 @@
/*
by Ghostrider [GRG]
for ghostridergaming
12/5/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";
params["_group"];
blck_sm_Groups pushBack [_group,grpNull,0];
//diag_log format["_sm_AddGroup:: blck_sm_Groups = %1",blck_sm_Groups];
true

View File

@ -0,0 +1,16 @@
/*
by Ghostrider [GRG]
for ghostridergaming
12/5/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";
params["_vehicle"];
blck_sm_Vehicles pushBack [_vehicle,grpNull,0];
true

Some files were not shown because too many files have changed in this diff Show More