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

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

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

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

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Код:
    public override void OnTrigger(int missionNumber, string shortName, bool active)
        {
            base.OnTrigger(missionNumber, shortName, active);
    
            if ("A_defend_B".Equals(shortName) && active)
            {       
                smpSendMSG.SendMessageToAll("*** Юнит красных вошел в зону - подмиссия [ {0} ], trigger - [ {1} ]", "Chat", missionNumber, shortName);
                GamePlay.gpGetTrigger(shortName).Enable = false;
            }
        }
    Не срабатывает триггер после первого раза.
    Пробовал и так:
    GamePlay.gpGetTrigger(shortName).Enable = true;

    Может вообще не так делаю?
    Посмотрел, вспомнил как оно работает . active устанавливается при входе объекта в зону триггера, сбрасывается при выходе из зоны, OnTrigger срабатывает и в первом и во втором случае. Т.о. если машинка заехала в зону триггера и не выехала - active будет true и следующая въехавшая машинка изменить и, соответственно, вызвать OnTrigger не сможет. Если машинка проехала зону триггера - на въезде она установит active , на выезде снимет его (будет 2 вызова OnTrigger ), следующая машинка въехав установит active, выехав - снимет, и т.д. Ну а Enable - просто разрешает или запрещает работу триггера.
    Don't happy, be worry

  2. #2
    hehehe 111 Аватар для podvoxx
    Регистрация
    25.08.2008
    Адрес
    Барнаул - Питер
    Возраст
    41
    Сообщений
    4,245

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    Посмотрел, вспомнил как оно работает . active устанавливается при входе объекта в зону триггера, сбрасывается при выходе из зоны, OnTrigger срабатывает и в первом и во втором случае. Т.о. если машинка заехала в зону триггера и не выехала - active будет true и следующая въехавшая машинка изменить и, соответственно, вызвать OnTrigger не сможет. Если машинка проехала зону триггера - на въезде она установит active , на выезде снимет его (будет 2 вызова OnTrigger ), следующая машинка въехав установит active, выехав - снимет, и т.д. Ну а Enable - просто разрешает или запрещает работу триггера.
    Т.е. если машина не выезжает из зоны триггера, то он больше не сработает? А можно добавить "одноразовый" триггер в игру, который будет срабатывать только при входе объекта в зону без учета вышел он оттуда или нет? Или может есть другое средство. Есть триггер с радиусом, с разных направлений в него заходят танки. Если делать пересечение зоны триггера, то их нужно будет несколько расставлять, что не вариант. Городить подсчет в радиусе от какой-то точки тоже неудобно.

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

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Т.е. если машина не выезжает из зоны триггера, то он больше не сработает? А можно добавить "одноразовый" триггер в игру, который будет срабатывать только при входе объекта в зону без учета вышел он оттуда или нет? Или может есть другое средство. Есть триггер с радиусом, с разных направлений в него заходят танки. Если делать пересечение зоны триггера, то их нужно будет несколько расставлять, что не вариант. Городить подсчет в радиусе от какой-то точки тоже неудобно.
    Или добавить доступ к вэйпоинтам наземки, т.е. если достигла определенной точки, что-то срабатывает(у самолетов вроде должно такое быть). Про контроль над вэйпоинтами наземки на желтом также писали, можно было бы легко дестроить технику, достигшую последней точки маршрута. Сейчас по таймеру делают, что не удобно.

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Т.е. если машина не выезжает из зоны триггера, то он больше не сработает? А можно добавить "одноразовый" триггер в игру, который будет срабатывать только при входе объекта в зону без учета вышел он оттуда или нет? Или может есть другое средство. Есть триггер с радиусом, с разных направлений в него заходят танки. Если делать пересечение зоны триггера, то их нужно будет несколько расставлять, что не вариант. Городить подсчет в радиусе от какой-то точки тоже неудобно.
    Одноразовый триггер и сработает один раз, его в любом случае для многоразовости надо сбрасывать. Можно как Small_Bee написал делать, или поставить "проходной" триггер на предпоследнюю точку маршрута и маршрут строить так, чтобы, перед финальной точкой группа проезжала через триггер - тогда не важно будет, откуда группа подошла и триггер будет один.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    Или добавить доступ к вэйпоинтам наземки, т.е. если достигла определенной точки, что-то срабатывает(у самолетов вроде должно такое быть). Про контроль над вэйпоинтами наземки на желтом также писали, можно было бы легко дестроить технику, достигшую последней точки маршрута. Сейчас по таймеру делают, что не удобно.
    по отдельным вэйпоинтам нельзя их слишком много будет, т.к. в процессе движения в маршрут могут добавлятся точки при нападении врагов, объезде препятствий и т.д. будет очень много "мусорных" ивентов, а на последеней точке маршрута вызывается OnActorTaskCompleted, таймер не надо. Можно ещё проверить точку маршрута через GetWay и GetCurrentWayPoint() у наземки - они покажут где на маршруте сейчас группа.
    Don't happy, be worry

  4. #4
    hehehe 111 Аватар для podvoxx
    Регистрация
    25.08.2008
    Адрес
    Барнаул - Питер
    Возраст
    41
    Сообщений
    4,245

    Re: Вопросы.

    1.
    Цитата Сообщение от naryv Посмотреть сообщение
    а на последеней точке маршрута вызывается OnActorTaskCompleted, таймер не надо.
    А точно работает? Попробовал - ноль реакции. Проверял так:

    Код:
    public override void OnActorTaskCompleted(int missionNumber, string shortName, maddox.game.world.AiActor actor)
        {
            base.OnActorTaskCompleted(missionNumber, shortName, actor);
    
            if (actor != null)
            {
                if (actor is AiGroundActor)
                {
                    AiGroundActor groundActor = actor as AiGroundActor;
                    if (groundActor != null)
                    {
                        SendMessage.ToAll("*** Actor Task Completed: mission - [{0}], shortName - [{1}], actor - [{2}]", "Chat", missionNumber, shortName, actor);
                    }
                }
            }
        }
    2. Прозрачные воронки.
    Вроде были нормальные раньше, вчера проверил - боты проезжают сквозь них. При вкюченной коллизии можно было бы использовать для блокировки аэродромов, сейчас просто для красоты получается. В связи с этим на желтом тоже кто-то спрашивал - нельзя остановить поезд разбомбив ж/д пути. Возможно включение коллизии?

Ваши права

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