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

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

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

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

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

    Re: Вопросы.

    Возникла некоторая непонятка. Как правильно взлетать?
    Вот простенький скрипт. Как какой-нибудь самолет взлетает, то появляется надпись "Взлетел", как садится - "Сел". У меня это работает со всеми самолетами кроме самолета игрока под управлением игрока. Если включить автопилот, то взлет скрипт засчитывает. Соответственно посадка после такого взлета не засчитывается. При старте в воздухе все в порядке, при взлете автопилотом тоже все в порядке.
    Что делать с игроком?

    Код:
    public class Mission : AMission
    {
       	public override void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft)
            {
               	base.OnAircraftTookOff(missionNumber, shortName, aircraft); 
    	       GamePlay.gpHUDLogCenter("Взлетел.");
               
            }      
    
     private void checkLanded(AiAircraft aircraft)
        {
           
            GamePlay.gpHUDLogCenter("Сел.");
        }
    
        public override void OnAircraftLanded(int missionNumber, string shortName, AiAircraft aircraft)
        {
              checkLanded(aircraft);
        }
    
        public override void OnAircraftCrashLanded(int missionNumber, string shortName, AiAircraft aircraft)
        {
             checkLanded(aircraft);
        }
    
    }
    Соответственно .IsAirborne() для самолета игрока всегда ложь.
    Крайний раз редактировалось Vetochka; 03.08.2011 в 22:58.

  2. #2
    Любопытный
    Регистрация
    03.10.2005
    Адрес
    Киров
    Возраст
    41
    Сообщений
    1,386

    Re: Вопросы.

    А если вот так попробовать, будет работать?

    Код:
    public class Mission : AMission
    {   	     
     private void checkLanded(AiAircraft aircraft)
        {
            if (GamePlay.gpPlayer().Place() == aircraft)
            {            
                    GamePlay.gpHUDLogCenter("Сел игрок.");           
            }
            else
            {
                    GamePlay.gpHUDLogCenter("Сел бот.");
            }                    
        }
    
        public override void OnAircraftLanded(int missionNumber, string shortName, AiAircraft aircraft)
        {
              checkLanded(aircraft);
        }
    
        public override void OnAircraftCrashLanded(int missionNumber, string shortName, AiAircraft aircraft)
        {
             checkLanded(aircraft);
        }
    
    }
    Ну и со взлетом то же самое.
    AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"

  3. #3

    Re: Вопросы.

    Цитата Сообщение от Geniok Посмотреть сообщение
    А если вот так попробовать, будет работать?
    Не работает. Собственно изначально писалось для проверки взлета игрока иряда действий когда взлетит, а здесь выложено без чего-либо "лишнего". Т.е. проблема в том, что для самолета игрока в принципе OnAircraftTookOff не вызывается, а параметр .IsAirborne() всегда ложь. Соответственно раз не взлетал, то и сесть не может, т.е. OnAircraftLanded тоже не вызывается, когда садится игрок. Просто такое впечатление, что состояние "в воздухе" включается когда при взлете выполняется ряд операций, например, получение разрешения на взлет, отрыв, уборка шасси и еще что-то.

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

    Re: Вопросы.

    Цитата Сообщение от Vetochka Посмотреть сообщение
    Возникла некоторая непонятка. Как правильно взлетать?
    Вот простенький скрипт. Как какой-нибудь самолет взлетает, то появляется надпись "Взлетел", как садится - "Сел". У меня это работает со всеми самолетами кроме самолета игрока под управлением игрока. Если включить автопилот, то взлет скрипт засчитывает. Соответственно посадка после такого взлета не засчитывается. При старте в воздухе все в порядке, при взлете автопилотом тоже все в порядке.
    Что делать с игроком?

    Соответственно .IsAirborne() для самолета игрока всегда ложь.
    Боты и автопилот не торопятся оторваться, поэтому у них успевает событие OnTookOff срабатывать , лётчики-человеки торопятся . Попробуйте по полосе бежать подольше разгоняясь, должно сработать. Но вообще это, наверное, не очень правильно, в след. патче сделаем чтобы по отрыву срабатывало.
    Don't happy, be worry

  5. #5

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    Боты и автопилот не торопятся оторваться, поэтому у них успевает событие OnTookOff срабатывать , лётчики-человеки торопятся . Попробуйте по полосе бежать подольше разгоняясь, должно сработать. Но вообще это, наверное, не очень правильно, в след. патче сделаем чтобы по отрыву срабатывало.
    Это будет хорошо, если сделаете. А пока будем определять взлет по высоте и скорости.

Ваши права

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