Jump to content
🛡️FORUMS ARE IN READ-ONLY MODE Read more... ×
Sign in to follow this  
becario

Help with trigger condition - arresting civilians

Recommended Posts

Hi, I am creating a mission and I need some help setting up this trigger. I haven't edited in several years so I am a bit rusty now. 

So the mission involves arresting several civilians, and the task is completed once all of them are handcuffed (we are using ACE and using the zipties). I tried to create a trigger with condition "Activation: independent", type: "Detected by a civilian", and in the condition text "!this", so it should be triggered when the condition is false, so the activation would in the end be "independent not detected by civilian". 

But it does not work. I arrest all the civilians and the task is not completed. 

As per this wiki article: https://community.bistudio.com/wiki/setCaptive the civilians should stop detecting the independents once they are handcuffed, right? or am I missing something here. 

Share this post


Link to post
Share on other sites

It seems like this approach of yours will not work at all, as a civilian will always be detected as a civilian, regardless they're cuffed, captive or not. That would work if you were trying to arrest some independent characters, because then they would become civilian with "setCaptive true".

Those civilians to be arrested, are they randomly placed using a script? Or are they always there from the beginning of the mission, placed in mission editor? If is the latter, you could give them all variable names (which will automatically become global variables) and use a trigger or a script to check whether each one of those variables get in a specific stance or situation due to the use of zipties. 🤔

 

Share this post


Link to post
Share on other sites

So the wiki article is not correct in this case, since setcaptive does not stop civilians from triggering the "detected by" triggers, only the other sides. good to know. 

They are present from the begining. I had already thought of grouping them, and using a "thislist" line to check when they all are handcuffed, but since my scripting knowledge is really limited and I haven't touched the editor for a loooong time, I wanted a simpler solution. I'll keep investigating. 

 

Thanks!

Share this post


Link to post
Share on other sites
7 hours ago, becario said:

So the wiki article is not correct in this case, since setcaptive does not stop civilians from triggering the "detected by" triggers, only the other sides. good to know. 

 


Oh, but the wiki IS correct. I think that it was ME who haven't expressed myself correctly - I was trying to say that, as the civilians were and will always be civilians, whether setCaptive or not, their detection would not make any difference inside a trigger, as they were detected there already.

I have never used ACE or any other similar stuff, but I would guess that it adds some new variable to cuffed characters -  let's say your civilian subjects start something like:
{_x setVariable ["isHandCuffed", false];
} forEach _inThisList;

So if ACE change their situation, your trigger would have to search for something like:
{
private _civPrisoner = _x;
 if (_civPrisoner getVariable ["isHandCuffed", true]) then
{ SUCCESS!}
} forEach _inThisList;


So, if any of the ACE savy guys around here could spark a light, I believe you could add a check for such variable in all units "inThisList", inside an array with all your desired civilians. When true for all of then, your trigger would hit.

Share this post


Link to post
Share on other sites

...

Well, providing google AI and ChatGPT, ACE indeed provides a function for that:
[_unit] call ace_captives_fnc_isHandcuffed

So, here's their suggestion:

You can create a script that waits until all specific civilians are cuffed before triggering your condition.

Example:
 

// List of civilian variable names
private _civs = [civ1, civ2, civ3, civ4]; 

// Function to check if all are handcuffed
waitUntil {
    sleep 1; // Prevents performance issues
    ({ [_x] call ace_captives_fnc_isHandcuffed } count _civs) == count _civs
};

// Once all are handcuffed, execute your action
hint "All civilians have been restrained!";

Or, if you want to use a trigger, set its condition to:
 

({ [_x] call ace_captives_fnc_isHandcuffed } count [civ1, civ2, civ3, civ4]) == 4

 

  • Like 1

Share this post


Link to post
Share on other sites
Sign in to follow this  

×