
Сообщение от
Vetochka
Именно так. Но с триггерами все просто.
Внутри AMission дописываем следующее:
Код:
public class Mission : AMission
{
// ------здесь скрипт, который уже был, его не трогать. Вставлять дописанное перед последней скобкой скрипта
// ----- вставлять отсюда -----------------
public override void OnTrigger(int missionNumber, string shortName, bool active)
{
AiAction action;
if ("tname1".Equals(shortName) && active) //tmane1 - имя 1-го триггера
{
GamePlay.gpGetTrigger(shortName).Enable = false;
action = GamePlay.gpGetAction("aname1"); //aname1 - имя действия 1, которое вызывается по срабатыванию 1-го триггера
if (action != null)
{
action.Do();
}
}
if ("tname2".Equals(shortName) && active) //tmane2 - имя 2-го триггера
{
GamePlay.gpGetTrigger(shortName).Enable = false;
action = GamePlay.gpGetAction("aname2"); //aname2 - имя действия 2, которое вызывается по срабатыванию 2-го триггера
if (action != null)
{
action.Do();
}
}
// аналогично можно вставлять сколько удодно триггеров и привязывать к ним действия
}
// ------------ до сюда
} // а это последняя скобка скрипта :)
Можно ещё проще :
Код:
public override void OnTrigger(int missionNumber, string shortName, bool active)
{
base.OnTrigger(missionNumber, shortName, active);
AiAction action = GamePlay.gpGetAction(ActorName.Full(missionNumber, shortName));
if (action != null)
action.Do();
}
так все триггеры будут запускать одноимённые экшены, не надо на каждый триггер код писать.

Сообщение от
-atas-
После добавления этого куска кода в скрипт триггеры редактора начинают работать со скриптом.
а в чём "скрип"? Может быть MissionNumberListener неверно установлен? Напомню, на всякий случай - по умолчанию каждая миссия "слышит" только свои события, т.е. если управляющий скрипт у нас в первой запущенной миссии, она не узнает о событии вызванном триггером или актором в подгруженной другой миссии. Чтобы скрипт "слышал" все события - надо установить параметр MissionNumberListener в -1 , вот так:
Код:
public override void OnBattleStarted()
{
base.OnBattleStarted();
MissionNumberListener = -1;
}
, теперь такая миссия "слышит" события во всех дозагруженных миссиях .