???
Математика на уровне МГУ

Показано с 1 по 25 из 168

Тема: Полный редактор и скрипты.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    61
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ... Вот кстати и получение актора по имени
    curActor = GamePlay.gpActorByName(nameActor) as AiGroundActor;
    Ага. Я уже нашел в примерах. Это наконец-то сработало. Большое спасибо!
    Bbb = GamePlay.gpActorByName(ActorName.Full(2, "Static4")); //Где "двойка" это номер миссии
    Теперь начну ковыряться дальше...

    Цитата Сообщение от -atas- Посмотреть сообщение
    Если я правильно понимаю, то каждая зенитка - это группа, состоящая из одного актора...
    Я понял, о чем ты. Но у меня не так.

    P.S.
    Не знаю, вопрос в тему или нет. А правда, что у зениток, находящихся в группе, заканчиваются патроны?
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  2. #2

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Ага. Я уже нашел в примерах. Это наконец-то сработало. Большое спасибо!
    Bbb = GamePlay.gpActorByName(ActorName.Full(2, "Static4")); //Где "двойка" это номер миссии
    Теперь начну ковыряться дальше...


    Я понял, о чем ты. Но у меня не так.

    P.S.
    Не знаю, вопрос в тему или нет. А правда, что у зениток, находящихся в группе, заканчиваются патроны?
    Да. Интерфейсов для перезарядки пока нет, т.е. надо удалить старую и поставить новую.

  3. #3
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    61
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Да. Интерфейсов для перезарядки пока нет, т.е. надо удалить старую и поставить новую.
    Ага. Видимо я поэтому и уперся рогом именно в тип наземки "Артиллерия", а не "Броня".
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  4. #4
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    61
    Сообщений
    441

    Re: Полный редактор и скрипты.

    В ходе работы над скриптом, возник вопрос такого плана. Имеем событие убиения зенитки. После чего стразу удаляем ее трупик. Пишем такой код:
    Код:
    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());
           });
       }
    }
    Почему такое происходит??? Получается, что нужно всегда делать задержку?
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  5. #5
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    61
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    и получаем стопроцентную ошибку.
    Небольшое дополнение...
    В логе сервера пишется ошибка, но зенитка все равно исправно удаляется.
    (это я выяснил уже потом)
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  6. #6
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    46
    Сообщений
    6,905
    Images
    51

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    В ходе работы над скриптом, возник вопрос такого плана. Имеем событие убиения зенитки. После чего стразу удаляем ее трупик. Пишем такой код:
    Код:
    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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •