Jump to content
Sign in to follow this  
khaosmatical

ARMA II Combined AI Arty SideChat Problem

Recommended Posts

Hi there, recently I have started using Whollysteve's Combined AI Arty script package here ( http://www.armaholic.com/page.php?id=10534 ) and it is a great script, I can tweak it as much as I need. I have ran into a major problem in which whenever a fire mission is conducted all of the information is put in the Side Chat so everyone can see, i.e. "LOOKING FOR TARGETS" and when the enemy ai are using these mortars even to the Blufor that comes up which spoils the surprise. In the code I see when it actually says these lines on side but I fear that if I delete them it could cause a major error. Would anyone know how to disable them without breaking the script? Thanks.

FireMission.sqf

 // -------------------------------------------------------------------
//Whollysteve combined AI arty script
//
//FORWARD-OBSERVER
//
//from
//Nou's Forward Observer Script v0.5 and
//[ZSU]Blake aka Blakeace's AI Artillery Framework v1.00
//15/05/2010
//
//USAGE
//One Forward observer; artillery battery synched to an arty module. thats it.
//Put the folder with bith scripts into the mission folder (or mydocs>arma2>scripts for use in the editor)
//The map is unpacked to allow for use in the editor, just drop it into mydocs>arma2>missions.
//
//Put the following into the FO init box:
//stuff = [FO_NAME,ARTY_MODULE_NAME,WAIT_TIME,FIRE_AT_SIDE,RANGE,TYPE,SPREAD,ADJUSTS,SALVO,SKILL,VEL_COMPENSATOR,PREP_VALUE] execVM 

"fo\forward_observer.sqf";
//eg: stuff = [this,ARTY,1,west,1000,"HE",200,2,8,5,10,0] execVM "ForwardObserver\ForwardObserver.sqf";
//
//FO_NAME			: Name of the Forward Observer 
//ARTY_MODULE_NAME	: Name of the Arty Module synced to your battery
//WAIT_TIME			: How often does the FO search for targets (1)
//FIRE_AT_SIDE		: Whose parade do you want to rain on (EAST,WEST,INS)
//RANGE				: How far out from the FO to look for targets (1000)
//TYPE				: Type of shot "HE","WP","SMOKE","SADARM","LASER"
//SPREAD			: Salvo dispersion radius (100)
//ADJUSTS			: Number of ranging rounds (2)
//SALVO				: Number of shots in the salvo
//SKILL				: How good is the arty battery 0-10 bad-good (5)
//VEL_COMPENSATOR	: Takes into account moving targets (10)
//PREP_VALUE		: Is the unit already ranged in 0 no, 1 yes (0)
//
//Some general values are given in brackets
//
//ENJOY
//
//THANKS TO: Nou's (Forward Observer Script v0.5) and [ZSU]Blake aka Blakeace (AI Artillery Framework v1.00) for the two great scripts that were the main basis for this piece of work.
//
//made with Notepad++
// -------------------------------------------------------------------

_battery 		= _this select 0;
_target			= _this select 1;
_targetCount	= _this select 2;
_fo				= _this select 3;
_fm				= _this select 4;
_type			= _this select 5;
_spread			= _this select 6;	//ground spread radius;
_adjustments 	= _this select 7;
_pieces 		= count (units (_battery getVariable "ARTY_LEAD"));
_rounds 		= _this select 8;
_skill			= _this select 9;	//0-10 bad-good skilled;
_adjmult 		= _this select 10; 	//speed adjuster (10 on foot, 20 for vehicles);
_prep			= _this select 11;	// are they ranged in 0/1 ;


if (_prep == 1) then {  
if(_rounds > 2 and ((ceil (random 15) > 3))) then {
	//fire initial salvo;
	//static aimpoint;

	_targetPos = getPosASL _target;

	_mrk0 = createMarker ["MortarTarget",_targetPos];
	_mrk0 setMarkerColor "ColorBlack";
	_mrk0 setMarkerShape "ICON";
	_mrk0 setMarkerType "mil_objective";

	player sideChat format["%1: firing for effect %2 rounds", _battery, ceil (_rounds/2)];

	[_battery, true] call BIS_ARTY_F_SetShellSpawn; // Turn spawn mode on
	[_battery, ((round (_rounds*12.5)) min 50)] call BIS_ARTY_F_SetDispersion;
	[_battery, _targetPos, ["IMMEDIATE", "HE", 0, ceil (_rounds/2)]] call BIS_ARTY_F_ExecuteTemplateMission;

	waitUntil {_battery getVariable "ARTY_ONMISSION"};
	player sideChat format["%1: FFE mission started", _battery];

	waitUntil {!(_battery getVariable "ARTY_ONMISSION")};
	player sideChat format["%1: FFE mission ended", _battery];

	waitUntil {_battery getVariable "ARTY_SPLASH"};
	player sideChat format["%1: FFE splash", _battery];

	sleep ((10-_skill)*2);

};

};

