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

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

Тема: Вопросы.

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Re: Вопросы.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Помогите, други! Как чистить трупы кораблей и крафтов? Точки на воде - это они, мертвяки, сидят и ждут свою жертву...
    ()

    А Destroy() не помогает?

    http://www.sukhoi.ru/forum/showthrea...=1#post1602377
    Здесь пример, как убрать трупики через определенное время.

    Решение для штурцев без дублирования кода

    Код:
    if (aircraft.Type() == AircraftType.Bomber || aircraft.Type() == AircraftType.Divebomber) { ... }
    Крайний раз редактировалось Small_Bee; 02.09.2011 в 15:24.

  2. #2
    3GIAP.ru Аватар для -atas-
    Регистрация
    26.12.2001
    Адрес
    Москва
    Возраст
    54
    Сообщений
    2,992
    Записей в дневнике
    1

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ()

    А Destroy() не помогает?
    У меня с кораблями засада была, они как-то не так как самолеты и танки уничтожаются.
    Вот так будет работать?
    Код:
    public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
            {
                base.OnActorDead(missionNumber, shortName, actor, damages);    
            if (actor is AiGroundGroup)
            {
                if ((actor as AiGroundGroup).Type() == AiGroundGroupType.Ship)
                {
                    AiGroundGroup shipGroup = actor as AiGroundGroup;
                    foreach (AiActor item in shipGroup.GetItems())
                    {
                        if (item is AiCart)
                        {   // 5 минут таймаут
                            Timeout(300, () =>
                            {
                                if (item != null)
                                {
                                    (item as AiCart).Destroy();  // уничтожаем
                                }
                            }
                            );
                        }
                    }
                }
            }
            }
    AiCart - это вообще кто такой?
    ...зелёные горят.
    ----------------------

    i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.

  3. #3

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    У меня с кораблями засада была, они как-то не так как самолеты и танки уничтожаются.
    Вот так будет работать?
    Код:
    public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
            {
                base.OnActorDead(missionNumber, shortName, actor, damages);    
            if (actor is AiGroundGroup)
            {
                if ((actor as AiGroundGroup).Type() == AiGroundGroupType.Ship)
                {
                    AiGroundGroup shipGroup = actor as AiGroundGroup;
                    foreach (AiActor item in shipGroup.GetItems())
                    {
                        if (item is AiCart)
                        {   // 5 минут таймаут
                            Timeout(300, () =>
                            {
                                if (item != null)
                                {
                                    (item as AiCart).Destroy();  // уничтожаем
                                }
                            }
                            );
                        }
                    }
                }
            }
            }
    AiCart - это вообще кто такой?
    Должон походу, у меня убивались - вроде ж я этот код и писал (или один из вариантов). Корабль есть группа. Сколько там мемберов хз - грохаем всех. AiCart это какой-то базовый интерфейс, именно в нем определен метод Destroy(), поэтому его и юзаю, как самый элементарный.

  4. #4
    3GIAP.ru Аватар для -atas-
    Регистрация
    26.12.2001
    Адрес
    Москва
    Возраст
    54
    Сообщений
    2,992
    Записей в дневнике
    1

    Re: Вопросы.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Это вот про это (по ссылке):
    Так тоже попробуй, кажется 1 или 2х скобок низу не хватает.

    --- Добавлено ---

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Должон походу, у меня убивались - вроде ж я этот код и писал (или один из вариантов). Корабль есть группа. Сколько там мемберов хз - грохаем всех. AiCart это какой-то базовый интерфейс, именно в нем определен метод Destroy(), поэтому его и юзаю, как самый элементарный.
    ОК, спасибо, значит лучше так.

    OnActorDead когда случается? Когда корабль тонуть начинает или когда уже утонул? там обломков полузатонувших много нужно убирать.
    ...зелёные горят.
    ----------------------

    i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.

  5. #5

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение

    OnActorDead когда случается? Когда корабль тонуть начинает или когда уже утонул? там обломков полузатонувших много нужно убирать.
    А вот этот вопрос - сложнее.
    Я где то выше писал - просто таки необходимо, что бы при повторной загрузке подмиссии убивать объекты, которые породила предыдущая загрузка. На OnActorDead полагаться полностью нельзя. Тогда не будет бардака с кучей мусора тут и там.

    Самый простой вариант - миссия контролирует сама себя. для этого

    1. Миссия "слушает" только себя.
    2. Загружает эта миссия тоже, сама себя. Исключение - только первая загрузка из миссии-хоста.
    3. Перед загрузкой самой себя прибивает все старые свои объекты.
    4. Не рожает больше никаких объектов(типа старта скриптом и т.д.) и не загружает больше никаких миссий, кроме таких же по поведению.

    В таком варианте не будет мусора, но и работать миссия будет сугубо автономно, на собственной логике.
    Крайний раз редактировалось Small_Bee; 02.09.2011 в 17:56.

  6. #6
    3GIAP.ru Аватар для -atas-
    Регистрация
    26.12.2001
    Адрес
    Москва
    Возраст
    54
    Сообщений
    2,992
    Записей в дневнике
    1

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Я где то выше писал - просто таки необходимо, что бы при повторной загрузке подмиссии убивать объекты, которые породила предыдущая загрузка.
    Мы это сами не сочиним. Готового варианта скрипта нет для зачистки?

    Там кстати кораблики рождаются каждые 40 минут (или час), а плыть им 2.5 часа. Т.е. убивать их нельзя перед повторной загрузкой, они треть пути только пройдут. Сейчас стоит вопрос только об обломках а не о целых кораблях. Целые мы в конце пути превратим в обломки.
    ...зелёные горят.
    ----------------------

    i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.

Ваши права

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