Build 174

This commit is contained in:
Chris Cardozo 2019-05-22 06:48:53 -04:00
parent a531fdc71d
commit 72ffddd2fa
31 changed files with 123 additions and 425 deletions

View File

@ -1,6 +1,5 @@
Added new settings to blck_config.sqf and blck_config_mil.sqf
1.
1. Added new settings to specify the number of crew per vehhicle to blck_config.sqf and blck_config_mil.sqf
// global settings for this parameters
// Determine the number of crew plus driver per vehicle; excess crew are ignored.
// This can be a value or array of [_min, _max];
@ -13,8 +12,9 @@ Added new settings to blck_config.sqf and blck_config_mil.sqf
_vehicleCrewCount = 3 //
2.
lists of items to be excluded from dynamically generated loadouts has been moved to:
2. Lists of items to be excluded from dynamically generated loadouts has been moved to:
blck_config.sqf
blck_config_mil.sqf
3. Added a new setting that specifies whether logging of blacklisted items is done (handy for debugging)
blck_logBlacklistedItems = true; // set to false to disable logging

View File

@ -0,0 +1,11 @@
/*
GMS_fnc_isClass
Purpose: determine if a string is a valid className
Parameters: _item, a string to be interrogated.
Returns: true if the string is a valid classname.
*/
//#include "GMSCore\init\GMS_defines.hpp" "\addons\GMSCore\init\GMS_defines.hpp"
params["_item"];
private _result = if ([_item] call GMS_fnc_getCfgType isEqualTo "") then {false} else {true};
_result

View File

