Blitzen88 18 Posted January 13, 2021 Greetings, I am fooling around with a very basic script, called via a radio trigger, which orders a player's AI squad mates to "clear" a targeted building. AI squad mates "clear" the building by moving, one after another, to each building position. Although the AI can clear small buildings relatively well, with the AI being what it is, they sometimes get hung up. Is there anyway to build in an "If condition exitwith" statement which will exit the script if the squad mates are given a return to formation command (ie dofollow player)? I tried something like: if (_Playersquadmates !dofollow player) then {} else {exit} With the idea being that the AI squad mates are not following the player when they are moving to a position. If they were issued a regroup command then they would be following the player and the script would end. However, it didnt work. Does anyone have any ideas? Here is what I got: //Define some variables for the rest of the script _PlayersGroup = group player; _PlayerSquadMates = (units _PlayersGroup - [player]); _PlayerSide = side Player; _OriginalFormation = formation _PlayersGroup; //Save the Cursor target building _Building = Cursorobject; //Get Building positions from the building and count them _BuildingPos = _Building buildingPos -1; _BuildingPosCount = count _BuildingPos; //Try to sort the Building Positions in ascending order (closest to farthest) _BuildingPos sort true; //Dont try to run the loop if all of the squadmates are dead if ((count _PlayerSquadMates) == 0) exitWith {}; //Dont try to run the loop if there are no building positions if ((count _BuildingPos) == 0) exitWith {player groupchat "Unable to clear the building - no builiding positions detected"}; //Acknowledge the command Player groupChat " Roger, Clearing building"; //Put the units into a File formation before they clear the building {_x setformation "FILE"} foreach _PlayerSquadMates; //Start the Loop while {_BuildingPosCount > 0} do { //Select the first Building Position _position = _BuildingPos select 0; //Remove the Building Position from the array _BuildingPos = _BuildingPos - [_position]; //Subtract a Building Position/Number from the Building Count _BuildingPosCount = _BuildingPosCount - 1; //Order the Units to the designated Position {_x doMove _position; sleep 1} foreach _PlayerSquadMates; waituntil { {unitReady _x} foreach _PlayerSquadMates; }; sleep 1; }; Player groupChat "Building cleared, returning to formation"; {_x dofollow leader _PlayersGroup} foreach _PlayerSquadMates; {_x setformation _OriginalFormation} foreach _PlayerSquadMates; Share this post Link to post Share on other sites
Blitzen88 18 Posted January 14, 2021 I think the script could be exited by using the currentCommand feature. Something like: if ( currentCommand _unit == "STOP" ) then { exit } else { *code*} However, I cant figure out how to implement it into the code. This way, the script should end if the units are given a stop command. Share this post Link to post Share on other sites