dakaodo 52 Posted August 1, 2016 Best of luck with the move and settling in! Share this post Link to post Share on other sites
c0nse-0n3r 19 Posted August 6, 2016 Popped in to say my many thanks to Zen for this framework. Been having a blast making missions with this lately, oh the possibilities :D Keep up the great work man and enjoy the new digs! Share this post Link to post Share on other sites
cdn_biggdogg 29 Posted August 23, 2016 Hey Zenophon! I haven't been here in a while, mainly because your framework has been working great for me! But I did run into something you might want to look at. I don't fully understand your code but here's what I found regarding the function Zen_OrderVehicleDrop! Description: Zen_OrderVehicleDropOrders (1) to fly over (2.1) and drop (3). (1) then lands at (2.2) or stops foreverat an undefined location. Stops executing when (1) stops. Works for all aircraft.(3) can be an ammo boxes or any vehicle. (3) will be teleported to the aircraft.Usage : SpawnParams: 1. Object, helicopter AND 2. Array, the positions 1. Array, group, object, string, the point to drop (opt.) 2. Array, group, object, string, the point to land OR 2. Array, group, object, string, the point to drop AND 3. Object or string, the object or the classname of the object to drop (opt.) 4. String, speed of (1), 'limited' 'normal' 'full', (default: 'normal') (opt.) 5. Scalar, the height to fly at, (default: 80) (opt.) 6. Boolean, true to cleanup (1) if it crashes enroute, (default: false)Return: Void So the way I read that is an array of two positions or just a position Array or group or object or string so I put in : _drop = [_plane, _object, _box, "normal", 150, true] spawn Zen_OrderVehicleDrop; but it returned this error: 19:38:08 Error in expression <, ([_x] call Zen_ConvertToPosition)]; } forEach _posArray; _dropPoint = _posArr> 19:38:08 Error position: <forEach _posArray; _dropPoint = _posArr> 19:38:08 Error foreach: Type Object, expected Array 19:38:08 File C:\Users\I7-950\Documents\Arma 3 - Other Profiles\CDN_BiggDogg\mpmissions\ravaged.Tanoa\Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderVehicleDrop.sqf, line 34 So I thought it has to be an array so I changed it to: _drop = [_plane, [_object], _box, "normal", 150, true] spawn Zen_OrderVehicleDrop; Now the drop worked but returned this error: 19:25:02 "-- Zen_CheckArguments Error --" 19:25:02 "Argument 2 is void" 19:25:02 286.317 19:25:02 [vehicle_38,<null>,"normal",150,false,true] 19:25:02 ["Zen_CheckArguments",[vehicle_38,<null>,"normal",150,false,true],286.317] 19:25:02 ["Zen_OrderHelicopterLand",[vehicle_38,<null>,"normal",150,false,true],286.317] So the function still works this way but throws an error so I thought you'd want to look into it. I assume that the second param isn't being checked to see what type it is and then acting accordingly. By the way I'm not using a helicopter but the BIS version of the V22 osprey so I don't need it to land. Just fly away then delete! As always thanks for this awesome framework! Share this post Link to post Share on other sites
Zenophon 110 Posted August 26, 2016 Looking at Zen_OrderVehicleDrop, the second position isn't really optional; the function just uses the second position without checking if it exists (hence the null array passed to Zen_OrderHelicopterLand). Thus, the positions to drop and move away to must be in an array; I will change the argument check to enforce that. The documentation that is correct for the currently released version of the function is: Orders (1) to fly over (2.1) and drop (3). (1) then lands at (2.2). Stops executing when (1) stops. Works for all aircraft. (3) can be an ammo boxes or any vehicle. (3) will be teleported to the aircraft. Usage : Spawn Params: 1. Object, helicopter 2. Array, the positions 1. Array, group, object, string, the point to drop 2. Array, group, object, string, the point to land 3. Object or string, the object or the classname of the object to drop (opt.) 4. String, speed of (1), 'limited' 'normal' 'full', (default: 'normal') (opt.) 5. Scalar, the height to fly at, (default: 80) (opt.) 6. Boolean, true to cleanup (1) if it crashes enroute, (default: false) Return: Void For example, this is from a test script: 0 = [_testHeli2, [player, "mkTestInsertion"], _box, "normal", 80, true] spawn Zen_OrderVehicleDrop; As for making the osprey fly away and be deleted, you must give a position for it to head toward and manually delete it at some point. _endPos = [_object, [2000, 3000], [], 0] call Zen_FindGroundPosition; _drop = [_plane, [_object, _endPos], _box, "normal", 150, true] spawn Zen_OrderVehicleDrop; ZEN_FMW_Code_WaitDistanceLess(_plane, _object, 500) ZEN_FMW_Code_WaitDistanceGreater(_plane, _object, 2000) terminate _drop; ZEN_STD_OBJ_DeleteVehCrew(_plane) On a slightly related note, I am planning to investigate using vehicle-in-vehicle transport with Zen_OrderVehicleDrop to see if it works better than just teleporting the object. Share this post Link to post Share on other sites
cdn_biggdogg 29 Posted August 27, 2016 Looking at Zen_OrderVehicleDrop, the second position isn't really optional; the function just uses the second position without checking if it exists (hence the null array passed to Zen_OrderHelicopterLand). Thus, the positions to drop and move away to must be in an array; I will change the argument check to enforce that. The documentation that is correct for the currently released version of the function is: Orders (1) to fly over (2.1) and drop (3). (1) then lands at (2.2). Stops executing when (1) stops. Works for all aircraft. (3) can be an ammo boxes or any vehicle. (3) will be teleported to the aircraft. Usage : Spawn Params: 1. Object, helicopter 2. Array, the positions 1. Array, group, object, string, the point to drop 2. Array, group, object, string, the point to land 3. Object or string, the object or the classname of the object to drop (opt.) 4. String, speed of (1), 'limited' 'normal' 'full', (default: 'normal') (opt.) 5. Scalar, the height to fly at, (default: 80) (opt.) 6. Boolean, true to cleanup (1) if it crashes enroute, (default: false) Return: Void For example, this is from a test script: 0 = [_testHeli2, [player, "mkTestInsertion"], _box, "normal", 80, true] spawn Zen_OrderVehicleDrop; As for making the osprey fly away and be deleted, you must give a position for it to head toward and manually delete it at some point. _endPos = [_object, [2000, 3000], [], 0] call Zen_FindGroundPosition; _drop = [_plane, [_object, _endPos], _box, "normal", 150, true] spawn Zen_OrderVehicleDrop; ZEN_FMW_Code_WaitDistanceLess(_plane, _object, 500) ZEN_FMW_Code_WaitDistanceGreater(_plane, _object, 2000) terminate _drop; ZEN_STD_OBJ_DeleteVehCrew(_plane) On a slightly related note, I am planning to investigate using vehicle-in-vehicle transport with Zen_OrderVehicleDrop to see if it works better than just teleporting the object. Can you add the ability to make it delete (same as what's used in the Zen_OrderVehicleMove) instead of landing? So either land or delete so it can be truly used on all aircraft? Share this post Link to post Share on other sites
davidoss 552 Posted August 28, 2016 Hi. Is there a possibility to task ai group to defend spawn position? What i am doing wrong here that spawned heli does not fly to the insertion destination? It just stay on the ground with crew and cargo group inside. No errors are displayed @ EDIT found some documentation and examples which gives me information how to use others functions from this great framework. Unfortunately the problem remains. fnc_reinforcment = { params ["_oa", "_hspawnPos", "_insertionPos", "_heli", "_ispawnPos", "_reinf_grp"]; #define AI_SKILL "infantry" hint format ["Reinforcement on the way to OA %1", markerText _oa]; missionNamespace setVariable ["reiforcmnt",true]; _hspawnPos = ["mkReinfSpawn", 0, [], 1, [1, 200]] call Zen_FindGroundPosition; _insertionPos = [_oa, 0, [], 1, [1, 100]] call Zen_FindGroundPosition; _heli = [_hspawnPos,[ "B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F" ],0,90] call Zen_SpawnHelicopter; _ispawnPos = ["mkReinfSpawn", 0, [], 1, [1, 200]] call Zen_FindGroundPosition; _reinf_grp = [_ispawnPos, west, AI_SKILL, [6,8]] call Zen_SpawnInfantry; 0 = [_reinf_grp, _heli] call Zen_MoveInVehicle; 0 = [_heli, _insertionPos, _reinf_grp] spawn Zen_OrderInsertion; waitUntil {sleep 5; ([_reinf_grp, _heli] call Zen_AreNotInVehicle)}; [_reinf_grp, (getMarkerPos _oa), 70, 1, false] call fnc_taskDefend;//3rd party function , need to find Zen one. sleep 5; missionNamespace setVariable ["reiforcmnt",false]; }; There two markers _oa and "mkReinfSpawn". Function is called by _marker spawn fnc_reinforcment; Share this post Link to post Share on other sites
Zenophon 110 Posted August 28, 2016 Can you add the ability to make it delete (same as what's used in the Zen_OrderVehicleMove) instead of landing? So either land or delete so it can be truly used on all aircraft? Yes, I can make that an extra parameter; when enabled, Zen_OrderVehicleDrop will use Zen_OrderVehicleMove instead of Zen_OrderHelicopterLand. Hi. Is there a possibility to task ai group to defend spawn position? What i am doing wrong here that spawned heli does not fly to the insertion destination? It just stay on the ground with crew and cargo group inside. @ EDIT found some documentation and examples which give me information how to use others functions with that great framework. Unfortunately the problem remains. fnc_reinforcment = { params ["_oa", "_hspawnPos", "_insertionPos", "_heli", "_ispawnPos", "_reinf_grp"]; #define AI_SKILL "infantry" hint format ["Reinforcement on the way to OA %1", markerText _oa]; missionNamespace setVariable ["reiforcmnt",true]; _hspawnPos = ["mkReinfSpawn", 0, [], 1, [1, 200]] call Zen_FindGroundPosition; _insertionPos = [_oa, 0, [], 1, [1, 100]] call Zen_FindGroundPosition; _heli = [_hspawnPos,[ "B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F" ],0,90] call Zen_SpawnHelicopter; _ispawnPos = ["mkReinfSpawn", 0, [], 1, [1, 200]] call Zen_FindGroundPosition; _reinf_grp = [_ispawnPos, west, AI_SKILL, [6,8]] call Zen_SpawnInfantry; 0 = [_reinf_grp, _heli] call Zen_MoveInVehicle; 0 = [_heli, _insertionPos, _reinf_grp] spawn Zen_OrderInsertion; waitUntil {sleep 5; ([_reinf_grp, _heli] call Zen_AreNotInVehicle)}; [_reinf_grp, (getMarkerPos _oa), 70, 1, false] call fnc_taskDefend;//3rd party function , need to find Zen one. sleep 5; missionNamespace setVariable ["reiforcmnt",false]; }; On the first line, 'params' should be 'private' (assuming you don't want to read all of those variables as arguments). Only _ao appears to be an argument, so private ["_hspawnPos", "_insertionPos", "_heli", "_ispawnPos", "_reinf_grp"]; params ["_ao"]; I don't see anything wrong with the usage of Zen_OrderInsertion; if the helicopter never starts its engines, the AI is likely confused about the move order (i.e. they think it's completed or impossible). You could try spawning the helicopter in the air and observing its behavior. If it thinks it's done with the move order, it should land; if it doesn't get the order, it will just hover there. _heli = [_hspawnPos, ["B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F"], 40, 90] call Zen_SpawnHelicopter; You could also try using Zen_OrderHelicopterLand or Zen_OrderVehicleMove to see if the helicopter responds to anything. That will determine if the issue is with Zen_OrderInsertion specifically.There is no dedicated 'order defend' function in the framework that will make AI take cover, man static weapons, watch all directions, etc; framework function avoid micro-managing the AI whenever possible to maximize compatibility with AI mods that do that. However, if you just want them to walk around and engage enemies that attack them, giving Zen_OrderInfantryPatrol a very small patrol area works. 1 Share this post Link to post Share on other sites
davidoss 552 Posted August 28, 2016 Thanks for advices and reply. fnc_reinforcment = { private ["_oapos", "_hspawnPos", "_insertionPos", "_heli", "_reinf_grp"]; params ["_oa"]; missionNamespace setVariable ["reiforcmnt",true]; _oapos = getMarkerPos _oa; //this is awesome and insane function! Spend 3 hrs for study its capabilities :-) _hspawnPos = [(getMarkerPos "mkReinfSpawn"), [0, 200], [], 1] call Zen_FindGroundPosition; _insertionPos = [_oapos, [20, 100], [], 1, [2,100],[250,370,'compass']] call Zen_FindGroundPosition; _heli = [_hspawnPos,[ "B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F" ],40,90] call Zen_SpawnHelicopter; _reinf_grp = [_hspawnPos, west, "infantry", [6,8]] call Zen_SpawnInfantry; 0 = [_reinf_grp, _heli] call Zen_MoveInVehicle; /* 0 = [_heli, _insertionPos, _reinf_grp] spawn Zen_OrderInsertion; // sometimes is not working - helicopter hover for ever at spawn 0 = [_heli, _insertionPos, _reinf_grp, 'normal', 40, 'land', true] spawn Zen_OrderInsertion; // sometimes is not working - helicopter hover for ever at spawn 0 = [_heli, _insertionPos, 'normal', 40, false, true] spawn Zen_OrderHelicopterLand; //sometimes is not working - helicopter hover for ever at spawn */ _reinf_arrived = [_heli, _insertionPos, 'normal', 40, false, true] spawn Zen_OrderVehicleMove; //sometimes is not working - helicopter hover for ever at spawn waitUntil {sleep 5; scriptDone _reinf_arrived}; if (alive _heli) then { 0 = [_heli, _reinf_grp] spawn Zen_OrderFastRope; //sometimes firs AI stack in the ground and only his head is visible, other ais are not roped, helicopter hover for ever //stacked AI are invulnerable }; waitUntil {sleep 10; ([_reinf_grp, _heli]) call Zen_AreNotInVehicle}; if (({alive _x} count (units _reinf_grp)) > 0) then { hint format ["Task defend %1 added to group %2", markerText _oa, _reinf_grp]; //test to define timing [_reinf_grp, _oapos, 70, 1, false] call fnc_taskDefend; }; if (alive _heli) then { 0 = [_heli, _hspawnPos, 'normal', 40, true, true] spawn Zen_OrderVehicleMove; //sometimes is not working, after successfuly done vehicle + crew are removed }; sleep 5; missionNamespace setVariable ["reiforcmnt",false]; }; Like you said he just hovering there.Make more calls/restart and once he just do what it should. The same happen with Zen_OrderHelicopterLand and Zen_OrderVehicleMove.Looks like sometimes works but more times is not.Are there any possibility to track down why? Share this post Link to post Share on other sites
davidoss 552 Posted August 30, 2016 Due to that inconsistency i had to make it in more traditional way, but still using this amazing framework. I cant even imagine how many work has this required from you. Really big thing. I have found here almost all what i needed so far so big thanks for that. Now i need go deeply into this to find how to use ZEN tasking system fnc_reinforcment = { params ["_oa"]; missionNamespace setVariable ["reiforcmnt",true]; private _hspawnPos = ["mkReinfSpawn", [0, 200], [], 1] call Zen_FindGroundPosition; private _insertionPos = [_oa, [40, 120], [], 1, [2,100],[250,370,'compass']] call Zen_FindGroundPosition; private _heli = [_hspawnPos,[ "B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F", "B_CTRG_Heli_Transport_01_sand_F", "B_CTRG_Heli_Transport_01_tropic_F" ],40,90] call Zen_SpawnHelicopter; null = _heli spawn { waitUntil {sleep 10; !(alive _this) || !(missionNamespace getVariable "reiforcmnt")}; missionNamespace setVariable ["reiforcmnt",false]; }; private _gsits = [_heli, ['All']] call Zen_GetFreeSeats; private _sitscnt = count (_gsits select 2); private _reinf_grp = [_hspawnPos, WEST, "Infantry", _sitscnt, "Men", "BLU_F", [ //blacklisted "B_soldier_UAV_F","B_soldier_PG_F","B_soldier_AA_F","B_soldier_AT_F","B_soldier_LAT_F","B_CTRG_soldier_GL_LAT_F","B_diver_F","B_diver_TL_F", "B_diver_exp_F","B_spotter_F","B_sniper_F","B_ghillie_sard_F","B_ghillie_ard_F","B_ghillie_lsh_F","B_recon_LAT_F","B_Protagonist_VR_F","B_Soldier_VR_F" ],"All"] call Zen_SpawnInfantry; sleep 2; null = [_reinf_grp, _heli] call Zen_MoveInVehicle; sleep 2; null = [_heli, _insertionPos, 10, "MOVE", "CARELESS", "GREEN", "FULL", "COLUMN", " (vehicle this) land 'LAND' " ] call CBA_fnc_addWaypoint; private _heliPad = "Land_HelipadEmpty_F" createVehicle _insertionPos; waitUntil {sleep 5; ((getPos _heli) select 2) < 2}; if (alive _heli) then { _reinf_grp leaveVehicle _heli; }; waitUntil {sleep 5; ([_reinf_grp, _heli]) call Zen_AreNotInVehicle}; if (({alive _x} count (units _reinf_grp)) > 0) then { null = [_reinf_grp, _oa, 10, "MOVE", "AWARE", "YELLOW", "FULL", "COLUMN", " private _marker = ([allMapMarkers, {((getMarkerPos _this) distance this) > 200}] call Zen_ArrayFilterCondition) select 0; null = [this, _marker, 70, 1, false] call CBA_fnc_taskDefend ",[0,0,0],5] call CBA_fnc_addWaypoint; }; sleep 5; if (alive _heli) then { null = [_heli, _hspawnPos, 10, "MOVE", "CARELESS", "GREEN", "FULL", "COLUMN", " deleteVehicle (vehicle this); {deleteVehicle _x;} forEach thislist " ] call CBA_fnc_addWaypoint; }; deleteVehicle _heliPad; missionNamespace setVariable ["reiforcmnt",false]; }; VIDEO 1 Share this post Link to post Share on other sites
dr death jm 117 Posted August 31, 2016 @ davidoss Zen's scripting is amazing, I was editing an old school RTS mission (with the help of Zen) and his framework, its well documented and written.. dont know what point im trying to say , just a big :ok: on this framework and Zenophone Share this post Link to post Share on other sites
cdn_biggdogg 29 Posted August 31, 2016 Due to that inconsistency i had to make it in more traditional way, but still using this amazing framework. I cant even imagine how many work has this required from you. Really big thing. I have found here almost all what i needed so far so big thanks for that. Now i need go deeply into this to find how to use ZEN tasking system fnc_reinforcment = { params ["_oa"]; missionNamespace setVariable ["reiforcmnt",true]; private _hspawnPos = ["mkReinfSpawn", [0, 200], [], 1] call Zen_FindGroundPosition; private _insertionPos = [_oa, [20, 100], [], 1, [2,100],[250,370,'compass']] call Zen_FindGroundPosition; private _heli = [_hspawnPos,[ "B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F", "B_CTRG_Heli_Transport_01_sand_F", "B_CTRG_Heli_Transport_01_tropic_F" ],40,90] call Zen_SpawnHelicopter; private _gsits = [_heli, ['All']] call Zen_GetFreeSeats; private _sitscnt = count (_gsits select 2); private _reinf_grp = [_hspawnPos, WEST, "Infantry", _sitscnt, "Men", "BLU_F", [ //blacklisted "B_soldier_UAV_F", "B_soldier_PG_F", "B_soldier_AA_F", "B_soldier_AT_F", "B_soldier_LAT_F", "B_CTRG_soldier_GL_LAT_F", "B_diver_F", "B_diver_TL_F", "B_diver_exp_F", "B_spotter_F", "B_sniper_F", "B_ghillie_sard_F", "B_ghillie_ard_F", "B_ghillie_lsh_F", "B_recon_LAT_F", "B_Protagonist_VR_F", "B_Soldier_VR_F" ],"All"] call Zen_SpawnInfantry; sleep 2; null = [_reinf_grp, _heli] call Zen_MoveInVehicle; sleep 2; /* null = [_heli, _insertionPos, _reinf_grp] spawn Zen_OrderInsertion; sometimes is not working - helicopter hover for ever at spawn null = [_heli, _insertionPos, _reinf_grp, 'normal', 40, 'land', true] spawn Zen_OrderInsertion; sometimes is not working - helicopter hover for ever at spawn null = [_heli,_insertionPos, "full", 40, false, true] spawn Zen_OrderHelicopterLand; sometimes is not working - helicopter hover for ever at spawn null = [_heli, _insertionPos, 'normal', 40, false, true] spawn Zen_OrderVehicleMove; //sometimes is not working - helicopter hover for ever at spawn */ null = [_heli, _insertionPos, 10, "MOVE", "CARELESS", "YELLOW", "FULL", "COLUMN", " (vehicle this) land 'LAND' " ] call CBA_fnc_addWaypoint; private _heliPad = "Land_HelipadEmpty_F" createVehicle _insertionPos; waitUntil {sleep 5; ((getPos _heli) select 2) < 2}; if (alive _heli) then { /* null = [_heli, _reinf_grp] spawn Zen_OrderFastRope; sometimes firs AI stack in the ground and only his head is visible, other ais are not roped, helicopter hover for ever stacked AI are invulnerable */ _reinf_grp leaveVehicle _heli; }; waitUntil {sleep 5; ([_reinf_grp, _heli]) call Zen_AreNotInVehicle}; if (({alive _x} count (units _reinf_grp)) > 0) then { null = [_reinf_grp, _oa, 10, "MOVE", "AWARE", "YELLOW", "FULL", "COLUMN", " private _marker = ([allMapMarkers, {((getMarkerPos _this) distance this) > 200}] call Zen_ArrayFilterCondition) select 0; null = [this, _marker, 70, 1, false] call fnc_taskDefend ",[0,0,0],5] call CBA_fnc_addWaypoint; }; sleep 5; if (alive _heli) then { /* null = [_heli, _hspawnPos, 'normal', 40, true, true] spawn Zen_OrderVehicleMove; sometimes is not working, after successfuly done vehicle + crew are removed */ null = [_heli, _hspawnPos, 10, "MOVE", "AWARE", "YELLOW", "FULL", "COLUMN", " deleteVehicle (vehicle this); {deleteVehicle _x;} forEach thislist " ] call CBA_fnc_addWaypoint; }; deleteVehicle _heliPad; missionNamespace setVariable ["reiforcmnt",false]; }; fnc_set_mrkalpha = { private ["_players", "_defence", "_units", "_statics", "_units_cnt"]; params ["_marker"]; _players = playableUnits + switchableUnits; while {!defenced} do { sleep 10; _defence = []; _units = (getMarkerPos _marker) nearEntities ["Man", 150]; _statics = (getMarkerPos _marker) nearEntities ["StaticWeapon", 150]; { if ((side _x) isEqualTo WEST && !(_x in _players) && !(isPlayer _x)) then { _defence pushback _x; }; } forEach _units; sleep 3; _statics = _statics select {(_x emptyPositions "Gunner") == 0}; _units_cnt = {alive _x} count (_defence + _statics); switch (true) do { case (_units_cnt isEqualTo 10): { _marker setMarkerColor "colorBLUFOR"; _marker setMarkerAlpha ((_units_cnt*0.1) min 1); }; case (!(_units_cnt isEqualTo 10) && _units_cnt > 4): { _marker setMarkerColor "colorBLUFOR"; _marker setMarkerAlpha ((_units_cnt*0.1) min 1); }; case (!(_units_cnt isEqualTo 10) && _units_cnt <= 4 && !(_units_cnt isEqualTo 0)): { _marker setMarkerColor "colorBLUFOR"; _marker setMarkerAlpha ((_units_cnt*0.1) min 1); }; case (_units_cnt isEqualTo 0): { _marker setMarkerColor "colorOPFOR"; _marker setMarkerAlpha 1; }; default { _marker setMarkerAlpha ((_units_cnt*0.1) min 1);}; }; if ( _units_cnt <= 4 && {alive _x && (_x distance (getMarkerPos _marker)) < 200 } count _players > 0 && !(missionNamespace getVariable "reiforcmnt") ) then { null = _marker spawn fnc_reinforcment; }; }; }; fnc_spawn_guard = { params ["_mrk"]; private _arrayofUnits = [ "B_Soldier_F", "B_Soldier_lite_F", "B_Soldier_GL_F", "B_soldier_AR_F", "B_Soldier_SL_F", "B_Soldier_TL_F", "B_soldier_M_F", "B_medic_F", "B_soldier_repair_F", "B_soldier_exp_F", "B_Soldier_A_F", "B_engineer_F", "B_officer_F", "B_Sharpshooter_F", "B_HeavyGunner_F" ]; waitUntil { sleep 5; {alive _x && (_x distance (getMarkerPos _mrk)) < 300 } count (playableUnits + switchableUnits) > 0 }; private _defence_count = floor random [3,8,(count _arrayofUnits)]; private _toSpawn = [_arrayofUnits, _defence_count, false] call Zen_ArrayGetRandomSequence; private _outpost_grp = [_mrk, _toSpawn] call Zen_SpawnGroup; sleep 2; null = [_outpost_grp, _mrk, 70, 1, false] call fnc_taskDefend; null = _mrk spawn fnc_set_mrkalpha; }; VIDEO I ran into this exact same problem a while back and even set up test missions to demonstrate what was happening with the AI drivers and pilots not responding to commands. I made missions for both helo's and tanks as both were prone to getting "stuck". Unfortunately we (I sent the missions to Zenophon for him to look at) weren't able to determine the cause! Share this post Link to post Share on other sites
davidoss 552 Posted August 31, 2016 @ davidoss Zen's scripting is amazing, I was editing an old school RTS mission (with the help of Zen) and his framework, its well documented and written.. dont know what point im trying to say , just a big :ok: on this framework and Zenophone Yes saw that. I have maybe 5 times tried to get into this in the past but without success. This time for sure :) I ran into this exact same problem a while back and even set up test missions to demonstrate what was happening with the AI drivers and pilots not responding to commands. I made missions for both helo's and tanks as both were prone to getting "stuck". Unfortunately we (I sent the missions to Zenophon for him to look at) weren't able to determine the cause! Oh thats bad. Means no chance for any fix... :wacko: Share this post Link to post Share on other sites
Tonmeister 14 Posted August 31, 2016 from my recent tests I found that 'paradrop' was having issues, but other insertion types seemed to be OK. With paradrop, the helo simply sits on the runway. Not so long ago this was never an issue. Also I found that if I were to move a group of 6 units into the cargo of an Mi8, two of these units get left outside, despite having empty slots in the vehicle. But if I move them using 'all', noone is left behind, yet throws up an error with the driver, which is expected. This seems to happen regardless of the size of the unit group. Share this post Link to post Share on other sites
strango 5 Posted September 1, 2016 Also I found that if I were to move a group of 6 units into the cargo of an Mi8, two of these units get left outside, despite having empty slots in the vehicle. But if I move them using 'all', noone is left behind, yet throws up an error with the driver, which is expected. This seems to happen regardless of the size of the unit group. I've also seen this when using Zen_MoveInVehicle with the 'cargo' setting on a troop transport Blackfish. Share this post Link to post Share on other sites
davidoss 552 Posted September 1, 2016 I have tried all of them multiple times and here are the results: null = [_heli, _insertionPos, _reinf_grp] spawn Zen_OrderInsertion; // sometimes is not working - helicopter hover for ever at spawn null = [_heli, _insertionPos, _reinf_grp, 'normal', 40, 'land', true] spawn Zen_OrderInsertion; // sometimes is not working - helicopter hover for ever at spawn null = [_heli,_insertionPos, "full", 40, false, true] spawn Zen_OrderHelicopterLand; // sometimes is not working - helicopter hover for ever at spawn null = [_heli, _insertionPos, 'normal', 40, false, true] spawn Zen_OrderVehicleMove; // sometimes is not working - helicopter hover for ever at spawn null = [_heli, _reinf_grp] spawn Zen_OrderFastRope; // sometimes first AI stack in the ground and only his head is visible, other ais are not being roped, helicopter hover for ever // stacked AI are invulnerable Anyway, could someone please show me how to use Zen cache system properly? Need to cache units when no players/enemy near and un-cache if players/enemy nearby. I have read the documentation but i do not understand fully how it works. Share this post Link to post Share on other sites
Tajin 349 Posted September 2, 2016 Hey Zen, you might want to update your functions to utilize some of the new script commands. There is quite a bit of performance to be gained there. especially with the new "array select expression" and the "inArea" command. Share this post Link to post Share on other sites
davidoss 552 Posted September 2, 2016 After making more test i am 99% sure that the whole problem with hovering choppers are in Zen_MoveInVehicle. I have more questions for example about loadout system in MP. i have setup this as fallow _data = [] call fnc_crate_loadout; if (isServer) then { { null = [_x, _data, -1, true] call Zen_AddLoadoutDialog; } forEach (allMissionObjects "B_supplyCrate_F"); }; fnc_crate_loadout fnc_crate_loadout = { //recon rifleman _loadout1 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_Chestrig_rgr"],["headgear","H_Booniehat_mcamo"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MXM_DMS_LP_BI_snds_F","hgun_P07_snds_F","Rangefinder"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_DMS","bipod_01_F_snd"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON RIFLEMAN" ] call Zen_CreateLoadout; //recon medic _loadout2 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_AssaultPack_rgr_ReconMedic"],["headgear","H_HelmetB_light"],["goggles","G_Tactical_Clear"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MXC_ACO_pointer_snds_F","hgun_P07_snds_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["SmokeShellRed",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",6],["Medikit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_Aco"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON MEDIC" ] call Zen_CreateLoadout; //recon _loadout3 = [ [["uniform","U_B_CombatUniform_mcam_vest"],["vest","V_Chestrig_rgr"],["headgear","H_Watchcap_camo"],["goggles","G_Tactical_Black"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_snds_F","hgun_P07_snds_F","Binocular"]],["magazines",[["30Rnd_65x39_caseless_mag",9],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_Aco"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON" ] call Zen_CreateLoadout; //recon miner _loadout4 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_AssaultPack_rgr_ReconExp"],["headgear","H_Booniehat_mcamo"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_snds_F","hgun_P07_snds_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["APERSMine_Range_Mag",3],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["ClaymoreDirectionalMine_Remote_Mag",2],["APERSBoundingMine_Range_Mag",3],["DemoCharge_Remote_Mag",1],["SLAMDirectionalMine_Wire_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["MineDetector",1],["ToolKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_Aco"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON MINER" ] call Zen_CreateLoadout; //rifleman sniper _loadout5 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["headgear","H_HelmetB_grass"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MXM_Hamr_LP_BI_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",7],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Hamr","bipod_01_F_snd"]]], "SHARPSHOTER" ] call Zen_CreateLoadout; //rifleman light _loadout6 = [ [["uniform","U_B_CombatUniform_mcam_vest"],["vest","V_BandollierB_rgr"],["headgear","H_MilCap_mcamo"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["optic_Aco"]]], "RIFLEMAN LIGHT" ] call Zen_CreateLoadout; //miner _loadout7 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrierGL_rgr"],["backpack","B_Kitbag_rgr_Exp"],["headgear","H_HelmetSpecB"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MXC_Holo_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["APERSMine_Range_Mag",3],["HandGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["APERSBoundingMine_Range_Mag",3],["ClaymoreDirectionalMine_Remote_Mag",2],["SLAMDirectionalMine_Wire_Mag",2],["DemoCharge_Remote_Mag",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["ToolKit",1],["MineDetector",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Holosight"]]], "MINER" ] call Zen_CreateLoadout; //mechanic _loadout8 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["backpack","B_AssaultPack_rgr_Repair"],["headgear","H_HelmetB_light_sand"],["goggles","G_Tactical_Black"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_Holo_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["ToolKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Holosight"]]], "MECHANIC" ] call Zen_CreateLoadout; //ammo rkm _loadout9 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_Kitbag_rgr_AAR"],["headgear","H_HelmetB_light"],["goggles","G_Tactical_Clear"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F","Rangefinder"]],["magazines",[["30Rnd_65x39_caseless_mag",7],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["B_IR_Grenade",2],["SmokeShell",1],["SmokeShellGreen",1],["100Rnd_65x39_caseless_mag",2],["100Rnd_65x39_caseless_mag_Tracer",2],["130Rnd_338_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["optic_tws_mg",1],["bipod_01_F_snd",1],["muzzle_snds_338_sand",1],["muzzle_snds_H_SW",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "AMMOBEARER RKM" ] call Zen_CreateLoadout; //rifleman rkm _loadout10 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_Kitbag_rgr_AAR"],["headgear","H_HelmetB_light"],["goggles","G_Tactical_Clear"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F","Rangefinder"]],["magazines",[["30Rnd_65x39_caseless_mag",7],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["B_IR_Grenade",2],["SmokeShell",1],["SmokeShellGreen",1],["100Rnd_65x39_caseless_mag",2],["100Rnd_65x39_caseless_mag_Tracer",2],["130Rnd_338_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["optic_tws_mg",1],["bipod_01_F_snd",1],["muzzle_snds_338_sand",1],["muzzle_snds_H_SW",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "RIFLEMAN RKM" ] call Zen_CreateLoadout; //ammo _loadout11 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["backpack","B_AssaultPack_mcamo_Ammo"],["headgear","H_HelmetB_grass"],["goggles","G_Aviator"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",17],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",4],["SmokeShell",1],["SmokeShellGreen",1],["100Rnd_65x39_caseless_mag",1],["NLAW_F",1],["MiniGrenade",2],["1Rnd_HE_Grenade_shell",3],["3Rnd_HE_Grenade_shell",1],["10Rnd_338_Mag",2],["20Rnd_762x51_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",5],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "AMMOBEARER" ] call Zen_CreateLoadout; //grenadier _loadout12 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrierGL_rgr"],["headgear","H_HelmetSpecB_blk"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_GL_ACO_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["1Rnd_HE_Grenade_shell",5],["HandGrenade",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["1Rnd_Smoke_Grenade_shell",2],["1Rnd_SmokeBlue_Grenade_shell",1],["1Rnd_SmokeGreen_Grenade_shell",1],["1Rnd_SmokeOrange_Grenade_shell",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["optic_Aco"]]], "GRENADIER" ] call Zen_CreateLoadout; //medic _loadout13 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_PlateCarrierSpec_rgr"],["backpack","B_AssaultPack_rgr_Medic"],["headgear","H_HelmetB_light_desert"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["SmokeShell",1],["SmokeShellGreen",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",11],["Medikit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR"]]], "MEDIC" ] call Zen_CreateLoadout; //rifleman _loadout14 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["headgear","H_HelmetB"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",9],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["SmokeShell",1],["SmokeShellGreen",1],["HandGrenade",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "RIFLEMAN" ] call Zen_CreateLoadout; //sniper _loadout15 = [ [["uniform","U_B_GhillieSuit"],["vest","V_Chestrig_rgr"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["srifle_LRR_camo_LRPS_F","hgun_P07_snds_F","Rangefinder"]],["magazines",[["7Rnd_408_Mag",5],["SmokeShell",1],["16Rnd_9x21_Mag",2],["ClaymoreDirectionalMine_Remote_Mag",1],["APERSTripMine_Wire_Mag",1],["SmokeShellGreen",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["Chemlight_green",2],["7Rnd_408_Mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["optic_LRPS"]],["handgunAttachments",["muzzle_snds_L"]]],"SNIPER" ] call Zen_CreateLoadout; ([_loadout1, _loadout2, _loadout3,_loadout4, _loadout5, _loadout6,_loadout7, _loadout8, _loadout9,_loadout10, _loadout11, _loadout12,_loadout13, _loadout14, _loadout15]) }; Will that be ok in MP? Why while all loadouts are visible only half of the list are selectable by mause click? Player need to scroll the page down to get the others. Looks like only half of the displayed dialog detect the mouse click Share this post Link to post Share on other sites
Zenophon 110 Posted September 3, 2016 I have tried all of them multiple times and here are the results: null = [_heli, _insertionPos, _reinf_grp] spawn Zen_OrderInsertion; // sometimes is not working - helicopter hover for ever at spawn null = [_heli, _insertionPos, _reinf_grp, 'normal', 40, 'land', true] spawn Zen_OrderInsertion; // sometimes is not working - helicopter hover for ever at spawn null = [_heli,_insertionPos, "full", 40, false, true] spawn Zen_OrderHelicopterLand; // sometimes is not working - helicopter hover for ever at spawn null = [_heli, _insertionPos, 'normal', 40, false, true] spawn Zen_OrderVehicleMove; // sometimes is not working - helicopter hover for ever at spawn null = [_heli, _reinf_grp] spawn Zen_OrderFastRope; // sometimes first AI stack in the ground and only his head is visible, other ais are not being roped, helicopter hover for ever // stacked AI are invulnerable For everyone having issues with getting the AI to move, remember that the Zen_Orders functions just boil down to using 'addWaypoint' and/or 'move' in order to actually get the AI to do things. I am aware that using addWaypoint is noticeably less reliable that 'move'; however, I changed the orders functions so that they are compatible with the caching system ('move' doesn't create a valid cacheable waypoint). The quickest fix to the AI not moving is to reinforce the Zen_Order command with your own move command; e.g. 0 = [_heli, _waypoint] spawn Zen_OrderVehicleMove; _heli move _waypoint; As long as the move command you give manually is the same as the one the function gives, there will be no conflict. For next release, I will put that duplicate 'move' into all the functions as a failsafe (such a thing seems impossible when dealing with this AI). Anyway, could someone please show me how to use Zen cache system properly? Need to cache units when no players/enemy near and un-cache if players/enemy nearby. I have read the documentation but i do not understand fully how it works. I'll give an example assuming that you have at least one of units which cache/uncache independently (a set being an arbitrary list of groups); this should maintain generality and let you decide what granularity you need. Keep in mind I can't test this (still don't have my computer set up and running ArmA, ETA about 1 week), so beware a few typos, but the general pattern is clear. I didn't include patrolling of any kind, as that is covered in the caching demonstration. _cacheArray = []; // define _unitSets in whatever way works for you // I've left out any spawning in this example { // we can start with the units either cached or uncached // for clarity I will cache them all at once _cacheArray pushBack ([_x] call Zen_Cache); } forEach _unitSets; while {true} do { sleep 10; _indexesToRemove = []; { // check if this set is dead if (({alive _x} count ([[_x] call Zen_GetCachedUnits] call Zen_ConvertToObjectArray)) == 0) then { _indexesToRemove pushBack _forEachIndex; } else { // this is the easiest way to get a position of the cached units to compare to _cachedPos = [([[_x] call Zen_GetCachedUnits] call Zen_ConvertToObjectArray)] call Zen_FindCenterPosition; // you must provide another position to check against based upon the players // _playerPos = ... _cached = [_x] call Zen_IsCached; // tweak the distance your liking if (_playerPos distance2D _cachedPos < 500) then { if (_cached) then { 0 = [_x] call Zen_UnCache; }; } else { if !(_cached) then { 0 = [_x] call Zen_Cache; }; }; }; } forEach _cacheArray; ZEN_FMW_Array_RemoveIndexes(_cacheArray, _indexesToRemove) if (count _cacheArray == 0) exitWith {}; } Hey Zen, you might want to update your functions to utilize some of the new script commands. There is quite a bit of performance to be gained there. especially with the new "array select expression" and the "inArea" command. Thanks, I try to keep up with the new scripting commands, but I am likely to miss a few. The inArea command will improve the performance of Zen_FindGroundPosition. If new BIS commands are significantly better (either in offering new functionality or speed), I generally replace the body of a function with them while keeping its parameters (e.g. nearestTerrainObjects for Zen_GetAmbientClutterCount). After making more test i am 99% sure that the whole problem with hovering choppers are in Zen_MoveInVehicle. I have more questions for example about loadout system in MP. i have setup this as fallow _data = [] call fnc_crate_loadout; if (isServer) then { { null = [_x, _data, -1, true] call Zen_AddLoadoutDialog; } forEach (allMissionObjects "B_supplyCrate_F"); }; fnc_crate_loadout fnc_crate_loadout = { //recon rifleman _loadout1 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_Chestrig_rgr"],["headgear","H_Booniehat_mcamo"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MXM_DMS_LP_BI_snds_F","hgun_P07_snds_F","Rangefinder"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_DMS","bipod_01_F_snd"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON RIFLEMAN" ] call Zen_CreateLoadout; //recon medic _loadout2 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_AssaultPack_rgr_ReconMedic"],["headgear","H_HelmetB_light"],["goggles","G_Tactical_Clear"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MXC_ACO_pointer_snds_F","hgun_P07_snds_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["SmokeShellRed",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",6],["Medikit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_Aco"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON MEDIC" ] call Zen_CreateLoadout; //recon _loadout3 = [ [["uniform","U_B_CombatUniform_mcam_vest"],["vest","V_Chestrig_rgr"],["headgear","H_Watchcap_camo"],["goggles","G_Tactical_Black"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_snds_F","hgun_P07_snds_F","Binocular"]],["magazines",[["30Rnd_65x39_caseless_mag",9],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_Aco"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON" ] call Zen_CreateLoadout; //recon miner _loadout4 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_AssaultPack_rgr_ReconExp"],["headgear","H_Booniehat_mcamo"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_snds_F","hgun_P07_snds_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["APERSMine_Range_Mag",3],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["ClaymoreDirectionalMine_Remote_Mag",2],["APERSBoundingMine_Range_Mag",3],["DemoCharge_Remote_Mag",1],["SLAMDirectionalMine_Wire_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["MineDetector",1],["ToolKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["muzzle_snds_H","acc_pointer_IR","optic_Aco"]],["handgunAttachments",["muzzle_snds_L"]]], "RECON MINER" ] call Zen_CreateLoadout; //rifleman sniper _loadout5 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["headgear","H_HelmetB_grass"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MXM_Hamr_LP_BI_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",7],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Hamr","bipod_01_F_snd"]]], "SHARPSHOTER" ] call Zen_CreateLoadout; //rifleman light _loadout6 = [ [["uniform","U_B_CombatUniform_mcam_vest"],["vest","V_BandollierB_rgr"],["headgear","H_MilCap_mcamo"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["SmokeShell",1],["SmokeShellGreen",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["optic_Aco"]]], "RIFLEMAN LIGHT" ] call Zen_CreateLoadout; //miner _loadout7 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrierGL_rgr"],["backpack","B_Kitbag_rgr_Exp"],["headgear","H_HelmetSpecB"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MXC_Holo_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["APERSMine_Range_Mag",3],["HandGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["APERSBoundingMine_Range_Mag",3],["ClaymoreDirectionalMine_Remote_Mag",2],["SLAMDirectionalMine_Wire_Mag",2],["DemoCharge_Remote_Mag",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["ToolKit",1],["MineDetector",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Holosight"]]], "MINER" ] call Zen_CreateLoadout; //mechanic _loadout8 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["backpack","B_AssaultPack_rgr_Repair"],["headgear","H_HelmetB_light_sand"],["goggles","G_Tactical_Black"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_Holo_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["ToolKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Holosight"]]], "MECHANIC" ] call Zen_CreateLoadout; //ammo rkm _loadout9 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_Kitbag_rgr_AAR"],["headgear","H_HelmetB_light"],["goggles","G_Tactical_Clear"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F","Rangefinder"]],["magazines",[["30Rnd_65x39_caseless_mag",7],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["B_IR_Grenade",2],["SmokeShell",1],["SmokeShellGreen",1],["100Rnd_65x39_caseless_mag",2],["100Rnd_65x39_caseless_mag_Tracer",2],["130Rnd_338_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["optic_tws_mg",1],["bipod_01_F_snd",1],["muzzle_snds_338_sand",1],["muzzle_snds_H_SW",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "AMMOBEARER RKM" ] call Zen_CreateLoadout; //rifleman rkm _loadout10 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_Chestrig_rgr"],["backpack","B_Kitbag_rgr_AAR"],["headgear","H_HelmetB_light"],["goggles","G_Tactical_Clear"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F","Rangefinder"]],["magazines",[["30Rnd_65x39_caseless_mag",7],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",2],["B_IR_Grenade",2],["SmokeShell",1],["SmokeShellGreen",1],["100Rnd_65x39_caseless_mag",2],["100Rnd_65x39_caseless_mag_Tracer",2],["130Rnd_338_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["optic_tws_mg",1],["bipod_01_F_snd",1],["muzzle_snds_338_sand",1],["muzzle_snds_H_SW",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "RIFLEMAN RKM" ] call Zen_CreateLoadout; //ammo _loadout11 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["backpack","B_AssaultPack_mcamo_Ammo"],["headgear","H_HelmetB_grass"],["goggles","G_Aviator"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",17],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["HandGrenade",4],["SmokeShell",1],["SmokeShellGreen",1],["100Rnd_65x39_caseless_mag",1],["NLAW_F",1],["MiniGrenade",2],["1Rnd_HE_Grenade_shell",3],["3Rnd_HE_Grenade_shell",1],["10Rnd_338_Mag",2],["20Rnd_762x51_Mag",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",5],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "AMMOBEARER" ] call Zen_CreateLoadout; //grenadier _loadout12 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrierGL_rgr"],["headgear","H_HelmetSpecB_blk"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_GL_ACO_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["1Rnd_HE_Grenade_shell",5],["HandGrenade",2],["MiniGrenade",2],["SmokeShell",1],["SmokeShellGreen",1],["1Rnd_Smoke_Grenade_shell",2],["1Rnd_SmokeBlue_Grenade_shell",1],["1Rnd_SmokeGreen_Grenade_shell",1],["1Rnd_SmokeOrange_Grenade_shell",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["optic_Aco"]]], "GRENADIER" ] call Zen_CreateLoadout; //medic _loadout13 = [ [["uniform","U_B_CombatUniform_mcam_tshirt"],["vest","V_PlateCarrierSpec_rgr"],["backpack","B_AssaultPack_rgr_Medic"],["headgear","H_HelmetB_light_desert"],["goggles","G_Combat"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",5],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["SmokeShell",1],["SmokeShellGreen",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",11],["Medikit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR"]]], "MEDIC" ] call Zen_CreateLoadout; //rifleman _loadout14 = [ [["uniform","U_B_CombatUniform_mcam"],["vest","V_PlateCarrier1_rgr"],["headgear","H_HelmetB"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"]],["weapons",["arifle_MX_ACO_pointer_F","hgun_P07_F"]],["magazines",[["30Rnd_65x39_caseless_mag",9],["Chemlight_green",2],["16Rnd_9x21_Mag",2],["SmokeShell",1],["SmokeShellGreen",1],["HandGrenade",2],["30Rnd_65x39_caseless_mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["acc_pointer_IR","optic_Aco"]]], "RIFLEMAN" ] call Zen_CreateLoadout; //sniper _loadout15 = [ [["uniform","U_B_GhillieSuit"],["vest","V_Chestrig_rgr"],["assignedItems",["ItemMap","ItemCompass","ItemWatch","ItemRadio","ItemGPS","NVGoggles"]],["weapons",["srifle_LRR_camo_LRPS_F","hgun_P07_snds_F","Rangefinder"]],["magazines",[["7Rnd_408_Mag",5],["SmokeShell",1],["16Rnd_9x21_Mag",2],["ClaymoreDirectionalMine_Remote_Mag",1],["APERSTripMine_Wire_Mag",1],["SmokeShellGreen",1],["SmokeShellBlue",1],["SmokeShellOrange",1],["Chemlight_green",2],["7Rnd_408_Mag",1],["16Rnd_9x21_Mag",1]]],["items",[["FirstAidKit",1],["RyanZombiesAntiVirusCure_Item",3],["RyanZombiesAntiVirusTemporary_Item",3]]],["primaryAttachments",["optic_LRPS"]],["handgunAttachments",["muzzle_snds_L"]]],"SNIPER" ] call Zen_CreateLoadout; ([_loadout1, _loadout2, _loadout3,_loadout4, _loadout5, _loadout6,_loadout7, _loadout8, _loadout9,_loadout10, _loadout11, _loadout12,_loadout13, _loadout14, _loadout15]) }; Will that be ok in MP? Why while all loadouts are visible only half of the list are selectable by mause click? Player need to scroll the page down to get the others. Looks like only half of the displayed dialog detect the mouse click Zen_AddLoadoutDialog will propagate in MP, so clients will see the loadouts on the menu. The loadouts will work for any machine since Zen_CreateLoadout also propagates data, as long as it is run after the 'sleep' command in the init (same for any MP synch'ing). I am aware of the dialog list issue and it's one of the two known issues that I cannot fix (nor do I see a fix being possible any time in the future). It it a result of the dialog being created dynamically and without a config class; there is no scripting command to control the expected length of a list. I agree that it's annoying, but it doesn't hinder functionality. Share this post Link to post Share on other sites
davidoss 552 Posted September 3, 2016 Yes dialog is not big problem. About the caching system this is really great but driving me crazy because the units in operation area dynamically changes and i need to define it at each run. Here is how i do that: fnc_cache_loop = { params ["_marker"]; private ["_players", "_westNear", "_guard", "_group", "_id"]; while {true} do { waitUntil { sleep 10; _players = (playableUnits + switchableUnits); private _zedsarray = [allUnits, {!((faction _this) == "Ryanzombiesfactionopfor")}] call Zen_ArrayFilterCondition; private _playersarray = [allUnits, {!(_this in _players)}] call Zen_ArrayFilterCondition; private _triggersarray = _zedsarray + _playersarray; ([_triggersarray, (getMarkerPos _marker), [300,300], 360, "ellipse"] call Zen_AreNotInArea) }; //no players in range _westNear = [_marker, [200,200],360,"ellipse",[],WEST] call Zen_GetAllInArea; _guard = [_westNear,{_this in _players || 0 != {isplayer _x} count (units (group _this))}] call Zen_ArrayFilterCondition; sleep 2; _group = createGroup WEST; _guard joinSilent _group; _id = [_group] call Zen_Cache; //player commandChat str ([_id] call Zen_IsCached); //player commandChat str ([_id] call Zen_GetCachedUnits); waitUntil { sleep 10; _players = (playableUnits + switchableUnits); private _zedsarray = [allUnits, {!((faction _this) == "Ryanzombiesfactionopfor")}] call Zen_ArrayFilterCondition; private _playersarray = [allUnits, {!(_this in _players)}] call Zen_ArrayFilterCondition; private _triggersarray = _zedsarray + _playersarray; !([_triggersarray, (getMarkerPos _marker), [300,300], 360, "ellipse"] call Zen_AreNotInArea) }; //players in range null = [_id] call Zen_UnCache; //player commandChat str ([_id] call Zen_IsCached); //player commandChat str ([_id] call Zen_GetCachedUnits); sleep 2; _westNear = [_marker, [200,200],360,"ellipse",[],WEST] call Zen_GetAllInArea; _guard = [_westNear,{_this in _players || 0 != {isplayer _x} count (units (group _this))}] call Zen_ArrayFilterCondition; _group = createGroup WEST; _guard joinSilent _group; sleep 2; null = [_group, _marker, 50, 2, false] call CBA_fnc_taskDefend; }; }; This works somehow but there are at least one problem. If the player die and all enemies , player respawn on the base and on the same time a reinforcement group comes there they will never get cached because there are no such condition to break the waituntil. Someone need go there un-cache the cached (if any) and when go away they all get cached again. We have tried to rewrite this here but this is given others problems. Anyway i am really grateful for this framework because i have found there almost all i can handle. Thanks Share this post Link to post Share on other sites
Zenophon 110 Posted September 4, 2016 I think your issue arises in part from your script looking from the perspective of the player; you are looping through checks for the players and then looking for units to cache. My code is looping through units to cache and checking if each one is near the players. The second part of your issue is that the waitUntil loops prevent you from generalizing the script to deal with multiple sets of cached units and multiple areas that the players could be in. You could try keeping the perspective of the players, but instead of waiting for them to fulfill a condition, loop through the conditions (i.e. areas) that players can meet without waitUntil's and cache/uncache according to what the code finds. In that case, the script can cache/uncache in a timed cycle without getting stuck. In the part of my code where I say to get a position for the players (lines 23 and 24), you can replace the logic that compares two positions with code that checks for all players being in an area, as you already use in your waitUntil loops. _cachedPos = [([[_x] call Zen_GetCachedUnits] call Zen_ConvertToObjectArray)] call Zen_FindCenterPosition; // instead provide a list of players // _playerArray = ... _cached = [_x] call Zen_IsCached; // or use an area marker that's either placed or spawned if !([_playerArray, _cachedPos, [500, 500], 0, "ellipse"] call Zen_AreNotInArea) then { // ... Now you are left with determining how accurate _cachedPos really is depending upon how many units you've cached under each identifier. The more sets of units you cache seperately, the more accuracy you will have with caching/uncaching them, but you lose performance because the script must cycle through many identifiers. In the case of respawn, you can supply the list of players as a global array, which you can update as players die/respawn using EH's. Share this post Link to post Share on other sites
davidoss 552 Posted September 6, 2016 Thank you Zenophon. Unfortunately i am unable to use your code as it overrun my knowledge. The circumstances of such switch are unpredictable and complicated. The situation is as fallows: there is a markercouple of blufor units aroundthere will enemy opfor attack 3 times. there also players objective as wellthe fight begin if any player arrives defenders are all blufor units in range 200m controlled by server if count of defenders units < 4 they will call for reinforcementbunch of blufor units comes with a chopperjoining the fightand what i need here is cache the defenders in some circumstances as fallows no any unit from players groups near (this include players as well) no enemy nearand un-cache ifenemy nearany unit from players groups near (including players)other friendlies in area (not from players groups) more as at last run Because there is a catch, if in battle result all players die and all enemy die and reinforce on the way, the defenders left get cached. But this should wait somehow until reinforce chopper ends his route then cache all blue in range 200 from marker Such places/markers are 4. There also others problems like if there is line-of-see between outpost (about 460m), sometimes cached units prefer to run between instead of stay on place where cached or something else causing this () and i am sure that there also more fail situations which i do not have predicted so far I tried many different code to achieve this and for now I use this: fnc_cache_loop = { params ["_marker"]; private ["_fnc_check", "_tocache", "_defgroup"]; _fnc_check = { private ["_playerGroups", "_players", "_allinside", "_enemyinside", "_guardinside", "_playersinside"]; _playerGroups = []; _players = playableUnits + switchableUnits; {_playerGroups pushBackUnique (group _x)} forEach _players; _allinside = allUnits select {alive _x && _x inArea [getMarkerPos _marker, 350, 350, 0, false]}; _enemyinside = _allinside select {side _x == EAST}; _guardinside = _allinside select {side _x == WEST && !(group _x in _playerGroups)}; _playersinside = _allinside select {(group _x in _playerGroups)}; ([((count _enemyinside) isEqualTo 0 && (count _playersinside) isEqualTo 0 && (count _guardinside) > 0), _guardinside]) }; while {true} do { waitUntil {sleep 10; (call _fnc_check) select 0 && !(missionNamespace getVariable format ["reinforce_%1",markerText _marker])}; // no enemy/players near && no reinforce _tocache = (call _fnc_check) select 1; _defgroup = group (selectRandom _tocache); _tocache joinSilent _defgroup; {_x disableAI "MOVE"} forEach _tocache; _id = [_defgroup] call Zen_Cache; // player commandChat format ["%1: %2",str (markerText _marker),str ([_id] call Zen_IsCached)]; // player commandChat str ([_id] call Zen_GetCachedUnits); waitUntil {sleep 10; !((call _fnc_check) select 0) || (missionNamespace getVariable format ["reinforce_%1",markerText _marker])}; // enemy/players near || reinforce null = [_id] call Zen_UnCache; // player commandChat format ["%1: %2",str (markerText _marker),str ([_id] call Zen_IsCached)]; // player commandChat str ([_id] call Zen_GetCachedUnits); sleep 2; {_x enableAI "MOVE"} forEach _tocache; _tocache = (call _fnc_check) select 1; _defgroup = group (selectRandom _tocache); _tocache joinSilent _defgroup; sleep 2; null = [_defgroup, _marker, 50, 2, false] call CBA_fnc_taskDefend; }; }; i knew, not perfect but works. Share this post Link to post Share on other sites
davidoss 552 Posted September 6, 2016 Hi Zen. Two problems: 1:Have the tasks not persistent for JIP. Are i am doing something wrong or it is supposed to works like that? if (isServer) then { _taskname = format ["reach_%1", markerText _oa]; if !([_taskname] call BIS_fnc_taskExists) then { _task = [ WEST, format ["Outpost %1 are under attack. Reach the outpost and hold the area for any cost", markerText _oa], format ["Hold the outpost %1", markerText _oa], _oa, false, "", _taskname ] call Zen_InvokeTask; sleep 2; null = [_task, "created"] call Zen_UpdateTask; }; //after task goal reached null = [_task, "succeeded"] call Zen_UpdateTask; }; Player can see the task only if connected to the server while task being created. If after player disconnect and come back the task is gone.The same for join in progress players. 2: Zen_AddLoadoutDialog will propagate in MP, so clients will see the loadouts on the menu.The loadouts will work for any machine since Zen_CreateLoadout also propagates data,as long as it is run after the 'sleep' command in the init (same for any MP synch'ing). Part of init.sqf private _data = [] call fnc_crate_loadout; if (isServer) then { { null = [_x, _data, -1, true] call Zen_AddLoadoutDialog; } forEach (allMissionObjects "B_supplyCrate_F"); }; The Loadout actions are visible only in SP. Share this post Link to post Share on other sites
Tonmeister 14 Posted September 7, 2016 there were some insights into JIP back on page 29, that you may find helpful; https://forums.bistudio.com/topic/170177-zenophons-arma-3-co-op-mission-making-framework/?p=3046010 Share this post Link to post Share on other sites
Zenophon 110 Posted September 7, 2016 Thank you Zenophon. Unfortunately i am unable to use your code as it overrun my knowledge. The circumstances of such switch are unpredictable and complicated. The situation is as fallows: there is a marker couple of blufor units around there will enemy opfor attack 3 times. there also players objective as well the fight begin if any player arrives defenders are all blufor units in range 200m controlled by server if count of defenders units < 4 they will call for reinforcement bunch of blufor units comes with a chopper joining the fight and what i need here is cache the defenders in some circumstances as fallows no any unit from players groups near (this include players as well) no enemy near and un-cache if enemy near any unit from players groups near (including players) other friendlies in area (not from players groups) more as at last run Because there is a catch, if in battle result all players die and all enemy die and reinforce on the way, the defenders left get cached. But this should wait somehow until reinforce chopper ends his route then cache all blue in range 200 from marker Such places/markers are 4. There also others problems like if there is line-of-see between outpost (about 460m), sometimes cached units prefer to run between instead of stay on place where cached or something else causing this () and i am sure that there also more fail situations which i do not have predicted so far I tried many different code to achieve this and for now I use this: fnc_cache_loop = { params ["_marker"]; private ["_fnc_check", "_tocache", "_defgroup"]; _fnc_check = { private ["_playerGroups", "_players", "_allinside", "_enemyinside", "_guardinside", "_playersinside"]; _playerGroups = []; _players = playableUnits + switchableUnits; {_playerGroups pushBackUnique (group _x)} forEach _players;, _allinside = allUnits select {alive _x && _x inArea [getMarkerPos _marker, 350, 350, 0, false]}; _enemyinside = _allinside select {side _x == EAST}; _guardinside = _allinside select {side _x == WEST && !(group _x in _playerGroups)}; _playersinside = _allinside select {(group _x in _playerGroups)}; ([((count _enemyinside) isEqualTo 0 && (count _playersinside) isEqualTo 0 && (count _guardinside) > 0), _guardinside]) }; while {true} do { waitUntil {sleep 10; (call _fnc_check) select 0 && !(missionNamespace getVariable format ["reinforce_%1",markerText _marker])}; // no enemy/players near && no reinforce _tocache = (call _fnc_check) select 1; _defgroup = group (selectRandom _tocache); _tocache joinSilent _defgroup; {_x disableAI "MOVE"} forEach _tocache; _id = [_defgroup] call Zen_Cache; // player commandChat format ["%1: %2",str (markerText _marker),str ([_id] call Zen_IsCached)]; // player commandChat str ([_id] call Zen_GetCachedUnits); waitUntil {sleep 10; !((call _fnc_check) select 0) || (missionNamespace getVariable format ["reinforce_%1",markerText _marker])}; // enemy/players near || reinforce null = [_id] call Zen_UnCache; // player commandChat format ["%1: %2",str (markerText _marker),str ([_id] call Zen_IsCached)]; // player commandChat str ([_id] call Zen_GetCachedUnits); sleep 2; {_x enableAI "MOVE"} forEach _tocache; _tocache = (call _fnc_check) select 1; _defgroup = group (selectRandom _tocache); _tocache joinSilent _defgroup; sleep 2; null = [_defgroup, _marker, 50, 2, false] call CBA_fnc_taskDefend; }; }; i knew, not perfect but works. Cached units should not be moving on their own; using enableSimulationGlobal freezes them very completely. I don't know the specifics of CBA_fnc_taskDefend, but I would advise against using any patrol function if you are not manually terminating its thread when you cache the units this is more than likely how the units seem to be moving. Also, enableAI/disableAI are unnecessary, as the caching system doesn't alter those settings. The joining of groups and the distinction between _tocache and _defgroup seem strange to me; I'm not sure what the purpose is. Another thing to note about the caching system is that calling Zen_Cache with the units as arguments will create a new cached identifier. Thus, although the variable in the script is reassigned, the caching system retains the data for the identifier internally; because the identifiers are just strings, the caching system cannot determine that no more variables hold the value and garbage collect the internal data. It is more efficient to use '[_id] call Zen_Cache' to recache the units. The function you posted is operating on one marker, which is fine for just a few markers. As an example for you or anyone else reading this, I'll post how I would code the logic you describe for multiple markers. As always there may be a few typos, but I labeled each part of the logic so that the intent is clear. _cacheIds = []; _reinforcementFlags = []; _reinforcementGroups = []; _patrolThreads = []; // Put all the markers into an array _markers = [...]; // For brevity, assume there exists a function that sends // reinforcements to a given marker and returns the group it spawns F_SendReinforcements = {...}; // Init the cache id's and other arrays _blufor = [west] call Zen_ConvertToObjectArray; { _defenders = [_blufor, compile format ["!(_this in %1)", _x]] call Zen_ArrayFilterCondition; _cacheIds pushBack ([_defenders] call Zen_Cache); _reinforcementFlags pushBack false; _reinforcementGroups pushBack grpNull; _patrolThreads pushBack scriptNull; } forEach _markers; // the main loop begins with all defenders cached while {true} do { { // divide the sleep commands between markers, to split the computations more evenly over a cycle // this helps prevent sudden performance drops if there were e.g. 50 markers // it also automatically increases the check frequency when there are fewer markers, providing better response time sleep 2; _index = _forEachIndex; // if reinforcements are enroute, the units cannot be cached if (_reinforcementFlags select _forEachIndex) then { // instead check for those reinforcements arriving if (({_x inArea (_markers select _index)} count units (_reinforcementGroups select _forEachIndex)) == (count units (_reinforcementGroups select _forEachIndex))) then { _reinforcementFlags set [_forEachIndex, false]; }; } else { // if the units are already cached, they cannot have suffered casualties since the last check // thus, we only need to determine if they must be uncached if ([_x] call Zen_IsCached) then { _players = ([getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], east] call Zen_GetAllInArea) select {isPlayer _x}; _opfor = [getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], east] call Zen_GetAllInArea; if (count _players > 0 || {count _opfor > 0}) then { 0 = [_id] call Zen_UnCache; // a slight misnomer, as this works for uncached units as well _units = [_x] call Zen_GetCachedUnits; // here you can apply any orders to the uncached AI _patrolThreads set [_forEachIndex, ([_units, _markers select _forEachIndex, [], 0, "normal", "aware", false] spawn Zen_OrderInfantryPatrol)]; }; } else { // if the units are uncached, check for the need of reinforcements _defenders = [(_markers select _forEachIndex), [], west] call Zen_GetAllInArea; if (count _defenders < 4) then { // assign the reinforcements to the arrays _reinforcementGroups set [_forEachIndex, ([_markers select _forEachIndex] call F_SendReinforcements)]; _reinforcementFlags set [_forEachIndex, true]; } else { // if no reinforcements are enroute, check if the units should be cached if !(_reinforcementFlags select _forEachIndex) then { _opfor = [getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], east] call Zen_GetAllInArea; if (count _opfor == 0) then { // nest this for a small performance gain _players = ([getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], east] call Zen_GetAllInArea) select {isPlayer _x}; if (count _players == 0) then { // end the patrol and cache the units terminate (_patrolThreads select _forEachIndex); 0 = [_x] call Zen_Cache; }; }; }; }; }; }; } forEach _cacheIds; }; Share this post Link to post Share on other sites
davidoss 552 Posted September 8, 2016 Oh many thanks looks beautiful. The reinforce function is being called from different function but it can be move here. In that case need to find a way to allow only one reinforce at the time Tried this but bad stuff happen. fnc_cache_loop = { _cacheIds = []; _reinforcementFlags = []; _reinforcementGroups = []; _patrolThreads = []; // Put all the markers into an array _markers = ["outpost1_1","outpost1_2","outpost1_3","outpost1_4"]; // For brevity, assume there exists a function that sends // reinforcements to a given marker and returns the group it spawns _F_SendReinforcements = { params ["_ao"]; missionNamespace setVariable [format ["reinforce_%1",markerText _ao], true, false]; private _hspawnPos = ["mkReinfSpawn", [0, 200], [], 1] call Zen_FindGroundPosition; private _insertionPos = [_ao, [40, 120], [], 1, [2,100],[250,370,'compass']] call Zen_FindGroundPosition; private _heli = [_hspawnPos,[ "B_Heli_Transport_03_unarmed_F", "B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F", "B_CTRG_Heli_Transport_01_sand_F", "B_CTRG_Heli_Transport_01_tropic_F" ],40,90] call Zen_SpawnHelicopter; null = [_heli, _ao] spawn { waitUntil {sleep 10; !(alive (_this select 0)) || (isNull (_this select 0))}; missionNamespace setVariable [format ["reinforce_%1",markerText (_this select 1)], false, false]; }; private _gsits = [_heli, ['All']] call Zen_GetFreeSeats; private _sitscnt = count (_gsits select 2); private _reinf_grp = [_hspawnPos, WEST, "Infantry", _sitscnt, "Men", "BLU_F", [ //blacklisted "B_soldier_UAV_F","B_soldier_PG_F","B_soldier_AA_F","B_soldier_AT_F","B_soldier_LAT_F","B_CTRG_soldier_GL_LAT_F","B_diver_F","B_diver_TL_F", "B_diver_exp_F","B_spotter_F","B_sniper_F","B_ghillie_sard_F","B_ghillie_ard_F","B_ghillie_lsh_F","B_recon_LAT_F","B_Protagonist_VR_F","B_Soldier_VR_F" ],"All"] call Zen_SpawnInfantry; sleep 2; { _x assignAsCargo _heli; _x moveInCargo _heli; } foreach (units _reinf_grp); sleep 2; null = [_heli, _insertionPos, 10, "MOVE", "CARELESS", "GREEN", "FULL", "COLUMN", " (vehicle this) land 'LAND' " ] call CBA_fnc_addWaypoint; private _heliPad = "Land_HelipadEmpty_F" createVehicle _insertionPos; waitUntil {sleep 5; ((getPos _heli) select 2) < 2}; if (alive _heli) then { _reinf_grp leaveVehicle _heli; waitUntil {sleep 5; ([_reinf_grp, _heli]) call Zen_AreNotInVehicle}; if (({alive _x} count (units _reinf_grp)) > 0) then { _wp = [_reinf_grp, _ao, 10, "MOVE", "AWARE", "WHITE", "FULL", "COLUMN", "",[0,0,0],5] call CBA_fnc_addWaypoint; }; sleep 5; null = [_heli, _hspawnPos, 10, "MOVE", "CARELESS", "GREEN", "FULL", "COLUMN", " deleteVehicle (vehicle this); {deleteVehicle _x;} forEach thislist " ] call CBA_fnc_addWaypoint; }; deleteVehicle _heliPad; (_reinf_grp) }; // Init the cache id's and other arrays _blufor = [west] call Zen_ConvertToObjectArray; { _defenders = [_blufor, compile format ["!(_this in %1)", _x]] call Zen_ArrayFilterCondition; _cacheIds pushBack ([_defenders] call Zen_Cache); _reinforcementFlags pushBack false; _reinforcementGroups pushBack grpNull; _patrolThreads pushBack scriptNull; } forEach _markers; // the main loop begins with all defenders cached while {true} do { { // divide the sleep commands between markers, to split the computations more evenly over a cycle // this helps prevent sudden performance drops if there were e.g. 50 markers // it also automatically increases the check frequency when there are fewer markers, providing better response time sleep 2; _index = _forEachIndex; // if reinforcements are enroute, the units cannot be cached if (_reinforcementFlags select _forEachIndex) then { // instead check for those reinforcements arriving if (({_x inArea (_markers select _index)} count units (_reinforcementGroups select _forEachIndex)) == (count units (_reinforcementGroups select _forEachIndex))) then { _reinforcementFlags set [_forEachIndex, false]; }; } else { // if the units are already cached, they cannot have suffered casualties since the last check // thus, we only need to determine if they must be uncached if ([_x] call Zen_IsCached) then { _players = ([getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], west] call Zen_GetAllInArea) select {isPlayer _x}; _opfor = [getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], east] call Zen_GetAllInArea; if (count _players > 0 || {count _opfor > 0}) then { 0 = [_id] call Zen_UnCache; // a slight misnomer, as this works for uncached units as well _units = [_x] call Zen_GetCachedUnits; // here you can apply any orders to the uncached AI _patrolThreads set [_forEachIndex, ([_units, _markers select _forEachIndex, [], 0, "normal", "aware", false] spawn Zen_OrderInfantryPatrol)]; }; } else { // if the units are uncached, check for the need of reinforcements _defenders = [(_markers select _forEachIndex), [], west] call Zen_GetAllInArea; if (count _defenders < 4) then { // assign the reinforcements to the arrays _reinforcementGroups set [_forEachIndex, ([_markers select _forEachIndex] call _F_SendReinforcements)]; _reinforcementFlags set [_forEachIndex, true]; } else { // if no reinforcements are enroute, check if the units should be cached if !(_reinforcementFlags select _forEachIndex) then { _opfor = [getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], east] call Zen_GetAllInArea; if (count _opfor == 0) then { // nest this for a small performance gain _players = ([getMarkerPos (_markers select _forEachIndex), [350, 350], 0, "ellipse", [], west] call Zen_GetAllInArea) select {isPlayer _x}; if (count _players == 0) then { // end the patrol and cache the units terminate (_patrolThreads select _forEachIndex); 0 = [_x] call Zen_Cache; }; }; }; }; }; }; } forEach _cacheIds; }; }; 14:22:07 Mission directory: C:\Users\DaVidoSS\Documents\Arma 3\missions\contamination_zone2.Altis\ 14:22:07 EPE manager release (66|155|0) 14:22:07 Number of actors in scene after release: 66 14:22:07 EPE manager release (0|66|0) 14:22:10 Attempt to override final function - bis_functions_list 14:22:10 Attempt to override final function - bis_functions_listpreinit 14:22:10 Attempt to override final function - bis_functions_listpostinit 14:22:10 Attempt to override final function - bis_functions_listrecompile 14:22:10 Attempt to override final function - bis_fnc_missiontaskslocal 14:22:10 Attempt to override final function - bis_fnc_missionconversationslocal 14:22:10 Attempt to override final function - bis_fnc_missionflow 14:22:10 [139737,3521.7,0,"XEH: PreInit started. v3.0.0.160713"] 14:22:10 [139737,3521.99,0,"XEH: PreInit finished."] 14:22:13 soldier[B_soldier_AR_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:13 soldier[B_soldier_AR_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:14 Save game type 14:22:16 Mission id: ecbbd42d556de8d3534729f4c258448278778874 14:22:18 [139781,3529.58,0,"XEH: PostInit started. MISSIONINIT: missionName=contamination_zone2, missionVersion=52, worldName=Altis, isMultiplayer=false, isServer=true, isDedicated=false, CBA_isHeadlessClient=false, hasInterface=true, didJIP=false isLinux=false"] 14:22:18 [139781,3529.62,0,"CBA_VERSIONING: cba=3.0.0.160713, "] 14:22:18 [139781,3529.63,0,"XEH: PostInit finished."] 14:22:22 soldier[B_soldier_AR_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:22 soldier[B_soldier_AR_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:23 soldier[B_HeavyGunner_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:23 soldier[B_HeavyGunner_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:23 soldier[B_soldier_AR_F]:Some of magazines weren't stored in soldier Vest or Uniform? 14:22:29 Error in expression <!(_this in outpost1_1)> 14:22:29 Error position: <outpost1_1)> 14:22:29 Error Undefined variable in expression: outpost1_1 14:22:29 "-- Zen_ArrayFilterCondition Error --" 14:22:29 "Given condition does not resolve to a boolean" 14:22:29 5.918 14:22:29 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}] 14:22:29 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}],5.918] 14:22:30 Error in expression <!(_this in outpost1_1)> 14:22:30 Error position: <outpost1_1)> 14:22:30 Error Undefined variable in expression: outpost1_1 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.693 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}],6.693] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.693 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.693] 14:22:30 Error in expression <!(_this in outpost1_2)> 14:22:30 Error position: <outpost1_2)> 14:22:30 Error Undefined variable in expression: outpost1_2 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.693 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_2)}] 14:22:30 Error in expression <!(_this in outpost1_1)> 14:22:30 Error position: <outpost1_1)> 14:22:30 Error Undefined variable in expression: outpost1_1 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.714 14:22:30 Error in expression <!(_this in outpost1_1)> 14:22:30 Error position: <outpost1_1)> 14:22:30 Error Undefined variable in expression: outpost1_1 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.734 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}],6.631] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.734 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_2)}],6.693] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.803 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.803] 14:22:30 Error in expression <!(_this in outpost1_3)> 14:22:30 Error position: <outpost1_3)> 14:22:30 Error Undefined variable in expression: outpost1_3 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.803 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_3)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_3)}],6.803] 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_1)}],6.714] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.823 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.823] 14:22:30 Error in expression <!(_this in outpost1_2)> 14:22:30 Error position: <outpost1_2)> 14:22:30 Error Undefined variable in expression: outpost1_2 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.823 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_2)}] 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.734] 14:22:30 Error in expression <!(_this in outpost1_2)> 14:22:30 Error position: <outpost1_2)> 14:22:30 Error Undefined variable in expression: outpost1_2 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.843 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_2)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_2)}],6.843] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.843 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.843] 14:22:30 Error in expression <!(_this in outpost1_3)> 14:22:30 Error position: <outpost1_3)> 14:22:30 Error Undefined variable in expression: outpost1_3 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.843 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_3)}] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.903 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.803] 14:22:30 Error in expression <!(_this in outpost1_4)> 14:22:30 Error position: <outpost1_4)> 14:22:30 Error Undefined variable in expression: outpost1_4 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.903 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_4)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_4)}],6.903] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_2)}],6.823] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.922 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.922] 14:22:30 Error in expression <!(_this in outpost1_3)> 14:22:30 Error position: <outpost1_3)> 14:22:30 Error Undefined variable in expression: outpost1_3 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.922 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_3)}] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_3)}],6.922] 14:22:30 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_3)}],6.843] 14:22:30 "-- Zen_Cache Error --" 14:22:30 "No cacheable units given" 14:22:30 6.942 14:22:30 [[]] 14:22:30 ["Zen_Cache",[[]],6.942] 14:22:30 Error in expression <!(_this in outpost1_4)> 14:22:30 Error position: <outpost1_4)> 14:22:30 Error Undefined variable in expression: outpost1_4 14:22:30 "-- Zen_ArrayFilterCondition Error --" 14:22:30 "Given condition does not resolve to a boolean" 14:22:30 6.942 14:22:30 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_4)}] 14:22:31 "-- Zen_Cache Error --" 14:22:31 "No cacheable units given" 14:22:31 7.007 14:22:31 [[]] 14:22:31 ["Zen_Cache",[[]],6.903] 14:22:31 "-- Zen_Cache Error --" 14:22:31 "No cacheable units given" 14:22:31 7.007 14:22:31 [[]] 14:22:31 ["Zen_Cache",[[]],6.922] 14:22:31 Error in expression <!(_this in outpost1_4)> 14:22:31 Error position: <outpost1_4)> 14:22:31 Error Undefined variable in expression: outpost1_4 14:22:31 "-- Zen_ArrayFilterCondition Error --" 14:22:31 "Given condition does not resolve to a boolean" 14:22:31 7.007 14:22:31 [[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_4)}] 14:22:31 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_4)}],7.007] 14:22:31 ["Zen_ArrayFilterCondition",[[B Alpha 1-1:1 (DaVidoSS),B Alpha 1-1:2,B Alpha 1-1:3,B Alpha 1-1:4,B Alpha 1-1:5,B Alpha 1-1:6,B Alpha 1-1:7,B Alpha 1-2:1,B Alpha 1-2:2,B Alpha 1-2:3,B Alpha 1-2:4,B Alpha 1-2:5,B Alpha 1-2:6,B Alpha 1-2:7,B Alpha 1-3:1,B Alpha 1-3:2,B Alpha 1-3:3,B Alpha 1-3:4,B Alpha 1-3:5,B Alpha 1-3:6,B Alpha 2-1:1,B Alpha 2-1:2,B Alpha 2-1:3,B Alpha 2-1:4,B Alpha 2-1:5,B Alpha 2-1:6,B Alpha 2-1:7,B Alpha 2-2:1,B Alpha 2-2:2,B Alpha 2-2:3,B Alpha 2-2:4,B Alpha 2-2:5,B Alpha 2-2:6,B Alpha 2-2:7,B Alpha 2-2:8,B Alpha 2-3:1,B Alpha 2-3:2,B Alpha 2-3:3,B Alpha 2-3:5,B Alpha 2-3:7],{!(_this in outpost1_4)}],6.942] 14:22:31 "-- Zen_Cache Error --" 14:22:31 "No cacheable units given" 14:22:31 7.029 14:22:31 [[]] 14:22:31 ["Zen_Cache",[[]],7.029] 14:22:31 "-- Zen_Cache Error --" 14:22:31 "No cacheable units given" 14:22:31 7.072 14:22:31 [[]] 14:22:31 ["Zen_Cache",[[]],7.007] 14:22:31 No speaker given for Hasan Madaki 14:22:33 "-- Zen_IsCached Error --" 14:22:33 "Invalid cache identifier given." 14:22:33 9.014 14:22:33 [""] 14:22:33 ["Zen_IsCached",[""],9.014] 14:22:33 Error in expression < [_forEachIndex, false]; }; } else { if ([_x] call Zen_IsCached) then { _play> 14:22:33 Error position: <if ([_x] call Zen_IsCached) then { _play> 14:22:33 Error if: Type Array, expected Bool 14:22:33 File C:\Users\DaVidoSS\Documents\Arma 3\missions\contamination_zone2.Altis\functions\server_fnc.sqf, line 163 14:22:33 "-- Zen_IsCached Error --" 14:22:33 "Invalid cache identifier given." 14:22:33 9.052 14:22:33 [""] 14:22:33 ["Zen_IsCached",[""],9.052] 14:22:33 Error in expression < [_forEachIndex, false]; }; } else { if ([_x] call Zen_IsCached) then { _play> 14:22:33 Error position: <if ([_x] call Zen_IsCached) then { _play> 14:22:33 Error if: Type Array, expected Bool 14:22:33 File C:\Users\DaVidoSS\Documents\Arma 3\missions\contamination_zone2.Altis\functions\server_fnc.sqf, line 163 14:22:33 "-- Zen_IsCached Error --" 14:22:33 "Invalid cache identifier given." 14:22:33 9.109 14:22:33 [""] 14:22:33 ["Zen_IsCached",[""],9.109] 14:22:33 Error in expression < [_forEachIndex, false]; }; } else { if ([_x] call Zen_IsCached) then { _play> 14:22:33 Error position: <if ([_x] call Zen_IsCached) then { _play> 14:22:33 Error if: Type Array, expected Bool 14:22:33 File C:\Users\DaVidoSS\Documents\Arma 3\missions\contamination_zone2.Altis\functions\server_fnc.sqf, line 163 Something wrong with "marker" > marker? Share this post Link to post Share on other sites