@ -1,31 +0,0 @@
/*
By Ghostrider [GRG]
--------------------------
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["_center","_emplaced","_garrisonGroup"];
private["_obj","_objects"];
private _group = call blck_fnc_create_AI_Group;
_objects = [];
{
_x params["_objClassName","_objRelPos","_objDir"];
_obj = [_objClassName, [0,0,0],0] call blck_fnc_spawnSingleObject;
_objects pushBack _obj;
_obj setPosATL (_objRelPos vectorAdd _center);
_obj setDir _objDir;
private _unit = [_group] call blck_fnc_spawnUnit;
_unit moveInGunner _unit;
private _wep addMPEventHandler["MPHit",{[_this] call blck_EH_AIVehicle_HandleDamage}];
_wep setVariable["GRG_vehType","emplaced"];
[_wep,false] call blck_fnc_configureMissionVehicle;
}forEach _emplaced;
blck_monitoredVehicles append _emplacedWeps;
private _return = [_emplacedWeps,_group,_abort];
_return

View File

@ -1,21 +0,0 @@
/*
By Ghostrider [GRG]
--------------------------
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["_center","_landscape"];
// diag_log format["fnc_spawnMissionLandscapeRelative: _center = %1",_center];
private["_obj","_objects"];
_objects = [];
{
_x params["_objClassName","_objRelPos","_objDir"];
_obj = [_objClassName, _objRelPos vectorAdd _center, _objDir,enableSimulationForObject,enableDamageForObject,enableRopesforObject,"CAN_COLLIDE"] call blck_fnc_spawnSingleObject;
_objects pushBack _obj;
}forEach _landscape;
_objects

View File

@ -1,26 +0,0 @@
/*
By Ghostrider [GRG]
--------------------------
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["_center","_crates"];
private["_crate","_cratesSpawned"];
_cratesSpawned = [];
{
_x params["_objClassName","_objRelPos","_crateLoot","_lootCounts","_objDir"];
_crate = [_objClassName, _objRelPos vectorAdd _center, _objDir] call blck_fnc_spawn_lootCrate;
//_crate setPosATL _objRelPos vectorAdd _center;
_cratesSpawned pushBack _crate;
_crate allowDamage false;
_crate enableRopeAttach false;
_crate
}forEach _crates;
_cratesSpawned

View File

@ -1,17 +0,0 @@
/*
By Ghostrider [GRG]
--------------------------
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["_objClassName","_objPosn",["_objDir",0],["_enableSimulation",true],["_enableDamage",true],["_enableRopes",true],["_mode","NONE"]];
private _obj = createVehicle[_objClassName,_objPosn,[],0,_mode];
_obj setDir _objDir;
_obj allowDamage _enableDamage;
_obj enableDynamicSimulation _enableSimulation;
_obj

View File

@ -1,16 +0,0 @@
/*
by Ghostrider [GRG]
--------------------------
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 "_fnc_updateAllMarkerAliveCounts called";
/*
{
diag_log format["_fnc_updateAllMarkerAliveCounts: _x = %1",_x];
[_x select 0, _x select 1, _x select 2] call blck_fnc_updateMarkerAliveCount;
}forEach blck_missionMarkers;

View File

@ -18,6 +18,6 @@ if ((diag_tickTime > (_group getVariable "timeStamp") + _maxTime) || ( (getPos (
{
(leader _group) call blck_fnc_changeToMoveWaypoint;
#ifdef blck_debugMode
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: infantry group %1 stuck, waypoint reset",_group];};
if (blck_debugLevel > 2) then {diag_log format["_fnc_checkGroupWaypointStatus: infantry group %1 stuck, waypoint reset",_group];};
#endif
};

View File

@ -1,20 +0,0 @@
/*
[] call blck_fnc_waypointMonitor;
Scans all groups in for those that have been stuck in a particular waypoint for an excessive time and checks if they are in combat.
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-GRG-
--------------------------
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";

View File

@ -1,18 +0,0 @@
/*
Killed handler for _units
By Ghostrider-GRG-
--------------------------
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";
//blck_fnc_HC_getListConnected =
private _hcs = entities "HeadlessClient_F";
//diag_log format["_fnc_HC_getListConected: _hcs = %1",_hcs];
_hcs

View File

@ -289,7 +289,7 @@ if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then
{
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_missionPatrolVehicles,useRelativePos,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionVehiclePatrols;
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_missionPatrolVehicles,useRelativePos,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false,_vehicleCrewCount] call blck_fnc_spawnMissionVehiclePatrols;
if (typeName _temp isEqualTo "ARRAY") then
{

View File

@ -1,4 +1,15 @@
/*
by Ghostrider [GRG]
--------------------------
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["_diff"];
private ["_count"];
switch (toLower(_diff)) do
@ -8,4 +19,5 @@ switch (toLower(_diff)) do
case "green": {_count = blck_vehCrew_green};
case "orange": {_count = blck_vehCrew_orange};
};
diag_log format["_fnc_selectVehicleCrewCount: _count set to %1",_count];
_count

View File

@ -14,7 +14,7 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
// params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",20], ["_maxDist",35],["_configureWaypoints",true], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_scuba",false] ];
params["_coords","_noVehiclePatrols","_skillAI","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_isScubaGroup",false]];
params["_coords","_noVehiclePatrols","_skillAI","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_isScubaGroup",false],["_crewCount",4]];
//diag_log format["_fnc_spawnMissionVehiclePatrols: _this = %1",_this];
if (_uniforms isEqualTo []) then {_uniforms = [_skillAI] call blck_fnc_selectAIUniforms};
if (_headGear isEqualTo []) then {_headGear = [_skillAI] call blck_fnc_selectAIHeadgear};
@ -52,8 +52,9 @@ if (_missionPatrolVehicles isEqualTo []) then
_spawnPos = _x select 1;
};
_vehicle = _x select 0;
//private _crewCount = [skillAI] call GMS_fnc_selectVehicleCrewCount;
// params["_pos", "_center", _numai1, _numai2, _skillLevel, _minDist, _maxDist, _configureWaypoints, _uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms, _scuba ];
_vehGroup = [_spawnPos,_coords,3,3,_skillAI,1,2,false,_uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup;
_vehGroup = [_spawnPos,_coords,_crewCount,_crewCount,_skillAI,1,2,false,_uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup;
if (isNull _vehGroup) exitWith
{
_abort = true;

View File

@ -1,36 +0,0 @@
/*
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
Last Modified 1/23/17
*/
params["_grpPilot"];
private["_heli","_pilot"];
_pilot = (units _grpPilot) select 0;
_heli = vehicle _pilot;
diag_log "reinforcements deployed:: send heli back to spawn";
[[_heli], 300 /* 5 min*/] spawn blck_fnc_addObjToQue;
// select a random location abotu 2K from the mission
_spawnVector = round(random(360));
_spawnDistance = 2000;
_pos = getPos _heli;
// Use the new functionality of getPos
// https://community.bistudio.com/wiki/getPos
_home = _pos getPos [_spawnDistance,_spawnVector];
// Send the heli back to base
_grpPilot = group this;
[_grpPilot, 0] setWPPos _pos;
[_grpPilot, 0] setWaypointType "MOVE";
[_grpPilot, 0] setWaypointSpeed "FULL";
[_grpPilot, 0] setWaypointBehaviour "CARELESS";
[_grpPilot, 0] setWaypointCompletionRadius 200;
[_grpPilot, 0] setWaypointStatements ["true", "{deleteVehicle _x} forEach units group this;deleteVehicle (vehicle this);diag_log ""helicopter and crew deleted"""];
[_grpPilot, 0] setWaypointName "GoHome";
[_grpPilot,0] setWaypointTimeout [0.5,0.5,0.5];
diag_log "reinforcements:: sending Heli Home";

