Jump to content

Search the Community

Showing results for tags 'array'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


    • Vigor
    • DAYZ
    • ARMA 3
    • ARMA 2
    • YLANDS
    • ARGO
  • Die Hard OFP Lovers' Club's Topics
  • ArmA Toolmakers's Releases
  • ArmA Toolmakers's General
  • Japan in Arma's Topics
  • Arma 3 Photography Club's Discussions
  • The Order Of the Wolfs- Unit's Topics
  • 4th Infantry Brigade's Recruitment
  • 11th Marine Expeditionary Unit OFFICIAL | 11th MEU(SOC)'s 11th MEU(SOC) Recruitment Status - OPEN
  • Legion latina semper fi's New Server Legion latina next wick
  • Legion latina semper fi's https://www.facebook.com/groups/legionlatinasemperfidelis/
  • Legion latina semper fi's Server VPN LEGION LATINA SEMPER FI
  • Team Nederland's Welkom bij ons club
  • Team Nederland's Facebook
  • [H.S.O.] Hellenic Special Operations's Infos
  • BI Forum Ravage Club's Forum Topics
  • Exilemod (Unofficial)'s General Discussion
  • Exilemod (Unofficial)'s Scripts
  • Exilemod (Unofficial)'s Addons
  • Exilemod (Unofficial)'s Problems & Bugs
  • Exilemod (Unofficial)'s Exilemod Tweaks
  • Exilemod (Unofficial)'s Promotion
  • Exilemod (Unofficial)'s Maps - Mission Files
  • TKO's Weferlingen
  • TKO's Virolahti
  • TKO's Rules
  • TKO's Changelog
  • TKO's Help
  • TKO's What we Need
  • TKO's Saint Kapaulio
  • TKO's Cam Lao Nam
  • MSOF A3 Wasteland's Server Game Play Features
  • MSOF A3 Wasteland's Problems & Bugs
  • MSOF A3 Wasteland's Maps in Rotation
  • SOS GAMING's Server
  • SOS GAMING's News on Server
  • SOS GAMING's Regeln / Rules
  • SOS GAMING's Ghost-Town-Team
  • SOS GAMING's Steuerung / Keys
  • SOS GAMING's Div. Infos
  • SOS GAMING's Small Talk
  • SOS GAMING's TS┬│ Viewer
  • NAMC's Topics
  • NTC's New Members
  • NTC's Enlisted Members
  • The STATE's Topics
  • HavenEmpire Gaming community's HavenEmpire Gaming community
  • Polska_Rodzina's Polska_Rodzina-ARGO
  • Carrier command tips and tricks's Tips and tricks
  • Carrier command tips and tricks's Talk about carrier command
  • ItzChaos's Community's Socials
  • Photography club of Arma 3's Epic photos
  • Photography club of Arma 3's Team pics
  • Photography club of Arma 3's Vehicle pics
  • Photography club of Arma 3's Other
  • Spartan Gamers DayZ's Baneados del Servidor
  • Warriors Waging War's Vigor

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL


Jabber (xmpp)








Steam url id







PlayStation PSN














