
Сообщение от
-atas-
Аналогичная проблема существует так же с танкерами, танками, дымами.
Можно было бы для танкеров, танков и дымов использовать аналогичный скрипт(см. ниже), но исполняемый только минут через 50 после подгрузки подмиссии? Как он будет выглядеть?
Если объекты создаются только во время загрузки миссий, мы можем уменьшить эту проблему до: объекты должны умереть после минут XXX от их создания. Тогда, мы можем использовать:
Код:
public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
{
base.OnActorCreated(missionNumber,shortName,actor);
//Ground objects will die after 50 min when counted from their birth
if (actor is AiGroundActor)
Timeout (3000, () =>
{ if (actor != null)
{ (actor as AiGroundActor).Destroy(); }
}
);
}
--- Добавлено ---

Сообщение от
-atas-
Вставлять MissionNumberListener=-1, как понимаю, лучше в начало файла?
В методе Init (). Он выполняется, когда миссия начинается. Нет никакой разницы, в каком порядке методы определены в классе, так что вы можете поместить его в начале, конце или середине.

Сообщение от
-atas-
Out of bounds мы получали по-моему именно для 2х-моторных 110х емнип (и только для них). Но в любом случае исправим.
Давайте брать пример. Игрок покидает Spitfire в воздухе, скрипт пытается сделать некоторые повреждения. Spitfire имеет только один двигатель, поэтому скрипт успешно убивает двигателя № 1. Тогда скрипт продолжается, и пытается убить двигатель № 2, которой не существует, и в результате появляется ошибка "Out of bounds".
Я просто предложили такие изменения кода, что скрипт будет убивать не более двигателей, чем есть в самолете.