if(_rounds > 2 and ((ceil (random 15) > 2))) then {
// Do adjust fire mission!
// Number of adjustments to do.

player sideChat format["Firing %1 adjustment rounds", _adjustments];
while {_adjustments > 0} do {
	_adjustX = ((round (random 50)) + (_adjustments*75));
	_adjustY = ((round (random 50)) + (_adjustments*75));
	if( round (random 1) == 0) then {
		_adjustY = _adjustY*-1;
	};
	if( round (random 1) == 0) then {
		_adjustX = _adjustX*-1;
	};

	_targetPos = getPosASL _target;

	_mrk1 = createMarker ["MortarTarget",_targetPos];
	_mrk1 setMarkerColor "ColorWhite";
	_mrk1 setMarkerShape "ICON";
	_mrk1 setMarkerType "mil_objective";

	_adjustPoint = [((_targetPos select 0) + _adjustX), ((_targetPos select 1) + _adjustY), _targetPos select 2];
	player sideChat format["Firing adjustment at: %1", _adjustPoint];

	[_battery, _adjustPoint, ["IMMEDIATE", "WP", 0, 1]] call BIS_ARTY_F_ExecuteTemplateMission;

	waitUntil {_battery getVariable "ARTY_ONMISSION"};
	player sideChat "Adjust mission started";

	waitUntil {!(_battery getVariable "ARTY_ONMISSION")};
	player sideChat "Adjust mission ended";

	waitUntil {_battery getVariable "ARTY_SPLASH"};
	player sideChat "adjust splash";

	sleep ((10-_skill)*3);

	_adjustments = _adjustments - 1;
};

player sideChat "Adjustments complete, firing for effect!";
};

sleep ((10-_skill)*3);

player sideChat format["%1: firing for effect %2 rounds", _battery, _rounds];

//ffe start;
//aimpoint adjusted for target speed and direction;

_adjmax = 300;
_adjmin = -300;
_error = (10-_skill)*10;

_Yadj = speed (_target) * cos (direction (_target)) * _adjmult;
if (_Yadj > _adjmax) then {_Yadj = _adjmax};
if (_Yadj < _adjmin) then {_Yadj = _adjmin};
_Xadj = speed (_target) * sin (direction (_target)) * _adjmult;
if (_Xadj > _adjmax) then {_Xadj = _adjmax};
if (_Xadj < _adjmin) then {_Xadj = _adjmin};

_impact = [(getpos (_target) select 0) + _Xadj+(random _error - _error/2), (getpos (_target) select 1) + _Yadj+(random _error - _error/2), getpos (_target) select 2];

_mrk2 = createMarker ["MortarTarget",_targetPos];
_mrk2 setMarkerColor "ColorBlack";
_mrk2 setMarkerShape "ICON";
_mrk2 setMarkerType "mil_objective";

[_battery, true] call BIS_ARTY_F_SetShellSpawn; // Turn spawn mode on;
[_battery, _spread] call BIS_ARTY_F_SetDispersion;
[_battery, _impact, ["IMMEDIATE",_type, 0,_rounds]] call BIS_ARTY_F_ExecuteTemplateMission;

//ffe end;

waitUntil {_battery getVariable "ARTY_ONMISSION"};
player sideChat format["%1: FFE mission started", _battery];

waitUntil {!(_battery getVariable "ARTY_ONMISSION")};
player sideChat format["%1: FFE mission ended", _battery];

waitUntil {_battery getVariable "ARTY_SPLASH"};
player sideChat format["%1: FFE splash", _battery];

sleep 10;

_fo setVariable ["FO_MissionComplete", true, true];

deleteMarker _mrk0;
deleteMarker _mrk1;
deleteMarker _mrk2; 

ForwardObserver.sqf

 //Put the following into the FO init box:
//stuff = [FO_NAME,ARTY_MODULE_NAME,WAIT_TIME,FIRE_AT_SIDE,RANGE,TYPE,SPREAD,ADJUSTS,SALVO,SKILL,VEL_COMPENSATOR,PREP_VALUE] execVM 

"fo\forward_observer.sqf";
//eg: stuff = [this,ARTY,1,west,1000,"HE",200,2,8,5,10,1] execVM "ForwardObserver\ForwardObserver.sqf";
//
//FO_NAME			: Name of the Forward Observer 
//ARTY_MODULE_NAME	: Name of the Arty Module synced to your battery
//WAIT_TIME			: How often does the FO search for targets (1)
//FIRE_AT_SIDE		: Whose parade do you want to rain on (EAST,WEST,INS)
//RANGE				: How far out from the FO to look for targets (1000)
//TYPE				: Type of shot "HE","WP","SMOKE","SADARM","LASER"
//SPREAD			: Salvo dispersion radius (100)
//ADJUSTS			: Number of ranging rounds (2)
//SALVO				: Number of shots in the salvo
//SKILL				: How good is the arty battery 0-10 bad-good (5)
//VEL_COMPENSATOR	: Takes into account moving targets (10)
//PREP_VALUE		: Is the unit already ranged in 0 no, 1 yes (0)
//
//Some general values are given in brackets
//
//ENJOY
//
//THANKS TO: Nou's (Forward Observer Script v0.5) and [ZSU]Blake aka Blakeace (AI Artillery Framework v1.00) for the two great scripts that were the main basis for this piece of work.
//
//made with Notepad++
// -------------------------------------------------------------------

sleep 5;	// This needs to be figured out better, probably needs to watch the arty modules and see when they are done with init.
_fo 			= _this select 0;
_battery 		= _this select 1;
_wait 			= _this select 2;  //this is in minutes, min 1 minutes;
_side 			= _this select 3;
_range			= _this select 4;  //search radius;
_type			= _this select 5;  //round type HE,WP,SMOKE,SADARM,LASER;
_spread			= _this select 6;  //spread radius;
_adjustments	= _this select 7;  //number of ranging rounds;
_rounds 		= _this select 8;
_skill			= _this select 9;  //0-10 bad-good skilled;
_adjmult 		= _this select 10; //speed adjuster;
_prep			= _this select 11; //prep value;

_isAssigned = _fo getVariable "FO_Assigned";

_forceMultiplier = 1;

_lastMission = [-10000,-10000,0];

if (_wait < 0.5) then { _wait = 0.5; };

if (isNil "_isAssigned") then {
_fo setVariable ["FO_Assigned", 1, true];
while {(alive _fo and [_battery] call BIS_ARTY_F_StillViable)} do {
	_mostCount = 0;
	_target = null;
	_units = nearestObjects [_fo, ["LandVehicle", "CAManBase"], _range];
	player sideChat "Looking for targets...";
	{
		if (side _x == _side and alive _x) then {
			//player sideChat "Found...";
			_liveCount = 0;
			_objects = [];

			_near = nearestObjects [_x, ["LandVehicle", "CAManBase"], 100];
			_liveCount = 0;
			_objects = [];
			{
				if(side _x == _side and alive _x and (damage _x) < 0.5) then {
					_liveCount = _liveCount + 1;
					_objects = _objects + [_x];
				};
			} forEach _near;



			if(_liveCount > _mostCount and (_x distance _lastMission) > 120) then {
				_forceMultiplier = 1;
				player sideChat format["Distance from last mission: %1", (_x distance _lastMission)];
				_tanks = "Tank" countType _objects;
				_forceMultiplier = _forceMultiplier + (_tanks * 0.33);
				_apcs = "Wheeled_APC" countType _objects;
				_forceMultiplier = _forceMultiplier + (_apcs * 0.25);
				_mostCount = _liveCount;
				_lastMission = getPos _x;
				if((leader _x) != _x and ((leader _x) distance _x) <= 100) then {
					_target = leader _x;
				} else {
					_target = _x;
				};
			};
			//player sideChat format["Objects near %1: %2", _x, (count _near)];

			sleep 0.025;
		}
	} forEach _units;
	if( isNil "_target") then {
		_lastMission = [-10000,-10000,0];
		player sideChat "No targets found near the FO";
	} else {

		//player sideChat format["Target is: %1 counting for %2 units total.", _target, _mostCount];

		player sideChat format["Executing fire mission on %1", _target];

		_fo setVariable ["FO_MissionComplete", false, true];

		stuff = [_battery,_target,_mostCount,_fo,_forceMultiplier,_type,_spread,_adjustments,_rounds,_skill,_adjmult,_prep] execVM "ForwardObserver\FireMission.sqf";

		player sideChat "Waiting for FO to finish mission";

		waitUntil { _fo getVariable "FO_MissionComplete"; };

		player sideChat "FO has finished mission";
	};
	player sideChat format["Waiting %1 minutes till next search.", _wait];
	sleep (round (_wait*60));
}
} else {
player sideChat "FO is already searching for targets";
};
player sideChat format["FO %1 is no longer operating!", _fo]; 

