Форум

Уведомления
Очистить все

[MS][Other] Добавление новых баннеров

 
Джеки Чан
Известный участник Модератор Гильдия переводчиков

Добавление новых баннеров

Добавление баннеров плохо совместимо с сохранениями!
 В сохраненной игре новые баннеры могут стать в неожиданном месте (у королей, например).
 Так что имейте это ввиду перед добавлением баннеров.

1. Инструментарий

Нам понадобится:
- *.BRF редактор (урок сделан на основе OpenBFR);
- *.DDS редактор (не обязательно, не нужен для создания текстуры, но ее и скачать можно, если лень рисовать);
- Модульная Система;

2. Новые баннеры

В общем как раз на эту тему есть много инструкций, не буду расписывать. Создать свои баннеры можно и просто поставив их поверх уже готовых в редакторе DDS. Особого ничего знать не нужно. Хватит и знаний от пользования paint'ом. А кто знаком с photoshop, так можно даже это не читать.
В общем нам надо создать/скачать баннеры и назвать их "banners_h.dds". Вообще-то название абсолютно ни на что не влияет. Можете назвать хоть "as7bnstydfxr5g.dds", но "banners_h.dds" - простой и удобный вариант.

3. Новая текстура

  Вот тут начинается поподробнее...
  Итак, запускаем BRF редактор и открываем им файл "...\Mount and Blade. Warband\CommonRes\materials.brf":

Прокручиваем все ресурсы слева, пока не наткнемся на "banners". Выбираем "banners_g", затем "Import"->"New Material". Жмем Browse и показываем программе наши "bannres_h.dds", которые желательно было закинуть в папку ко всем остальным текстурам.

Теперь мы видим наши новые баннеры в списке. На всякий случай сделайте все настройки (кроме имени текстуры "DiffuseA") в красном прямоугольнике такие же, как у остальных баннеров.

4. Создание mesh'ей (banners)

  Теперь надо добавить в игру все эти баннеры по отдельности... Для этого существуют меши.
  Открываем "...\Mount and Blade. Warband\CommonRes\banners.brf". Видим целую кучу баннеров. Прокручиваем до начала "arms":

Что бы долго не парится, дулаем следующий фокус (пошагово):
а) Выделяем 21 баннер из серии "bannefs_f" и делаем ctrl+C, ctrl+V (копировать - вставить). Видим кучу баннеров banners_f.

б) Выделяем вставленные (а не оригинальные) баннеры от "banner_f01" до "banner_f21" и жмем ПКМ -> "Group Rename"

Вводим "banner_h" (без циферок). И та-дам! Все баннеры стали "banner_h" с циферками.

в) Выделяем все "banner_h". И в поле "Material" меняем букву на "h". Все! 21 баннер с новой текстуры готов.

Сохраняем наш результат. На заикания программы отвечаем "yes".

Если вам интересно, что за "arms" - это прямоугольные варианты баннеров, у которых внизу вырез. Просто сравните "banner_a01" и "arms_a01" и поймете.
Наши баннеры и так без выреза, по этому arms мы не создаем. Но вы можете сделать себе баннеры с вырезом, путем копирования таковых и прописывания своей текстуры. Но потом придется на баннеры с вырезом создать соответствующие arms. Это точно такие же меши, только с другим названием. У вас должно легко получится это сделать.

4. Создание mesh'ей (map_icons)

Открываем "...\Mount and Blade. Warband\CommonRes\map_flags_c.brf" и делаем точно то же самое, что в п.3.
  Можете попробовать и с другими типами флагов (map_flags_a, map_flags_b), то для этого надо иметь побольше знаний о работе с мешами и текстурами (не хватит флагов, что бы только скопировать, надо будет создавать вручную). Вы можете прочитать это в уроках по BRF на этом же форуме. Тут я расписывать это не буду, т.к. это урок по баннерах, а не по BRF.

5. Модульная система

Теперь надо, чтобы игра могла воспринять наши новые баннеры.
А.  В module_mesher.py где-то на середине находим баннеры и дописываем новые перед баннерами королевств.

Находим

