Цитата Сообщение от -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".

Я просто предложили такие изменения кода, что скрипт будет убивать не более двигателей, чем есть в самолете.