View File

@ -1,82 +0,0 @@
/*
Author: Ghostrider [GRG]
Inspiration: blckeagls / A3EAI / VEMF / IgiLoad / SDROP
License: Attribution-NonCommercial-ShareAlike 4.0 International
call with
[
_supplyHeli, // heli from which they should para
_lootCounts,
_lootSetting // [blue, red, green, orange]
] call blck_spawnHeliParaCrate
*/
params["_supplyHeli","_lootCounts"];
private ["_chute","_crate","_crateSelected","_dir","_offset"];
_crate = "";
_chute = "";
diag_log "_fnc_spawnParaCrate:: spawning crate";
_dir = getDir _supplyHeli;
_dir = if (_dir < 180) then {_dir + 210} else {_dir - 210};
_offset = _supplyHeli getPos [10, _dir];
//open parachute and attach to crate
_chute = createVehicle ["I_Parachute_02_F", [100, 100, 100], [], 0, "FLY"];
[_chute] call blck_fnc_protectVehicle;
_chute setPos [_offset select 0, _offset select 1, 100 ]; //(_offset select 2) - 10];
diag_log format["_fnc_spawnParaCrate:: chute spawned yielding object %1 at postion %2", _chute, getPos _chute];
//create the parachute and crate
_crateSelected = selectRandom["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_IND_AmmoVeh_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F"];
_crate = [getPos _chute, _crateSelected] call blck_fnc_spawnCrate;
//_crate = createVehicle [_crateSelected, position _chute, [], 0, "CAN_COLLIDE"];
_crate setPos [position _supplyHeli select 0, position _supplyHeli select 1, 250]; //(position _supplyHeli select 2) - 10];
_crate attachTo [_chute, [0, 0, -1.3]];
_crate allowdamage false;
_crate enableRopeAttach true; // allow slingloading where possible
diag_log format["_fnc_spawnParaCrate:: crate spawned %1 at position %2 and attached to %3",_crate, getPos _crate, attachedTo _crate];
switch (_lootSetting) do
{
case "orange": {[_crate, blck_BoxLoot_Orange, _lootCounts] call blck_fnc_fillBoxes;};
case "green": {[_crate, blck_BoxLoot_Green, _lootCounts] call blck_fnc_fillBoxes;};
case "red": {[_crate, blck_BoxLoot_Red, _lootCounts] call blck_fnc_fillBoxes;};
case "blue": {[_crate, blck_BoxLoot_Blue, _lootCounts] call blck_fnc_fillBoxes;};
default {[_crate, blck_BoxLoot_Red, _lootCounts] call blck_fnc_fillBoxes;};
};
diag_log format["_fnc_spawnParaCrate:: crate loaded and now at position %1 and attached to %2", getPos _crate, attachedTo _crate];
_fn_monitorCrate = {
params["_crate","_chute"];
uiSleep 30;
private["_crateOnGround"];
_crateOnGround = false;
while {!_crateOnGround} do
{
uiSleep 1;
diag_log format["_fnc_spawnParaCrate:: Crate Altitude: %1 Crate Velocity: %2 Crate Position: %3 Crate attachedTo %4", getPos _crate select 2, velocityModelSpace _crate select 2, getPosATL _crate, attachedTo _crate];
if ( (((velocity _crate) select 2) < 0.1) || ((getPosATL _crate select 2) < 0.1) ) exitWith
{
uiSleep 10; // give some time for everything to settle
detach _crate;
deleteVehicle _chute;
if (surfaceIsWater (getPos _crate)) then
{
deleteVehicle _crate;
} else
{
[_crate] call blck_fnc_signalEnd;
};
};
};
};
[_crate,_chute] call _fn_monitorCrate;
[[_crate], 1200 /* 20 min*/] spawn blck_fnc_addObjToQue;

