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

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

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

Древовидный режим

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

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

    Да нет же! Там все не то. Там по событию OnActorCreated на каждого вновь созданного актора заводится свой личный таймер. Этот свой личный уникальный таймер помнит каждого своего актора по его имени (ну, или еще как-то там). Когда подходит срок кончины актора, то таймер, постоянно зная и не забывая своего родного актора, убивает его.

    Вот код из тех примеров:
    Код:
    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
    {
        base.OnActorCreated(missionNumber, shortName, actor);
    
        //Ground objects will die after 55 min when counted from their birth
        if (actor is AiGroundActor)
        Timeout(3300, () =>
            {
                if (actor != null)
                { (actor as AiGroundActor).Destroy(); }
            }
                );
    }

    У меня в миссии вообще нет таймеров. Мне это не нужно и не интересно. Созданные мною объекты - "Артиллерия", существуют бесконечно долго. Скажем, в ходе битвы половина будет уничтожена, другая половина останется. Сработает некое условие. По моей задумке и сценарию, этим условием будет являться убиение шести вражеских зениток на любых ВПП противника. Как только это будет сделано, условие срабатывает и подмиссия, ответственная за загрузку зениток на ВПП, загружает в виде бонуса, для выигрывавшей стороны, новые зенитки на всех дружественных ВПП. Но прежде, чем загрузить новые зенитки, нужно убить все оставшиеся старые зенитки (которые еще не были подбиты или которые еще только догорают). Ну, чтобы не было каши. Чтобы одна зенитка не становилась на другую зенитку.

    От Small_Bee есть замечательный пример чистки всего того, что есть в миссиях циклами "foreach".
    Пример...
    Сканируем все существующие армии в битве:
    foreach (int army in GamePlay.gpArmies())
    В тело этого основного цикла вкладываем цикл по перебору всех существующий групп в этих армиях:
    foreach (AiAirGroup group in airGroups)
    И уже в тело этого цикла вкладываем последний цикл по перебору всех акторов в группе:
    foreach (AiActor actor in group.GetItems())

    И все бы хорошо. Но у меня в миссии нет групп!!! У меня есть отдельно стоящие объекты типа "Артиллерия". Которые группами не являются. Вот я и не пойму, как мне циклом, или не циклом, перебрать все эти объекты и удалить их.

    Цитата Сообщение от -atas- Посмотреть сообщение
    ...Видимо проще загружать отдельную подмиссию только с этими объектами...
    Разумеется так и делаю. Одна подмиссия грузит все Синие зенитки на всех ВПП Синих, другая грузит Красные...

    Цитата Сообщение от -atas- Посмотреть сообщение
    ...и удалять соответственно только объекты этой подмиссии.
    Как это сделать???!!!
    Крайний раз редактировалось SlavikSG; 25.11.2011 в 10:59.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

Ваши права

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