A Facecode Generator for M&B Warband
Эта программа позволяет создавать совместимые с Warband'ом лица, чтобы помочь в создании лиц NPC или специальных лиц для отдельных фракций.
Особенности:-Возможность генерировать одиночные facecodes, один случайный FaceCode, несколько facecodes с префиксом фракции и нескольких случайных facecodes (т.е. swadian_face_younger_0);
-Графический интерфейс;
-Форматированный вывод в текстовый файл для легкого копирования вставки или разбора для дальнейшей автоматизации;
1) Download the .zip file, unzip somewhere (doesn't matter where)
2) .zip contents:
/tcl
/tk
_bz2.pyd
_ctypes.pyd
_hashlib.pyd
_tkinter.pyd
facegen.exe -> main executeable
python34.dll
tcl86t.dll
tk86t.dll
unicodedata.pyd
The other files are necessary because this .exe is built from a python script using cx_Freeze. Most Warband modders probably have python 2.7x installed, whereas this script requires python 3.4x, therefore a .exe is probably the easiest distribution method. The python script source is available on github (see bottom of this post).
Values/Ranges Explained -----------------------------------------------------
To use facegen, you need to know what assets (faces/hairs/beards/etc) are available in your module. These instructions serve as a guide of where to quickly find these values and how to use them in facegen (Note: You must have the module system for the module! I will not answer any questions about how to find this in the .txt files but it should be possible to do as well)
ALL FIELDS ARE ALWAYS REQUIRED EXCEPT FOR 'CUSTOM CODE LIST' (this will be fixed in future versions, just no time right now)
This means that you should always put something into each field, even if the value may not be used depending on the selected mode.
Name
Replica ID
These are simply identifiers, these fields are used differently depending on the mode selected:
single code: the output appears as -> name = 0x[facecode]
single code random: the output appears as -> name = 0x[facecode]
multi code: the output appears as -> name+default_string+replica_id = 0x[facecode]
multi code random: the output appears as -> code_list_string = 0x[facecode]
Face Morphcode
This is simply a facecode which you get from within the game (start game in Edit Mode, go to change character face, Ctrl+E, click the facecode at the top and copy and past into this field).
This facecode is used ONLY for the face setting data, ie. eye width, temple width etc. This generator does not randomize those values, too many monsters.
The intent here is that you can sculpt the base face using the ingame editor, and then use that facemorph data as a base to generate different variations using different skins/hairs/beards/etc with this generator. This must be a hex value (0xnnnnnnnn...)
Hair Color
I've done some testing in my game, and it seems this value will always range from 0x00 to 0x3f, so set the Upper/Lower limits to somewhere within this range. I recommend using the hex values.
Face Code
1) Go to your modules Module System folder and open module_skins.py, find the face textures section which should look similar to this:
[ # man face textures
("cep_mface_a_00", 0xffad7d63, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_a_00_scar", 0xffad7d63, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_a_01", 0xff8e5d3c, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_a_01_scar", 0xff8e5d3c, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_a_03", 0xffd68a5a, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_a_04", 0xffde9263, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_a_05", 0xffb96342, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_b_00", 0xff834633, ["cep_hair_blonde"], [0xff120808, 0xff007080c]),
("cep_mface_b_01", 0xff7e5e52, ["cep_hair_blonde"], [0xff120808, 0xff007080c]),
("cep_mface_b_02", 0xff7b4531, ["cep_hair_blonde"], [0xff120808, 0xff007080c]),
("cep_mface_b_03", 0xff914e3c, ["cep_hair_blonde"], [0xff120808, 0xff007080c]),
("cep_mface_b_04", 0xff8c5136, ["cep_hair_blonde"], [0xff120808, 0xff007080c]),
("cep_mface_m_00", 0xff9c725a, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_m_00_scar", 0xff9c725a, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_m_01", 0xffa56d52, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_m_02", 0xffa26957, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
("cep_mface_m_03", 0xffad7f67, ["cep_hair_blonde"], [0xff171313, 0xff007080c]),
#...etc
2) Each of these values is a face in-game. They range from 0 -> n, where n is however many face textures you have defined.
Beard Code
1) Go to your modules Module System folder and open module_skins.py, find the beard mesh section which should look similar to this:
[ # beard meshes
"cep_beard_a",
"cep_beard_b",
"cep_beard_c",
"cep_beard_d",
"cep_beard_e",
"cep_beard_f",
"cep_beard_g",
"cep_beard_h",
"cep_beard_i",
"cep_beard_j",
"cep_beard_k",
"cep_beard_l",
"cep_beard_m",
"cep_beard_n",
"cep_beard_o",
"cep_beard_p",
"cep_beard_q",
"cep_beard_r",
"cep_beard_s",
"cep_beard_t",
"cep_beard_u",
"cep_beard_v",
"cep_beard_w"
],
2) Each of these values is a beard in-game. They range from 0 -> n, where n is however many beard meshes you have defined.
Hair Code
1) Go to your modules Module System folder and open module_skins.py, find the hair mesh section which should look similar to this:
man_face_keys,
[ # man hair meshes
"cep_man_hair_q",
"cep_man_hair_b",
"cep_man_hair_c",
"cep_man_hair_r",
"cep_man_hair_s",
"cep_man_hair_u",
"cep_man_hair_a",
"cep_man_hair_v",
"cep_man_hair_j",
"cep_man_hair_e",
"cep_man_hair_g",
"cep_man_hair_i",
"cep_man_hair_f",
"cep_man_hair_p",
"cep_man_hair_h",
"cep_man_hair_m",
"cep_man_hair_d",
"cep_man_hair_t",
"cep_man_hair_l",
"cep_man_hair_k",
"cep_man_hair_n",
"cep_man_hair_o",
"cep_man_hair_w"
],
2) Each of these values is a "hair type". Using the hairs in my example, bald = 0 (always 0!), cep_man_hair_q = 1, cep_man_hair_b = 2, ..., cep_man_hair_w = 23. This means that in my module, I have a range of hair types from 0 -> 23. At this point, if you want to restrain hairs to specific factions, it may make sense to rearrange the hairs so that you get adjacent ranges of similar hairs in your module_skins.py file.
Подробную информацию об установке и использовании программы читайте на родной странице.
СкачатьРодная страница
Комментариев 3
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.