//AI improvements
* There is a General commander that organize the attack and defence of all UPSMON squads in the same side:
o Squads of AI fights together as an army, so they comunicate each other by radio the enemy known positions.
o flanking manauvers are taken depending on friendly position.
o General commander can order to surrender entire side if army is seriously damaged
* AI has enhanced actions and movements in combat:
o AI can use smoke grenades.
o AI run crouched when enemy is near or under fire.
o AI does fire suppression and squad movement can be supressed by fire too.
o AI moves are influenced by morale, so in low morale they can retreat.
o AI can lay mines if enemy tanks are near.
o AI avoid snipers when fired by uknown enemy.
o AI paratroop near objectives if they take an hely.
* AI take use of enviroment:
o AI may use static weapons you place on map.
o AI may use empty land vehicles for moving and or to attack.
o AI may use empty helys for moving and or
//AI improvements
* There is a General commander that organize the attack and defence of all UPSMON squads in the same side:
o Squads of AI fights together as an army, so they comunicate each other by radio the enemy known positions.
o flanking manauvers are taken depending on friendly position.
o General commander can order to surrender entire side if army is seriously damaged
* AI has enhanced actions and movements in combat:
o AI can use smoke grenades.
o AI run crouched when enemy is near or under fire.
o AI does fire suppression and squad movement can be supressed by fire too.
o AI moves are influenced by morale, so in low morale they can retreat.
o AI can lay mines if enemy tanks are near.
o AI avoid snipers when fired by uknown enemy.
o AI paratroop near objectives if they take an hely.
* AI take use of enviroment:
o AI may use static weapons you place on map.
o AI may use empty land vehicles for moving and or to attack.
o AI may use empty helys for moving and or to attack.
o AI uses buildings to take defence position and patrol them when leader thinks than enemy is near or using it.
// Performance
UPSMON Script runs 1 time every 20 seconds for every group of IA, new movements calculates every 60 s or less depending of under fire, enemy knowns...
I have been implementing some functions in spawn mode to exploit the multithread of processors with very fast results.
UPSMON has been tested in CHS comunity with more than 30 people and more than 25 groups of IA with UPSMON and the conclusion was perfect performance.
//Installation
Copy folder "scripts" into your folder mission.
//How to Implement
In init.sqf you need to load init_upsmon.sqf
//Init UPSMON scritp
call compile preprocessFileLineNumbers "scripts\Init_UPSMON.sqf";
In the mission editor run UPSMON script in the lider of each group exec UPSMON, sample:
nul=[this,"town", "move","reinforcement", "delete:",600] execVM "scripts\upsmon.sqf";
//Global variables of Init_UPSMON.sqf
//1=Enable or 0=disable debug. in debug could see a mark positioning de leader and another mark of the destinity of movement, very useful for editing mision
KRON_UPS_Debug = 1;
//Time that lider wait until doing another movement, this time reduced dinamically under fire, and on new targets
KRON_UPS_react = 60;
//Min time to wait for doing another reaction
KRON_UPS_minreact = 30;
//Max waiting is the maximum time patrol groups will wait when arrived to target for doing another target.
KRON_UPS_maxwaiting = 30;
// how long AI units should be in alert mode after initially spotting an enemy
KRON_UPS_alerttime = 90;
// how far opfors should move away if they're under attack
KRON_UPS_safedist = 300;
// how close unit has to be to target to generate a new one target or to enter stealth mode
KRON_UPS_closeenough = 300;
// how close units have to be to each other to share information, over this, will lose target
KRON_UPS_sharedist = 800;
//If enabled IA comunicating between them with radio defined sharedist distance,
KRON_UPS_comradio = 2;
//Sides that are enemies of resistance
KRON_UPS_Res_enemy = [east];
//Frequency for doin calculations for each squad.
KRON_UPS_Cycle = 20;
//Height that heli will fly this input will be randomiced in a 10%
KRON_UPS_flyInHeight = 100;
//Max distance to target for doing paradrop, will be randomiced between 0 and 100% of this value.
KRON_UPS_paradropdist = 250;
//Enables or disables AI to use static weapons
KRON_UPS_useStatics = true;
//Enables or disables AI to put mines if armored enemies near
KRON_UPS_useMines = true;
//Distance from destination for seraching vehicles
KRON_UPS_searchVehicledist = 500;
//Percentage of units to surrender.
KRON_UPS_EAST_SURRENDER = 10;
KRON_UPS_WEST_SURRENDER = 10;
KRON_UPS_GUER_SURRENDER = 15;
//Efective distance for doing perfect ambush (max distance is this x2)
KRON_UPS_ambushdist = 50;
//Enable it to send reinforcements, better done it in a trigger inside your mission.
KRON_UPS_reinforcement = false;
//Artillery support, better control if set in trigger
KRON_UPS_ARTILLERY_EAST_FIRE = false; //set to true for doing east to fire
KRON_UPS_ARTILLERY_WEST_FIRE = false; //set to true for doing west to fire
KRON_UPS_ARTILLERY_GUER_FIRE = false; //set to true for doing resistance to fire
//Parámeters of UPSMON.sqf
The same as UPS of Kronzky, only new "reinforcement" for allowing a group to go where is called for.
// Required parameters:
// unit = Unit to patrol area (1st argument)
// markername = Name of marker that covers the active area. (2nd argument)
// (e.g. nul=[this,"town"] execVM "ups.sqf")
//
// Optional parameters: // random = Place unit at random start position.
// randomdn = Only use random positions on ground level.
// randomup = Only use random positions at top building positions.
// min:n/max:n = Create a random number (between min and max) of 'clones'.
// init:string = Custom init string for created clones.
// nomove = Unit will stay at start position until enemy is spotted.
// nofollow = Unit will only follow an enemy within the marker area.
// delete:n = Delete dead units after 'n' seconds.
// nowait = Do not wait at patrol end points.
// noslow = Keep default behaviour of unit (don't change to "safe" and "limited").
// noai = Don't use enhanced AI for evasive and flanking maneuvers.
// showmarker = Display the area marker.
// trigger = Display a message when no more units are left in sector.
// empty:n = Consider area empty, even if 'n' units are left.
// track = Display a position and destination marker for each unit.
// reinforcement = Makes squad as reinforcement, when alarm KRON_UPS_reinforcement==true this squad will go where enemy were.
// reinforcement:x = Makes squad as reinforcement id, when alarm KRON_UPS_reinforcementx==true this squad will go where enemy were.
// fortify = makes leader order to take positions on nearly buildings at distance 200 meters, squad fortified moves less than "nomove"
// spawned = use only with squads created in runtime, this feature will add squad to UPSMON correctly.
// nowp = No waypoints will be created for this squad, so this squad will comunicate enemies but will not be moved, so you can do what you want with them using waypoints.
// ambush = Ambush squad will not move until in combat, will wait for incoming enemies stealth and ambush when near or discovered.
// ambush:n = Creates an anbush and wait maximun the especified time n in seconds. you can put 0 seconds for putting mines and go away if combined with "move" for example
// aware,combat,stealth,careless defines default behaviour of squad
// respawn = allow squad to respawn when all members are dead and no targets near
// respawn:x = allows to define the number of times squad may respawn.
Forums.bohemia.net