Оригинал (http://forums.taleworlds.net/index.php/topic,73231.0.html)
Введение.
Привет еще раз, ребята, это cdvader и мой новый туториал. Я очень рад, что написал этот туториал, и я не могу себе представить, какого рода гномы, тролли, хоббиты, и иные существа будут созданы с его помощью. Сегодня мы будем делать новый скелет с рабочей анимацией путем дублирования старого человеческого скелета. Этот процесс будет очень легким, и я думаю что у вас все получится без проблем.
Прежде чем я начну, я должен сказать, очень, очень большое спасибо mtarini. Спасибо!
Что нам нужно?
Естессно сама игра.
Mount & Blade (http://rusmnb.ru/download.php?view.38) - Версия 1.011 или Warband v1.1xx (http://www.taleworlds.com/download.aspx?type=2)
Mount & Blade - модульная система (http://forums.taleworlds.net/index.php/topic,49267.0.html) для версии 1.011 или для Warband (http://download2.taleworlds.com/mb_warband_module_system_1134.zip)
Какую-то программу для редактирования анимации. Вот две из (вероятно) наиболее известных:
Autodesk 3ds Max (http://usa.autodesk.com/adsk/servlet/pc/index?id=13567410&siteID=123112)
Blender (http://www.blender.org)
И импорт / экспорт SMD скриптов для них.
3ds Max SMD импорт/экспорт (http://www.wunderboy.org)
Blender SMD импорт (http://forums.taleworlds.net/index.php/topic,53186.msg1462302.html#msg1462302)
Рабочий Blender Экспорт скрипотов (http://mitglied.lycos.de/dirk_schulz/blendertobrf/brf_export.py).
Ну и конечно же 2 самые важные вещи:
Open BRF (http://forums.taleworlds.net/index.php/topic,72279.0.html)
Iron Launcher (http://forums.taleworlds.net/index.php/topic,67313.0.html)
ЧАСТЬ 1 - Подготовка.
Хорошо. Прежде всего, убедитесь, что у вас есть Mount & Blade и что она работает правильно, также Вам понадобится некоторое знание модульной системы. Повторяю, я очень рекомендую Официальную документацию к ModuleSystem (http://forums.taleworlds.net/index.php/board,12.0.html), а также документацию товарища Jik к ModuleSystem (http://forums.taleworlds.net/index.php/topic,56798.0.html).
Теперь давайте продолжим. Установите OpenBRF. Просто скачайте и извлеките его куда-нибудь, например на рабочий стол (Это хорошее место, лично у меня он хранится именно там). OpenBRF очень хорошая альтернатива BRFEdit, поскольку она может изменить анимацию и скелеты, которые BRFEdit не могут. Однако, поскольку OpenBRF находится в очень ранней стадии развития (альфа-стадии), к сожалению не имеет всех необходимых функций, таких как Материалы, Сталкновения или Шейдерные вкладки. Таким образом в настоящее время необходимо использовать OpenBRF только для изменения скелетов и анимации, а BRFEdit для всех остальных. Но я совершенно уверен, что в скором времени OpenBRF будет лучше и будет выполнять все необходимые функции.
Следующий шаг состоит в том, чтобы получить программу, редактирующую анимации и скелеты. Blender немного сложен, но довольно неплох. Его преимуществом является также то, что но распространяется бесплатно. Другое решение - 3ds Max. Он лучше во всех отношениях, особенно в части цены. Вот только стоит он около 3500 $. Лично я использую 3ds Max. Чтобы получить его либо скачайте 30-дневную пробную версию, или же получите коммерческое издание (или вроде того) из школы.
После того как вы получили программу для редактирования скелета и анимации вам понадобится Iron Launcher с вашим модулем. Это просто - скачайте (http://ifile.it/r0iz54u) Iron Launcher извлеките его и вставьте все содержимое папки IronLauncher'а в папку вашего модуля. Я отправил ярлык "IronLauncher.exe" на мой рабочий стол для быстрого доступа к моему мод. Iron Launcher необходим для создания рабочего скелета.
Теперь давайте продолжим...
Часть 2 - Добавление нового скелета.
Чудесно. В этой части мы будем создавать скелет Горного Гиганта. Мы не будем делать новых голов, рук и ног (которые, к сожалению, необходимы). В самом деле, одной из сторон создания нового скелета является то, что Вы должны пересмотреть все органы, голову, руки и ноги, если вы хотите работать с гигантом. Но хватит болтать - Начнем! ;)
Во-первых, откройте OpenBRF. Теперь откройте 'body_meshes.brf ". Кликните ПКМ по "man_body" и экспортируйте как Rigged Mesh. Сохраните его как "giant_body.smd". Теперь вы можете закрыть OpenBRF. Импортируйте "giant_body.smd" в вашу программу редактирования скелета и анимаций (я использую 3ds Max в данном учебнике). Обратите внимание, прежде чем мы начнем: у вас есть только 1 попытка, если вы потерпите неудачу и реимпортируете модель после этого , то скелет станет непригоден.
Хорошо. Теперь создайте поле или плоскость прямо под моделью "man_body" в Вашей программе. Это очень важно, мы будем использовать поле позднее дабы переместить скелет в нужное место. Теперь выберите все кроме поля, и увеличте вашу новую модель в несколько раз. Я увеличил ее этак раза в 4. Теперь переместите вашу новую увеличенную модель, чтобы она немного прикоснулась ногами к полю. Удалить поле и экспортируйте модель как "giant_body.smd". Экспортируйте ее как Reference SMD. Теперь, по-прежнему в той же сцене, удалите Mesh (сетку (?)). Только Mesh (сетку)! Оставьте кости. А затем экспортируйте ее снова, на этот раз как "skel_giant". Экспортируйте ее как "Sequence SMD". Теперь вы можете закрыть вашу программу.
Отлично. Теперь откройте OpenBRF и импортируйте "skel_giant" как "Skeleton". Не удивлюсь, если кости кажутся слишком далеко друг от друга (я едва нашел кости, я сделал каркас настолько большим). Теперь сохраните .brf как "skel_giant.brf" и поставьте его в свой модуль в папку Resource. Теперь перейдите к File > New и мпортируйте "giant_body.smd" как Rigged Mesh. Сохраните .brf как "giant_body.brf". Теперь вы можете закрыть OpenBRF.
Превосходно, теперь откройте module.ini своего мода. Вставить эти две строки в самом низу:
load_mod_resoure = skel_giant
load_mod_resource = giant_body
Теперь вы можете закрыть module.ini. Прежде чем перейти к следующему шагу, убедитесь, что у вас есть установленный Iron Launcher. Это очень важно! Так, теперь скопируйте папку "Data" из корневой папки "Mount & Blade" в папку вашего мода. В данной папке откройте "skeleton_bodies.xml" и вставьте строки написанные ниже после последнего </Skeleton> (Примечание: НЕ </Skeletons>. Я не редактировал ничего кроме имени. Я в этом пока не разбирался, но mtarini сказал что это для данных hitbox и подобного.
<Skeleton name="skel_giant">
<Bones>
<Bone name="hb_abdomen" bone_mass="10" bone_twist_limit="20" bone_cone_max="30"> <Bodies> <body type="capsule" radius="0.15" pos_x="-0.0327" pos2_x="0.0327" pos_y="-0.045900" pos2_y="-0.045900" pos_z="0.040400" pos2_z="0.040400"/> </Bodies> </Bone>
<Bone name="hb_thigh_l" bone_mass="10" bone_twist_limit="30" bone_cone_max="70"><Bodies> <body type="capsule" radius="0.09" pos_x="0.0045" pos2_x="0.0045" pos_y="0.089725" pos2_y="0.434114" pos_z="0.027649" pos2_z="0.043844"/></Bodies> </Bone>
<Bone name="hb_calf_l" bone_mass="6" rotate_side="45" bone_twist_limit="45" bone_cone_min = "-5" bone_cone_max="5" socket_dir_y="0.0" socket_dir_x="0.9"><Bodies> <body type="capsule" radius="0.06" pos_x="0.0076" pos2_x="0.0076" pos_y="0.071147" pos2_y="0.447461" pos_z="0.058433" pos2_z="0.005583"/></Bodies></Bone>
<Bone name="hb_foot_l"></Bone>
<Bone name="hb_thigh_r" bone_mass="10" bone_twist_limit="30" bone_cone_max="70"><Bodies> <body type="capsule" radius="0.09" pos_x="-0.0045" pos2_x="-0.0045" pos_y="0.089725" pos2_y="0.434114" pos_z="0.027649" pos2_z="0.043844"/></Bodies> </Bone>
<Bone name="hb_calf_r" bone_mass="6" rotate_side="45" bone_twist_limit="45" bone_cone_min = "-5" bone_cone_max="5" socket_dir_y="0.0" socket_dir_x="0.9"><Bodies> <body type="capsule" radius="0.06" pos_x="-0.0076" pos2_x="-0.0076" pos_y="0.071147" pos2_y="0.447461" pos_z="0.058433" pos2_z="0.005583"/></Bodies></Bone>
<Bone name="hb_foot_r"></Bone>
<Bone name="hb_spine" bone_mass="10" bone_twist_limit="20" bone_cone_max="30"> <Bodies> <body type="capsule" radius="0.14" pos_x="0.028570" pos2_x="-0.026203" pos_y="0.131210" pos2_y="0.131584" pos_z="0.008536" pos2_z="0.010200"/> </Bodies> </Bone>
<Bone name="hb_thorax" bone_mass="10" bone_twist_limit="20" bone_cone_max="30"> <Bodies> <body type="capsule" radius="0.145" pos_x="-0.046671" pos2_x="0.046902" pos_y="0.111923" pos2_y="0.111877" pos_z="0.003622" pos2_z="0.001374"/> </Bodies></Bone>
<Bone name="hb_head" bone_mass="3" bone_twist_limit="60" bone_cone_max="70"> <Bodies> <body type="capsule" radius="0.09" pos_x="-0.002853" pos2_x="-0.004396" pos_y="0.004160" pos2_y="0.102851" pos_z="0.000345" pos2_z="-0.009731"/> </Bodies></Bone>
<Bone name="hb_shoulder_l" bone_mass="3" bone_twist_limit="50" bone_cone_max="10"><Bodies> <body type="capsule" radius="0.065" pos_x="-0.003582" pos2_x="-0.003063" pos_y="0.129283" pos2_y="0.162886" pos_z="-0.003477" pos2_z="-0.000981"/></Bodies> </Bone>
<Bone name="hb_upperarm_l" bone_mass="4" rotate_side="-60" bone_twist_limit="20" bone_cone_max="40"> <Bodies> <body type="capsule" radius="0.06" pos_x="-0.004050" pos2_x="-0.003737" pos_y="0.068400" pos2_y="0.218365" pos_z="-0.012791" pos2_z="-0.009558"/></Bodies></Bone>
<Bone name="hb_forearm_l" bone_mass="2" rotate_up="-45" bone_twist_limit="45" bone_cone_max="5" socket_dir_z="1"> <Bodies> <body type="capsule" radius="0.052" pos_x="0.007783" pos2_x="0.006982" pos_y="0.013050" pos2_y="0.238987" pos_z="-0.014167" pos2_z="-0.020907"/></Bodies></Bone>
<Bone name="hb_hand_l"> </Bone>
<Bone name="hb_item_l"> </Bone>
<Bone name="hb_shoulder_r" bone_mass="3" bone_twist_limit="50" bone_cone_max="10"> <Bodies> <body type="capsule" radius="0.065" pos_x="0.003582" pos2_x="0.003063" pos_y="0.129283" pos2_y="0.162886" pos_z="-0.003477" pos2_z="-0.000981"/></Bodies> </Bone>
<Bone name="hb_upperarm_r" bone_mass="4" rotate_side="-60" bone_twist_limit="20" bone_cone_max="40"><Bodies> <body type="capsule" radius="0.06" pos_x="0.004050" pos2_x="0.003737" pos_y="0.068400" pos2_y="0.218365" pos_z="-0.012791" pos2_z="-0.009558"/></Bodies></Bone>
<Bone name="hb_forearm_r" bone_mass="2" rotate_up="45" bone_twist_limit="45" bone_cone_max="5" socket_dir_z="-1"> <Bodies> <body type="capsule" radius="0.052" pos_x="-0.007783" pos2_x="-0.006982" pos_y="0.013050" pos2_y="0.238987" pos_z="-0.014167" pos2_z="-0.020907"/></Bodies></Bone>
<Bone name="hb_hand_r"> </Bone>
<Bone name="hb_item_r"> </Bone>
</Bones>
</Skeleton>
Сохраните и теперь можно закрыть "skeleton_bodies.xml". Перейдите на вашу ModuleSystem и откройте 'header_troops.py ". Вставьте это после "tf_female":
tf_giant = 2
Сохранитt и закройте 'header_troops.py". Давайте двигаться дальше. Теперь откройте "module_skins.py" и вставить эту информацию:
(
"giant", 0,
"giant_body", "man_calf_l", "m_handL",
"male_head", man_face_keys,
["man_hair_s","man_hair_m","man_hair_n","man_hair_o", "man_hair_y10", "man_hair_y12","man_hair_p","man_hair_r","man_hair_q","man_hair_v","man_hair_t","man_hair_y6","man_hair_y3","man_hair_y7","man_hair_y9","man_hair_y11","man_hair_u","man_hair_y","man_hair_y2","man_hair_y4"], #man_hair_meshes ,"man_hair_y5","man_hair_y8",
["beard_e","beard_d","beard_k","beard_l","beard_i","beard_j","beard_z","beard_m","beard_n","beard_y","beard_p","beard_o", "beard_v", "beard_f", "beard_b", "beard_c","beard_t","beard_u","beard_r","beard_s","beard_a","beard_h","beard_g",], #beard meshes ,"beard_q"
["hair_blonde", "hair_red", "hair_brunette", "hair_black", "hair_white"], #hair textures
["beard_blonde","beard_red","beard_brunette","beard_black","beard_white"], #beard_materials
[("manface_young_2",0xffcbe0e0,["hair_blonde"],[0xffffffff, 0xffb04717, 0xff502a19]),
("manface_midage",0xffdfefe1,["hair_blonde"],[0xffffffff, 0xffb04717, 0xff632e18, 0xff502a19, 0xff19100c]),
("manface_young",0xffd0e0e0,["hair_blonde"],[0xff83301a, 0xff502a19, 0xff19100c, 0xff0c0d19]),
# ("manface_old",0xffd0d0d0,["hair_white","hair_brunette","hair_red","hair_blonde"],[0xffffcded, 0xffbbcded, 0xff99eebb]),
("manface_young_3",0xffdceded,["hair_blonde"],[0xff2f180e, 0xff171313, 0xff007080c]),
("manface_7",0xffc0c8c8,["hair_blonde"],[0xff171313, 0xff007080c]),
("manface_midage_2",0xfde4c8d8,["hair_blonde"],[0xff502a19, 0xff19100c, 0xff0c0d19]),
("manface_rugged",0xffb0aab5,["hair_blonde"],[0xff171313, 0xff007080c]),
# ("manface_young_4",0xffe0e8e8,["hair_blonde"],[0xff2f180e, 0xff171313, 0xff007080c]),
("manface_african",0xff807c8a,["hair_blonde"],[0xff120808, 0xff007080c]),
# ("manface_old_2",0xffd5d5c5,["hair_white"],[0xffffcded, 0xffbbcded, 0xff99eebb]),
], #man_face_textures,
[(voice_die,"snd_man_die"),(voice_hit,"snd_man_hit"),(voice_grunt,"snd_man_grunt"),(voice_grunt_long,"snd_man_grunt_long"),(voice_yell,"snd_man_yell"),(voice_victory,"snd_man_victory")], #voice sounds
"skel_giant", 1.0,
psys_game_blood,psys_game_blood_2,
[[1.7, comp_greater_than, (1.0,face_width), (1.0,temple_width)], #constraints: ex: 1.7 > (face_width + temple_width)
[0.3, comp_less_than, (1.0,face_width), (1.0,temple_width)],
[1.7, comp_greater_than, (1.0,face_width), (1.0,face_depth)],
[0.3, comp_less_than, (1.0,eyebrow_height), (1.0,eyebrow_position)],
[1.7, comp_greater_than, (1.0,eyebrow_height), (1.0,eyebrow_position)],
[-0.7, comp_less_than, (1.0,nose_size), (-1.0,nose_shape)],
[0.7, comp_greater_than, (1.0,nose_size), (-1.0,nose_shape)],
[2.7, comp_greater_than, (1.0,chin_size), (1.0,mouth_nose_distance), (1.0,nose_height), (-1.0,face_width)],
]
),
Прямо перед последним "]". Сохраните и закройте. Откройте "module_game_menus.py" и вставьте после Female option:
("start_giant", [], "Mountain Giant.",
[(troop_set_type, "trp_player", 4),
(assign, "$character_gender", tf_giant),
(jump_to_menu, "mnu_start_character_2"),
]),
Теперь можете сохранить и закрыть. Откомпилируйте. Если вы получите какие-либо ошибки, просто снова откомпилируйте и они должны уйти. Если они все еще будут появляться, убедитесь, что вы все сделали правильно. Теперь зайдите в игру и проверьте вашего нового Горного Гиганта!!
PS: Убедитесь, что вы начнете игру с помощью Iron Launcher'а.
cdvader.
Критическое обновление (17/08/09) - Скопируйте "skeletons.brf" из папки CommonRes в папку Resources вашего мода. Назовите этот брф как вам вздумается и добавьте в этот же брф файл свои новые скелеты и пропишите вместо "load_resource=skeletons" "load_mod_resource=название_вашего_переименованного_нового_файла_скелетов" в module.ini...
Самое последнее крит. обновление немного не понял... Вроде как можно сделать так, что персонажи будут летать по воздуху (будет такая анимация). Такого эффекта можно добиться если ноги не возвращать к тому полю (поднять их выше его), которое было в 3-ем абзаце 4-го пункта...
Credits.
Огромное спасибо mtarini за Open-BRF,
Огромное спасибо Swyter за Iron Launcher,
И, конечно, огромное спасибо Армаану за Mount & Blade.
Оригинал (http://forums.taleworlds.net/index.php/topic,72992.0.html)
Введение.
Доброе время суток. В этом туториале я покажу вам, как добавлять новую анимацию и редактировать старую.
Вначале, я хотел бы поблагодарить mtarini, благодаря которому мы получили возможность редактировать, добавлять и вообще делать всё что угодно с Анимацией.
Итак, начнем.
Для начала - Что нам требуется?
Конечно же наличие установленной самой игры.
Mount & Blade - версии 1.011 (http://www.taleworlds.com) или Warband v1.1xx (http://www.taleworlds.com/download.aspx?type=2).
Mount & Blade – модульная система для версии 1.011 (http://www.taleworlds.com/download/mb_module_system_1010_0.zip) или для Warband (http://download2.taleworlds.com/mb_warband_module_system_1134.zip).
Программа позволяющая редактировать анимацию.
Вот две наиболее известных:
Autodesk 3ds Max (http://usa.autodesk.com/adsk/servlet/pc/index?id=13567410&siteID=123112)
Blender (http://www.blender.org/)
И импорт / экспорт SMD скриптов для них.
3ds Max SMD импорт/экспорт (http://www.wunderboy.org)
Blender SMD импорт (http://forums.taleworlds.net/index.php/topic,53186.msg1462302.html#msg1462302)
Рабочий Blender Экспорт скрипотов (http://mitglied.lycos.de/dirk_schulz/blendertobrf/brf_export.py).
Ну и самое главное:.
Open BRF (http://forums.taleworlds.net/index.php/topic,72279.0.html)
ЧАСТЬ 1 - Подготовка.
Хорошо. Прежде всего убедитесь, что у вас есть рабочая копия Mount & Blade v1.011 и ModuleSystem. Прежде чем приступить к работе с анимацией вы должны иметь некоторые знания о модульной системе. Я очень рекомендую официальную документацию к ModuleSystem (http://forums.taleworlds.net/index.php/board,12.0.html), а также документацию товарища Jik к ModuleSystem (http://forums.taleworlds.net/index.php/topic,56798.0.html).
Теперь давайте продолжим. Установите OpenBRF. Просто скачайте и извлеките его куда-нибудь, например на рабочий стол (Это хорошее место, лично у меня он хранится именно там). OpenBRF очень хорошая альтернатива BRFEdit, поскольку она может изменить анимацию и скелеты, которые BRFEdit не могут. Однако, поскольку OpenBRF находится в очень ранней стадии развития (альфа-стадии), к сожалению не имеет всех необходимых функций, таких как Материалы, Сталкновения или Шейдерные вкладки. Таким образом в настоящее время необходимо использовать OpenBRF только для изменения скелетов и анимации, а BRFEdit для всех остальных. Но я совершенно уверен, что в скором времени OpenBRF будет лучше и будет выполнять все необходимые функции.
Следующий шаг состоит в том, чтобы раздобыть программу, редактирующую анимации и скелеты. Blender немного сложен, но довольно неплох. Его преимуществом является также то, что он распространяется бесплатно. Другое решение - 3ds Max. Он лучше во всех отношениях, особенно в части цены. Вот только стоит он около 3500 $. Лично я использую 3ds Max. Чтобы получить его либо скачайте 30-дневную пробную версию, или же получите коммерческое издание (или вроде того) из школы.
Вот теперь мы готовы приступить к работе с анимациями.
Часть 2 - Добавление "новых" анимации.
Если кто видел фильм "Храброе сердце", в последней битве хороший друг Уильяма вдохновил свое войско на битву бросив огромный меч Уильяма над полем. Если вы еще не видели фильм, вы можете увидеть здесь (http://www.youtube.com/watch?v=ncgHB3Co8mc&feature=related) сцену полета этого меча над полем. Это действительно выглядит зрелищно и кроме того может серьезно ранить/убить врага (если попадет в него). Таким образом мы попытаемся создать нечто подобное, но конечно же это будет выглядеть несколько проще и не так зрелищно, вы сможете бросить много мечей подряд.
Отлично. Откройте "OpenBRF", перейдите в File>Open и откройте "uni_throws". Ухх, как много открытий в этом предложении. :) Так, теперь нажмите на "throw_javelin" и дублировать его (нажать правой кнопкой мыши). Переименуйте его (нажать правой кнопкой мыши еще раз) на "throw_braveheart". Перейти к File> Save и выйдите из OpenBRF. Вот таким вот образом вы можете без проблем дублировать анимации. Если вы не продублируете и не переименуете анимацию, а просто создадите новую анимацию в строке module_animations.py, она перезапишется.
Однако если вы действительно хотите добавить совершенно новую анимацию, сделать ее с нуля, откройте "skeletons.brf" используя OpenBRF и экспортируйте сюда скелет "Nude" или перейдите в меню Tools > Edit Reference Data, щелкните на закладке Skeleton и нажмите на "Human" и экспортируйте его как "Nude". Используя SMD Importer экспортируйте этот "Nude" скелет в Blender или 3ds Max. При экспорте из Max'а не забудьте отметить его как "Sequence" вместо "Reference". Я не совсем знаю как это работает в Blender'е. В настоящее время экспортер OpenBRF несколько не завершен (OpenBRF все еще находится в стадии альфа версии), так что все кости кажутся не на своем месте, однако вы можете создавать новые анимации, сложность заключается только в том что вам будет труднее понять этот скелет нежели обычный. Тем не менее не следует сильно беспокоиться, OpenBRF импортер восстановит нормальное положение костей. Импортировать полученное достаточно легко, просто откройте существующий .brf файл (на данный момент создавать новый нет возможности) и перейдите в Import > Skeletal Animation. Вот и все.
Короче говоря, посмотреть на старые уже существующие анимации дабы узнать сколько примерно кадров вам необходимо, экспортируйте Nude скелет без анимации, сделайте свою анимацию, импортируйте ее как анимацию скелета и посмотрите вашу новую анимацию!
Если вы хотите увидеть пример - скачайте этот (http://www.megaupload.com/?d=ITRQCJ6V) файл. Не волнуйтесь, он в .AVI формате и поэтому не может содержать вирус. Это простая анимация показанная в OpenBRF которую я сделал только ради теста.
Хорошо, "новая" анимация настроена, мы можем двигаться дальше. Перейдите в ModuleSystem и откройте "module_animations.py", "header_items.py", и "module_items.py". Во-первых, мы будем править module_animations.py. Скопируйте "ready_javelin" и "release_javelin" примерно в 509 строку. Вставьте их (замените старые "unused_human_anims") в строку 1123. Убедитесь, что вы заменили старые анимации. Теперь переименуйте материал в _braveheart. Все должно выглядеть следующим образом:
["ready_braveheart", acf_rotate_body,
[0.3, "throw_braveheart", 0, 30, blend_in_ready],
],
["release_braveheart", acf_rotate_body,
[1.0, "throw_braveheart", 55, 100, arf_blend_in_0],
],
В принципе, это небольшой скрипт части "определения" анимации. Если вы посмотрите на первый скрипт вам сразу бросятся в глаза 4 основные вещи. "ready_braveheart" является первой, это ID анимации, который используется для привязки анимации. Следующим важным моментом является "acf_rotate_body", о значении которого легко догадаться. Он вращает тело. Следующим важным моментом является "throw_braveheart". Это название анимации ресурса/последовательности, а последний из них, "blend_in_ready", представляет собой строку, которая связывает эту анимацию с другими. Часть "0, 30" это счетчик кадров. Теперь вы знаете, все, что необходимо, и мы можем двигаться дальше.
Перейдите к header_items.py. Найдите "itcf_throw_javelin" и скопируйте все это в нижней части списка itcf_, прямо перед itc_cleaver. Переименуйте его в "itcf_throw_braveheart ". Если вы сделали все правильно, она должна выглядеть так:
itcf_force_64_bits = 0x8000000000000000
itcf_throw_braveheart = 0x0000000000040000
itc_cleaver
И сейчас мы должны сделать новый itc_. По сути, в моем понимании, itc_ (пункт возможностей) представляет собой перечень различных анимаций упакованых вместе. Если вы поместите itc_scimitar для вашей вещи, вы не сможете колоть/бить, поскольку itc_ не имеет itcf_thrust_onehanded. itcf_, опять же в моем понимании, необходим для связи с записью itc_. Итак, теперь у вас есть два выбора. Вы либо создаете новую itc_ или просто добавьте itcf_ в вашу вещь. Тем не менее, я предпочитаю использовать itc_ в любом случае, потому что тогда это выглядит чище и можно, если необходимо, добавить новые анимации на itc_ позже. Итак, давайте создадим новое itc_ под названием itc_braveheart под itc_greatlance. Если вы сделали все правильно, она должна выглядеть так:
itc_greatlance = itcf_thrust_onehanded_lance |itcf_thrust_onehanded_lance_horseback| itcf_thrust_polearm
itc_braveheart = itcf_force_64_bits | itcf_throw_braveheart
ixmesh_inventory = 0x1000000000000000
Я не уверен на 100% зачем нужен itcf_force_64_bits, но большинство из itc_ похоже имеет его, и все отлично работает, так что пусть он будет и у нас. Чудесно. Теперь мы можем сохранить все это и перейти к module_items.py. В module_items.py просто скопируйте "practice_javelin" или другое подобное оружие, и вставьте его в самом конце, перед последним ']'. Если вы сделали все правильно, все должно выглядеть примерно так:
["rabati", "Rabati", [("rabati",0)], itp_type_head_armor ,0, 278 , weight(2)|abundance(100)|head_armor(20)|body_armor(0)|leg_armor(0) ,imodbits_cloth ],
["braveheart_sword", "Braveheart Sword", [("b_bastard_sword",0),("b_bastard_sword", ixmesh_carry)], itp_type_thrown |itp_primary|itp_bonus_against_shield ,itc_braveheart|itcf_carry_quiver_back|itcf_show_holster_when_drawn, 0, weight(5) | spd_rtng(91) | shoot_speed(28) | thrust_damage(27, blunt) | max_ammo(50) | weapon_length(75), imodbits_thrown],
]
Как вы можете видеть, мы добавили itc_braveheart к этому пункту. Я также сохранили старые itcf_carry_quiver_back, просто чтобы показать, что вы можете иметь как itc_ так и itcf_ для одной вещи. Вы можете и должны добавить две itcf_ к itc_braveheart. Так он будет выглядеть намного чище. Хорошо. Теперь у вас в основном все готово, я надеюсь, я не забыл ничего важного. Теперь начинайте делать свои уникальные анимации! И не забудьте написать некоторые отзывы ...
Наслаждайтесь,
cdvader.
Критическое обновление (15/08/09) - Вы *не можете* создать совершенно новый .brf файл "с нуля" и разместить свою анимацию в нем, иначе вы получите ошибку RGL. Тем не менее, однако вы можете добавить вашу новую анимацию к уже существующему .brf файлу в папке CommonRes /, который имеет префикс ani_ и у вас не будет никаких RGL ошибок.
Я до сих пор не тестил, работают ли добавленные ani_ или uni_ .brf файлы в каком либо моде.
Credits.
Большое спасибо mtarini за Open-BRF.
И, конечно, огромноейшее спасибо Армагану за Mount & Blade!!!