Fixed: Missions were not distributed over the entire map. The scripts now pick a random quadrant to search thus ensuring broader distribution of mission locations.
Changed: The system has been upgraded to a state-based system, meaning only one script (GMS_fnc_mainThread)is running once all missions are initialized.
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];
blck_vehCrew_blue = 3;
blck_vehCrew_red = 3;
blck_vehCrew_green = 3;
blck_vehCrew_orange = 3;
You can also define this value in missions by adding the following variable definition to the mission template:
_vehicleCrewCount = [3,6]; // min/max number of AI to load including driver. see the missions\blue\template.sqf and blck_configs.sqf for more info.
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
4. Hit and Killed event handlers extensively reworked. Methods for notification of nearby AI and Vehicles of the killers whereabouts were revised to be more inclusive of neighboring AI.
5. Issues with AIHit events fixed; AI now deploy smoke and heal.
Added Option to load weapons, pistols, uniforms, headgear, vests and backpacks from CfgPricing (Epoch) or the Arsenal (Exile) and exclude items above a certain price
Added functions to despawn static patrols of all types when no players are nearby. This tracks the number of infantry alive in a group and respawns only the number alive when the group was despawned.
Added: configs for blue, red, green and orange pistol, vest, backpack and uniforms (with thanks to Grahame for suggesting this change and doing most of the coding)
For land-based dynamic missions you can now specify for each mission:
Uniforms
Headgear
Vests
Weapons allowed
Sidearms allows.
(See \Missions\Blue\default2.sqf for examples).
[Still to do: upgrade statics for the same functionality; doable but will require adding these parameters to the spawn info for the groups of infantry, vehicle, submerged and air units];
Added: default minimun and maximum radius for groups to patrol.
blck_minimumPatrolRadius = 22; // AI will patrol within a circle with radius of approximately min-max meters. note that because of the way waypoints are completed they may more more or less than this distance.
blck_maximumPatrolRadius = 35;
Changed: **** VERY IMPORTANT ******
The definitions of private variables used in missions in now read in through an include statement (see Missions\Blue\default.sqf for an example)
Please update any custom mission you have generated accordingly.
This should save quite a bit of editing going forward.
Please note that if you do not update the private variables definitions list certain features of the mission spawner may not work due to issues with scope of variables.
Changed: Logic for spawning paratroops was redone so it is more clear.
When helis are spawned the paratroops will spawn at the heli location at the location at which the heli spawn based on probability set in _chancePara in the mission file or the default for that mission difficulty.
When no helies are to be spawned, paratroops will spawn at the mission center when it spawns based on probability set in _chancePara in the mission file or the default for that mission difficulty.
A delay was added so that paratroops spawn when players are nearby for more drama !!
Added: New configuration setting: blck_showCountAliveAI = true; When = true, the number of alive AI at a mission will be displayed by the mission marker.
Added: A new timer that determines the time after which Vehicles are deleted once all AI are dead if no player has entered the driver's seat.
Added: an optional variable in the template for missions called _missionGroups by which you can define the parameters (position, skill level, number, patrol radius) for each group spawned.
See the default2.sqf mission under custom_server\Missions\blue for an example
Changed: The method by which the server handles AI damage was changed to use MPHit.
Added: an MPKilled event handler for vehicles.
Fixed: Static Vehicles were being spawned repeatedly.
Fixed: _missionGroups parameters were not being handled correctly.
Fixed: sever FPS was not being logged by GMS_passToHCs
Fixed: crate marker was not shown when in debug mode.
Known Issues: Vehicles are not unlocked when released to players if an HC is connected.
[Added] Support for headless clients. This functionality works for one HC regardless of the name used for HCs.
[Added] Added an optional variable for mission patrol vehicles: _missionPatrolVehicles
One can use this variable to defin the spawn position and types of vehicles spawned at missions.
note: one can still have the type of vehicle randomized by using selectRandom and pointing it to either the default list of patrol vehicles for the mission system or providing a custom array of vehicle class names.
I added this because on some of our GRG missions the vehicles were being destroyed at the time they were spawned.
[Changed] Crates can now be lifted only AFTER a mission is completed.
[Changed] The client is now activated using remoteExec instead of a public variable.
**** Please be sure to update the files in the debug folder on your client.
[Added] Most parameters for numbers of loot, AI, and vehicle patrols can be defined as either a scalar value or range.
Note that there is backwards compatability to prior versions so you need make no changes to your configs if you do not wish to.
The major reason to include this feature is so that players to do not go looking for that third static weapon at an orange mission. They have to scope out the situation.
[Added] options to have multiple aircraft spawn per mission.
[Note that if you spawn more than one aircraft I recommend that you disable the paratroop spawns to avoid spawning more than 124 groups].
[Added] an optional militarized setting whereby missions use a full complement of Arma air and ground vehicles including fighter jets and tanks. This is OFF by default.
Uncomment #define blck_milServer in custom_server\Configs\blck_defines to enable this.
[ Note!!! There are both general and mod-specific configs for the militarized missions.]
[Added] Support for setting a range for certain configurations rather than setting a single value.
This should make missions a little more varied in that players will no longer be looking for the 4 statics that always spawn at an orange mission.
This pertains to:
Numbers of Emplaced Weapons
Numbers of Vehicles Patrols
Numbers of Air Patrols
AI Skills; for example you can now set ["aimingAccuracy",[0.08,16]],["aimingShake",[0.25,0.35]],["aimingSpeed",0.5],["endurance",0.50], .... ];
Numbers of Items to load into Mission and Static loot crates; for example, for the orange level of difficulty item counts could be revised as follows:
[added] AI units in mission vehicles and emplaced weapons are notified of the location of the shooter when an AI unit is hit or killed. Location of the unit is revealed gradually between 0.1 and 4 where 4 is precise. Increments increase with increasing mission difficulty.
[Added] Each mission now has a setting for mines which is set to false. To use the global setting in blck_config for yoru mission just change this to read:
_useMines = blck_useMines;
[Fixed] Logging by the time acceleration module was disabled.
[Fixed] Emplaced weapons now spawn in the correct locations.
[Fixed] Missions end correctly when all AI are dead and _endCondition = "allKilledOrPlayerNear";
[changed] Reverted to the waypoint system from build 42.
[Changed] Coding improvements for waypoint generation.
Tried a new approach to generating waypoints to make AI more aggressive without the overhead of the last method.
[Changed] Redid the mission spawner to spawn one random mission every 1 min for mission for which timers say they can be spoawned.
This will continue until the cap is reached then randomly select a mission from those that are ready to be respawned to be spawned next.
If you want the various missions to have an equal chance of being spawned at all times, give the the timers for blue, red, green and red timers the same values for Min and Max.
[Chaged] logic for detecting whether a player is near the mission center or loot crates to test if a player is near any of an array of location or objects.
[Added] a function blck_fnc_allPlayers which returns an array of allPlayers (as a temporizing fix till BIS patches the allPlayers function.
To Do - consider moving back to storing AI in a group-based manner (doable easily, needs testing).
Build a template for static missions (planned for Ver 6.60).
Write a static mission spawning routine (planned for Ver 6.60).
3/17/17 Version 6.58 Build 43
Reverted back to v6.56 build 39 then:
[Added] a Hit event handler to make AI more responsive. All AI in the group to which the hit AI belongs are informed of the shooter's location.
[Changed] the Killed event handler as below.
[Added] New logic for informing AI of the location of players to give AI a more gradual ramp up from little knowledge about player location to full knowledge.
[Added] scripts and functions for reinforcements: a) heli patrols; b) paratroops.
[Added] ...\custom_server\Configs\blck_defines.hpp inside which you can disable APEX gear and other attributes.
[Changed] Re-organized variables in the configs.
[Changed] Divided configs into tow basic parts:
- General configs for the mission system.
- Mod-specific configs.
[Changed] spawnMarker.sqf in the debug folder (mission.pbo) to reduce unneeded logging.
Added an event handler to make AI more responsive.
Revised logic for informing AI of the location of players to give AI a more gradual ramp up from little knowledge about player location to full knowledge.
1/24/17 Version 6.55 Build 35 Improved handling of static weapons with dead AI; added option to delete loot chests at some time after mission completion.
1/22/17 Version 6.54 build 32 Primarily performance-oriented improvements to switch from using timers and .sqf to a 'thread' that scans various arrays related to missions and mission objects using pre-compiled functions.
Changed code to test for conditions that trigger to spawn mission objects and AI completely
Rewrote the code for spawning emplaced weapons from scratch.
Fixed an error in how the waitTime till a mission was respawned after being updated to inactive status.
Added additional reporting as to the mission type for which AI, statics and vehicle patrols are being spawned.
Continued switching from blck_debugOn to blck_debugLevel.
Continued work to move much of the code from GMS_fnc_missionSpawner to precompiled functions.
- tested and working for all but the emplaced weapons module.
Removed old code that had been commented out from GMS_missionSpawner.
deactivated the 'fired' event handler
added an 'reloaded' event handler to units that adds a magazin of the type used to reload the weapon to prevent units running out of ammo. this also provides a break in firing and is more realistic.
Added a check to GMS_fnc_vehicleMonitor that addes ammo to vehicle cargo when stores are low. Removed the infinite ammo script for static and vehicle weapons, again for greater realism.
Increased number of rounds of ammo added to AI units for primary and secondary weapons.
Tweaked code in GMS_fnc_spawnUnit to increase efficiency.
Attempted a fix for occaisional issues with missions not triggering or ending by changing from distance to distance2D.
Tweaked code for deleting dead AI to also delete any weapons containers nearby.
Checked throughout for potential scope issues; ensured all private variables were declared as such.
Changed the method by which mission patrol vehicles and static weapons are deleted at the end of a mission.
Moved configuration for the client from debug\blckclient.sqf to debug\blckconfig.sqf.
Added a setting blck_useKillMessages = true/false; (line 60 of the config. when true, kill messages will be send to all players when a player kills an AI. The style of the message is controlled client-side (debug\blck_config.sqf)
Added a setting blck_useKillScoreMessage = true/false; // (line 61 of the config) when true a tile is displayed to the killer with the kill score information
Added a setting blck_useIEDMessages = true/false; // when true players will receive a message that their vehicle was damaged when AI are killed in a forbidden way (Run over Or Killed with vehicle-mounted weapons)
Fixed: Messages that a nearby IED was detonated are now properly displayed when players illegally kill AI.
Added a way to easily include / exclude APEX items. To exclude them comment out the line
11/16/16 Version 6.44 Build 15 Added options for automated generation of location blacklists; added APEX gear; tweaks to the code that loads items into crates.
blck_blacklistTraderCities=true; // the locations of the Epoch/Exile trader cities will be pulled from the config and added to the location blacklist for the mission system.
blcklistConcreteMixerZones = true; // Locations of the concrete mixers will be pulled from the configs; no missions will be spawned within 1000 m of these locations.
blck_blacklistSpawns = true; // Locations of Exile spawns will be pulled from the config. No missions will spawn within 1000 m of these locations.
Added: the main thread now runs a function that checks for empty groups.
Fixed: The mission system would hang on epoch after a while because createGroup returned nullGroup. this appeared to occur because the maximum number of active groups had been reached. Deleting empty groups periodically solved the issue on a test machine.
Teaked: code to check whether a possible mission spawn location is near a flag or plot pole. Still needs work.
Added: Completed adding EDEN weapons, optics, bipods, optics to AI configurations and mission loot crates.
Added APEX headgear and uniforms. (Note, you would need to add any of these you wished for players to sell to Epoch\<Map Name>\epoch_config\CfgPricing.hpp on Epoch)
Changed: Definitions of blacklist locations such as spawns moved from GMS_findWorld.sqf to the blck_configs_(epoch|exile).
Changed: Divided rifles and optics into subcategories to better enable assigning weapons to AI difficulties in a sort of class-based way, e.g., 556, 6.5, or LMG are separate classes.
Changed: DLS crate loader (not publically available yet) now uses blck_fnc_loadLootItemsFromArray rather than the prior approach for which specific crate loading functions were called depending on the loadout type (weapons, building supplies, foord etc).
Added: MapAddons - use this to spawn AI strongholds or other compositions you generate with Eden editor at server startup.
Added: Loot Crate Spawner - Spawn loot crates at prespecified points. This is designed so that you can spawn crates inside buildings or other structures spawned through the map-addons.
Added: APEX weapons, sights and optics to AI and loot crates.
Redid the code that spawns the objects at missions to work properly with the new formats generated by M3Arma EDEN Editor whilc being backwards compatible with older formats used in the existing missions.
Added code to add scopes and other attachments to AI weapons.
Added new variable blck_blacklistedOptics which you can use to block spawning optics like TMS.
Added new parameter blck_removeNVG which when true will cause NVG to be deleted from AI bodies.
Fixed: launchers and rounds should now be deleted when blck_removeLaunchers = true;
Reworked the code to spawn vehicle patrols and static weapons and clean them up.
Reworked the code that messages players to be sure that calling titleText does not hang the messaging function and delay hints or system chat notifications.
Redid system for markers which are now defined in the mission template reducing dependence on client side configurations for each mission or marker type.
Bug-fixes for helicrashes including ensuring that live AI are despawned after a certain time.
2) Fixed bugs with the IED notifications used when a player is penalized for illeagal AI Kills. _fnc_processIlegalKills (server side) and blckClient (client side) reworked. _this select 0 etc was replaced with params[] throughout. Many minor errors were corrected.
1) Re-wrote the SLS crate spawning code which now relies on functions for crate spawning and generating a smoke source already used by the mission system. Replaced old functions with newer ones (e.g., params[] and selectRandom). Found a few bugs. Broke the script up into several discrete functions. Tested on Exile and Epoch,
2) Reworked the code for generating a smoke source. Added additional options with defaults set using params[].
1) Re-did the custom_server folder so the mod automatically starts. Blck_client.sqf no longer calls the mod from the server.
2) Added a variable blck_modType which presently can be either "Epoch" or "Exile" with the aim of having a single mission system for both mods.
3) Added a more intelligent method for loading key components (variables, functions, and map-specific parameters).
4) Re-did all code to automatically select correct parameters to run correctly on either exile or epoch servers.
5) Added the Exile Static Loot Crate Spawner; Re-did this to load either an exile or epoch version as needed since a lot of the variables and also the locations tables are unique.
6) Added the Dynamic Loot system from Exile again with Exile and Epoch specific configurations; here the difference is only in the location tables.
7) Pulled the map addons function from the Exile build and added a functionality to spawn addons appropriately for map and mod type.
8) Helicrashes redone to provide more variability in the types of wrecks, loot and challenge. These are spawned by a new file Crashes2.sqf
9) Added a setting to determine the number of crash sites spawned at any one time: blck_maxCrashSites. Set to -1 to disable altogether.
10) Added settings to enable / disable specific mission classes, e.g., blck_enableOrangeMissions. Set to 1 to enable, -1 to disable.
Changed to use of params for all .sqf which also eliminated calls to BIS_fnc_params
changed to selectRandom for all .sqf
some changes to client side functions to eliminate the public variable event handler (credits to IT07 for showing the way)
Added the armed powerler to the list of default mission vehicles.
2/28/16
1) Bug fixes completed. Cleanup of bodies is now properly separated from cleanup of live AI. Cleanup of vehicles with live AI is now working correctly.
2) Released to servers this morning.
3) Next step will be to add in the heli reinforcements for ver 5.2.
2/20/16
Bugfixes and enhancements.
1) added checks for nearby bases or nearby players when spawning missions.
2) Fixed typos in Medical Camp missions.
3) Added two new modes for completing mission: 1) mission is complete when all AI are killed; 2) mission is complete when player reaches the crate OR when all AI are killed.
In Progress
1) Mission timouts
2) Added optional reinforcments via helicopters which can then patrol the mission area.
2/11/16
Major Update to Build 5.0
1) All missions but heli crashes are spawned using a single mission timer and mission spawner
2) The mission timer now calles a file containing the mission parameters. The mission spawner is included and run from that file.
3) A kill feed was added reporting each AI kill.
4) AI kills are now handled via an event handler run on the server for forward compatability with headless clients.
5) Multiple minor errors and bug fixes related to mission difficulty, AI loadouts, loot and other parameters were included.
6) The first phase of restructuring of the file structure has been completed. Most code for functions and units has been moved to a compiles directory in Compiles\Units and Compiles\Functions.
7) Some directionality and randomness was added where mission objects are spawned at random locations from an array of objects to give the missions more of a feeling of a perimeter defense where H-barrier and other objects were added.
8) As part of the restructuing, variables were moved from AIFunctions to a separate file.
9) Bugs in routines for cleanup of dead and live AI were fixed. A much simpler system for tracking live AI, dead AI, locations of active and recent missions, was implemented because of the centralization of the mission spawning to a single script