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

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

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

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

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

    Re: Вопросы.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Самое прикольное, что когда в редакторе создаешь триггеры-действия, то в разделе скрипты естественно появляются скрипты. Но когда заходишь в папку с миссией, то там один только файл .mis. Т.е. для нормальной работы .cs файл создавать неизбежно (даже, чтобы воткнуть скрипт Vetochki), а Atas говорит, что если создать .cs, то он перебьет внутренние скрипты миссии (к-е, создаются автоматом на триггеры внутри редактора).
    Именно так. Но с триггерами все просто.
    Внутри AMission дописываем следующее:


    Код:
    public class Mission : AMission
    {
    // ------здесь скрипт, который уже был, его не трогать. Вставлять дописанное перед последней скобкой скрипта 
    // ----- вставлять отсюда -----------------
    public override void OnTrigger(int missionNumber, string shortName, bool active)
        {
          
            AiAction action;
    if ("tname1".Equals(shortName) && active) //tmane1 - имя 1-го триггера 
            {
                GamePlay.gpGetTrigger(shortName).Enable = false;
                action = GamePlay.gpGetAction("aname1"); //aname1 - имя действия 1, которое вызывается по срабатыванию 1-го триггера
                if (action != null)
                {
                    action.Do();
                }
           }
    
    if ("tname2".Equals(shortName) && active) //tmane2 - имя 2-го триггера 
            {
                GamePlay.gpGetTrigger(shortName).Enable = false;
                action = GamePlay.gpGetAction("aname2"); //aname2 - имя действия 2, которое вызывается по срабатыванию 2-го триггера
                if (action != null)
                {
                    action.Do();
                }
           }
    // аналогично можно вставлять сколько удодно триггеров и привязывать к ним действия
    
    
        }
    // ------------ до сюда
    } // а это последняя скобка скрипта :)

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

    Re: Вопросы.

    Цитата Сообщение от Vetochka Посмотреть сообщение
    Внутри AMission дописываем следующее:
    После добавления этого куска кода в скрипт триггеры редактора начинают работать со скриптом.

    Я бы добавил, что имена, группы и прочее тригеров 1 и 2 и действий 1 и 2 задаются в редакторе. Для меня это было откровением в свое время.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от Vetochka Посмотреть сообщение
    Именно так. Но с триггерами все просто.
    Внутри AMission дописываем следующее:


    Код:
    public class Mission : AMission
    {
    // ------здесь скрипт, который уже был, его не трогать. Вставлять дописанное перед последней скобкой скрипта 
    // ----- вставлять отсюда -----------------
    public override void OnTrigger(int missionNumber, string shortName, bool active)
        {
          
            AiAction action;
    if ("tname1".Equals(shortName) && active) //tmane1 - имя 1-го триггера 
            {
                GamePlay.gpGetTrigger(shortName).Enable = false;
                action = GamePlay.gpGetAction("aname1"); //aname1 - имя действия 1, которое вызывается по срабатыванию 1-го триггера
                if (action != null)
                {
                    action.Do();
                }
           }
    
    if ("tname2".Equals(shortName) && active) //tmane2 - имя 2-го триггера 
            {
                GamePlay.gpGetTrigger(shortName).Enable = false;
                action = GamePlay.gpGetAction("aname2"); //aname2 - имя действия 2, которое вызывается по срабатыванию 2-го триггера
                if (action != null)
                {
                    action.Do();
                }
           }
    // аналогично можно вставлять сколько удодно триггеров и привязывать к ним действия
    
    
        }
    // ------------ до сюда
    } // а это последняя скобка скрипта :)

    Можно ещё проще :
    Код:
     
    public override void OnTrigger(int missionNumber, string shortName, bool active)
        {
            base.OnTrigger(missionNumber, shortName, active);        
            AiAction action = GamePlay.gpGetAction(ActorName.Full(missionNumber, shortName));
            if (action != null)
                action.Do();
        }
    так все триггеры будут запускать одноимённые экшены, не надо на каждый триггер код писать.


    Цитата Сообщение от -atas- Посмотреть сообщение
    После добавления этого куска кода в скрипт триггеры редактора начинают работать со скриптом.
    а в чём "скрип"? Может быть MissionNumberListener неверно установлен? Напомню, на всякий случай - по умолчанию каждая миссия "слышит" только свои события, т.е. если управляющий скрипт у нас в первой запущенной миссии, она не узнает о событии вызванном триггером или актором в подгруженной другой миссии. Чтобы скрипт "слышал" все события - надо установить параметр MissionNumberListener в -1 , вот так:
    Код:
    public override void OnBattleStarted()
    {
         base.OnBattleStarted();
         MissionNumberListener = -1;
    }
    , теперь такая миссия "слышит" события во всех дозагруженных миссиях .
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    так все триггеры будут запускать одноимённые экшены, не надо на каждый триггер код писать.
    В свое время я просто не знал, что такой код можно вставить в скрипт, чтобы триггеры заданные в редакторе работали вместе со скриптом брошенным в папку миссии. Т.е. одноименные триггеры заданные в редакторе у меня срабатывали пока у миссии не было скрипта, а как только у миссии появлялся любой скрипт, то почему-то триггеры, заданные в редакторе, но не прописанные в скрипте переставали работать.

    Можно было бы это устранить, чтобы не обязательно было в скрипт вставлять этот код, а было бы достаточно задать триггер и акшн в редакторе. andersbravers не даст соврать, скрипты для картодела это что-то совсем непонятное и отталкивающее на первом этапе. andersbravers например сделал больше недели назад миссию для Р1, а оказалось, что триггеры заданные в редакторе в ней не работают, т.к. не прописаны в скрипте. Т.е. на тестовой карте без скрипта триггеры работают, а когда переносишь их в миссию со скриптом триггеры перестают работать. Непорядок
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

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

    Можно было бы это устранить, чтобы не обязательно было в скрипт вставлять этот код, а было бы достаточно задать триггер и акшн в редакторе. andersbravers не даст соврать, скрипты для картодела это что-то совсем непонятное и отталкивающее на первом этапе. andersbravers например сделал больше недели назад миссию для Р1, а оказалось, что триггеры заданные в редакторе в ней не работают, т.к. не прописаны в скрипте. Т.е. на тестовой карте без скрипта триггеры работают, а когда переносишь их в миссию со скриптом триггеры перестают работать. Непорядок
    Понятно. Ну тут получается так - если создателю миссии достаточно просто триггеров и средств редактора, без скриптов - тогда связка триггер-экшн работает без скрипта. Ну а если планируется использовать скрипт - тогда надо написать, что делать с этой связкой в миссии - т.к. управление игровыми событиями переходит к скрипту, предполагается, что если создатель миссии пишет скрипт, он сможет записать и вышеописанную конструкцию, либо свою обработку реакции миссии на триггер.
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    предполагается, что если создатель миссии пишет скрипт, он сможет записать и вышеописанную конструкцию, либо свою обработку реакции миссии на триггер.
    Есть еще 3я категория пользователей, достаточно многочисленная, которая триггеры пишет в редакторе, а потом скачивает с форума какой-нибудь скрипт с нужным функционалом и бросает его в папку с миссией. Важно, чтобы все, что было создано в редакторе не переставало при этом работать, включая триггеры и экшны.

    PS. Кстати, на продолжение темы танковых битв для Репки2 можно надеяться? Не к спеху, просто когда -нибудь?
    ...зелёные горят.
    ----------------------

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

Ваши права

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