В ходе работы над скриптом, возник вопрос такого плана. Имеем событие убиения зенитки. После чего стразу удаляем ее трупик. Пишем такой код:
Код:
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
{
base.OnActorDead(missionNumber, shortName, actor, damages);
if (actor is AiGroundActor)
{
(actor as AiGroundActor).Destroy();
Sss("Удалили красную зену: " + actor.Name());
}
}
и получаем стопроцентную ошибку. 
Но если пишем все в точности так же, но делаем задержку в одну секунду, то никакой ошибки не возникает.
Код:
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
{
base.OnActorDead(missionNumber, shortName, actor, damages);
if (actor is AiGroundActor)
{
Timeout(1, () =>
{
(actor as AiGroundActor).Destroy();
Sss("Удалили красную зену: " + actor.Name());
});
}
}
Почему такое происходит??? Получается, что нужно всегда делать задержку?