View File

@ -1,6 +1,5 @@
/*
by Ghostrider
7-27-17
Alerts the leader of a group of the location of an enemy.
--------------------------

View File

@ -14,7 +14,7 @@ params["_target"];
private["_vehGroup"];
{
_vehGroup = _x getVariable["vehicleGroup",grpNull];
if (_target distance2D (leader _vehGroup) < 1000) then {[_vehGroup,_target] call GMS_fnc_alertGroupUnits;};
if (_target distance2D (leader _vehGroup) < 1000) then {[_vehGroup,_target] call blck_fnc_alertGroupUnits;};
}forEach blck_monitoredVehicles;

View File

@ -1,63 +0,0 @@
/*
calculate a reward player for AI Kills in crypto.
Code fragment adapted from VEMF
call as [_unit,_killer] call blck_fnc_rewardKiller;
Last modified 6/3/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["_unit","_killer"];
private["_reward","_maxReward","_dist","_killstreakReward","_distanceBonus","_newKillerScore","_newKillerFrags","_money"];
if (toLower(blck_modType) isEqualTo "epoch") then
{
if ( (vehicle _killer) in blck_forbidenVehicles || (currentWeapon _killer) in blck_forbidenVehicleGuns ) then
{
_reward = 0;
}
else
{
_maxReward = 50;
_dist = _unit distance _killer;
_reward = 0;
_distanceBonus = floor((_unit distance _killer)/100);
_killstreakBonus = 3 * (_killer getVariable["blck_kills",0]);
_reward = 25 + _distanceBonus + _killstreakBonus;
private _killstreakReward=+(_kills*2);
[_killer,_reward + _killstreakReward] call blck_fnc_giveTakeCrypto;
if (blck_useKillScoreMessage) then
{
[["showScore",[_reward,"",_kills],""],[_killer]] call blck_fnc_messageplayers;
};
};
};
if (toLower(blck_modType) isEqualTo "exile") then
{
private["_distanceBonus","_overallRespectChange","_newKillerScore","_newKillerFrags","_maxReward","_money","_message"];
if ( (isPlayer _killer) && (_killer getVariable["ExileHunger",0] > 0) && (_killer getVariable["ExileThirst",0] > 0) ) then
{
_distanceBonus = floor((_unit distance _killer)/100);
_killstreakBonus = 3 * (_killer getVariable["blck_kills",0]);
_respectGained = 25 + _distanceBonus + _killstreakBonus;
_score = _killer getVariable ["ExileScore", 0];
_score = _score + (_respectGained);
_killer setVariable ["ExileScore", _score];
format["setAccountScore:%1:%2", _score,getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
_newKillerFrags = _killer getVariable ["ExileKills", 0];
_newKillerFrags = _newKillerFrags + 1;
_killer setVariable ["ExileKills", _newKillerFrags];
format["addAccountKill:%1", getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
_killer call ExileServer_object_player_sendStatsUpdate;
if (blck_useKillScoreMessage) then
{
[["showScore",[_respectGained,_distanceBonus,_kills]], [_killer]] call blck_fnc_messageplayers;
};
};
};

View File

@ -16,15 +16,6 @@
private["_vehType","_safepos","_veh","_unitNumber"];
params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true]];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
private _params = ["_center","_pos","_vehType","_minDis","_maxDis","_group","_setWaypoints"];
{
diag_log format["_fnc_spawnMissionVehiclePatrol:: param %1 | isEqualTo %2 | _forEachIndex %3",_params select _forEachIndex,_this select _forEachIndex, _forEachIndex];
}forEach _this;
};
#endif
//_center Center of the mission area - this is usuall the position treated as the center by the mission spawner. Vehicles will patrol the perimeter of the mission area.
// _pos the approximate spawn point for the vehicle
@ -33,8 +24,6 @@ if (blck_debugLevel > 1) then
//_maxDis = maximum distance from the center of the mission for vehicle waypoints
//_groupForVehiclePatrol = The group with which to man the vehicle
if !(isNull _group) then {
_veh = [_vehType,_pos] call blck_fnc_spawnVehicle;
// _veh addEventHandler["HandleDamage",{ [_this] call blck_EH_AIVehicle_HandleDamage}];
@ -43,12 +32,6 @@ if !(isNull _group) then {
_veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
//_group setVariable["groupVehicle",_veh];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then
{
diag_log format["spawnVehiclePatrol:: vehicle spawned is %1 of typeof %2",_veh, typeOf _veh];
};
#endif
_unitNumber = 0;
@ -60,7 +43,7 @@ if !(isNull _group) then {
default {_x moveInCargo _veh;};
};
_unitNumber = _unitNumber + 1;
}forEach (units _group);
}forEach (units _group); // TODO: add check for empty crew slots and delete excess crew
// params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_wpPatrolMode","SAD"],["_soldierType","null"] ];
_group setcombatmode "RED";

View File

@ -39,6 +39,7 @@ private _functions = [
["GMS_fnc_msgIED","\q\addons\custom_server\Compiles\Functions\GMS_fnc_msgIED.sqf"],
["GMS_fnc_cleanupTemporaryMarkers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_cleanupTemporaryMarkers.sqf"],
["GMS_fnc_updateCrateSignals","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateCrateSignals.sqf"],
["GMS_fnc_isClass","\q\addons\custom_server\Compiles\Functions\GMS_fnc_isClass.sqf"],
// Player-related functions
["GMS_fnc_handlePlayerUpdates","\q\addons\custom_server\Compiles\Units\GMS_fnc_handlePlayerUpdates.sqf"],
@ -89,7 +90,7 @@ private _functions = [
// Group-related functions
["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units]
["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group
["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat
//["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat
["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"],
["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"],
["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"],
@ -150,8 +151,7 @@ private _functions = [
["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"],
["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"],
["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"],
["GMS_fnc_removeAllAIgear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeAllAIgear.sqf"],
["GMS_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Functions\GMS_fnc_alertGroupUnits.sqf"],
["GMS_fnc_removeAllAIgear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeAllAIgear.sqf"],
// HC support functions
["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"],

View File

@ -18,7 +18,7 @@
*/
blck_locationBlackList = []; // Do not touch ...
blck_debugON = true; // Do not touch ...
blck_debugLevel = 0; // Do not touch ...
blck_debugLevel = 3; // Do not touch ...
#ifdef blck_milServer
if (true) exitWith
{
@ -292,29 +292,35 @@
****************************************************************/
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
blck_useConfigsGeneratedLoadouts = true;
blck_logBlacklistedItems = true;
//blck_maximumitempriceinai_loadouts = 1000;
// lists of black-listed items to be excluded from dynamic loadouts
blck_blacklistedVests = [
"V_Press_F"
];
blck_blacklistedUniforms = [
"U_I_Protagonist_VR",
"U_C_Protagonist_VR",
"U_O_Protagonist_VR",
"U_B_Protagonist_VR"
];
blck_blacklistedBackpacks = [
"B_ViperLightHarness_blk_F"
];
blck_blacklistedHeadgear = [
"H_HelmotO_ViperSP_ghex_F",
"H_HelmetO_VierSP_hex"
];
blck_blacklistedPrimaryWeapons = [
"srifle_LRR_tna_F"
];
blck_blacklistedSecondaryWeapons = [
"hgun_Pistol_heav_02_F"
];
blck_blacklistedLaunchersAndSwingWeapons = [
@ -322,7 +328,7 @@
];
blck_blacklistedOptics = [
"optic_tws"
];
blck_blacklistedAttachments = [
@ -419,12 +425,20 @@
diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType];
execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf";
};
waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"};
waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"};
uiSleep 10;
//waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"};
//diag_log format["blck_maximumItemPriceInAI_Loadouts defined as %1",blck_maximumItemPriceInAI_Loadouts];
//waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"};
if (blck_useConfigsGeneratedLoadouts) then
{
diag_log format["[blckeagls] Dynamic Configs Enabled"];
execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf";
} else {
if (blck_verifyClassNames) then
{
};
};
blck_configsLoaded = true;
diag_log format["<--- blck_configs loaded at %1 --->",diag_tickTime];

