Log in

View Full Version : Can you group multiple [Action] to spawn from one time [Trigger]?


hc_wolf
03-21-2012, 08:25 AM
I want to use one time trigger to spawn multiple groups in an [ACTION] spawn

Is there a way you can spawn multiple actions when the time trigger G17 is active?



[Trigger]
G17 TTime 60


[Action]
action17 ASpawnGroup 1 BoB_LW_KuFlGr_706.01
action18 ASpawnGroup 1 BoB_LW_KuFlGr_706.04
action19 ASpawnGroup 1 BoB_LW_KuFlGr_706.02




base.OnTrigger(missionNumber, shortName, active);

if ("G17".Equals(shortName) && active)
{
AiAction action = GamePlay.gpGetAction("action17");
if (action != null)
{
action.Do();
}

FG28_Kodiak
03-21-2012, 08:37 AM
yes create a list (or array) which contains the actionnames.

Example:

List<string> ActionToDoList = new List<string>{"action17", "action18", "action19"};

if ("G17".Equals(shortName) && active)
{
ActionToDoList.ForEach(item =>
{
AiAction action = GamePlay.gpGetAction(item);
if (action != null)
{
action.Do();
}
});
}


You can also use:

if ("G17".Equals(shortName) && active)
{
AiAction action = GamePlay.gpGetAction("action17");
if (action != null)
{
action.Do();
}
action = GamePlay.gpGetAction("action18");
if (action != null)
{
action.Do();
}
action = GamePlay.gpGetAction("action19");
if (action != null)
{
action.Do();
}
}


But lists or arrays are easier to handle.

hc_wolf
03-21-2012, 08:38 AM
FG28_Kodiak I tried this with a number of other changes but I keep getting the following server error.

The name 'action' does not exist in the current context.
I have looked at other coding and can not see the problem.




base.OnTrigger(missionNumber, shortName, active);

List<string> ActionToDoList = new List<string>{"action17", "action18", "action19", "action20", "action21", "action22"};

if ("G17".Equals(shortName) && active)
{
ActionToDoList.ForEach(item =>
{
if (action != null)
{
action.Do();
}

});
}




and if I use this code I get another error saying Invalid expression term 'if'

List<string> ActionToDoList = new List<string>{"action17", "action18", "action19", "action20", "action21", "action22"};

if ("G17".Equals(shortName) && active)
{
ActionToDoList.ForEach(item =>

if (action != null)
{
action.Do();
}

});

FG28_Kodiak
03-22-2012, 04:21 AM
Hm look at my example. ;)

ActionToDoList.ForEach(item =>
{
AiAction action = GamePlay.gpGetAction(item); //<== you forget this line
if (action != null)
{
action.Do();
}
});

Second problem:

if ("G17".Equals(shortName) && active)
{
ActionToDoList.ForEach(item =>
{ //<== you forget this bracket
if (action != null)
{
action.Do();
}

});

hc_wolf
03-22-2012, 05:46 AM
Yes that got it. Gees mate. I am gonna have to put your name in lights in this next mission to be released hahaha

Thanks so much