Found 34 results

  1. I have 6 potential FIA Weapon Caches scattered around the map. (3 normal weapon caches, 3 special weapon caches). At the start of the mission, I would like all except for 1 from each weapon cache type to be deleted from the map, so I am only left with 2 weapon caches on the map. (Each weapon cache has a local map icon that shows the BLUFOR player where the weapon cache is located, which needs to be deleted as well). My current script, located in my "initServer.sqf". This doesn't seem to do anything (no error message or anything) on mission start and I am not sure why. Please help!
  2. I am trying to use array in blacklist of BIS_fnc_randomPos. In array all Towns of map. My task: to make spawn everywhere, except for the area of cities. towns = (nearestLocations [[worldSize / 2, worldsize / 2, 0], ["NameCity", "NameVillage", "NameCityCapital"], worldSize]); townsPosSize = []; { townsPosSize pushBack [(locationPosition _x select 0), (locationPosition _x select 1), ((size _x) select 0)*3]; _name = format["mrk_%1", text _x]; _foo = createmarker [_name, [locationPosition _x select 0, locationPosition _x select 1]]; _foo setMarkerSize [((size _x) select 0)*3, ((size _x) select 0)*3]; _foo setMarkerShape "ELLIPSE"; _foo setMarkerBrush "SOLID"; _foo setMarkerColor "ColorRed"; } forEach towns; //test for "_i" from 1 To 200 do { _newPosTest = [nil, [townsPosSize,"water", [getPos player, 600]]] call BIS_fnc_randomPos; _nameT = format["mrk_%1", _i]; _fooT = createmarker [_nameT, _newPosTest]; _fooT setMarkerType "hd_dot"; _fooT setMarkerColor "ColorGreen"; }; But the function BIS_fnc_randomPos ignores this (area of cities). I also tried _newPosTest = [nil, [towns,"water"]] call BIS_fnc_randomPos; But the result is the same. "water" - works, towns - not works.
  3. I'm using a stringtable.xml to store text dialogue for my mission. Is there any way to create an array of all keys within a container? For instance, if I have something like this: <Package name="Dialogue"> <Container name="Greeting"> <Key ID="STR_Greeting1"> <Original>Hello.</Original> </Key> <Key ID="STR_Greeting2"> <Original>Hi.</Original> </Key> </Container> I want to make a function that will create an array of all the keys inside the "Greeting" container in an sqf file. Something like this: _greetigns = ["STR_Greeting1", "STR_Greeting2"]; so that I can localize them and use them in order. Is there any way to do this?
  4. Hello everyone. Let's say I want to place array A inside array B: B = [....A....] The dots mean there may be other variables with fixed memory size after or before A (typically some strings or integers in my code). Array A however, may have a variable size (due to using pushBack/append/deleteAt/set for this array), from 0 all the way up to hundreds of elements. In terms of memory allocation speed, is there any difference where you put A inside B? Also, does reading speed (B select _index) vary according to where A is? (I think it doesn't, but asking to make sure) I'm asking this because arrays B and A (and their contents) are read and sometimes modified per frame.
  5. Hello, i want to have 3 markers on the map where i can get an action 40m from it. i can get it to work if i change (getMarkerPos _markerList) to getMarkerPos 'APF_1' but then only one marker works. it feels really dumb to make 3 actions for the same thing. Do anyone know how to get it to take the names in an array instead? sorry for bad english. _markerList = ["APF_1","APF_2","APF_3"]; player addaction ["<t color='#ff0066'>Plant</t>","actions\plant.sqf", "", 0, true, true, "", "alive _target AND _target distance (getMarkerPos _markerList) <= 40"];
  6. Hello ! I have an array of objects in the format : [obj_10,obj_1,obj_12,obj_13,obj_14,obj_11,obj_2,obj_3,obj_4,obj_5,obj_6,obj_7,obj_8,obj_9] I would like to sort this array so it becomes : [obj_1,obj_2,obj_3,obj_4,obj_5,obj_6,obj_7,obj_8,obj_9,obj_10,obj_11,obj_12,obj_13,obj_14] Also please note that the array contains objects and not strings ! I tried the sort function on the array, but no luck ­čśĽ I believe the problem arises from alphabetical sorting as obj_11 comes before obj_2. Any ideas on how to get around the issue ? Thanks for the help !
  7. Need help. I want to get units in a group into nearby vehicles. But my code returns an error, as described in the comment, next to it. In my research I found only how to convert string into object. If they point me in a way to research and learn about, it's a big help. Thank you. private _Grupo = (group p1); private _VEIC = nearestObjects [_grupo, ["Car"], 30]; {_grupo addvehicle _x} foreach _VEIC; sleep 1; { _x assignAsCargo _veic} foreach units _grupo; //error, array type waiting for object (_veic is an array of nearestObjects) {[_x] orderGetIn true; [_x] allowGetIn true}foreach units _Grupo;
  8. I want to make a ring course to fly through. The ring course will be defined by several markers (ringMARK1_1) and the ring itself has a trigger attached. Each time a ring is cleared I want it to snap to the next position. There is only one ring which moves from marker to marker. ringCHALLENGE.sqf ringChallenge = [] spawn { waitUntil { ring1==1 }; hint "Ring Challenge Activated"; currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3] select 0; sleep 1; ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination; ringGOAL setpos (getpos currentRING); }; What's the best way to update the ring position in a sequence? Can "select 0;" in the array be called something like "select next"? Is it better to use IF/WAIT for the next ring? Am I starting this all wrong?
  9. Hello, I want to sort an array of array with strings and numbers but only on the number. With the highest number at the start of the array. _array = [["Player 1",1], ["Player 2",3], ["Player 3", 2]]; // The result I want is : _array = [["Player 2",3], ["Player 3",2], ["Player 1", 1]];
  10. Hello there! I've been working the entire day and just came up with a new idea about an hour ago. I'm having problems reight now in gettin the "correct" item. My Goal is the following: I have stetup an array, which contains weapons, Alternative version of weapons and ultimatively the chance by using this: ["SomeWeapon",["WeaponSKin1","Weaponskin2"],70] Now, the problem is the following, im creating a random number the "general" chance. If the Chance of the weapon is lower, it gets added to an array. Creating a big array with all the weapons with a >70% spawnrate. Now I want to select only the weapon with the highest chance and cant seem to get it. I feel like im pretty close but can't figure it out right now (should take a break sometime soon ;) ). Anyway, thats what I have gotten so far: _chance = 100; _array = []; _selectedWeapon = ""; _pistol = [["hgun_ACPC2_snds_F",["hgun_ACPC2_snds_F"],70],["hgun_Pistol_heavy_01_F",[""],5],["arifle_MXC_Black_F",["arifle_MX_khk_F","arifle_MX_F"],35]]; _weapon = _pistol call BIS_fnc_SelectRandom select 0; { if (_chance <= _x select 2) then {_chance = _x select 2; _array = _array + [[_x select 0,_x select 1]]; _selectedWeapon = _array select ((count _array) - 1);}; sleep 1; hint format ["%1\n%2",_array, _selectedWeapon]; } foreach _pistol; Getting the alternate versions isnt big of the porblem, im currently just stuck with selecting the weapon with the highest chance blew the "general chance". Thanks in Advance, CP~
  11. So I want to make things easier when randomizing things. Right now I have an array of vehicles, air vehicles, and units class names that I manually pulled from the in game editor. Im alright with manually selecting individual units but now I want to randomize the units vest, weapons, and headgear but I do not want to go through the in games edit loadout screen and export each vest and items then have to search the text to find the class name of the vest to add it to an array. Is there a way for the game to provide a list of ALL vests and ALL weapons ect. in the game including addons? If this is possible is there a way to do that to ALL vehicles and units on a given side like EAST or WEST? Is there a possible way to do this without creating an array like calling a BIS_FN?
  12. Hi. I have a question on arrays. //I get an output as array eg : _fruitarray = [["apple",1],["banana",4],["pear",32]] //I want to convert it to: ["apple","banana","pear"] //What would be the correct syntaxis for that ? //I tried: {_x select 0} foreach _fruitarray //but it only shows one of the elements, and I need an array to be returned. Thanx
  13. So, I'm officially stuck. I've been looking everywhere, but I can't seem to find out how to create an array based on units that are NOT in a triggerzone. I discovered that it is fairly simple to collect an (_x array) of units inside of a trigger, however once I use this command: _List = list trigger; It gives me an empty array of units since nobody is in the trigger, even though the trigger is set to "ANY", "NOT PRESENT". Any ideas?
  14. Hello, I need help in creating an array of all zombies (Ryan's Zombies and demons mod) that exist on one side. For the moment i have this : zombies = "getNumber (_x >> 'side') == 0" configClasses (configFile >> "CfgVehicles"); But I miss one condition (maybe a getText) to have all the zombies' class. Like that : getText (_x >> '????') == ???? Can anyone help me?
  15. Obviously based on my question my Arma scripting experience is limited. I have other coding experience but the Arma nuances make it difficult for me to find out where I am going wrong. I have done a bunch of research and I have found examples of what I want but none are working. If anyone has suggestions it would be very helpful. What I would like to do is step through the players cfgpatches and check to see if each element of that array is in another array or not. If not display text and endmission. I know this question has been asked but in each thread the examples do not work as expected. Below are the three methods I have tried to get what I want done to work. First attempt mods = ["Element1","Element2","Element3"]; _classes = []; _cfg = (ConfigFile >> "CfgPatches"); _itemCount = (count _cfg) - 1; for "_i" from 0 to _itemCount do { if (isClass (_cfg select _i)) then { _classes = _classes + [configName (_cfg select _i)]; }; }; if (!( str _classes in mods)) then { player groupChat "You are using a mod that is not allowed, please check list of approved mods. you are being returned to the lobby in 15 seconds"; sleep 15; "end1" call BIS_fnc_endMission; }; Second Attempt _mods = ["Element1","Element2","Element3"]; _patches = (ConfigFile >> "CfgPatches"); _c = count _patches; _loop = true; _n = 0; _arr []; while{_loop}do{ _cur = _patches select _n; if not(_cur in _mods) { player groupChat "You are using a mod that is not allowed, please check list of approved mods. you are being returned to the lobby in 15 seconds"; sleep 15; "end1" call BIS_fnc_endMission; }; _n = _n + 1; if(_n > _c)then{_loop = false;}; }; _arr; Third Attempt _mods = ["Element1","Element2","Element3"]; _canPass = true; { if (!(["a3_", _x] call BIS_fnc_inString)) then { if (isClass _x) then { if ((!configName _x) in _mods) exitWith {_canPass = false;}; }; }; } forEach activatedAddons; if (!_canPass) exitWith { player groupChat "You are using a mod that is not allowed, please check list of approved mods. you are being returned to the lobby in 15 seconds"; sleep 15; "end1" call BIS_fnc_endMission; }; Any suggestions on how I might get one of these are similar code to work would be a big help, Thanks in advanced.
  16. Hello, I'm trying to do a script where just a certain class of vehicles can acces. I have an Array with the classnames: then, I have another array in which the vehicles on the map that correspond to that type of classname are added to this other array. Well my problem is when the script adds the desired vehicles to the new array, they don't get in the array as the classname, but as the .p3d file and some random numbers.
  17. I searched for a long while for this before posting. (fairly new to this so keep the snark to a min) I am trying to compare a string against an array: _Wep = "Weapon1; _ArrayWeps = ["Weapon1", "Weapon2", "Weapon3"]; _IsInArray = _Wep in _ArrayWeps; // is _Wep inside the array should give me a boolean for _isInArray of true/false? or do I have to do: if (_Wep in _ArrayWeps) then { // true}; OR if there is a better way to please do share. I do appreciate the input.
  18. Is any way to delete all links to array (for it would be removed from memory by cleaner) having only 1 link to it, ex: a=[0,1,2,3,4,5,6,7,8,9]; a1=a; //forgeting a; |delete| a1; isnil'a'==true
  19. I have a short question: Is there a new simpler way to use arrays with multiple values in preprocessor commands? The old way was: #define COMMA , #define EXAMPLE(farg,sarg) EXAMPLE2(farg, sarg) EXAMPLE("foo", ["bar" COMMA "othervalue"]); I would like to find a way to use the normal syntax with just EXAMPLE("foo", ["bar", "othervalue"]);. Is it possible with some tricks maby?
  20. Hello everyone, here is a really simple function that I put together: /* Author: Terra Description: Converts the elements of an array into a string Parameter(s): 0: ARRAY - array of elements of any type 1 (Optional): STRING - seperator between elements (default: ", ") Returns: STRING */ params [ ["_array", [],[[123]]], ["_seperator", ", ", ["123"]] ]; _str = format ["%1", _array select 0]; { private _addString = _x; if (typeName _addString != typeName "123") then {_addString = str _addString}; _str = _str +_seperator +_addString; } forEach (_array -[_array select 0]); _str Just some code that I wrote down while working on another project. Feel free to modify and comment.
  21. Edit: Nvm close this please. i just fixed the dedicated server issue (forgot to do an isDedicated check) so now putting the script in the vehicle init isn't required. Hey guys, i've been away from the ArmA scene for a while but it's all coming back pretty quick. I feel like ArmA is lying to me; in the init of a vehicle i have the following: nul = [this] execVM "scripts\mhq\respawnmhq.sqf"; and the first two lines of respawnmhq.sqf are: _mhqveh = _this select 0; _vehiclepos = getPos _mhqveh; So then when i launch the mission to test in the editor it has the gall to say respawnmhq.sqf has an: "Error getpos: Type Array, expected Object,Location". Correct me if I'm wrong, but there is no damn array in there right? [this] is an array with a single item from what i know but it's in the vehicle init not the script, _mhqveh is defined as the 'this' from within the array so is that causing it to think _mhqveh is an array? If so is there another way to execVM that script from the vehicle init? I'm doing this to avoid putting this script in the Init.sqf because really it doesn't need to go in there and if i do that it activates twice on dedicated servers but that's another issue entirely (which I'm pretending doesn't happen).
  22. Hi, i need to know if i can detect what player is executing the script, and then depending of the name of the player send it to the box. thanks for support!!! _fnc_group = [["player_1", box_1], ["player_2", box_2]]; _fnc_select = (_fnc_group select 0) select 1; if (cash< 100) then { hint "no money to buy this!" } else { cash = cash - 100; _fnc_select addWeaponCargoGlobal ["rhs_weap_m4a1_blockII_bk", 1]; _fnc_select addMagazineCargoGlobal ["rhs_mag_30Rnd_556x45_Mk318_Stanag", 1]; hintSilent parseText format["<t color='#00FF3C'>thanks for for you buy</t>"]; };
  23. I am trying to get a function to spawn from the init box of a logic unit that is created in front of about a dozen select enemy soldiers in a base. The idea is that the logic unit has a virtual box around it that set the players captive status from true to false to simulate an AI vision cone. The issue I am having is that the way the script is written is such that once it is called it spawns this logic unit for all units assigned to a given side. This isn't ideal because the stealth segment is only one objective in the whole mission and calling the stealth script has the effect of permanently handicapping all OPFOR in the entire operation. Since I haven't been able to figure out how to get the code to delete the logic units properly and return the AI to full "intelligence" I was hoping to just assign the function to certain units. I just can't seem to figure out how to get the array to work properly. The original code is: _enemyArray = []; _i = 0; {if (side _x == east) then {_enemyArray set [_i, _x]; _i = _i + 1};} forEach allUnits; _center = createCenter sideLogic; _group = createGroup _center; player setCaptive true; for "_j" from 0 to (count _enemyArray) - 1 step 1 do { "Logic" createUnit [position (_enemyArray select _j), _group, "this AttachTo [(_enemyArray select _j), [0,25,0.5]]; _anythi = [_enemyArray select _j, this] spawn _fex_fnc_patrol;"]; sleep 0.1; }; As you can see all the units on side == east are assigned an index in the array and then all of those index's have a logic unit spawned at a specific offset which then calls the function from it's init box. I figured that simply removing lines 2 and 3, which index all units from the opfor side in the array, then change the code to this: _enemyArray = [patrol1, patrol2, patrol3, patrol4, patrol5, patrol6, sentry1, sentry2, sentry3]; _center = createCenter sideLogic; _group = createGroup _center; for "_j" from 0 to 9 do {player setCaptive true; "Logic" createUnit [position (_enemyArray select _j), _group, "this AttachTo [(_enemyArray select _j), [0,14,0.5]]; _anythi = [_enemyArray select _j, this] spawn _fex_fnc_patrol;"]; sleep 0.1; }; would work. Unfortunately what seems to happen is that either the logic unit does not spawn at all which results in the player being permanently set to captive of the code throws an error that the "Logic" createUnit command requires 3 elements and I provided 0. Im super confused, can anyone help??
  24. Hello everyone. I don't know how to desribe my problem in the title, my English isn't good enough on that.. I want let the script to randomly pick a marker. My problem is that the markers are being created dependant on the amount of towns on the map. It detects all towns and creates an invisible marker at each, with name "Mark_1", "Mark_2", etc... I need to know how can I let my script at first count all created markers (as each map has a different amount of villages) and then randomly pick one of these markers. The markers are being created as follows (a part of the script): towns.sqf /* Location finder for towns, villages and cities Places triggers and/or markers at these locations */ // Get each locations of villages or cities and create trigger/marker // Original script for finding locations by BrotherhoodOfHam // Final script by Godis if (!isServer) exitWith {}; //#define MARK #define OFFSET 0 _locations = (nearestLocations [[0,0,0], ["NameCity", "NameVillage", "NameCityCapital"], 40000]); { _xy = size _x; _trig = createTrigger ["EmptyDetector", position _x]; _trig setTriggerArea [ (_xy select 0) + OFFSET, (_xy select 1) + OFFSET, direction _x, false ]; _trig setTriggerActivation [ "WEST", "PRESENT", true ]; _trig setTriggerStatements [ "this", "hint 'Entered Village: Watch out in this area';", "hint 'Leaving Village...';" ]; //#ifdef MARK _mkr = createMarker [format ["Mark_%1", _forEachIndex], position _x]; _mkr setMarkerShape "ELLIPSE"; _mkr setMarkerAlpha 0.0; _mkr setMarkerSize [ (_xy select 0) + OFFSET, (_xy select 1) + OFFSET ]; //#endif } forEach _locations; // Now place units I thought I could just add a counter to towns.sqf, so I would get the total amount of all created markers stored in a variable, like: all_markers = 0; // Content of towns.sqf here (create markers) all_markers = all_markers + 1; // count each marker and store number in 'all_markers' But this would need another check for this variable's value, and also another code to select one of them according to the amount of created markers. I think it's kind of inconvenient. There must be another easier way to archive that, I guess. Is there any code I can use to get that in only a few lines? At the end I just need to: 1. find the amount of markers with name Mark_1, Mark_2, Mark_3, etc, etc 2. Randomly select one of these (i.e. to make it visible by setMarkerAlpha or sth else) Thanks in advance.
  25. With @Larrow's assistance, I was able to hash out the program I wanted to manage my soldiers with addAction menus. I will create a mod thread when I have the vehicle assignment actions added. Full script: myGrps = []; myGrps resize 10; myGrps = myGrps apply { [ grpNull ] }; TAG_fnc_hasBlankHC = { _bool = false; { _x params[ "_HCGrp", "_HCActionID" ]; if ( isNull _HCGrp ) exitWith {_bool = true;}; }forEach myGrps; _bool; }; TAG_fnc_isLastHCMan = { _bool = false; { _x params[ "_HCGrp", "_HCActionID" ]; if (( Group cursorTarget isEqualTo _HCGrp ) && {{ alive _x }count units _HCGrp isEqualTo 1}) exitWith {_bool = true;}; }forEach myGrps; _bool; }; TAG_fnc_JoinFunction = { _unit = _this select 0; _grp = _this select 1; _str = _this select 2; //accepting variable "unit or from Group" and "target group" if (_str == "unit") then { [_unit] joinSilent _grp; }else { { [ _x ] joinSilent _grp; }forEach units _unit; }; _leader = Leader _grp; { if(!(_leader isEqualTo _x) && {(rankId _x) > (rankId _leader)}) then { _leader = _x; }; }forEach units _grp; _grp selectLeader _leader; }; TAG_fnc_createNewHCGroup = { params[ "_unit", [ "_create", true ], [ "_wholeGroup", false ] ]; _CompanyNames = ["CompanyXray","CompanyNovember","CompanyNovember","CompanyNovember","CompanyNovember","CompanyWhiskey","CompanyWhiskey","CompanyWhiskey","CompanyWhiskey","CompanyXray"]; _PlatoonNames = ["Platoon1","Platoon1","Platoon1","Platoon2","Platoon2","Platoon1","Platoon1","Platoon2","Platoon2","Platoon1"]; _SquadNames = ["Squad1","Squad1","Squad2","Squad1","Squad2","Squad1","Squad2","Squad1","Squad2","Squad2"]; { _x params[ "_HCGrp", "_HCActionID" ]; if ( !isNull _HCGrp && { { alive _x }count units _HCGrp isEqualTo 0 } ) then { deleteGroup _HCGrp; player hcRemoveGroup _HCGrp; if ( _HCActionID isEqualType 0 ) then { player removeAction _HCActionID; }; myGrps set [ _forEachIndex, [ grpNull ] ]; _HCGrp = grpNull; }; if ( _create && { isNull _HCGrp } ) then { private [ "_group" ]; if !( isPlayer _unit ) then { _group = createGroup side player; }else{ _group = group player; }; _group setGroupIdGlobal [ "%GroupNames %GroupCompany %GroupPlatoon-%GroupSquad", "Yankee", _CompanyNames select _forEachIndex, _PlatoonNames select _forEachIndex, _SquadNames select _forEachIndex ]; if !( _unit in units _group ) then { _oldGroup = group _unit; if ( _wholeGroup ) then { units _oldGroup joinSilent _group; }else{ [ _unit ] joinSilent _group; }; if ( count units _oldGroup isEqualTo 0 ) then { deleteGroup _oldGroup; }; }; _actionID = if !( isPlayer _unit ) then { player hcSetGroup [ _group ]; [ _group ] call TAG_fnc_joinHCGroup; [ _group ] call TAG_fnc_groupJoinHCGroup; }else{ objNull; }; myGrps set [ _forEachIndex, [ _group, _actionID ] ]; _create = false; }; }forEach myGrps; }; TAG_fnc_grpJoinMe = { player addAction [ "Group Join Me", { cursorTarget setCaptive false; {[ _x ] joinSilent group player;}forEach units group cursorTarget; [ objNull, false ] call TAG_fnc_createNewHCGroup; }, [], 1, false, true, "", " !(isnull cursortarget) && (_this isEqualTo _target) && { (cursorTarget isKindof 'Man') && { (alive cursortarget) && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { (leader group cursorTarget isEqualTo cursorTarget) && { ({alive _x} count units group cursorTarget > 1) && (({ alive _x } count units group cursorTarget) + ({ alive _x } count units group player) < 12) } } } } }" ]; }; TAG_fnc_joinMe = { player addAction [ "Join Me", { cursorTarget setCaptive false; [ cursorTarget ] joinSilent group player; [ objNull, false ] call TAG_fnc_createNewHCGroup; }, [], 1, false, true, "", " !(isnull cursortarget) && _this isEqualTo _target && { cursorTarget isKindof 'Man' && { alive cursortarget && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { !(group cursortarget isEqualTo group player) && { ({ alive _x } count units group player < 12) } } } } }" ]; }; TAG_fnc_groupJoinHCGroup = { params[ "_HCGrp" ]; _actionID = player addAction [ format [ "Group Join %1", groupID _HCGrp ], { params[ "_target", "_caller", "_ID", "_args" ]; [ Group cursorTarget, _args, "" ] call TAG_fnc_JoinFunction; if (Group cursorTarget in myGrps) then { [ objNull, false ] call TAG_fnc_createNewHCGroup; }; }, _HCGrp, 1, false, true, "", format [" _group = %1 call BIS_fnc_groupFromNetId; !(isnull cursortarget) && (_this isEqualTo _target) && { (cursorTarget isKindof 'Man') && { (alive cursortarget) && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { (call TAG_fnc_hasBlankHC) && { !(Group cursorTarget isEqualTo _group) && { !(Group player isEqualTo _group) && { (leader group cursorTarget isEqualTo cursorTarget) && { ({ alive _x } count units (group cursorTarget) > 1) && { ({ alive _x } count units (_group) > 0) && (({ alive _x } count units (_group)) + ({ alive _x } count units cursorTarget) < 12) } } } } } } } } }", str ( _HCGrp call BIS_fnc_netId ) ] ]; _actionID; }; TAG_fnc_joinHCGroup = { params[ "_HCGrp" ]; _actionID = player addAction [ format [ "Join %1", groupID _HCGrp ], { params[ "_target", "_caller", "_ID", "_args" ]; [ cursorTarget, _args, "unit" ] call TAG_fnc_JoinFunction; [ objNull, false ] call TAG_fnc_createNewHCGroup; }, _HCGrp, 1, false, true, "", format [ " _group = %1 call BIS_fnc_groupFromNetId; !(isnull cursortarget) && _this isEqualTo _target && { cursorTarget isKindof 'Man' && { alive cursortarget && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { !(group cursortarget isEqualTo _group) && { ({ alive _x } count units (_group) > 0) && ({ alive _x } count units (_group) < 12) } } } } }", str ( _HCGrp call BIS_fnc_netId ) ] ]; _actionID }; TAG_fnc_HCActions = { player addAction [ "Unit to HC Group", { [ cursorTarget, true ] call TAG_fnc_createNewHCGroup; }, [], 1, false, true, "", " !(isnull cursortarget) && _this isEqualTo _target && { cursorTarget isKindof 'Man' && { alive cursortarget && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { (call TAG_fnc_hasBlankHC) } } } }" ]; player addAction [ "Group to HC Group", { [ cursorTarget, true, true ] call TAG_fnc_createNewHCGroup; }, [], 1, false, true, "", " !(isnull cursortarget) && _this isEqualTo _target && { cursorTarget isKindof 'Man' && { alive cursortarget && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { !(hcLeader Group cursorTarget isEqualTo player) && { (call TAG_fnc_hasBlankHC) && { leader group cursorTarget isEqualTo cursorTarget && count units group cursorTarget > 1 } } } } } }" ]; player addAction [ "Dismiss HC Group", { player hcRemoveGroup group cursorTarget; { _x params[ "_group", "_action" ]; if ( _group isEqualTo group cursorTarget ) exitWith { player removeAction _action; player hcRemoveGroup _group; myGrps set [ _forEachIndex, [ grpNull ] ]; }; }forEach myGrps; }, [], 1, false, true, "", " !(isnull cursortarget) && _this isEqualTo _target && { cursorTarget isKindof 'Man' && { alive cursortarget && { ( side cursortarget isEqualTo side player || captive cursorTarget ) && { leader group cursorTarget isEqualTo cursorTarget && { group cursorTarget isEqualTo ( _x select 0 ) }count myGrps > 0 } } } }" ]; }; _null = [ player, true ] call TAG_fnc_createNewHCGroup; _null = [] call TAG_fnc_joinMe; _null = [] call TAG_fnc_grpJoinMe; _null = [] call TAG_fnc_HCActions;