Share this post


Link to post
Share on other sites

You can just remove those lines, it will have no effect. Here is the same script without the chat

// ------------------------------------------------------------------- 
//Whollysteve combined AI arty script 
// 
//FORWARD-OBSERVER 
// 
//from 
//Nou's Forward Observer Script v0.5 and 
//[ZSU]Blake aka Blakeace's AI Artillery Framework v1.00 
//15/05/2010 
// 
//USAGE 
//One Forward observer; artillery battery synched to an arty module. thats it. 
//Put the folder with bith scripts into the mission folder (or mydocs>arma2>scripts for use in the editor) 
//The map is unpacked to allow for use in the editor, just drop it into mydocs>arma2>missions. 
// 
//Put the following into the FO init box: 
//stuff = [FO_NAME,ARTY_MODULE_NAME,WAIT_TIME,FIRE_AT_SIDE,RANGE,TYPE,SPREAD,ADJUSTS,SALVO,SKILL,VEL_COMPENSATOR,PREP_VALUE] execVM  

"fo\forward_observer.sqf"; 
//eg: stuff = [this,ARTY,1,west,1000,"HE",200,2,8,5,10,0] execVM "ForwardObserver\ForwardObserver.sqf"; 
// 
//FO_NAME            : Name of the Forward Observer  
//ARTY_MODULE_NAME    : Name of the Arty Module synced to your battery 
//WAIT_TIME            : How often does the FO search for targets (1) 
//FIRE_AT_SIDE        : Whose parade do you want to rain on (EAST,WEST,INS) 
//RANGE                : How far out from the FO to look for targets (1000) 
//TYPE                : Type of shot "HE","WP","SMOKE","SADARM","LASER" 
//SPREAD            : Salvo dispersion radius (100) 
//ADJUSTS            : Number of ranging rounds (2) 
//SALVO                : Number of shots in the salvo 
//SKILL                : How good is the arty battery 0-10 bad-good (5) 
//VEL_COMPENSATOR    : Takes into account moving targets (10) 
//PREP_VALUE        : Is the unit already ranged in 0 no, 1 yes (0) 
// 
//Some general values are given in brackets 
// 
//ENJOY 
// 
//THANKS TO: Nou's (Forward Observer Script v0.5) and [ZSU]Blake aka Blakeace (AI Artillery Framework v1.00) for the two great scripts that were the main basis for this piece of work. 
// 
//made with Notepad++ 
// ------------------------------------------------------------------- 

_battery         = _this select 0; 
_target            = _this select 1; 
_targetCount    = _this select 2; 
_fo                = _this select 3; 
_fm                = _this select 4; 
_type            = _this select 5; 
_spread            = _this select 6;    //ground spread radius; 
_adjustments     = _this select 7; 
_pieces         = count (units (_battery getVariable "ARTY_LEAD")); 
_rounds         = _this select 8; 
_skill            = _this select 9;    //0-10 bad-good skilled; 
_adjmult         = _this select 10;     //speed adjuster (10 on foot, 20 for vehicles); 
_prep            = _this select 11;    // are they ranged in 0/1 ; 


if (_prep == 1) then {   
   if(_rounds > 2 and ((ceil (random 15) > 3))) then { 
       //fire initial salvo; 
       //static aimpoint; 

       _targetPos = getPosASL _target; 

       _mrk0 = createMarker ["MortarTarget",_targetPos]; 
       _mrk0 setMarkerColor "ColorBlack"; 
       _mrk0 setMarkerShape "ICON"; 
       _mrk0 setMarkerType "mil_objective"; 

       [_battery, true] call BIS_ARTY_F_SetShellSpawn; // Turn spawn mode on 
       [_battery, ((round (_rounds*12.5)) min 50)] call BIS_ARTY_F_SetDispersion; 
       [_battery, _targetPos, ["IMMEDIATE", "HE", 0, ceil (_rounds/2)]] call BIS_ARTY_F_ExecuteTemplateMission; 

       waitUntil {_battery getVariable "ARTY_ONMISSION"}; 

       waitUntil {!(_battery getVariable "ARTY_ONMISSION")}; 

       waitUntil {_battery getVariable "ARTY_SPLASH"}; 

       sleep ((10-_skill)*2); 
   }; 

}; 

