Форум

Уведомления
Очистить все

[MS] Tуториал по созданию нового квеста

 
Джеки Чан
Известный участник Модератор Гильдия переводчиков

Всем привет.
Данный тутор обьяснит как создать простенький квест(нужна mодульная система) для варбанды.

Суть квеста(имеются пробелы ,а текст диалогов я ваще не парился ,когда придумывал)
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 begin
         (else_try),
           (eq, "$g_encountered_party", "p_hidden_village"),
           (jump_to_menu, "mnu_hidden_village"),
###########################################################################NEW end
         (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."
),

Вот вам готовый квестик.
Все на этом, замечания и дополнения приветствуются .
p.s.

по такому принципу можно производить апгрейд оружия - all right reserved

ОтветитьЦитата
Автор темы Размещено : 25.01.2022 23:29

Оставьте ответ

Имя автора

Электронная почта автора

Заголовок *

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Политика конфиденциальности