("banner_f18", 0, "banner_f18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_f19", 0, "banner_f19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_f20", 0, "banner_f20", 0, 0, 0, -90, 0, 0, 1, 1, 1),

("banner_g01", 0, "banner_f01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g02", 0, "banner_f02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g03", 0, "banner_f03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g04", 0, "banner_f04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g05", 0, "banner_f05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g06", 0, "banner_f06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g07", 0, "banner_f07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g08", 0, "banner_f08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g09", 0, "banner_f09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g10", 0, "banner_f10", 0, 0, 0, -90, 0, 0, 1, 1, 1),

и после него добавляем

("banner_h01", 0, "banner_h01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h02", 0, "banner_h02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h03", 0, "banner_h03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h04", 0, "banner_h04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h05", 0, "banner_h05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h06", 0, "banner_h06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h07", 0, "banner_h07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h08", 0, "banner_h08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h09", 0, "banner_h09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h10", 0, "banner_h10", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h11", 0, "banner_h11", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h12", 0, "banner_h12", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h13", 0, "banner_h13", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h14", 0, "banner_h14", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h15", 0, "banner_h15", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h16", 0, "banner_h16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h17", 0, "banner_h17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h18", 0, "banner_h18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h19", 0, "banner_h19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h20", 0, "banner_h20", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("banner_h21", 0, "banner_h21", 0, 0, 0, -90, 0, 0, 1, 1, 1),  

Должно получиться что вроде этого:

("banner_f18", 0, "banner_f18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_f19", 0, "banner_f19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_f20", 0, "banner_f20", 0, 0, 0, -90, 0, 0, 1, 1, 1),

("banner_g01", 0, "banner_f01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g02", 0, "banner_f02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g03", 0, "banner_f03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g04", 0, "banner_f04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g05", 0, "banner_f05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g06", 0, "banner_f06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g07", 0, "banner_f07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g08", 0, "banner_f08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g09", 0, "banner_f09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g10", 0, "banner_f10", 0, 0, 0, -90, 0, 0, 1, 1, 1),

("banner_h01", 0, "banner_h01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h02", 0, "banner_h02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h03", 0, "banner_h03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h04", 0, "banner_h04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h05", 0, "banner_h05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h06", 0, "banner_h06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h07", 0, "banner_h07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h08", 0, "banner_h08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h09", 0, "banner_h09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h10", 0, "banner_h10", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h11", 0, "banner_h11", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h12", 0, "banner_h12", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h13", 0, "banner_h13", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h14", 0, "banner_h14", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h15", 0, "banner_h15", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h16", 0, "banner_h16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h17", 0, "banner_h17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h18", 0, "banner_h18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h19", 0, "banner_h19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h20", 0, "banner_h20", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_h21", 0, "banner_h21", 0, 0, 0, -90, 0, 0, 1, 1, 1), 
 
("banner_kingdom_a", 0, "banner_kingdom_a", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_kingdom_b", 0, "banner_kingdom_b", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_kingdom_c", 0, "banner_kingdom_c", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_kingdom_d", 0, "banner_kingdom_d", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_kingdom_e", 0, "banner_kingdom_e", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_kingdom_f", 0, "banner_kingdom_f", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 
("banner_f21", 0, "banner_a15", 0, 0, 0, -90, 0, 0, 1, 1, 1),

Второе название (после нолика) - название mesh'а! Запомните это, если будете еще добавлять баннеров.
Можно заметить одну недоработку - 10 продублированных баннеров... Вообще-то на их месте должен был быть 21 баннер из "banners_f.dds"... Но что-то не слиплось... Баннеров из banners_f.dds в игре нет вообще. Для них даже не созданы меши. Не знаю, что думали разработчики, когда прописывали баннеры...
Вы сможете можете исправить это, пользуясь знаниями из этого урока =)

B.  Теперь в том же module_mesher.py идем ниже, до точно такой картины, как прежде, но только с "arms". И делаем то же самое:

Находим:

("arms_f16", 0, "banner_f16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_f17", 0, "banner_f17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_f18", 0, "banner_f18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_f19", 0, "banner_f19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_f20", 0, "banner_f20", 0, 0, 0, -90, 0, 0, 1, 1, 1),

("arms_g01", 0, "banner_f01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g02", 0, "banner_f02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g03", 0, "banner_f03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g04", 0, "banner_f04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g05", 0, "banner_f05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g06", 0, "banner_f06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g07", 0, "banner_f07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g08", 0, "banner_f08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g09", 0, "banner_f09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_g10", 0, "banner_f10", 0, 0, 0, -90, 0, 0, 1, 1, 1),

и после него добавляем:

("arms_h01", 0, "banner_h01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h02", 0, "banner_h02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h03", 0, "banner_h03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h04", 0, "banner_h04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h05", 0, "banner_h05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h06", 0, "banner_h06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h07", 0, "banner_h07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h08", 0, "banner_h08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h09", 0, "banner_h09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h10", 0, "banner_h10", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h11", 0, "banner_h11", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h12", 0, "banner_h12", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h13", 0, "banner_h13", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h14", 0, "banner_h14", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h15", 0, "banner_h15", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h16", 0, "banner_h16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h17", 0, "banner_h17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h18", 0, "banner_h18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h19", 0, "banner_h19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h20", 0, "banner_h20", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("arms_h21", 0, "banner_h21", 0, 0, 0, -90, 0, 0, 1, 1, 1),  

Получится:

("arms_f16", 0, "banner_f16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_f17", 0, "banner_f17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_f18", 0, "banner_f18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_f19", 0, "banner_f19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_f20", 0, "banner_f20", 0, 0, 0, -90, 0, 0, 1, 1, 1),

 ("arms_g01", 0, "banner_f01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g02", 0, "banner_f02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g03", 0, "banner_f03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g04", 0, "banner_f04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g05", 0, "banner_f05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g06", 0, "banner_f06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g07", 0, "banner_f07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g08", 0, "banner_f08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g09", 0, "banner_f09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_g10", 0, "banner_f10", 0, 0, 0, -90, 0, 0, 1, 1, 1),

 ("arms_h01", 0, "banner_h01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h02", 0, "banner_h02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h03", 0, "banner_h03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h04", 0, "banner_h04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h05", 0, "banner_h05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h06", 0, "banner_h06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h07", 0, "banner_h07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h08", 0, "banner_h08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h09", 0, "banner_h09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h10", 0, "banner_h10", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h11", 0, "banner_h11", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h12", 0, "banner_h12", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h13", 0, "banner_h13", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h14", 0, "banner_h14", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h15", 0, "banner_h15", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h16", 0, "banner_h16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h17", 0, "banner_h17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h18", 0, "banner_h18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h19", 0, "banner_h19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h20", 0, "banner_h20", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_h21", 0, "banner_h21", 0, 0, 0, -90, 0, 0, 1, 1, 1), 

 ("arms_kingdom_a", 0, "banner_kingdom_a", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_kingdom_b", 0, "banner_kingdom_b", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_kingdom_c", 0, "banner_kingdom_c", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_kingdom_d", 0, "banner_kingdom_d", 0, 0, 0, -90, 0, 0, 1, 1, 1),
 ("arms_kingdom_e", 0, "banner_kingdom_e", 0, 0, 0, -90, 0, 0, 1, 1, 1), 
 ("arms_kingdom_f", 0, "banner_kingdom_f", 0, 0, 0, -90, 0, 0, 1, 1, 1),

 ("arms_f21", 0, "banner_a15", 0, 0, 0, -90, 0, 0, 1, 1, 1),

Тут (да в общем и везде с баннерами) второе название - тоже mesh. Мы используем для arms меши баннеров, т.к. они и так прямоугольные... Если вы прошли прошлые шаги, то должны понимать о чем речь...

C.  Теперь снова надо приписывать каждый баннер!!! На этот раз в module_scene_props.py. Там ну точно то же самое, что и прошлые 2 раза, но искать будем немного другую по структуре строку:

Находим:

("banner_f17", 0, "banner_f17", "0", []),
 ("banner_f18", 0, "banner_f18", "0", []),
 ("banner_f19", 0, "banner_f19", "0", []),
 ("banner_f20", 0, "banner_f20", "0", []),

 ("banner_g01", 0, "banner_f01", "0", []),
 ("banner_g02", 0, "banner_f02", "0", []),
 ("banner_g03", 0, "banner_f03", "0", []),
 ("banner_g04", 0, "banner_f04", "0", []),
 ("banner_g05", 0, "banner_f05", "0", []),
 ("banner_g06", 0, "banner_f06", "0", []),
 ("banner_g07", 0, "banner_f07", "0", []),
 ("banner_g08", 0, "banner_f08", "0", []),
 ("banner_g09", 0, "banner_f09", "0", []),
 ("banner_g10", 0, "banner_f10", "0", []),

Добавляем в конец:

("banner_h01", 0, "banner_h01", "0", []),
("banner_h02", 0, "banner_h02", "0", []),
("banner_h03", 0, "banner_h03", "0", []),
("banner_h04", 0, "banner_h04", "0", []),
("banner_h05", 0, "banner_h05", "0", []),
("banner_h06", 0, "banner_h06", "0", []),
("banner_h07", 0, "banner_h07", "0", []),
("banner_h08", 0, "banner_h08", "0", []),
("banner_h09", 0, "banner_h09", "0", []),
("banner_h10", 0, "banner_h10", "0", []),
("banner_h11", 0, "banner_h11", "0", []),
("banner_h12", 0, "banner_h12", "0", []),
("banner_h13", 0, "banner_h13", "0", []),
("banner_h14", 0, "banner_h14", "0", []),
("banner_h15", 0, "banner_h15", "0", []),
("banner_h16", 0, "banner_h16", "0", []),
("banner_h17", 0, "banner_h17", "0", []),
("banner_h18", 0, "banner_h18", "0", []),
("banner_h19", 0, "banner_h19", "0", []),
("banner_h20", 0, "banner_h20", "0", []),
("banner_h21", 0, "banner_h21", "0", []), 

Получается:

("banner_f17", 0, "banner_f17", "0", []),
("banner_f18", 0, "banner_f18", "0", []),
("banner_f19", 0, "banner_f19", "0", []),
("banner_f20", 0, "banner_f20", "0", []),
 
("banner_g01", 0, "banner_f01", "0", []),
("banner_g02", 0, "banner_f02", "0", []),
("banner_g03", 0, "banner_f03", "0", []),
("banner_g04", 0, "banner_f04", "0", []),
("banner_g05", 0, "banner_f05", "0", []),
("banner_g06", 0, "banner_f06", "0", []),
("banner_g07", 0, "banner_f07", "0", []),
("banner_g08", 0, "banner_f08", "0", []),
("banner_g09", 0, "banner_f09", "0", []),
("banner_g10", 0, "banner_f10", "0", []),

("banner_h01", 0, "banner_h01", "0", []),
("banner_h02", 0, "banner_h02", "0", []),
("banner_h03", 0, "banner_h03", "0", []),
("banner_h04", 0, "banner_h04", "0", []),
("banner_h05", 0, "banner_h05", "0", []),
("banner_h06", 0, "banner_h06", "0", []),
("banner_h07", 0, "banner_h07", "0", []),
("banner_h08", 0, "banner_h08", "0", []),
("banner_h09", 0, "banner_h09", "0", []),
("banner_h10", 0, "banner_h10", "0", []),
("banner_h11", 0, "banner_h11", "0", []),
("banner_h12", 0, "banner_h12", "0", []),
("banner_h13", 0, "banner_h13", "0", []),
("banner_h14", 0, "banner_h14", "0", []),
("banner_h15", 0, "banner_h15", "0", []),
("banner_h16", 0, "banner_h16", "0", []),
("banner_h17", 0, "banner_h17", "0", []),
("banner_h18", 0, "banner_h18", "0", []),
("banner_h19", 0, "banner_h19", "0", []),
("banner_h20", 0, "banner_h20", "0", []),
("banner_h21", 0, "banner_h21", "0", []),

("banner_kingdom_a", 0, "banner_kingdom_a", "0", []),
("banner_kingdom_b", 0, "banner_kingdom_b", "0", []),
("banner_kingdom_c", 0, "banner_kingdom_c", "0", []),
("banner_kingdom_d", 0, "banner_kingdom_d", "0", []),
("banner_kingdom_e", 0, "banner_kingdom_e", "0", []),
("banner_kingdom_f", 0, "banner_kingdom_f", "0", []),
("banner_f21", 0, "banner_a15", "0", []),

D. И еще раз надо все баннеры прописать (вот же запара с баннерами, да?). Открываем на этот раз module_map_icons.py, чтобы баннеры отображались на карте.
 75% этого файла - баннеры, гы-гы  :laught:.
 Ищем синее, дописываем зеленое, как и всегда:

Находим

("banner_124",0,"map_flag_f19", banner_scale,0),
 ("banner_125",0,"map_flag_f20", banner_scale,0),

 ("banner_126",0,"map_flag_f01", banner_scale,0),
 ("banner_127",0,"map_flag_f02", banner_scale,0),
 ("banner_128",0,"map_flag_f03", banner_scale,0),
 ("banner_129",0,"map_flag_f04", banner_scale,0),
 ("banner_130",0,"map_flag_f05", banner_scale,0),
 ("banner_131",0,"map_flag_f06", banner_scale,0),
 ("banner_132",0,"map_flag_f07", banner_scale,0),
 ("banner_133",0,"map_flag_f08", banner_scale,0),
 ("banner_134",0,"map_flag_f09", banner_scale,0),
 ("banner_135",0,"map_flag_f10", banner_scale,0),

После него добавляем:

("banner_137",0,"map_flag_h01", banner_scale,0), 
("banner_138",0,"map_flag_h02", banner_scale,0), 
("banner_139",0,"map_flag_h03", banner_scale,0), 
("banner_140",0,"map_flag_h04", banner_scale,0), 
("banner_141",0,"map_flag_h05", banner_scale,0), 
("banner_142",0,"map_flag_h06", banner_scale,0), 
("banner_143",0,"map_flag_h07", banner_scale,0), 
("banner_144",0,"map_flag_h08", banner_scale,0), 
("banner_145",0,"map_flag_h09", banner_scale,0), 
("banner_146",0,"map_flag_h10", banner_scale,0), 
("banner_147",0,"map_flag_h11", banner_scale,0), 
("banner_148",0,"map_flag_h12", banner_scale,0), 
("banner_149",0,"map_flag_h13", banner_scale,0), 
("banner_150",0,"map_flag_h14", banner_scale,0), 
("banner_151",0,"map_flag_h15", banner_scale,0), 
("banner_152",0,"map_flag_h16", banner_scale,0), 
("banner_153",0,"map_flag_h17", banner_scale,0), 
("banner_154",0,"map_flag_h18", banner_scale,0), 
("banner_155",0,"map_flag_h19", banner_scale,0), 
("banner_156",0,"map_flag_h20", banner_scale,0), 
("banner_157",0,"map_flag_h21", banner_scale,0),  

Получается:

("banner_124",0,"map_flag_f19", banner_scale,0),
("banner_125",0,"map_flag_f20", banner_scale,0),
 
("banner_126",0,"map_flag_f01", banner_scale,0),
("banner_127",0,"map_flag_f02", banner_scale,0),
("banner_128",0,"map_flag_f03", banner_scale,0),
("banner_129",0,"map_flag_f04", banner_scale,0),
("banner_130",0,"map_flag_f05", banner_scale,0),
("banner_131",0,"map_flag_f06", banner_scale,0),
("banner_132",0,"map_flag_f07", banner_scale,0),
("banner_133",0,"map_flag_f08", banner_scale,0),
("banner_134",0,"map_flag_f09", banner_scale,0),
("banner_135",0,"map_flag_f10", banner_scale,0),


("banner_137",0,"map_flag_h01", banner_scale,0), 
("banner_138",0,"map_flag_h02", banner_scale,0), 
("banner_139",0,"map_flag_h03", banner_scale,0), 
("banner_140",0,"map_flag_h04", banner_scale,0), 
("banner_141",0,"map_flag_h05", banner_scale,0), 
("banner_142",0,"map_flag_h06", banner_scale,0), 
("banner_143",0,"map_flag_h07", banner_scale,0), 
("banner_144",0,"map_flag_h08", banner_scale,0), 
("banner_145",0,"map_flag_h09", banner_scale,0), 
("banner_146",0,"map_flag_h10", banner_scale,0), 
("banner_147",0,"map_flag_h11", banner_scale,0), 
("banner_148",0,"map_flag_h12", banner_scale,0), 
("banner_149",0,"map_flag_h13", banner_scale,0), 
("banner_150",0,"map_flag_h14", banner_scale,0), 
("banner_151",0,"map_flag_h15", banner_scale,0), 
("banner_152",0,"map_flag_h16", banner_scale,0), 
("banner_153",0,"map_flag_h17", banner_scale,0), 
("banner_154",0,"map_flag_h18", banner_scale,0), 
("banner_155",0,"map_flag_h19", banner_scale,0), 
("banner_156",0,"map_flag_h20", banner_scale,0), 
("banner_157",0,"map_flag_h21", banner_scale,0),   
 
("map_flag_kingdom_a",0,"map_flag_kingdom_a", banner_scale,0),
("map_flag_kingdom_b",0,"map_flag_kingdom_b", banner_scale,0),
("map_flag_kingdom_c",0,"map_flag_kingdom_c", banner_scale,0),
("map_flag_kingdom_d",0,"map_flag_kingdom_d", banner_scale,0),
("map_flag_kingdom_e",0,"map_flag_kingdom_e", banner_scale,0),
("map_flag_kingdom_f",0,"map_flag_kingdom_f", banner_scale,0),
("banner_136",0,"map_flag_15", banner_scale,0),

Обратите внимание на номера. Последний "banner_136" лучше оставить, как есть, а новые продолжать писать с 137. Это не повлияет на восприятие их игрой, она будет читать все баннеры до "banner_136" независимо от названия (это определяется константами). Но название пригодится игре для иных целей.

  Вписывать баннеры закончили. Но это еще не все, нет...
E.  Идем в module_constants.py и изменяем количество баннеров в соответствии с добавленными (в данном случае +21 к banners_end_offset):

sarranid_banners_begin_offset = 105
sarranid_banners_end_offset = 125

banners_end_offset = 157

# Some constants for merchant invenotries
merchant_inventory_space = 30
num_merchandise_goods = 40

Теперь настроим цвета фона (цвет спины на геральдических доспехах) баннеров. Идем в module_scripts.py, ищем, дописываем:

Ищем:

(troop_set_slot, "trp_banner_background_color_array", 105, 0xFFc39d31),
(troop_set_slot, "trp_banner_background_color_array", 106, 0xFFcbb670),
(troop_set_slot, "trp_banner_background_color_array", 107, 0xFF394a18),
(troop_set_slot, "trp_banner_background_color_array", 108, 0xFF372708),
(troop_set_slot, "trp_banner_background_color_array", 109, 0xFF9a6810),
(troop_set_slot, "trp_banner_background_color_array", 110, 0xFFb27910),
(troop_set_slot, "trp_banner_background_color_array", 111, 0xFF8c8621),
(troop_set_slot, "trp_banner_background_color_array", 112, 0xFF975a03),
(troop_set_slot, "trp_banner_background_color_array", 113, 0xFF2c2924),
(troop_set_slot, "trp_banner_background_color_array", 114, 0xFFaa962c),
(troop_set_slot, "trp_banner_background_color_array", 115, 0xFFa2822e),
(troop_set_slot, "trp_banner_background_color_array", 116, 0xFF7b8a8c),
(troop_set_slot, "trp_banner_background_color_array", 117, 0xFF3c0908),
 (troop_set_slot, "trp_banner_background_color_array", 118, 0xFFFF00FF),
 (troop_set_slot, "trp_banner_background_color_array", 119, 0xFF671e14),
 (troop_set_slot, "trp_banner_background_color_array", 120, 0xFF103042),
 (troop_set_slot, "trp_banner_background_color_array", 121, 0xFF4a4500),
 (troop_set_slot, "trp_banner_background_color_array", 122, 0xFF703324),
(troop_set_slot, "trp_banner_background_color_array", 123, 0xFF24293c),
(troop_set_slot, "trp_banner_background_color_array", 124, 0xFF5d6966),
(troop_set_slot, "trp_banner_background_color_array", 125, 0xFFbd9631),
(troop_set_slot, "trp_banner_background_color_array", 126, 0xFFc6b26b),
(troop_set_slot, "trp_banner_background_color_array", 127, 0xFF394918),

После него добавляем

(troop_set_slot, "trp_banner_background_color_array", 128, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 129, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 130, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 131, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 132, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 133, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 134, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 135, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 136, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 137, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 138, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 139, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 140, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 141, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 142, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 143, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 144, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 145, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 146, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 147, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 148, 0xFF000000),

Получается:

(troop_set_slot, "trp_banner_background_color_array", 105, 0xFFc39d31),
(troop_set_slot, "trp_banner_background_color_array", 106, 0xFFcbb670),
(troop_set_slot, "trp_banner_background_color_array", 107, 0xFF394a18),
(troop_set_slot, "trp_banner_background_color_array", 108, 0xFF372708),
(troop_set_slot, "trp_banner_background_color_array", 109, 0xFF9a6810),
(troop_set_slot, "trp_banner_background_color_array", 110, 0xFFb27910),
(troop_set_slot, "trp_banner_background_color_array", 111, 0xFF8c8621),
(troop_set_slot, "trp_banner_background_color_array", 112, 0xFF975a03),
(troop_set_slot, "trp_banner_background_color_array", 113, 0xFF2c2924),
(troop_set_slot, "trp_banner_background_color_array", 114, 0xFFaa962c),
(troop_set_slot, "trp_banner_background_color_array", 115, 0xFFa2822e),
(troop_set_slot, "trp_banner_background_color_array", 116, 0xFF7b8a8c),
(troop_set_slot, "trp_banner_background_color_array", 117, 0xFF3c0908),
 (troop_set_slot, "trp_banner_background_color_array", 118, 0xFFFF00FF),
 (troop_set_slot, "trp_banner_background_color_array", 119, 0xFF671e14),
 (troop_set_slot, "trp_banner_background_color_array", 120, 0xFF103042),
 (troop_set_slot, "trp_banner_background_color_array", 121, 0xFF4a4500),
 (troop_set_slot, "trp_banner_background_color_array", 122, 0xFF703324),
(troop_set_slot, "trp_banner_background_color_array", 123, 0xFF24293c),
(troop_set_slot, "trp_banner_background_color_array", 124, 0xFF5d6966),
(troop_set_slot, "trp_banner_background_color_array", 125, 0xFFbd9631),
(troop_set_slot, "trp_banner_background_color_array", 126, 0xFFc6b26b),
(troop_set_slot, "trp_banner_background_color_array", 127, 0xFF394918),

(troop_set_slot, "trp_banner_background_color_array", 128, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 129, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 130, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 131, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 132, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 133, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 134, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 135, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 136, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 137, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 138, 0xFF000000),
(troop_set_slot, "trp_banner_background_color_array", 139, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 140, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 141, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 142, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 143, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 144, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 145, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 146, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 147, 0xFF000000),
 (troop_set_slot, "trp_banner_background_color_array", 148, 0xFF000000),

 #Default banners
 (troop_set_slot, "trp_banner_background_color_array", 149, 0xFF212221),
 (troop_set_slot, "trp_banner_background_color_array", 150, 0xFF212221),
 (troop_set_slot, "trp_banner_background_color_array", 151, 0xFF2E3B10),
 (troop_set_slot, "trp_banner_background_color_array", 152, 0xFF425D7B),
 (troop_set_slot, "trp_banner_background_color_array", 153, 0xFF394608),
]),

Внимание! Порядковый номер баннеров точно совпадает с их порядковым номером в текстурах! Счет начинается от верхнего левого баннера и идет по строкам (как буквы в книге). Ну а текстуры в таком порядке, как они расположены в materials.brf. Имейте это ввиду!

Внимание еще раз! Цвет определяют только цифры, выделенные фиолетовым:"0xFF000000". Это обычный код цвета в 16-ричной системе исчисления. Его можно узнать, например, в фотошопе, или в интернете по запросу "16-ричные коды цветов"...
  Цвета я не устанавливал, они все сброшены на черный.

И о наконец-то! Последний штрих!
F. Идем в module_presentations.py, ищем презентацию баннеров и добавляем новые страницы, чтобы баннеры стали доступны не только ботам, но и самому игроку!

Ищем:

("banner_selection",0,mesh_load_window,[
      (ti_on_presentation_load,
       [(set_fixed_point_multiplier, 1000),
        (str_store_string, s1, "str_banner_selection_text"),
        (create_text_overlay, reg1, s1, tf_center_justify),
        (position_set_x, pos1, 500),
        (position_set_y, pos1, 600),
        (overlay_set_position, reg1, pos1),
        (overlay_set_text, reg1, s1),
        (create_button_overlay, "$g_presentation_obj_banner_selection_1", "@Next Page", tf_center_justify),
        (position_set_x, pos1, 500),
        (position_set_y, pos1, 50),
        (overlay_set_position, "$g_presentation_obj_banner_selection_1", pos1),

        (assign, ":x_pos", 150),
        (assign, ":y_pos", 575),
        (assign, ":try_end", banner_meshes_end_minus_one),
        (store_sub, ":num_npc_kingdoms", npc_kingdoms_end, npc_kingdoms_begin),
        (val_sub, ":try_end", ":num_npc_kingdoms"), #do not allow kingdom banners to be selected
        (store_mul, ":begin_mesh", 16, "$g_presentation_page_no"),
        (val_add, ":begin_mesh", banner_meshes_begin),
        (store_add, ":try_end_2", ":begin_mesh", 16),
        (val_min, ":try_end", ":try_end_2"),
        (store_add, "$g_presentation_banner_start", "$g_presentation_obj_banner_selection_1", 1),
        (try_for_range, ":cur_banner_mesh", ":begin_mesh", ":try_end"),
          (create_image_button_overlay, reg1, ":cur_banner_mesh", ":cur_banner_mesh"),
          (position_set_x, pos1, ":x_pos"),
          (position_set_y, pos1, ":y_pos"),
          (overlay_set_position, reg1, pos1),
          (position_set_x, pos1, 100),
          (position_set_y, pos1, 100),
          (overlay_set_size, reg1, pos1),
          (val_add, ":x_pos", 100),
          (ge, ":x_pos", 900),
          (assign, ":x_pos", 150),
          (val_sub, ":y_pos", 250),
        (try_end),
        (presentation_set_duration, 999999),
        ]),
      (ti_on_presentation_event_state_change,
       [(store_trigger_param_1, ":object"),
        (try_begin),
          (eq, ":object", "$g_presentation_obj_banner_selection_1"),
          (val_add, "$g_presentation_page_no", 1),
          (val_mod, "$g_presentation_page_no", 12),
          (start_presentation, "prsnt_banner_selection"),
        (else_try),
          (store_sub, ":selected_banner", ":object", "$g_presentation_banner_start"),
          (store_mul, ":page_adder", 16, "$g_presentation_page_no"),
          (val_add, ":selected_banner", ":page_adder"),
          (store_add, ":selected_banner_map_icon", ":selected_banner", banner_map_icons_begin),
          (party_set_banner_icon, "p_main_party", ":selected_banner_map_icon"),
          (store_add, ":selected_banner_spr", ":selected_banner", banner_scene_props_begin),
          (troop_set_slot, "trp_player", slot_troop_banner_scene_prop, ":selected_banner_spr"),

 в этом коде находим строчку   (val_mod, "$g_presentation_page_no", 12), где 12 повторяет будущее количество страниц

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 10:56

Оставьте ответ

Имя автора

Электронная почта автора

Заголовок *

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Политика конфиденциальности