Сообщество Империал: Добавление скриптовых функций к различным кнопкам в Medieval 2 - Сообщество Империал

Avtocrator

Добавление скриптовых функций к различным кнопкам в Medieval 2

Как же это делается
Тема создана: 19 апреля 2013, 19:18 · Автор: Avtocrator
  • 2 Страниц
  • 1
  • 2
 Avtocrator
  • Imperial
Imperial
Gorthaur2488

Дата: 19 апреля 2013, 19:18



Добавление скриптовых функций к различным кнопкам в Medieval 2



Давно уже интересовался как именно к разным кнопкам интерфейса и горячим клавишам прикручивают скриптовые события(спасибо камраду, что ссылку дал Для просмотра ссылки Зарегистрируйтесь).
Собственно в этом туторе и будет рассмотрено, каким же образом это делается в Medieval 2.

Для начала разберем уже существующие кнопки.


I. Кнопка интерфейса(непосредственное нажатие на кнопку).

В моде Stainless Steel, если играть в BGR IV сделаны дополнения в области экономики. Из-за того, что игроку приходится следить за многими статьями расходов для удобства сделали скрипт, позволяющий получать приблизительный отчет по течению денежных потоков. Под эту функцию приспособлена кнопка интерфейса "Сведения о фракции", после нажатия на которую появляется два свитка с экономической информацией. Это осуществлено с помощью следующего скриптового условия:
monitor_event ButtonPressed ButtonPressed faction_button

end_monitor

В данном случае скрипт работает только при непосредственном нажатии кнопки т.е. если вызывать "Сведения о фракции" с помощью горячей клавиши "О", то скрипт не сработает.

В моде так же использованы и другие условия, например, нажатие кнопки сражения(точно не проверял, но возможно она запускает тактические скрипты в моде).


II. Кнопка интерфейса(использование горячей клавиши).

В моде Third Age Total War также были использованы кнопки, уже имеющие определенные функции, однако если в SS 6.4 необходимо было нажать кнопку интерфейса в самой игре, то в Third Age для реализации функции палантира использовалась именно горячая клавиша. Непосредственно использование палантира осуществляется скриптовой записью:
monitor_event ShortcutTriggered ShortcutTriggered radar dec_scale

end_monitor

В данном случае скрипт сработает уже именно после нажатия горячей клавиши, а именно при изменении масштаба(увеличении) мини-карты(нажатие кнопки F3).

Другие условия для прикручивания скриптов к кнопкам можно посмотреть в файле descr_shortcuts.txt.

Теперь перейдем к добавлению своих горячих клавиш.


III. Создание новой горячей клавиши

на основе тутора камрада gracul с ТВЦ

Файлы, необходимые для добавления своей горячей клавишы необходимы два файла descr_shortcuts.txt и shortcut.txt(папка text).

Файл descr_shortcuts.txt:

В разделе DEFAULT KEYSET находим вот эти строки:
strat
save_stratmap S CTRL
load_stratmap L CTRL
speedup_ai SPACE
stop_character BACKSPACE


И добавляем сюда новую кнопку:

strat
new_button F5
save_stratmap S CTRL
load_stratmap L CTRL
speedup_ai SPACE
stop_character BACKSPACE


То же самое делаем в разделе FPS KEYSET.

Затем раздел KEY MAPPINGS. Находим:
strat
save_stratmap strat_ui
load_stratmap strat_ui
speedup_ai strat_ui
stop_character strat_ui


Добавляем сюда следующее:
strat
new_button strat_ui
save_stratmap strat_ui
load_stratmap strat_ui
speedup_ai strat_ui
stop_character strat_ui


Теперь, чтобы изменения вступили в силу, необходимо удалить файл keys.dat из папки preferences.

Использование новой кнопки в скрипте осуществляется следующим образом:
monitor_event ShortcutTriggered ShortcutTriggered strat_ui new_button

end_monitor

Скрипт будет выполнятся после нажатия кнопки F5.