if(_rounds > 2 and ((ceil (random 15) > 2))) then { 
   // Do adjust fire mission! 
   // Number of adjustments to do. 

   while {_adjustments > 0} do { 
       _adjustX = ((round (random 50)) + (_adjustments*75)); 
       _adjustY = ((round (random 50)) + (_adjustments*75)); 
       if( round (random 1) == 0) then { 
           _adjustY = _adjustY*-1; 
       }; 
       if( round (random 1) == 0) then { 
           _adjustX = _adjustX*-1; 
       }; 

       _targetPos = getPosASL _target; 

       _mrk1 = createMarker ["MortarTarget",_targetPos]; 
       _mrk1 setMarkerColor "ColorWhite"; 
       _mrk1 setMarkerShape "ICON"; 
       _mrk1 setMarkerType "mil_objective"; 

       _adjustPoint = [((_targetPos select 0) + _adjustX), ((_targetPos select 1) + _adjustY), _targetPos select 2]; 

       [_battery, _adjustPoint, ["IMMEDIATE", "WP", 0, 1]] call BIS_ARTY_F_ExecuteTemplateMission; 

       waitUntil {_battery getVariable "ARTY_ONMISSION"}; 

       waitUntil {!(_battery getVariable "ARTY_ONMISSION")}; 

       waitUntil {_battery getVariable "ARTY_SPLASH"}; 

       sleep ((10-_skill)*3); 

       _adjustments = _adjustments - 1; 
   }; 

}; 

sleep ((10-_skill)*3); 


//ffe start; 
//aimpoint adjusted for target speed and direction; 

   _adjmax = 300; 
   _adjmin = -300; 
   _error = (10-_skill)*10; 

   _Yadj = speed (_target) * cos (direction (_target)) * _adjmult; 
   if (_Yadj > _adjmax) then {_Yadj = _adjmax}; 
   if (_Yadj < _adjmin) then {_Yadj = _adjmin}; 
   _Xadj = speed (_target) * sin (direction (_target)) * _adjmult; 
   if (_Xadj > _adjmax) then {_Xadj = _adjmax}; 
   if (_Xadj < _adjmin) then {_Xadj = _adjmin}; 

   _impact = [(getpos (_target) select 0) + _Xadj+(random _error - _error/2), (getpos (_target) select 1) + _Yadj+(random _error - _error/2), getpos (_target) select 2]; 

   _mrk2 = createMarker ["MortarTarget",_targetPos]; 
   _mrk2 setMarkerColor "ColorBlack"; 
   _mrk2 setMarkerShape "ICON"; 
   _mrk2 setMarkerType "mil_objective"; 

   [_battery, true] call BIS_ARTY_F_SetShellSpawn; // Turn spawn mode on; 
   [_battery, _spread] call BIS_ARTY_F_SetDispersion; 
   [_battery, _impact, ["IMMEDIATE",_type, 0,_rounds]] call BIS_ARTY_F_ExecuteTemplateMission; 

//ffe end; 

waitUntil {_battery getVariable "ARTY_ONMISSION"}; 

waitUntil {!(_battery getVariable "ARTY_ONMISSION")}; 

waitUntil {_battery getVariable "ARTY_SPLASH"}; 

sleep 10; 

_fo setVariable ["FO_MissionComplete", true, true]; 

deleteMarker _mrk0; 
deleteMarker _mrk1; 
deleteMarker _mrk2;  

//Put the following into the FO init box: 
//stuff = [FO_NAME,ARTY_MODULE_NAME,WAIT_TIME,FIRE_AT_SIDE,RANGE,TYPE,SPREAD,ADJUSTS,SALVO,SKILL,VEL_COMPENSATOR,PREP_VALUE] execVM  