View File

@ -11,6 +11,7 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
#include "\q\addons\custom_server\init\build.sqf";
diag_log format["[blckeagls] loading configurations for Epoch for blckeagls build %1",blck_buildNumber];
////////////
// Epoch-specific settings

View File

@ -46,6 +46,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
blck_crateMoneyGreen = [300, 500];
blck_crateMoneyOrange = [500, 750];
blck_maximumItemPriceInAI_Loadouts = 100;
blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders.
_blck_lightlyArmed_ARMA3 = [

View File

@ -276,6 +276,8 @@
****************************************************************/
// When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files
blck_useConfigsGeneratedLoadouts = true;
blck_logblacklisteditems = true;
//blck_maximumitempriceinai_loadouts = 1000;
// lists of black-listed items to be excluded from dynamic loadouts
blck_blacklistedVests = [
@ -404,8 +406,9 @@
diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType];
execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf";
};
waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"};
waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"};
//waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"};
//waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"};
uiSleep 10;
if (blck_useConfigsGeneratedLoadouts) then
{
diag_log format["[blckeagls] Dynamic Configs Enabled"];

View File

@ -152,7 +152,7 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
blck_enableGreenMissions = -1;
blck_enableRedMissions = -1;
blck_enableBlueMissions = 1;
blck_numberUnderwaterDynamicMissions = 3;
blck_numberUnderwaterDynamicMissions = 1;
blck_enableHunterMissions = -1;
blck_enableScoutsMissions = -1;
blck_maxCrashSites = -3;

View File

@ -13,7 +13,7 @@
#define useAPEX
#define blck_milServer
#define blck_useCUP
//#define blck_useCUP
//#define blck_useRHS
////////////////////////////

View File

@ -65,6 +65,7 @@ if (toLower(blck_modType) isEqualTo "exile") then
};
//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
{
private _temp = [_x] call bis_fnc_itemType;
//diag_log _temp;
_itemCategory = _temp select 0;
@ -80,51 +81,51 @@ if (toLower(blck_modType) isEqualTo "exile") then
};
if (_price < blck_maximumItemPriceInAI_Loadouts) then
{
if (_itemCategory isEqualTo "Weapon") then
{
switch (_itemType) do
if (_itemCategory isEqualTo "Weapon") then
{
case "AssaultRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}};
case "MachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnLMG pushBack _x}};
case "SubmachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSMG pushBack _x}};
case "Shotgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnShotGun pushBack _x}};
case "Rifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}};
case "SniperRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSniper pushBack _x}};
case "Handgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnHandGun pushBack _x}};
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}};
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}};
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}};
switch (_itemType) do
{
case "AssaultRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x} else {if (blck_logBlacklistedItems) then {diag_log format["Assualt Rifle %1 Excluded: blacklisted Item",_x]}}};
case "MachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnLMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Machine Gun %1 Excluded: blacklisted Item",_x]}}};
case "SubmachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Submachinegun %1 Excluded: blacklisted Item",_x]}}};
case "Shotgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnShotGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Shotgun %1 Excluded: blacklisted Item",_x]}}};
case "Rifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rifle %1 Excluded: blacklisted Item",_x]}}};
case "SniperRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSniper pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Sniper Rifle %1 Excluded: blacklisted Item",_x]}}};
case "Handgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnHandGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Handgun %1 Excluded: blacklisted Item",_x]}}};
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Launcher %1 Excluded: blacklisted Item",_x]}}};
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rocket Launcer %1 Excluded: blacklisted Item",_x]}}};
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Throw %1 Excluded: blacklisted Item",_x]}}};
};
};
};
if (_itemCategory isEqualTo "Item") then
{
switch (_itemType) do
if (_itemCategory isEqualTo "Item") then
{
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}};
case "AccessoryPointer": {if !(_x in blck_blacklistedAttachments) then {_wpnPointers pushBack _x}};
case "AccessorySights": {if !(_x in blck_blacklistedOptics) then {_wpnOptics pushBack _x}};
case "AccessoryBipod": {if !(_x in blck_blacklistedAttachments) then {_wpnUnderbarrel pushBack _x}};
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}};
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}};
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}};
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}};
switch (_itemType) do
{
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Muzzle %1 Excluded: blacklisted Item",_x]}}};
case "AccessoryPointer": {if !(_x in blck_blacklistedAttachments) then {_wpnPointers pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Pointer %1 Excluded: blacklisted Item",_x]}}};
case "AccessorySights": {if !(_x in blck_blacklistedOptics) then {_wpnOptics pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Optic %1 Excluded: blacklisted Item",_x]}}};
case "AccessoryBipod": {if !(_x in blck_blacklistedAttachments) then {_wpnUnderbarrel pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Bipod %1 Excluded: blacklisted Item",_x]}}};
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Binocular/Rangefinder/Binocular %1 Excluded: blacklisted Item",_x]}}};
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Compass %1 Excluded: blacklisted Item",_x]}}};
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["GPS %1 Excluded: blacklisted Item",_x]}}};
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["NVG %1 Excluded: blacklisted Item",_x]}}};
};
};
};
if (_itemCategory isEqualTo "Equipment") then
{
switch (_itemType) do
if (_itemCategory isEqualTo "Equipment") then
{
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}};
case "Headgear": {if !(_x in blck_blacklistedHeadgear) then {_headgear pushBack _x}};
case "Vest": {if !(_x in blck_blacklistedVests) then {_vests pushBack _x}};
case "Uniform": {if !(_x in blck_blacklistedUniforms) then {_uniforms pushBack _x}};
case "Backpack": {if !(_x in blck_blacklistedBackpacks) then {_backpacks pushBack _x}};
switch (_itemType) do
{
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Glasses %1 Excluded: blacklisted Item",_x]}}};
case "Headgear": {if !(_x in blck_blacklistedHeadgear) then {_headgear pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Headgear %1 Excluded: blacklisted Item",_x]}}};
case "Vest": {if !(_x in blck_blacklistedVests) then {_vests pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Vest %1 Excluded: blacklisted Item",_x]}}};
case "Uniform": {if !(_x in blck_blacklistedUniforms) then {_uniforms pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Uniform %1 Excluded: blacklisted Item",_x]}}};
case "Backpack": {if !(_x in blck_blacklistedBackpacks) then {_backpacks pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Backpack %1 Excluded: blacklisted Item",_x]}}};
};
};
};
};
} forEach _classnameList;
blck_primaryWeapons = _wpnAR + _wpnLMG + _wpnSMG + _wpnShotGun + _wpnSniper;

View File

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

View File

@ -51,6 +51,7 @@ if (isNil "_chanceLoot") then {_chanceLoot = 0};
if (isNil "_paraTriggerDistance") then {_paraTriggerDistance = 400;};
if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Blue};
if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed};
if (isNil "_vehicleCrewCount") then {_vehicleCrewCount = [_aiDifficultyLevel] call GMS_fnc_selectVehicleCrewCount};
_objects = [];
_mines = [];
@ -259,7 +260,7 @@ _vehToSpawn = 0;
if (blck_useVehiclePatrols && count _vehiclePatrolParameters > 0) then
{
// params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]];
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_vehiclePatrolParameters,true,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false /*,blck_UMS_weapons,blck_UMS_vests,isScubaMission*/ ] call blck_fnc_spawnMissionVehiclePatrols;
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_vehiclePatrolParameters,true,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false,_vehicleCrewCount /*,blck_UMS_weapons,blck_UMS_vests,isScubaMission*/ ] call blck_fnc_spawnMissionVehiclePatrols;
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {
diag_log format["dynamicUMSspawner :: (251) blck_fnc_spawnMissionVehiclePatrols returned _temp = %1",_temp];

View File

@ -4,4 +4,4 @@ private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_marke
"_uniforms","_headgear","_weaponList","_sideArms","_vests","_backpacks","_chancePara","_noPara","_chanceHeliPatrol","_noChoppers","_missionHelis",
"__noChoppers","_endCondition","_chanceHeliLootDropped","_chanceLoot","_paraTriggerDistance","_paraLootCounts","_paraLoot","_markerColor","_loadCratesTiming",
"_markerType","_useMines","_assetKilledMsg","_enemyLeaderConfig","_hostageConfig","_garrisonedBuildings_BuildingPosnSystem","_garrisonedBuilding_ATLsystem",
"_submarinePatrolParameters","_scubaGroupParameters"];
"_submarinePatrolParameters","_scubaGroupParameters","_vehicleCrewCount"];

View File

@ -1,16 +1,16 @@
For V 6.90:
1. Sort out the issue with the handling of unit kills not separating killer from the killer's vehicle.
1. Sort out the issue with the handling of unit kills not separating killer from the killer's vehicle. DONE
2. Test new unlock fix on HC
3. Write a claim vehicle function.
4. End of development most likely.
5. be sure AI do heal when wounded but not killed.
6. test that ai toss smoke when healing
7. Set up queue for markers needing to be deleted.
7. Set up queue for markers needing to be deleted. DONE
need to call something that quickly scans for markers that need to be deleted
need to push temp markers to the cue with delete times.
need to push temp markers to the cue with delete times. DONE
8. add a quick thing for refreshing flares on crates to replace all those uisleeps
do this in _signalEnd and _crateMarker
replace _crateMarker with calls to signalEnd.
do this in _signalEnd and _crateMarker DONE
replace _crateMarker with calls to signalEnd. DONE
9. Check that trader zones are detected properly in Exile.
Todo:
☐ Item
☐ Item: add check for empty crew slots and delete excess crew