Теперь файл shortcut.txt, он на функции кнопок не влияет. Единственно, что в нем можно(но не обязательно) сделать описание добавленной клавиши(оно отобразится в списке при нажатии F1).
     Аттила
    • Imperial
    Imperial
    Форумчанин

    Дата: 07 сентября 2013, 11:42

    попробовал... чет не получается, при нажатии Ф5 ничего не происходит...
    пример на ТВЦ включает "historic_event" - скрипт привязан к какому то историческому событию?
       Dart Kovu Nazgul
      • Imperial
      Imperial
      Гранд-мофф

      Дата: 08 сентября 2013, 19:13

      Аттила

      идет привязка к каому то историческому событию (historic_event)

      Это из скрипта с ТВЦ, там привязка с событию, кажется сам скрипт взят из мода Third Age Total War, там как раз скрипт начинает работать спустя время после определённого события.

      Аттила

      и еще не понял, в каком файле дожен располагаться сей скрипт (campaign_script?)

      Да, именно в нём на сколько понял по примеру мода Stainless Steel.
         Аттила
        • Imperial
        Imperial
        Форумчанин

        Дата: 08 сентября 2013, 19:30

        Dart Kovu Nazgul
        я, к сожалению, не имею описаных модов, только Рус 2: TotalWar 2.1 поэтому пример посмотреть не могу... нельзя ли выложить образец скрипта, без привязок к каким либо событиям, есть мысль, упростить Для просмотра ссылки Зарегистрируйтесь нажатием на иконку генерала, если такой скрипт возможен, в примере же речь идет о свите, а не о чертах характера
           Avtocrator
          • Imperial
          Imperial
          Gorthaur2488

          Дата: 08 сентября 2013, 22:44

          Аттила

          попробовал... чет не получается, при нажатии Ф5 ничего не происходит...
          пример на ТВЦ включает "historic_event" - скрипт привязан к какому то историческому событию?

          Скрипт привязан к кнопке, и у меня работает:

          Цитата

          monitor_event ShortcutTriggered ShortcutTriggered strat_ui mod_raz
          kill_character Henrique
          end_monitor

          monitor_event ShortcutTriggered ShortcutTriggered strat_ui mod_dva
          console_command kill_faction spain
          end_monitor

          Сразу же после нажатия кнопок к которым я привязал strat_ui mod_raz и mod_dva соответственно умирает персонаж и уничтожается фракция. Единственный раз кнопки не сработали когда я забыл удалить старый keys.dat.
             Аттила
            • Imperial
            Imperial
            Форумчанин

            Дата: 08 сентября 2013, 23:05

            Avtocrator
            кнопка задействует параметр kill, а как будет выглядеть, к примеру, убрать черту характера?
               Avtocrator
              • Imperial
              Imperial
              Gorthaur2488

              Дата: 08 сентября 2013, 23:49

              Аттила
              Например так:

              Цитата

              monitor_event ShortcutTriggered ShortcutTriggered strat_ui mod_raz
              console_command remove_trait this GoodCommander 2
              end_monitor

              Если у выделенного в данный момент персонажа есть трейт GoodCommander в значении 2, то он пропадет и останется
              GoodCommander 1

              :ps:Если во время задействования скрипта открыто описание персонажа, то его надо переоткрыть, чтоб изменения отразились в списке трейтов.
                 Аттила
                • Imperial
                Imperial
                Форумчанин

                Дата: 09 сентября 2013, 03:20

                Avtocrator
                в общем работает... но только при нажатии кнопки интерфейса, а при нажатии горячей клавиши это же функции ничего не происходит...

                делал так

                monitor_event ButtonPressed ButtonPressed faction_button
                console_command remove_ancillary this
                end_monitor


                monitor_event monitor_event ShortcutTriggered ShortcutTriggered strat_ui faction_button
                console_command remove_trait this
                end_monitor


                в первом случае пашет, во втором нет... то есть если мышкой нажать на герб, то свита исчезает, а при нажатии на клаве "О" черты характера нет...
                менял местами команды - аналогично, при нажатии кнопки интерфейса исчезают трейты, но при нажатии "О" свита на месте... :038:
                   Avtocrator
                  • Imperial
                  Imperial
                  Gorthaur2488

                  Дата: 09 сентября 2013, 09:04

                  Аттила
                  Эта кнопка не имеет записи strat_ui в файле descr_shortcuts.txt, потому ее невозможно таким образом идентифицировать. Добавьте:

                  Цитата

                  show_multi_turn_paths strat_ui
                  inc_scale radar
                  dec_scale radar
                  construction_button
                  recruitment_button
                  faction_button strat_ui
                  automerge_units campaign_hud
                  step_l camera
                  step_r camera
                  step_fwd camera
                  step_bck camera
                  rot_l camera
                  rot_r camera
                  select_next_selected hud_select_next_item_cycle
                  select_prev_selected hud_select_prev_item_cycle

                  удалите keys.dat и вот такой скрипт будет работать:

                  Цитата

                  monitor_event ShortcutTriggered ShortcutTriggered strat_ui faction_button
                  console_command give_ancillary this bodyguard
                  console_command remove_trait this GoodCommander 1
                  end_monitor

                  добавит анч и снимет трейт.
                     Аттила
                    • Imperial
                    Imperial
                    Форумчанин

                    Дата: 09 сентября 2013, 09:37

                    Avtocrator

                    Аттила (09 сентября 2013, 03:20):


                    monitor_event monitor_event ShortcutTriggered ShortcutTriggered strat_ui...

                    в первом случае пашет, во втором нет...


                    вот почему не работало... только сейчас заметил
                      • 2 Страниц
                      • 1
                      • 2
                       Похожие Темы
                      MMedieval Kingdoms: Total War - 1212 AD
                      Attila Version
                      Автор И Илья_Морозов
                      Обновление Сегодня, 00:02
                      АMedieval 2: Kingdoms - официальный аддон
                      Всё о Medieval 2: Kingdoms
                      Автор j jungo abarahu
                      Обновление Вчера, 23:58
                      ЭRetrofit Mod v 1.00 - Hotseat Medieval 2 Total War
                      Давным-давно в далекой-предалекой галактике шли... Тотальные воины
                      Автор A Alex3483
                      Обновление Вчера, 19:38
                      Воспользуйтесь одной из соц-сетей для входа
                      РегистрацияВход на форум 
                      «Империал» · Условия · Ответственность · Визитка · 20 июл 2024, 03:35 · Зеркала: Org, Site · Счётчики