Добавление скриптовых функций к различным кнопкам в Medieval 2
Давно уже интересовался как именно к разным кнопкам интерфейса и горячим клавишам прикручивают скриптовые события(спасибо камраду, что ссылку дал Для просмотра ссылки Зарегистрируйтесь).
Собственно в этом туторе и будет рассмотрено, каким же образом это делается в Medieval 2.
Для начала разберем уже существующие кнопки.
I. Кнопка интерфейса(непосредственное нажатие на кнопку).
В моде Stainless Steel, если играть в BGR IV сделаны дополнения в области экономики. Из-за того, что игроку приходится следить за многими статьями расходов для удобства сделали скрипт, позволяющий получать приблизительный отчет по течению денежных потоков. Под эту функцию приспособлена кнопка интерфейса "Сведения о фракции", после нажатия на которую появляется два свитка с экономической информацией. Это осуществлено с помощью следующего скриптового условия:
monitor_event ButtonPressed ButtonPressed faction_button
end_monitor
end_monitor
В данном случае скрипт работает только при непосредственном нажатии кнопки т.е. если вызывать "Сведения о фракции" с помощью горячей клавиши "О", то скрипт не сработает.
В моде так же использованы и другие условия, например, нажатие кнопки сражения(точно не проверял, но возможно она запускает тактические скрипты в моде).
II. Кнопка интерфейса(использование горячей клавиши).
В моде Third Age Total War также были использованы кнопки, уже имеющие определенные функции, однако если в SS 6.4 необходимо было нажать кнопку интерфейса в самой игре, то в Third Age для реализации функции палантира использовалась именно горячая клавиша. Непосредственно использование палантира осуществляется скриптовой записью:
monitor_event ShortcutTriggered ShortcutTriggered radar dec_scale
end_monitor
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
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
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
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
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
end_monitor
Скрипт будет выполнятся после нажатия кнопки F5.
Теперь файл shortcut.txt, он на функции кнопок не влияет. Единственно, что в нем можно(но не обязательно) сделать описание добавленной клавиши(оно отобразится в списке при нажатии F1).