«Гильдия модостроителей Всадников Кальрадии» - туториал по созданию нового квеста
Всем привет.
Данный гайд обьяснит как создать простенький квест (нужна модульная система) для Warband.
Суть квеста (имеются пробелы, а текст диалогов я ваще не парился , когда придумывал).
1) Добавляем локацию (скрытую или же нет)
Скрытая - становится видимой при приближении к ней.
Не скрытая - всегда видна.
2) Входим в локацию и болтаем с наемником, он просит перековать его сломанный меч.
3) Согласившись, получаем предмет (сломанный меч) и несем его кузнецу.
4) Кузнец согласен перековать, но пока он работает просит принести ему два предмета (в нашем случае железо и масло).
5) Достаем предметы и отдаем кузнецу , а он - перекованный меч.
6) Идем к нашему наемнику-квестодателю и отдаем меч (в замен получаем опыт и динары).
7) Все.
1) module_parties - Добавляем локацию (скрытую).
("hidden_village","Hidden",icon_bandit_lair|pf_is_static|pf_hide_defenders, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-97, -102.85),[]),
2) module_game_menu
(
"hidden_village",0,
"You enter the Hidden Village",
"none",
[],
[
("hidden_village_enter",[],"Enter.",[(set_jump_mission,"mt_town_default"),(jump_to_scene,"scn_hidden_village"),(change_screen_mission)],"Door to the village."),
("hidden_village_smithy",[],"Smithy.",[(set_jump_mission,"mt_town_default"),(jump_to_scene,"scn_hidden_village_smithy"),(change_screen_mission)],"Door to the smithy."),
("hidden_village_wait_here",[],"Wait here for some time.",
[
(rest_for_hours_interactive, 24 * 7, 5, 0), #rest while not attackable
(change_screen_return),
]),
("hidden_village_leave",[],"Leave.",[(leave_encounter),(change_screen_return)]),
]
),
3) module_scenes - нужно добавить файлы hidden_village.sco,hidden_village_smithy.sco в папку SceneObj вашего мода.
("hidden_village",sf_generate|sf_muddy_water,"none", "none", (0,0),(100,100),-100,"0x000000023002dd19000691a40000566a000012a000001037",
[],[],"outer_terrain_plain_2"),
("hidden_village_smithy",sf_indoors,"smithy_interior", "bo_smithy_interior", (-40,-40),(40,40),-100,"0",
[],[]),
4) module_scripts
(eq, "$g_encountered_party", "p_camp_bandits"),
(jump_to_menu, "mnu_camp"),
############################################################################################################NEW
(else_try),
(eq, "$g_encountered_party", "p_hidden_village"),
(jump_to_menu, "mnu_hidden_village"),
############################################################################################################NEW
(else_try),
(jump_to_menu, "mnu_simple_encounter"),
5) module_item
###QUEST_ITEM###
["calradia_broken_sword", "Sword", [("calradian_sword_broken",0),("calradian_sword_scabb", ixmesh_carry)], itp_type_one_handed_wpn|itp_unique|itp_primary, itc_scimitar|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn,
163 , weight(1)|difficulty(8)|spd_rtng(99) | weapon_length(48)|swing_damage(23 , cut) | thrust_damage(0 , pierce),imodbits_none ],
["calradia_steel_sword", "Steel Sword", [("calradian_sword",0),("calradian_sword_scabb", ixmesh_carry)], itp_type_one_handed_wpn|itp_unique|itp_bonus_against_shield|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn,
443 , weight(2.5)|difficulty(12)|spd_rtng(99) | weapon_length(86)|swing_damage(32 , cut) | thrust_damage(24 , pierce),imodbits_sword_high ],
6) module_troops
["smithy_master","Master","Master",tf_hero|tf_is_merchant, scn_hidden_village_smithy|entry(5), reserved, fac_commoners,[itm_leather_apron,itm_hide_boots,
itm_book_tactics, itm_sword_of_war],def_attrib|level(3),wp(20),knows_common,0x00000004bf047140368e95b6de6e575c00000000001e49340000000000000000],
["black_swordsman","Swordsman","Swordsman",tf_hero|tf_unmoveable_in_party_window, scn_hidden_village|entry(5), reserved, fac_commoners,
[itm_bascinet,itm_scale_armor,itm_splinted_greaves, itm_war_spear,itm_shield_heater_c,itm_gauntlets],
str_8|agi_9|int_10|cha_8|level(15),wp(80),knows_warrior_npc|
knows_riding_2|knows_leadership_2|knows_athletics_2|knows_ironflesh_2|knows_power_strike_1|knows_weapon_master_1,0x0000000e3f047587581f8de5138e574c00000000001e36dc0000000000000000],
7) module_dialogs
Диалог я набрал "от балды", тут вы можете придумать что угодно (что будут говорить ваши герои).... Ну... Либо предметы для перековки доставать не в магазине, а в скрытых сундуках (к примеру. bonus_chest_2 - обьект сцены - сундук), либо выбивать из бандитов...
###NEW###
[trp_smithy_master, "start", [],"Good day {sir/madam}, will you be looking at my weapons?", "smithy_master_talk", []],
[trp_smithy_master|plyr, "smithy_master_talk", [], "Yes. Show me what you have for sale.", "smithy_master_buy", []],
[trp_smithy_master,"smithy_master_buy", [], "Of course {sir/madam}.", "smithy_trade_completed",[[change_screen_trade]]],
[trp_smithy_master,"smithy_trade_completed", [], "Anything else?", "smithy_master_talk",[]],
[trp_smithy_master|plyr, "smithy_master_talk", [(troop_has_item_equipped,"trp_player","itm_calradia_broken_sword")], "You can reforge the sword?", "smithy_sword_1", []],
[trp_smithy_master,"smithy_sword_1", [], "Show that you have.", "smithy_sword_2",[]],
[trp_smithy_master|plyr, "smithy_sword_2", [], "Here.", "smithy_sword_3",[(troop_remove_item, "trp_player","itm_calradia_broken_sword")]],
[trp_smithy_master,"smithy_sword_3", [], "Mmm.. good steel, I can reforge, but I need more iron. Bring me oil and iron.", "smithy_sword_4",
[
(str_store_string, s2, "str_find_some_iron"),
(call_script, "script_start_quest", "qst_find_iron_for_reforge", "trp_smithy_master"),
]],
[trp_smithy_master|plyr,"smithy_sword_4", [], "Thanks.", "close_window",[]],
[trp_smithy_master|plyr, "smithy_master_talk",
[
(check_quest_active, "qst_find_iron_for_reforge"),
(player_has_item, "itm_oil"),
(player_has_item, "itm_iron"),
],
"I'm find materials.", "iron_for_smith", []],
[trp_smithy_master, "iron_for_smith", [], "Great, give me materials.", "iron_for_smith_1",
[
(troop_remove_item, "trp_player", "itm_oil"),
(troop_remove_item, "trp_player", "itm_iron"),
]],
[trp_smithy_master|plyr,"iron_for_smith_1", [], "Sword reforged?", "iron_for_smith_2",[]],
[trp_smithy_master,"iron_for_smith_2", [], "Oh... yes, take your sword.", "close_window",
[
(troop_add_item, "trp_player","itm_calradia_steel_sword",imod_tempered),
(call_script, "script_succeed_quest", "qst_find_iron_for_reforge"),
(call_script, "script_end_quest", "qst_find_iron_for_reforge"),
]],
[trp_smithy_master|plyr,"smithy_master_talk", [], "Nothing. Thanks.", "close_window",[]],
#####################################################################################################
[trp_black_swordsman,"start",[[eq,"$brok_sword",0]],"Hello, stranger.", "swordmaster_talk",[]],
[trp_black_swordsman|plyr,"swordmaster_talk", [], "Hello, who are you?", "swordmaster_talk_2",[]],
[trp_black_swordsman|plyr, "swordmaster_talk", [], "Please forgive me, I'll be leaving, now...", "close_window",[]],
[trp_black_swordsman,"swordmaster_talk_2",[],"I wandering warrior, You can help me?", "swordmaster_talk_3",[]],
[trp_black_swordsman|plyr, "swordmaster_talk_3", [], "Help?", "swordmaster_talk_4",[]],
[trp_black_swordsman,"swordmaster_talk_4",[],"Yes, my old sword is broken in last battle, you can restore it?", "swordmaster_talk_5",[]],
[trp_black_swordsman|plyr, "swordmaster_talk_5", [], "Hmm. I'll think about it.", "close_window",[[assign,"$brok_sword",1]]],
[trp_black_swordsman,"start", [[eq,"$brok_sword",1]], "Hello, {playername}.That you decide?", "swordmaster_help",[]],
[trp_black_swordsman|plyr,"swordmaster_help", [], "Think, I can help.", "swordmaster_help_2",[]],
[trp_black_swordsman|plyr, "swordmaster_help", [], "Later.", "close_window",[]],
[trp_black_swordsman,"swordmaster_help_2", [],
"Great! Heh, well, this must be my lucky day.Here, take my sword.","swordmaster_help_3",[(troop_add_item, "trp_player","itm_calradia_broken_sword",imod_cracked)]],
[trp_black_swordsman|plyr,"swordmaster_help_3", [], "I'd better be going.", "close_window",[[assign,"$brok_sword",2]]],
[trp_black_swordsman, "start", [[eq,"$brok_sword",2]], "Did you find the sword?","sword_restored",[]],
[trp_black_swordsman|plyr, "sword_restored", [(player_has_item,"itm_calradia_steel_sword")], "Yes! It was quite difficult.", "sword_restored_1",[(troop_remove_item, "trp_player","itm_calradia_steel_sword")]],
[trp_black_swordsman,"sword_restored_1",[],"Yes, my old sword, thanks man.", "sword_restored_2",
[
(call_script, "script_change_player_relation_with_troop", "$g_talk_troop", 7),
(add_xp_as_reward, 2000),
(call_script, "script_troop_add_gold", "trp_player", 500),
]],
[trp_black_swordsman|plyr,"sword_restored_2",[],"A pleasure doing business with you, goodbye.", "close_window",[[assign,"$brok_sword",3]]],
[trp_black_swordsman|plyr, "sword_restored", [], "No, not yet.", "close_window",[]],
[trp_black_swordsman, "start", [(eq,"$brok_sword",3)], "What?","black_question",[]],
[trp_black_swordsman|plyr, "black_question", [], "Nothing, go", "close_window",[]],
#####################################################################################################
8) module_strings
("find_some_iron", "Find iron and oil for blacksmith."),
9) module_quest
("find_iron_for_reforge", "Find iron", qf_random_quest,
"{!}I have to get oil and iron for the blacksmith."
),
Вот вам готовый квестик.
Комментариев 0
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.