Начнем с простейшего квеста под названием "Relic", что означает "Реликвия".
Текстовая версия гайда1. Откройте файл module.troops.py и введите в любом месте
["antler","Antler","Antler",tf_hero,scn_town_4_tavern|entry(3),reserved,fac_commoners,[itm_nomad_armor,itm_nomad_boots], def_attrib|level(2),wp(20),knows_common,0x00000000000430c701ea98836781647f],
Проанализируем написанное:
'antler' - id юнита. Он не отображается, только использует конкретного солдата.
Antler - Имя юнита. Оно показывается в игре.
Antler - имя одиночного юнита. Не используется для героев, только для одиночных юнитов.
tf_hero - без этого куска кода юнит не является героем. Да, это только для героев.
scn_town_4_tavern - сцена, в которой появляется герой, если хотите изменить, возьмите название любой нужного вам населенного пункта из module_parties.py и название сцены из module_scenes.py
reserved - Ничего интересно или достойного вашего внимания.
fac_commoners - Фракция юнита. Можете взять другое название из module_factions.py .
[itm_nomad_armor,itm_nomad_boots] - инвентарь юнита. Можете добавить любые предметы из module_items.py , не забывайте добавить itm_ перед каждой новой вещью, разделяйте вещи запятыми.
def_attrib Характеристики юнита.
level(2) - Самое простое - уровень юнита.
wp(20) - Владения разными видами оружия.
knows_common - Известные умения. Например knows_riding_2|knows_power_strike_4 .
0x00000000000430c701ea98836781647f Лицевой код, можно получить в режиме редактирования. Подробного описания, как его получить, давать не буду. Не о нем гайд.
2. Добавим еще одного юнита.
["thyr","Thyr","Thyr",tf_hero,|tf_unkillable,no_scene,0,fac_order_of_night,
[itm_great_axe,itm_black_armor,itm_winged_great_helmet,itm_nomad_boots,itm_charger],knight_attrib_1
|level(30),wp(140),knows_common|knows_riding_6|knows_athletics_3|knows_ironflesh_2|knows_shield_2,
man_face_younger_1,man_face_older_2],
Заметьте, что фракцией этого юнита является 'order if night' ,то есть "Орден Ночи". И еще один юнит
["guardian","Guardian","Guardian",tf_guarantee_armor|tf_guarantee_boots|tf_guarantee_horse|tf_guarantee_helmet,
0,0,fac_order_of_night,[itm_great_axe,itm_black_armor,itm_mail_coif,itm_nomad_boots,itm_charger],
knight_attrib_1|level(30),wp(140),knows_common|knows_riding_6|knows_athletics_3|knows_ironflesh_2|
knows_shield_2,man_face_younger_1, man_face_older_2]
Тут надо немного пояснений. tf_guarantee_armor - У юнита всегда есть броня. Аналогично для лошади, только tf_guarantee_horse .
3 Переходим в файл module.factions.py и вставляем строку
("order_of_night","Order of Night", 0, 0.5,[("player_faction",-1.0)], []),
Как всегда - анализируем
order_of_night - ID фракции
Order of Night - отображаемое в игре название
0.5 - Отношения внутри фракции
"player_faction",-1.0 - отношения с другими фракциями. Так Орден Ночи ненавидит игрока.
4.переходим к крупнейшей части обучения - module_dialogs.py
Вставьте этот огромный кусок кода под ramun_the_slave_trader
[trp_antler, "start", [[eq,"$holy_relic",2]], "Greetings {playername}.","bye2",[]],
[trp_antler|plyr, "bye2", [], "Greetings to you too, Antler.","close_window",[]],
[trp_antler, "start", [[eq,"$holy_relic",1]], "Did you find the relic?","relic_find_question",[]],
[trp_antler|plyr, "relic_find_question", [(player_has_item,"itm_relic")], "Yes! It was quite difficult.", "relic_znaleziona",[(call_script,"script_end_quest","qst_relic")]],
[trp_antler|plyr, "relic_find_question", [], "No, not yet.", "close_window",[]],
[trp_antler, "relic_znaleziona", [], "Really? Well, congratulations {young man/lassie}! I decided to don't give you reward. This book is a reward. You can sell it in shops.","close_window",[[assign,"$holy_relic",2]]],
[trp_antler, "start", [[eq,"$holy_relic",0]], "Hello, {young man/lassie}! Are you looking for a job or something?", "god1",[]],
[trp_antler|plyr, "god1", [], "Yes!", "god2",[]],
[trp_antler, "god2", [], "Good. Do you heard anything about Order of Night? They're band of wandering bastards or fallen knights, led by Thyr. They recently raided Veluca monastery and stolen holy relic. Now, they should be resting near village of Veidar. Find them, kill everyone except Thyr. Then, persuade him to give you information about location of relic. I hope it's quite clearly. I'll pay you 2000 denars.", "god3",[]],
[trp_antler|plyr, "god3", [], "Allright, that's nice offer. I'll regain relic!", "godyes",[
(setup_quest_text, "qst_relic"),
(str_store_string, s2, "@A guy called Antler told me interesting story. Fallen Knights called Order of Night, recently raided Veluca monastery and stolen holy relic. I must find them and after battle, persuade their leader Thyr to give me holy relic. Those bastards, now should be near Veidar!"),
(call_script,"script_start_quest","qst_relic","trp_antler"), (set_spawn_radius,1),(spawn_around_party,"p_village_48","pt_order_of_night")]],
[trp_antler|plyr, "god3", [], "No, I don't have time for that!", "close_window",[]],
[trp_antler, "godyes", [], "Excellent!", "close_window",[[assign,"$holy_relic",1]]],
[party_tpl|pt_order_of_night,"start", [(eq,"$talk_context",tc_party_encounter)], "Hey, you there! What are you looking for?", "order2",[]],
[party_tpl|pt_order_of_night|plyr,"order2", [], "For a holy relic! Give me it, or I'll cut your throats!", "order3",[]],
[party_tpl|pt_order_of_night,"order3", [], "Hahaha! First give me four billion denars!", "order4",[]],
[party_tpl|pt_order_of_night|plyr,"order4", [], "Nice joke. Prepare to fight, cowards!", "close_window",[[encounter_attack]]],
[party_tpl|pt_order_of_night,"order2", [], "Nevermind...", "close_window",[(assign, "$g_leave_encounter",1)]],
[party_tpl|pt_order_of_night,"start", [(eq,"$talk_context",tc_hero_defeated)], "I yield! Please, don't kill me! I'll give you relic!","relikwia",[]],
[party_tpl|pt_order_of_night|plyr,"relikwia", [], "So, be it. Give me relic and I'll let you go.", "relikwia2",[]],
[party_tpl|pt_order_of_night,"relikwia2", [], "Here you are. But, please! Don't kill me!", "relikwia3",[(troop_add_item, "trp_player","itm_relic",)]],
[party_tpl|pt_order_of_night|plyr,"relikwia3", [], "That's not my bussines! Go on, you see the hills, over there? Run, run, or I'll change my mind!", "close_window",[(assign, "$g_leave_encounter",1)]],
Прошу прощения, что не объясняю ничего здесь. В данный момент мои педагогические навыки и нехватка свободного времени не позволяют этого сделать.
5. Добавим саму реликвию в мод . Открываем module_items.py и вставляем
["relic","St. Grunwalder", [("book_e",0)], itp_type_book, 0, 10000,weight(2)|abundance(100),imodbits_none],
Вы можете выбрать любую вещь , но с книгой легче всего работать
relic - ID предмета. Используется как линк в других .py файлах
St. Grunwalder - Отображаемое название
book_e - Меш предмета. Выберете из ресурсов Native
itp_type_book - Тип предмета. У нас он является книгой
10000 - Магазинная цена в динарах
weight(2) - Определяет вес предмета в килограммах
abundance(100) - Насколько часто предмет оказывается у торговца или же в добыче . Стандарт -100
imodbits_none - Свойства предмета( ржавый, гнутый, зазубренный), не используется для книг .
6.И наконец скопируйте этот кусок кода в module_quests.py
("relic", "Find holy relic", qf_random_quest,
"A guy called Antler told me interesting story. Fallen Knights called Order of Night, recently raided Veluca monastery and stolen holy relic. I must find them and after battle, persuade their leader Thyr to give me holy relic. Those bastards, now should be near Veidar!"
),
Скомпилируйте , запустите игру. Вот,что у вас вышло:
1. Идите в Суно в таверну
2.Возьмите квест у Antler
3.Соберите немного солдат
4.Патрулируйте вокруг деревни Вейдар
5.Сразитесь с орденом ночи
6.Заберите реликвию у Thyr
7.Вернитесь к Antler
Вот и все. Впоследствии я постараюсь улучшить данное руководство. Все сработало на моде, рассчитанном на 1.153 версию. В аналогичной версии Натива проблем возникнуть не должно.
СКАЧАТЬ ГАЙД ВМЕСТЕ С КОДОМАвторство оригинального гайда принадлежит пользователю форума Taleworlds под ником Kolba
Автор перевода praefectus
Оригинал гайда
Комментариев 24
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.