"fo\forward_observer.sqf"; 
//eg: stuff = [this,ARTY,1,west,1000,"HE",200,2,8,5,10,1] execVM "ForwardObserver\ForwardObserver.sqf"; 
// 
//FO_NAME            : Name of the Forward Observer  
//ARTY_MODULE_NAME    : Name of the Arty Module synced to your battery 
//WAIT_TIME            : How often does the FO search for targets (1) 
//FIRE_AT_SIDE        : Whose parade do you want to rain on (EAST,WEST,INS) 
//RANGE                : How far out from the FO to look for targets (1000) 
//TYPE                : Type of shot "HE","WP","SMOKE","SADARM","LASER" 
//SPREAD            : Salvo dispersion radius (100) 
//ADJUSTS            : Number of ranging rounds (2) 
//SALVO                : Number of shots in the salvo 
//SKILL                : How good is the arty battery 0-10 bad-good (5) 
//VEL_COMPENSATOR    : Takes into account moving targets (10) 
//PREP_VALUE        : Is the unit already ranged in 0 no, 1 yes (0) 
// 
//Some general values are given in brackets 
// 
//ENJOY 
// 
//THANKS TO: Nou's (Forward Observer Script v0.5) and [ZSU]Blake aka Blakeace (AI Artillery Framework v1.00) for the two great scripts that were the main basis for this piece of work. 
// 
//made with Notepad++ 
// ------------------------------------------------------------------- 

sleep 5;    // This needs to be figured out better, probably needs to watch the arty modules and see when they are done with init. 
_fo             = _this select 0; 
_battery         = _this select 1; 
_wait             = _this select 2;  //this is in minutes, min 1 minutes; 
_side             = _this select 3; 
_range            = _this select 4;  //search radius; 
_type            = _this select 5;  //round type HE,WP,SMOKE,SADARM,LASER; 
_spread            = _this select 6;  //spread radius; 
_adjustments    = _this select 7;  //number of ranging rounds; 
_rounds         = _this select 8; 
_skill            = _this select 9;  //0-10 bad-good skilled; 
_adjmult         = _this select 10; //speed adjuster; 
_prep            = _this select 11; //prep value; 

_isAssigned = _fo getVariable "FO_Assigned"; 

_forceMultiplier = 1; 

_lastMission = [-10000,-10000,0]; 

if (_wait < 0.5) then { _wait = 0.5; }; 

if (isNil "_isAssigned") then { 
   _fo setVariable ["FO_Assigned", 1, true]; 
   while {(alive _fo and [_battery] call BIS_ARTY_F_StillViable)} do { 
       _mostCount = 0; 
       _target = null; 
       _units = nearestObjects [_fo, ["LandVehicle", "CAManBase"], _range]; 
       { 
           if (side _x == _side and alive _x) then { 
               _liveCount = 0; 
               _objects = []; 

               _near = nearestObjects [_x, ["LandVehicle", "CAManBase"], 100]; 
               _liveCount = 0; 
               _objects = []; 
               { 
                   if(side _x == _side and alive _x and (damage _x) < 0.5) then { 
                       _liveCount = _liveCount + 1; 
                       _objects = _objects + [_x]; 
                   }; 
               } forEach _near; 



               if(_liveCount > _mostCount and (_x distance _lastMission) > 120) then { 
                   _forceMultiplier = 1; 
                   _tanks = "Tank" countType _objects; 
                   _forceMultiplier = _forceMultiplier + (_tanks * 0.33); 
                   _apcs = "Wheeled_APC" countType _objects; 
                   _forceMultiplier = _forceMultiplier + (_apcs * 0.25); 
                   _mostCount = _liveCount; 
                   _lastMission = getPos _x; 
                   if((leader _x) != _x and ((leader _x) distance _x) <= 100) then { 
                       _target = leader _x; 
                   } else { 
                       _target = _x; 
                   }; 
               }; 

               sleep 0.025; 
           } 
       } forEach _units; 
       if( isNil "_target") then { 
           _lastMission = [-10000,-10000,0]; 
       } else {           
           _fo setVariable ["FO_MissionComplete", false, true]; 

           stuff = [_battery,_target,_mostCount,_fo,_forceMultiplier,_type,_spread,_adjustments,_rounds,_skill,_adjmult,_prep] execVM "ForwardObserver\FireMission.sqf"; 

           waitUntil { _fo getVariable "FO_MissionComplete"; }; 

       }; 
       sleep (round (_wait*60)); 
   } 
} else { 
}; 

Share this post


Link to post
Share on other sites

Sorry for the late reply, yeah I did try removing it also before and you are right it did work. Thanks for the help and can someone close this thread?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×