Сичевые Свитки - Статья - Редактирование элементов меню M2TW и RTW
Редактируем главное меню M2TW и RTW
Spoiler (expand)
В этом туторе я расскажу о том, как можно перемещать, менять местами или удалять кнопки из меню РТВ, а также некоторые детали интерфейса. Это бывает жизненно необходимо для вашего мода в случае, к примеру, когда какая-то из функций оригинальной игры им не поддерживается (распространённый пример: многими модами для Рима не поддерживается режим "быстрой битвы" или "имперской кампании".
Итак, нам понадобятся две вещи: достаточная доля терпения и внимательность. В самой работе нет ничего сложного и из ряда вон выходящего, достаточно немного попрактиковаться, и результат будет отличным.
Для работы рекомендую программку Araxis Merge (сравнение текстовых и других файлов, выделение измененных фрагментов), хотя она не обязательна.
1) В первую очередь мы должны чётко представлять, что мы хотим увидеть. Не будет лишним нарисовать простенькое древо меню игры, чтобы наглядно увидеть, какая кнопка на какую ссылается и какие кнопки на какой странице расположены. Это самая простая часть.
2) Как же нам добиться такого расположения кнопок? Ищем файл ....menuRome.lnt и открываем с помощью текстового редактора. К сожалению, файл весьма неудобен по структуре, напоминает XML, но XML - редакторы его не берут, в общем, прийдётся редактировать его вручную, благо, изменения не так уж глобальны.
Структура документа следующая: последовательно, страница за страницей, описывается всё меню и детали интерфейса игры.
<lpage> </lpage> - так размечаются начало и конец страницы в меню. Будьте внимательны!
Дальше для удобства я не буду указывать закрывающие теги.
<UI piece> - так обозначается навигационный элемент интерфейса, т.е. кнопка, переносящая нас в новую страницу меню
<identifier> - команда, выполняющаяся при нажатии кнопки
<Parameters> - координаты. Соответственно X и Y. О них чуть позже.
<width>, <height> -соответственно ширина и высота кнопки. Об этом тоже чуть позже.
<object_id> - уникальное имя объекта интерфейса. Это нам не понадобится.
<UI text> - очень полезное поле! С помощью него можно найти соответствия между кнопками и их переводом в файлике ...text/menu_english.txt
Остальное нам тоже не понадобится. Итак, перейдём к кнопкам.
3) Ниже приведён для примера отрывок кода страницы меню, содержащей три кнопки. Я выделил красным шрифтом то, на что нам нужно обратить внимание.
Я выделил координаты кнопок и их параметры (ширина, высота). В чём особенность? Координаты рассчитываются из условия минимального разрешения экрана: 1024*768 - представьте себе, что мы нанесли сетку, по горизонтали значения которой варьируются от -256 до 768, а по вертикали от 0 до 768. Значение координат по Y мы не можем взять больше чем 768 минус (высота кнопки), иначе элемент меню попадёт за край экрана.
Поэкспериментируйте с перемещением кнопок и настройте меню так, как вам подскажет ваша фантазия) Высоту и ширину лучше не менять, но всякое бывает - может вы нарисуете собственные кнопки на фоновом рисунке и вам понадобится поменять границы текущих.
В этом туторе я расскажу о том, как можно перемещать, менять местами или удалять кнопки из меню РТВ, а также некоторые детали интерфейса. Это бывает жизненно необходимо для вашего мода в случае, к примеру, когда какая-то из функций оригинальной игры им не поддерживается (распространённый пример: многими модами для Рима не поддерживается режим "быстрой битвы" или "имперской кампании".
Итак, нам понадобятся две вещи: достаточная доля терпения и внимательность. В самой работе нет ничего сложного и из ряда вон выходящего, достаточно немного попрактиковаться, и результат будет отличным.
Для работы рекомендую программку Araxis Merge (сравнение текстовых и других файлов, выделение измененных фрагментов), хотя она не обязательна.
1) В первую очередь мы должны чётко представлять, что мы хотим увидеть. Не будет лишним нарисовать простенькое древо меню игры, чтобы наглядно увидеть, какая кнопка на какую ссылается и какие кнопки на какой странице расположены. Это самая простая часть.
2) Как же нам добиться такого расположения кнопок? Ищем файл ....menuRome.lnt и открываем с помощью текстового редактора. К сожалению, файл весьма неудобен по структуре, напоминает XML, но XML - редакторы его не берут, в общем, прийдётся редактировать его вручную, благо, изменения не так уж глобальны.
Структура документа следующая: последовательно, страница за страницей, описывается всё меню и детали интерфейса игры.
<lpage> </lpage> - так размечаются начало и конец страницы в меню. Будьте внимательны!
Дальше для удобства я не буду указывать закрывающие теги.
<UI piece> - так обозначается навигационный элемент интерфейса, т.е. кнопка, переносящая нас в новую страницу меню
<identifier> - команда, выполняющаяся при нажатии кнопки
<Parameters> - координаты. Соответственно X и Y. О них чуть позже.
<width>, <height> -соответственно ширина и высота кнопки. Об этом тоже чуть позже.
<object_id> - уникальное имя объекта интерфейса. Это нам не понадобится.
<UI text> - очень полезное поле! С помощью него можно найти соответствия между кнопками и их переводом в файлике ...text/menu_english.txt
Остальное нам тоже не понадобится. Итак, перейдём к кнопкам.
3) Ниже приведён для примера отрывок кода страницы меню, содержащей три кнопки. Я выделил красным шрифтом то, на что нам нужно обратить внимание.
...
<lpage>new_game
...
<UI piece>new_game_provincial_campaign
<identifier>UIP_PROVINICIAL_CAMPAIGN</identifier>
<Parameters>
<x>256</x>
<y>280</y>
<width>512</width>
<height>38</height>
...
<UI piece>new_game_historical_battles
<identifier>UIP_HISTORICAL_BATTLES</identifier>
<Parameters>
<x>256</x>
<y>319</y>
<width>513</width>
<height>38</height>
...
<UI piece>new_game_custom_battle
<identifier>UIP_CLEAR_MENU_BUTTON</identifier>
<Parameters>
<x>255</x>
<y>380</y>
<width>512</width>
<height>38</height>
...
</lpage>
...
Я выделил координаты кнопок и их параметры (ширина, высота). В чём особенность? Координаты рассчитываются из условия минимального разрешения экрана: 1024*768 - представьте себе, что мы нанесли сетку, по горизонтали значения которой варьируются от -256 до 768, а по вертикали от 0 до 768. Значение координат по Y мы не можем взять больше чем 768 минус (высота кнопки), иначе элемент меню попадёт за край экрана.
Поэкспериментируйте с перемещением кнопок и настройте меню так, как вам подскажет ваша фантазия) Высоту и ширину лучше не менять, но всякое бывает - может вы нарисуете собственные кнопки на фоновом рисунке и вам понадобится поменять границы текущих.
Удаляем кнопку меню
Spoiler (expand)
Допустим, вы хотите, чтобы в меню вашего мода не было кнопки "исторические битвы".
Тогда надо удалить из документа (стандартный для других файлов Рима значок ";" не поможет) вот этот фрагмент:
Аналогично с любой желаемой кнопкой. Только не удалите случайно кнопку "новая игра", хехе -_- Значения, которые прописаны в поле UI_text, как я уже говорил, можно сверять со значениями в левой части текстовика ....data/text/menu_english.txt
Допустим, вы хотите, чтобы в меню вашего мода не было кнопки "исторические битвы".
Тогда надо удалить из документа (стандартный для других файлов Рима значок ";" не поможет) вот этот фрагмент:
<UI piece>new_game_historical_battles
<identifier>UIP_HISTORICAL_BATTLES</identifier>
<Parameters>
<x>256</x>
<y>319</y>
<width>513</width>
<height>38</height>
<menu_id>historical_battle</menu_id>
<UI text>UI_NEW_GAME_HISTORICAL_BATTLE
<font_id>arial_split_CAF</font_id>
<align>centre</align>
</UI text>
<tool_tip_id>UI_NEW_GAME_HISTORICAL_BATTLE_INFO</tool_tip_id>
</Parameters>
<object_id>empty_push_button</object_id>
</UI piece>
Аналогично с любой желаемой кнопкой. Только не удалите случайно кнопку "новая игра", хехе -_- Значения, которые прописаны в поле UI_text, как я уже говорил, можно сверять со значениями в левой части текстовика ....data/text/menu_english.txt
Оформляем меню провинциальных кампаний
Spoiler (expand)
Фоновый рисунок меню (при условии, что у вас в файлике preferences стоит DISABLE_BACKGROUND_FMV: TRUE) берётся отсюда: ...data/menu/texturesbackdrop.tga
В файлике Rome.lnt из папки ...data/menu нужно отредактировать блок по страничке провинциальной кампании. Далее следует пример этого блока с комментариями по каждому элементу. Я отделил комментарии привычным всем символом ";", хотя в Rome.lnt писать какие-либо комментарии недопустимо, помните об этом! И всегда сохраняйте резервную копию этого файла.
Отсчёт координат ведётся из левого верхнего угла экрана с расчётом на разрешение 1024*768. Координатная точка для элементов располагается слева вверху (прошу прощения, кажется, в предыдущем туторе я всё-таки ошибся относительно центрирования кнопок, с ними тоже всё так же).
Вот подробно расписанный блок нужной нам странички меню из Rome.lnt:
; логотип BI (берётся отсюда: ...data/menu/texturesFE_texture1.tga)
; золотая декоративная полоска (берётся отсюда: ...data/menu/texturesFE_texture1.tga)
; список провинциальных кампаний
; надпись "SELECT A FACTION:"
; название провинциальной кампании
; описание провинциальной кампании
; кнопка "начать" (стрелочка, берётся отсюда: ...data/menu/texturesFE_texture_256x256.tga)
; кнопка "назад" (изогнутая стрелочка, берётся отсюда: ... data/menu/texturesFE_texture_256x256.tga)
; помощь по кнопкам (т.е. описание, вылезающее когда подносишь курсор к кнопке)
; картинка провинциальной кампании (берётся отсюда: ...data/menu/textures/provincial_campaign.tga, можно свободно менять разрешение, но помните, что при сохранении .tga надо поставить в Фотошопе 24 бит)
; на этом заканчиваются элементы нашей страницы
Я решил добавить ещё одну декоративную полоску, убрать надпись "SELECT A FACTION", которая всё равно не нужна, и убрать название провинциальной кампании за ненадобностью (это название должно было высвечиваться сверху при выборе, как комментарий).
Добавлять/удалять элементы интерфейса невероятно просто: все они выделены в блоки, ограниченные тегами <UI piece>...</UI piece>. Разве что с картинкой было работать трудно, т.к. она иногда весьма странно "растягивается" игрой под нужный размер. Советую выправить ей разрешение в Фотошопе. Причём действуйте смело: если картинка почему-то "сужается" по горизонтали - увеличьте разрешение по горизонтали вдвое, сужается по вертикали - то же самое по горизонтали. В конце концов она впишется правильно.
А вот мой вариант блока для меню провинциальных кампаний:
m2tw.lnt - строка 8792 - изменяем положение иконок фракций в главном меню с помощью изменения координат X и Y.
Поиск осуществлять по литералам "Фракция №"
Фоновый рисунок меню (при условии, что у вас в файлике preferences стоит DISABLE_BACKGROUND_FMV: TRUE) берётся отсюда: ...data/menu/texturesbackdrop.tga
В файлике Rome.lnt из папки ...data/menu нужно отредактировать блок по страничке провинциальной кампании. Далее следует пример этого блока с комментариями по каждому элементу. Я отделил комментарии привычным всем символом ";", хотя в Rome.lnt писать какие-либо комментарии недопустимо, помните об этом! И всегда сохраняйте резервную копию этого файла.
Отсчёт координат ведётся из левого верхнего угла экрана с расчётом на разрешение 1024*768. Координатная точка для элементов располагается слева вверху (прошу прощения, кажется, в предыдущем туторе я всё-таки ошибся относительно центрирования кнопок, с ними тоже всё так же).
Вот подробно расписанный блок нужной нам странички меню из Rome.lnt:
<lpage>provincial_campaign
...
; логотип BI (берётся отсюда: ...data/menu/texturesFE_texture1.tga)
<UI piece>BI_main_menu
<identifier>UIP_UNDEF</identifier>
<Parameters>
<x>267</x>
<y>25</y>
<width>490</width>
<height>171</height>
</Parameters>
<object_id>BI_main_menu</object_id>
</UI piece>
; золотая декоративная полоска (берётся отсюда: ...data/menu/texturesFE_texture1.tga)
<UI piece>new_game_gold_bar
<identifier>UIP_EMPTY_ART</identifier>
<Parameters>
<x>336</x>
<y>186</y>
<width>348</width>
<height>5</height>
</Parameters>
<object_id>gold_bar</object_id>
</UI piece>
; список провинциальных кампаний
<UI piece>pc_campaigns
<identifier>UIP_PROVINCIAL_CAMPAIGN_LIST</identifier>
<Parameters>
<x>258</x>
<y>220</y>
<width>285</width>
<height>100</height>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
; надпись "SELECT A FACTION:"
<UI piece>pc_select_battle_title
<identifier>UIP_STATIC_TEXT</identifier>
<Parameters>
<x>60</x>
<y>220</y>
<width>384</width>
<height>26</height>
<UI text>UI_PROVINCIAL_CAMPAIGN_SELECT
<font_id>arial_split_CAF</font_id>
<align>left</align>
</UI text>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
; название провинциальной кампании
<UI piece>pc_description_title
<identifier>UIP_STATIC_TEXT</identifier>
<Parameters>
<x>595</x>
<y>190</y>
<width>480</width>
<height>26</height>
<UI text>UI_PROVINCIAL_CAMPAIGN_DESCRIPTION
<font_id>arial_split_CAF</font_id>
<align>left</align>
</UI text>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
; описание провинциальной кампании
<UI piece>pc_description
<identifier>UIP_PROVINCIAL_CAMPAIGN_DESCRIPTION</identifier>
<Parameters>
<x>595</x>
<y>220</y>
<width>385</width>
<height>463</height>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
; кнопка "начать" (стрелочка, берётся отсюда: ...data/menu/texturesFE_texture_256x256.tga)
<UI piece>pc_arrow_continue
<identifier>UIP_VERIFY_MENU_BUTTON</identifier>
<Parameters>
<x>961</x>
<y>722</y>
<width>57</width>
<height>33</height>
<menu_id>PC_choose_faction</menu_id>
<tool_tip_id>UI_PROVINCIAL_CAMPAIGN_SELECT_FACTION</tool_tip_id>
</Parameters>
<object_id>arrow_continue</object_id>
</UI piece>
; кнопка "назад" (изогнутая стрелочка, берётся отсюда: ... data/menu/texturesFE_texture_256x256.tga)
<UI piece>pc_arrow_return
<identifier>UIP_BACK_BUTTON</identifier>
<Parameters>
<x>11</x>
<y>715</y>
<width>41</width>
<height>46</height>
<tool_tip_id>UI_MAIN_MENU_BACK_INFO</tool_tip_id>
</Parameters>
<object_id>arrow_return</object_id>
</UI piece>
; помощь по кнопкам (т.е. описание, вылезающее когда подносишь курсор к кнопке)
<UI piece>pc_info
<identifier>UIP_STATIC_TOOLTIP</identifier>
<Parameters>
<x>129</x>
<y>727</y>
<width>768</width>
<height>14</height>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
; картинка провинциальной кампании (берётся отсюда: ...data/menu/textures/provincial_campaign.tga, можно свободно менять разрешение, но помните, что при сохранении .tga надо поставить в Фотошопе 24 бит)
...
<UI piece>provincial_campaign_pic
<identifier>UIP_UNDEF</identifier>
<Parameters>
<x>60</x>
<y>375</y>
<width>800</width>
<height>311</height>
</Parameters>
<object_id>provincial_campaign_pic</object_id>
</UI piece>
...
; на этом заканчиваются элементы нашей страницы
...
</lpage>
Я решил добавить ещё одну декоративную полоску, убрать надпись "SELECT A FACTION", которая всё равно не нужна, и убрать название провинциальной кампании за ненадобностью (это название должно было высвечиваться сверху при выборе, как комментарий).
Добавлять/удалять элементы интерфейса невероятно просто: все они выделены в блоки, ограниченные тегами <UI piece>...</UI piece>. Разве что с картинкой было работать трудно, т.к. она иногда весьма странно "растягивается" игрой под нужный размер. Советую выправить ей разрешение в Фотошопе. Причём действуйте смело: если картинка почему-то "сужается" по горизонтали - увеличьте разрешение по горизонтали вдвое, сужается по вертикали - то же самое по горизонтали. В конце концов она впишется правильно.
А вот мой вариант блока для меню провинциальных кампаний:
<lpage>provincial_campaign
<UI piece>BI_main_menu
<identifier>UIP_UNDEF</identifier>
<Parameters>
<x>256</x>
<y>25</y>
<width>512</width>
<height>171</height>
</Parameters>
<object_id>BI_main_menu</object_id>
</UI piece>
<UI piece>new_game_gold_bar
<identifier>UIP_EMPTY_ART</identifier>
<Parameters>
<x>0</x>
<y>186</y>
<width>1024</width>
<height>5</height>
</Parameters>
<object_id>gold_bar</object_id>
</UI piece>
<UI piece>new_game_gold_bar
<identifier>UIP_EMPTY_ART</identifier>
<Parameters>
<x>0</x>
<y>700</y>
<width>1024</width>
<height>5</height>
</Parameters>
<object_id>gold_bar</object_id>
</UI piece>
<UI piece>pc_campaigns
<identifier>UIP_PROVINCIAL_CAMPAIGN_LIST</identifier>
<Parameters>
<x>8</x>
<y>191</y>
<width>504</width>
<height>129</height>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
<UI piece>pc_description
<identifier>UIP_PROVINCIAL_CAMPAIGN_DESCRIPTION</identifier>
<Parameters>
<x>516</x>
<y>191</y>
<width>500</width>
<height>509</height>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
<UI piece>pc_arrow_continue
<identifier>UIP_VERIFY_MENU_BUTTON</identifier>
<Parameters>
<x>961</x>
<y>722</y>
<width>57</width>
<height>33</height>
<menu_id>PC_choose_faction</menu_id>
<tool_tip_id>UI_PROVINCIAL_CAMPAIGN_SELECT_FACTION</tool_tip_id>
</Parameters>
<object_id>arrow_continue</object_id>
</UI piece>
<UI piece>pc_arrow_return
<identifier>UIP_BACK_BUTTON</identifier>
<Parameters>
<x>11</x>
<y>715</y>
<width>41</width>
<height>46</height>
<tool_tip_id>UI_MAIN_MENU_BACK_INFO</tool_tip_id>
</Parameters>
<object_id>arrow_return</object_id>
</UI piece>
<UI piece>pc_info
<identifier>UIP_STATIC_TOOLTIP</identifier>
<Parameters>
<x>129</x>
<y>727</y>
<width>768</width>
<height>14</height>
</Parameters>
<object_id>empty_art</object_id>
</UI piece>
<UI piece>provincial_campaign_pic
<identifier>UIP_UNDEF</identifier>
<Parameters>
<x>8</x>
<y>325</y>
<width>504</width>
<height>374</height>
</Parameters>
<object_id>provincial_campaign_pic</object_id>
</UI piece>
</lpage>
m2tw.lnt - строка 8792 - изменяем положение иконок фракций в главном меню с помощью изменения координат X и Y.
Поиск осуществлять по литералам "Фракция №"
---
Оригинальное Авторство:
К сожалению, автор неизвестен. Скорее всего это пользователь СиЧи.
История Происхождения:
Локальная копия оригинальной статьи, взятой мной из модоковальни M2TW на форуме СиЧь.

t1aro
alZarif
Dr.Schmeisser
KhanBagatur
gurvinek2005
Crusader556
Haktar
Mady
Valyrian_Legionnaire
DinarMayor
Corrector
kosak4
Farin Frostgeir

