...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Ага. Я уже нашел в примерах. Это наконец-то сработало. Большое спасибо!
Bbb = GamePlay.gpActorByName(ActorName.Full(2, "Static4")); //Где "двойка" это номер миссии
Теперь начну ковыряться дальше...
Я понял, о чем ты. Но у меня не так.
P.S.
Не знаю, вопрос в тему или нет. А правда, что у зениток, находящихся в группе, заканчиваются патроны?![]()
Нет в русском языке слова дешеГО. Есть слово дешеВО.
В ходе работы над скриптом, возник вопрос такого плана. Имеем событие убиения зенитки. После чего стразу удаляем ее трупик. Пишем такой код:
и получаем стопроцентную ошибку.Код: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()); }); } }
Нет в русском языке слова дешеГО. Есть слово дешеВО.
Вы уничтожаете объект (actor as AiGroundActor).Destroy(); а затем - пытаетесь получить его имя - actor.Name(). Если актор уже успел задестроиться, то Вы пытаетесь получить .Name() от null-a, что даст ошибку естественно. С таймаутом дестрой может позже произойти поэтому ошибки не будет.
Можно сделать что-то типа этого -
Код:public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages) { base.OnActorDead(missionNumber, shortName, actor, damages); if (actor is AiGroundActor) { string actorName = actor.Name(); (actor as AiGroundActor).Destroy(); if (actor == null) Sss("Удалили красную зену: " + actorName); } }
Don't happy, be worry