「新しいバナーを追加する」の編集履歴(バックアップ)一覧はこちら
「新しいバナーを追加する」(2010/03/07 (日) 06:27:42) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
Nativeに新しくバナーを追加するまでの過程です。
参考:[[Adding Banners>http://forums.taleworlds.net/index.php/topic,39396.0.html]]の方々に感謝
----
#contents
----
**必要となるもの
新しいバナー画像(1024x1024サイズ)
Texture Converter(ddsをbmpファイルに変換するのに必要)
DirectXTextureTool(MipMap付きddsファイル作成に必要)
※上記二つはDirectXSDKをインストールすると付いてくる
BRFEdit
画像を編集するソフト(Gimp,Photoshopなど)
pyを編集できる環境
***新しいバナー画像の作成
~\Mount&Blade\Texturesフォルダにあるbanner_a~f.ddsファイルを一つコピーし
右クリックで"Convert To file format…"を選び、Enable extended.DDS file optionsのチェックを外し
Pixel Formatで"A8R8G8B8"などを選びbmpに変換する。
できたbmpを画像編集ソフトなどで各バナーを追加したいバナーに編集する
そして編集した画像をDirectXTextureToolで開き、Format項目で"Genarate MipMaps"でMipMapを作成する。
"Change Surface Format..."でDXT1を選択、File項目Save As...でddsを作成する(例:banners_g.ddsなど)
*** NativeModuleSystem(.pyファイル)の編集
編集するpyファイルはmodule_map_icons.py、module_meshes.py、
module_scene_props.py、module_presentations.py、module_constants.pyの5つ。
**** module_map_icons.pyの編集
("banner_126",0,"map_flag_15", banner_scale,0),の後に
("banner_127",0,"map_flag_g01", banner_scale,0),
("banner_128",0,"map_flag_g02", banner_scale,0),
("banner_129",0,"map_flag_g03", banner_scale,0),
("banner_130",0,"map_flag_g04", banner_scale,0),
("banner_131",0,"map_flag_g05", banner_scale,0),
("banner_132",0,"map_flag_g06", banner_scale,0),
("banner_133",0,"map_flag_g07", banner_scale,0),
("banner_134",0,"map_flag_g08", banner_scale,0),
("banner_135",0,"map_flag_g09", banner_scale,0),
("banner_136",0,"map_flag_g10", banner_scale,0),
("banner_137",0,"map_flag_g11", banner_scale,0),
("banner_138",0,"map_flag_g12", banner_scale,0),
("banner_139",0,"map_flag_g13", banner_scale,0),
("banner_140",0,"map_flag_g14", banner_scale,0),
("banner_141",0,"map_flag_g15", banner_scale,0),
("banner_142",0,"map_flag_g16", banner_scale,0),
("banner_143",0,"map_flag_g17", banner_scale,0),
("banner_144",0,"map_flag_g18", banner_scale,0),
("banner_145",0,"map_flag_g19", banner_scale,0),
("banner_146",0,"map_flag_g20", banner_scale,0),
("banner_147",0,"map_flag_g21", banner_scale,0),
**** module_meshes.pyの編集
("banner_f21", 0, "banner_a15", 0, 0, 0, -90, 0, 0, 1, 1, 1),の後に
("banner_g01", 0, "banner_g01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g02", 0, "banner_g02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g03", 0, "banner_g03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g04", 0, "banner_g04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g05", 0, "banner_g05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g06", 0, "banner_g06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g07", 0, "banner_g07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g08", 0, "banner_g08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g09", 0, "banner_g09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g10", 0, "banner_g10", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g11", 0, "banner_g11", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g12", 0, "banner_g12", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g13", 0, "banner_g13", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g14", 0, "banner_g14", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g15", 0, "banner_g15", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g16", 0, "banner_g16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g17", 0, "banner_g17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g18", 0, "banner_g18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g19", 0, "banner_g19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g20", 0, "banner_g20", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g21", 0, "banner_g21", 0, 0, 0, -90, 0, 0, 1, 1, 1),
****module_scene_props.pyの編集
("banner_f21", 0, "banner_a15", "0", []),の後に
("banner_g01", 0, "banner_g01", "0", []),
("banner_g02", 0, "banner_g02", "0", []),
("banner_g03", 0, "banner_g03", "0", []),
("banner_g04", 0, "banner_g04", "0", []),
("banner_g05", 0, "banner_g05", "0", []),
("banner_g06", 0, "banner_g06", "0", []),
("banner_g07", 0, "banner_g07", "0", []),
("banner_g08", 0, "banner_g08", "0", []),
("banner_g09", 0, "banner_g09", "0", []),
("banner_g10", 0, "banner_g10", "0", []),
("banner_g11", 0, "banner_g11", "0", []),
("banner_g12", 0, "banner_g12", "0", []),
("banner_g13", 0, "banner_g13", "0", []),
("banner_g14", 0, "banner_g14", "0", []),
("banner_g15", 0, "banner_g15", "0", []),
("banner_g16", 0, "banner_g16", "0", []),
("banner_g17", 0, "banner_g17", "0", []),
("banner_g18", 0, "banner_g18", "0", []),
("banner_g19", 0, "banner_g19", "0", []),
("banner_g20", 0, "banner_g20", "0", []),
("banner_g21", 0, "banner_g21", "0", []),
****module_presentations.pyの編集
(ti_on_presentation_event_state_change,
[(store_trigger_param_1, ":object"),
(try_begin),
(eq, ":object", "$g_presentation_obj_1"),
(val_add, "$g_presentation_page_no", 1),
(val_mod, "$g_presentation_page_no", 8), ←の数字を10にする
****module_constants.pyの編集
# Banner constants
banner_meshes_begin = "mesh_banner_a01"
banner_meshes_end_minus_one = "mesh_banner_f21" ←"mesh_banner_g21"に変える
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_126" ←"icon_banner_147"に変える
banner_scene_props_begin = "spr_banner_a"
banner_scene_props_end_minus_one = "spr_banner_f21" ←"spr_banner_g21"に変える
***BRFEditでBRFファイルを作成する
BRFEditを起動して
~\Mount&Blade\CommonResフォルダのbanners.brfからbanner_f01からbanner_f21、
~\Mount&Blade\CommonResフォルダのmap_flag_c.brfからmap_flag_f01からmap_flag_f21をImportして
Nameをそれぞれbanner_g01からbanner_g21、map_flag_g01からmap_flag_g21に変更し、Materialを共通の名前(bannar_gmなど)にする
Matのタブを選択し、addでdefault_materialを作成し、先ほどの名前に変更して用意したバナー用の画像名(.ddsを省く)をDiffuseに記入
Texのタブを選択し、addでdefault_texture.ddsを作成し、名前をバナー用の画像名にしてセットする
後はNativeのResourceフォルダにBRFファイルを保存し、Texturesフォルダにバナーの画像を置いて
module.iniの最後にload_mod_resource = BRFの名前(.brfを省く) を記入すれば終了です。
***ゲーム上での反映を確かめる
バナー選択のページは16ずつしか表示されないのでa~gで21x7=147のバナーを表示するには10ページ必要ですが
最後のバナーは現状表示されません。(やりようはあるようです)
記述、BRFの作成が成功していればこのようになります。
&ref(bannerpage.jpg)
一度この作業をすれば後はddsファイルを編集するだけでいつでも新しいバナーに変える事が出来ます。
***補足
バナー画像は一つが140x341のサイズです。しかしそれだと1024x1024全体サイズではHight(画像の縦)が1pixel余ります・・・
なので私は上段(140x341)、中段(140x342)、下段(140x341)としました。一応表示に問題はありませんでした。
他のバナー同様に服に反映させる場合、module_meshes.pyの"arms_f01~f21"の項目をコピーしてfをgに変えて
module_constants.pyのarms_meshes_end_minus_one = "mesh_arms_f21"を"mesh_arms_g21"に変えればできます。
(※旗用のmeshが標準(長方形)ならそのまま使えますが、旗の形状がそれ以外の場合には標準の形のmeshをarms_用に作る必要があります)
----
Nativeに新しくバナーを追加するまでの過程です。
参考:[[Adding Banners>http://forums.taleworlds.net/index.php/topic,39396.0.html]]の方々に感謝
----
#contents
----
**必要となるもの
新しいバナー画像(1024x1024サイズ)
Texture Converter(ddsをbmpファイルに変換するのに必要)
DirectXTextureTool(MipMap付きddsファイル作成に必要)
※上記二つはDirectXSDKをインストールすると付いてくる
Paint.NETならddsのまま編集可能。保存時にDTX1+mipmap作成もOK
BRFEdit
画像を編集するソフト(Gimp,Photoshopなど)
pyを編集できる環境
***新しいバナー画像の作成
~\Mount&Blade\Texturesフォルダにあるbanner_a~f.ddsファイルを一つコピーし
右クリックで"Convert To file format…"を選び、Enable extended.DDS file optionsのチェックを外し
Pixel Formatで"A8R8G8B8"などを選びbmpに変換する。
できたbmpを画像編集ソフトなどで各バナーを追加したいバナーに編集する
そして編集した画像をDirectXTextureToolで開き、Format項目で"Genarate MipMaps"でMipMapを作成する。
"Change Surface Format..."でDXT1を選択、File項目Save As...でddsを作成する(例:banners_g.ddsなど)
*** NativeModuleSystem(.pyファイル)の編集
編集するpyファイルはmodule_map_icons.py、module_meshes.py、
module_scene_props.py、module_presentations.py、module_constants.pyの5つ。
**** module_map_icons.pyの編集
("banner_126",0,"map_flag_15", banner_scale,0),の後に
("banner_127",0,"map_flag_g01", banner_scale,0),
("banner_128",0,"map_flag_g02", banner_scale,0),
("banner_129",0,"map_flag_g03", banner_scale,0),
("banner_130",0,"map_flag_g04", banner_scale,0),
("banner_131",0,"map_flag_g05", banner_scale,0),
("banner_132",0,"map_flag_g06", banner_scale,0),
("banner_133",0,"map_flag_g07", banner_scale,0),
("banner_134",0,"map_flag_g08", banner_scale,0),
("banner_135",0,"map_flag_g09", banner_scale,0),
("banner_136",0,"map_flag_g10", banner_scale,0),
("banner_137",0,"map_flag_g11", banner_scale,0),
("banner_138",0,"map_flag_g12", banner_scale,0),
("banner_139",0,"map_flag_g13", banner_scale,0),
("banner_140",0,"map_flag_g14", banner_scale,0),
("banner_141",0,"map_flag_g15", banner_scale,0),
("banner_142",0,"map_flag_g16", banner_scale,0),
("banner_143",0,"map_flag_g17", banner_scale,0),
("banner_144",0,"map_flag_g18", banner_scale,0),
("banner_145",0,"map_flag_g19", banner_scale,0),
("banner_146",0,"map_flag_g20", banner_scale,0),
("banner_147",0,"map_flag_g21", banner_scale,0),
**** module_meshes.pyの編集
("banner_f21", 0, "banner_a15", 0, 0, 0, -90, 0, 0, 1, 1, 1),の後に
("banner_g01", 0, "banner_g01", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g02", 0, "banner_g02", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g03", 0, "banner_g03", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g04", 0, "banner_g04", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g05", 0, "banner_g05", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g06", 0, "banner_g06", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g07", 0, "banner_g07", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g08", 0, "banner_g08", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g09", 0, "banner_g09", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g10", 0, "banner_g10", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g11", 0, "banner_g11", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g12", 0, "banner_g12", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g13", 0, "banner_g13", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g14", 0, "banner_g14", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g15", 0, "banner_g15", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g16", 0, "banner_g16", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g17", 0, "banner_g17", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g18", 0, "banner_g18", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g19", 0, "banner_g19", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g20", 0, "banner_g20", 0, 0, 0, -90, 0, 0, 1, 1, 1),
("banner_g21", 0, "banner_g21", 0, 0, 0, -90, 0, 0, 1, 1, 1),
****module_scene_props.pyの編集
("banner_f21", 0, "banner_a15", "0", []),の後に
("banner_g01", 0, "banner_g01", "0", []),
("banner_g02", 0, "banner_g02", "0", []),
("banner_g03", 0, "banner_g03", "0", []),
("banner_g04", 0, "banner_g04", "0", []),
("banner_g05", 0, "banner_g05", "0", []),
("banner_g06", 0, "banner_g06", "0", []),
("banner_g07", 0, "banner_g07", "0", []),
("banner_g08", 0, "banner_g08", "0", []),
("banner_g09", 0, "banner_g09", "0", []),
("banner_g10", 0, "banner_g10", "0", []),
("banner_g11", 0, "banner_g11", "0", []),
("banner_g12", 0, "banner_g12", "0", []),
("banner_g13", 0, "banner_g13", "0", []),
("banner_g14", 0, "banner_g14", "0", []),
("banner_g15", 0, "banner_g15", "0", []),
("banner_g16", 0, "banner_g16", "0", []),
("banner_g17", 0, "banner_g17", "0", []),
("banner_g18", 0, "banner_g18", "0", []),
("banner_g19", 0, "banner_g19", "0", []),
("banner_g20", 0, "banner_g20", "0", []),
("banner_g21", 0, "banner_g21", "0", []),
****module_presentations.pyの編集
(ti_on_presentation_event_state_change,
[(store_trigger_param_1, ":object"),
(try_begin),
(eq, ":object", "$g_presentation_obj_1"),
(val_add, "$g_presentation_page_no", 1),
(val_mod, "$g_presentation_page_no", 8), ←の数字を10にする
****module_constants.pyの編集
# Banner constants
banner_meshes_begin = "mesh_banner_a01"
banner_meshes_end_minus_one = "mesh_banner_f21" ←"mesh_banner_g21"に変える
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_126" ←"icon_banner_147"に変える
banner_scene_props_begin = "spr_banner_a"
banner_scene_props_end_minus_one = "spr_banner_f21" ←"spr_banner_g21"に変える
***BRFEditでBRFファイルを作成する
BRFEditを起動して
~\Mount&Blade\CommonResフォルダのbanners.brfからbanner_f01からbanner_f21、
~\Mount&Blade\CommonResフォルダのmap_flag_c.brfからmap_flag_f01からmap_flag_f21をImportして
Nameをそれぞれbanner_g01からbanner_g21、map_flag_g01からmap_flag_g21に変更し、Materialを共通の名前(bannar_gmなど)にする
Matのタブを選択し、addでdefault_materialを作成し、先ほどの名前に変更して用意したバナー用の画像名(.ddsを省く)をDiffuseに記入
Texのタブを選択し、addでdefault_texture.ddsを作成し、名前をバナー用の画像名にしてセットする
後はNativeのResourceフォルダにBRFファイルを保存し、Texturesフォルダにバナーの画像を置いて
module.iniの最後にload_mod_resource = BRFの名前(.brfを省く) を記入すれば終了です。
***ゲーム上での反映を確かめる
バナー選択のページは16ずつしか表示されないのでa~gで21x7=147のバナーを表示するには10ページ必要ですが
最後のバナーは現状表示されません。(やりようはあるようです)
記述、BRFの作成が成功していればこのようになります。
&ref(bannerpage.jpg)
一度この作業をすれば後はddsファイルを編集するだけでいつでも新しいバナーに変える事が出来ます。
***補足
バナー画像は一つが140x341のサイズです。しかしそれだと1024x1024全体サイズではHight(画像の縦)が1pixel余ります・・・
なので私は上段(140x341)、中段(140x342)、下段(140x341)としました。一応表示に問題はありませんでした。
他のバナー同様に服に反映させる場合、module_meshes.pyの"arms_f01~f21"の項目をコピーしてfをgに変えて
module_constants.pyのarms_meshes_end_minus_one = "mesh_arms_f21"を"mesh_arms_g21"に変えればできます。
(※旗用のmeshが標準(長方形)ならそのまま使えますが、旗の形状がそれ以外の場合には標準の形のmeshをarms_用に作る必要があります)
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: