Cộng đồng Modder Mount & Blade Việt Nam

Ngôi nhà cho anh em yêu thích mod Mount & Blade
 
IndexPortalCalendarTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập

Share | 
 

 Viện lưu trữ code

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
NewBie-BR
Nguyên soái
Nguyên soái


Tổng số bài gửi : 151
Ngân lượng : 12011
Danh tiếng : 20
Ngày gia nhập: : 31/12/2011
Tuổi : 19
Đến từ : Việt Nam

Bài gửiTiêu đề: Viện lưu trữ code   Sun Feb 12, 2012 2:36 am

Chào các bạn!!! Mình lập topic này với mục đích ban đầu là hướng dẫn add các code mới vào mod. Một mình mình làm cũng không xuể nên hi vọng các coder rành tiếng Anh có thể lên 4rum taleworld http://forums.taleworlds.com/index.php?board=64.0 để học hỏi, test thử và dịch lại cho các bạn khác. Trước khi làm theo hướng dẫn trong topic này, các bạn newbie cần phải bik những kiến thức cơ bản trước http://mbmodder.forumvi.com/t29-topic.

NỘI QUY TOPIC (LƯU Ý: ĐỌC KĨ PHẦN NÀY TRƯỚC KHI VIẾT HƯỚNG DẪN HOẶC XEM HƯỚNG DẪN)
Spoiler:
 

CÁC CODE ĐÃ "ĐƯA VÀO KHO LƯU TRỮ"
Spoiler:
 


lol!
Mọi thắc mắc có thể hỏi ở topic này : http://mbmodder.forumvi.com/t30-topic#157
Hi vọng mọi người ủng hộ, cùng góp sức giúp topic này thành một kho lưu trữ code thật sự Very Happy


Được sửa bởi NewBie-BR ngày Wed Feb 15, 2012 7:06 pm; sửa lần 4.
Về Đầu Trang Go down
Xem lý lịch thành viên
NewBie-BR
Nguyên soái
Nguyên soái


Tổng số bài gửi : 151
Ngân lượng : 12011
Danh tiếng : 20
Ngày gia nhập: : 31/12/2011
Tuổi : 19
Đến từ : Việt Nam

Bài gửiTiêu đề: Re: Viện lưu trữ code   Sun Feb 12, 2012 3:17 am

Ngân hàng

Tác giả : Garnier
Phiên bản code hỗ trợ : Warband 1.143 (đã test)
Chức năng: Xuất hiện ngân hàng ở các thành, người chơi có thể vay tiền hoặc gửi tiền lấy lãi .
Để vay tiền, bạn phải có ít nhất 100 đồng, bạn sẽ nhận 1000 đồng và ghi sổ nợ 1000 đồng trong ngân hàng, bạn có thể trả nợ bất kì lúc nào. Lãi xuất là 40 đồng / 1 tuần nếu bạn mượn 1000 đồng (đắt khủng Shocked )
Bạn có thể gửi tiền trong ngân hàng và cứ 1000 đồng gửi thì nhận được 4 đồng / 1 tuần Sad(. Bạn có thể lấy lại tiền gửi bất kì lúc nào
Hướng dẫn add
Mở module_script.py tìm "#NPC companion changes end" .
Code:
(call_script, "script_initialize_npcs"),
(assign, "$disable_npc_complaints", 0),
#NPC companion changes end
--------------------------------------------
      (store_add, "$g_player_debt",0,0),
      (store_add, "$g_player_deposit",0,0),
--------------------------------------------
 # Setting random feast time   
      (try_for_range, ":faction_no", kingdoms_begin, kingdoms_end),
        (store_random_in_range, ":last_feast_time", 0, 312), #240 + 72

Add code này vào dưới cùng của module_game_menus

Code:
  (
    "debt_interest",mnf_scale_picture|mnf_disable_all_keys,
    "{s2}",
    "none",
    [

     (store_div, ":debt_interest","$g_player_debt",25),
          (assign, reg11, ":debt_interest"),
          (store_troop_gold, ":player_wealth", "trp_player"),
          (assign, reg8, ":player_wealth"),
   (try_begin),
     (ge,"$g_player_debt",1),
     (try_begin),
            (ge, ":player_wealth", ":debt_interest"),
            (troop_remove_gold, "trp_player",":debt_interest"),
            (store_sub, reg9, reg8, reg11),
            (str_store_string, s2, "@You paid {reg11} of your {reg8} denars in interest on your debt. You have {reg9} denars left."),
          (else_try),
       (gt, ":debt_interest",":player_wealth"),
       (gt, ":player_wealth",0),
       (store_sub, ":unpaid_interest", ":debt_interest",":player_wealth"),
            (troop_remove_gold, "trp_player",":player_wealth"),
            (assign, reg10, ":unpaid_interest"),
            (val_add, "$g_player_debt",":unpaid_interest"),
            (str_store_string, s2, "@You paid all of your {reg8} denars in interest on your debt.  There were still {reg10} denars of the interest unpaid, which has been added to your debt.  You have 0 denars left."),
          (else_try),
       (gt, "$g_player_debt",0),
       (eq, ":player_wealth",0),
       (store_sub, ":unpaid_interest", ":debt_interest",":player_wealth"),
            (val_add, "$g_player_debt",":unpaid_interest"),
            (str_store_string, s2, "@You had 0 denars left to pay the interest on your debt.  The interest of {reg10} denars has been added to your debt."),
          (else_try),
            (str_store_string, s2, "@You have no debts to pay interest on."),
     (try_end),
   (try_end),
    ],
    [
      ("continue",[],"Continue...",
      [
        (change_screen_return,0),
        ]
      ),
    ]
  ),
  (
    "bank",0,
    "You visit the bank.\
 Here you can deposit money and earn interest over time, or take a loan.\
 You currently have {reg6} denars deposited here.\
 You currently have {reg7} denars borrowed from the bank.",
    "none",
    [
    (assign, reg6, "$g_player_deposit"),
    (assign, reg7, "$g_player_debt"),
    ],
    [
      ("take_loan",[(store_troop_gold, ":player_wealth", "trp_player"),(store_sub, ":player_real_wealth", ":player_wealth", "$g_player_debt"),(gt,":player_real_wealth",100)],"Take a loan of 1000 denars.",
      [
     (troop_remove_gold, "trp_player", 100),
          (troop_add_gold, "trp_player", 1000),
          (val_add, "$g_player_debt", 1000),
        ]),
      ("give_loan",[(store_troop_gold, ":player_wealth", "trp_player"),(gt,":player_wealth",1000),(gt,"$g_player_debt",1000)],"Repay 1000 denars of your debt.",
      [
     (troop_remove_gold, "trp_player", 1000),
          (val_sub, "$g_player_debt", 1000),
        ]),
      ("give_loan_all",[(store_troop_gold, ":player_wealth", "trp_player"),(gt,":player_wealth","$g_player_debt"),(gt,"$g_player_debt",0)],"Repay all of your debt.",
      [
     (troop_remove_gold, "trp_player", "$g_player_debt"),
          (val_sub, "$g_player_debt", "$g_player_debt"),
        ]),
      ("give_deposit",[(store_troop_gold, ":player_wealth", "trp_player"),(gt,":player_wealth",1000)],"Deposit 1000 denars in the bank.",
      [
     (troop_remove_gold, "trp_player", 1000),
          (val_add, "$g_player_deposit", 1000),
        ]),
      ("take_deposit",[(ge,"$g_player_deposit",1000)],"Withdraw 1000 denars from your deposit.",
      [
     (troop_add_gold, "trp_player", 1000),
          (val_sub, "$g_player_deposit", 1000),
        ]),
      ("take_deposit_all",[(ge,"$g_player_deposit",1)],"Withdraw your entire deposit.",
      [
     (troop_add_gold, "trp_player", reg6),
          (val_sub, "$g_player_deposit", reg6),
        ]),
      ("back_to_town_menu",[],"Head back.",
      [
          (jump_to_menu,"mnu_town"),
        ]),
    ]
  ),

Cũng trong game_menus tìm "],"Door to the tavern."),"
Code:
            (change_screen_mission),
          (try_end),
        ],"Door to the tavern."),
-----------------------------------------------
      ("town_bank",
      [],
      "Visit the bank.",
      [
          (jump_to_menu,"mnu_bank"),
        ]),
----------------------------------------------
#      ("town_smithy",[
#          (eq,"$entry_to_town_forbidden",0),
#          (eq,"$town_nighttime",0),

Add code này vào module_simple_trigger
Code:
  #Interest on deposits.
  (24 * 7,
  [
    (try_begin),
      (gt, "$g_player_deposit", 0),
      (store_div,":interest_deposit","$g_player_deposit",250),
      (troop_add_gold, "trp_player",":interest_deposit"),
    (try_end),
    ]),
  #Interest on debts.
  (24 * 7,
  [
    (try_begin),
      (gt, "$g_player_debt", 0),
      (jump_to_menu,"mnu_debt_interest"),
    (try_end),
    ]),
Xong
Về Đầu Trang Go down
Xem lý lịch thành viên
NewBie-BR
Nguyên soái
Nguyên soái


Tổng số bài gửi : 151
Ngân lượng : 12011
Danh tiếng : 20
Ngày gia nhập: : 31/12/2011
Tuổi : 19
Đến từ : Việt Nam

Bài gửiTiêu đề: Re: Viện lưu trữ code   Wed Feb 15, 2012 5:11 pm

Cá cược tung đồng xu với chủ quán rượu

Tác giả : Albertus Magnus
Phiên bản code hỗ trợ : Warband 1.143 (đã test)
Chức năng: Đọc tiêu đề chắc các bạn cũng hiểu rồi, mình nói thêm sơ sơ : các bạn có thể cá cược với chủ quán rượu cái trò tung đồng xu mà chắc ai cũng từng chơi qua "Úp hay ngửa", "Hình hay số" Razz . Tiền cược cao nhất là 2000 (ai dám cá trời) và thật sự là hên xui may rủi, nếu đúng mặt mình chọn thì ăn 2000 còn thua thì ngược lại @ . Lưu ý luôn là các bạn nào chơi kiểu thua xong bật lại save chọn lại thì các bạn hack luôn cho nhanh, khỏi phải mất công tốn thời gian Very Happy.
Hướng dẫn add
Cái này khá dễ, add đúng 1 code thôi; đầu tiên bật module_dialogs.py, tìm "tavernkeeper_buy_drinks" và add code này sau đoạn đó:

Code:
  [anyone|plyr,"tavernkeeper_talk", [
      (store_current_hours,":cur_hours"),
      (val_sub, ":cur_hours", 6),
      (gt, ":cur_hours", "$gamble_last_time"),
      ], "I'd like to flip a coin with you.", "tavernkeeper_coin",[]],
 
  [anyone,"tavernkeeper_coin", [
      ], "Alright. How much money do you want to lose?", "tavernkeeper_coin2",[]],
 
  [anyone|plyr,"tavernkeeper_coin2", [
      (store_troop_gold, ":gold", "trp_player"),
      (ge,":gold",50),
      ], "50 Denars.", "tavernkeeper_coin3",[
          (assign, reg6, 50),]],
  [anyone|plyr,"tavernkeeper_coin2", [
      (store_troop_gold, ":gold", "trp_player"),
      (ge,":gold",100),
      ], "100 Denars.", "tavernkeeper_coin3",[
          (assign, reg6, 100),]],
  [anyone|plyr,"tavernkeeper_coin2", [
      (store_troop_gold, ":gold", "trp_player"),
      (ge,":gold",200),
      ], "200 Denars.", "tavernkeeper_coin3",[
          (assign, reg6, 200),]],
  [anyone|plyr,"tavernkeeper_coin2", [
      (store_troop_gold, ":gold", "trp_player"),
      (ge,":gold",500),
      ], "500 Denars.", "tavernkeeper_coin3",[
          (assign, reg6, 500),]],
  [anyone|plyr,"tavernkeeper_coin2", [
      (store_troop_gold, ":gold", "trp_player"),
      (ge,":gold",1000),
      ], "1000 Denars.", "tavernkeeper_coin3",[
          (assign, reg6, 1000),]],
  [anyone|plyr,"tavernkeeper_coin2", [
      (store_troop_gold, ":gold", "trp_player"),
      (ge,":gold",2000),
      ], "20000 Denars.", "tavernkeeper_coin3",[
          (assign, reg6, 2000),]],
  [anyone|plyr,"tavernkeeper_coin2", [
      ], "I can't afford it.", "tavernkeeper_coinn",[]],
 
  [anyone,"tavernkeeper_coinn", [
      ], "Nevermind.", "tavernkeeper_talk",[]],
 
  [anyone,"tavernkeeper_coin3", [
      ], "Okay. Head or tail?", "tavernkeeper_coin4",[]],
 
  [anyone|plyr,"tavernkeeper_coin4", [
      ], "Head.", "tavernkeeper_coin5",[
          (str_store_string, s2, "@head"),
          (str_store_string, s3, "@tail"),]],
  [anyone|plyr,"tavernkeeper_coin4", [
      ], "Tail.", "tavernkeeper_coin5",[
          (str_store_string, s2, "@tail"),
          (str_store_string, s3, "@head"),]],
 
  [anyone,"tavernkeeper_coin5", [
      ], "Well, here we go... (He flips the coin.)", "tavernkeeper_coin6",[
        (store_random_in_range, "$rand2", 0, 2),]],
 
  [anyone,"tavernkeeper_coin6", [
      (eq,"$rand2",0),
      ], "Look, it's {s3}! Bad luck for you.", "tavernkeeper_coin6a",[]],
  [anyone,"tavernkeeper_coin6", [
      (eq,"$rand2",1),
      ], "Damn, it's {s2}... Here's your money.", "tavernkeeper_pretalk",[
          (troop_add_gold,"trp_player",reg6),
          (store_current_hours,":cur_hours"),
          (assign, "$gamble_last_time", ":cur_hours"),]],
 
  [anyone|plyr,"tavernkeeper_coin6a", [
      ], "Here are your {reg6} Denars.", "tavernkeeper_pretalk",[
      (troop_remove_gold,"trp_player",reg6),
      (store_current_hours,":cur_hours"),
      (assign, "$gamble_last_time", ":cur_hours"),]],

P/s: Mình hướng dẫn vậy cho nhanh bạn nào thấy ko hiểu thì pm nhá
Về Đầu Trang Go down
Xem lý lịch thành viên
NewBie-BR
Nguyên soái
Nguyên soái


Tổng số bài gửi : 151
Ngân lượng : 12011
Danh tiếng : 20
Ngày gia nhập: : 31/12/2011
Tuổi : 19
Đến từ : Việt Nam

Bài gửiTiêu đề: Re: Viện lưu trữ code   Wed Feb 15, 2012 5:19 pm

Yêu cầu bandit gia nhập quân đội

Tác giả : Geoffrey Ashe
Phiên bản code hỗ trợ : Warband 1.143 (đã test)
Chức năng: Khi gặp bandit trên map có thể kêu nó gia nhập quân đội mình và phải chi cho nó 1 khoảng tiền tùy theo số lượng quân nó, ngoài ra những bạn rành code có thể tùy biến add vào những nơi thích hợp để kêu các băng khác gia nhập quân mình vd: cướp biển, lâm tặc, sơn tặc, cướp sa mạc,...
Hướng dẫn add
Code này cũng rất dễ, chỉ 1 code duy nhất Very Happy. Mở module_dialog.py và add code này:
Code:
], "{s5}", "close_window",[encounter_attack]],
------------------------------------------------------------------
  [anyone|plyr,"bandit_meet", [], "I spare your life if you join me", "bandit_recruit",[]],
 
  [anyone,"bandit_recruit", [
      (store_random_in_range,":rand",0,20),
      (gt,"$player_honor",":rand"),
  ], "A {boy/girl} like you, who could do no misdeeds? Heck no. We will slit your throat for your impudence!","close_window",[encounter_attack]],#needs dialog rewrite
       
  [anyone,"bandit_recruit",[
      (store_encountered_party,":party"),
      (store_party_size,":size",":party"),
      (store_mul,":size",":size",50),
      (assign, reg0, ":size"),
  ],"we consider your offer for {reg0} denars","bandit_recruit_2",[]],
 
  [anyone|plyr,"bandit_recruit_2",
  [
        (store_troop_gold, ":gold", "trp_player"),
        (ge, ":gold", reg0),
      (party_can_join),
  ],"Okay","close_window",
  [
      (troop_remove_gold, "trp_player", reg0),
      (party_join),
      (assign, "$g_leave_encounter", 1)
  ]],

             
  [anyone|plyr,"bandit_recruit_2",[],"Nevermind","bandit_meet",[]],
-----------------------------------------------------------------------------------
 [anyone|plyr,"bandit_meet", [], "Never mind, I have no business with you.", "close_window",[(assign, "$g_leave_encounter", 1)]],
Về Đầu Trang Go down
Xem lý lịch thành viên
NewBie-BR
Nguyên soái
Nguyên soái


Tổng số bài gửi : 151
Ngân lượng : 12011
Danh tiếng : 20
Ngày gia nhập: : 31/12/2011
Tuổi : 19
Đến từ : Việt Nam

Bài gửiTiêu đề: Re: Viện lưu trữ code   Wed Feb 15, 2012 5:28 pm

Gặp trưởng làng/ thi trưởng nhanh hơn

Tác giả : Geoffrey Ashe
Phiên bản code hỗ trợ : Warband 1.143 (đã test)
Chức năng: Thêm vào dòng gặp trưởng làng hay thị trưởng ở menu thành hay làng. Đỡ mất thời gian chạy vô kiếm, đặt biệt là ông thị trưởng nhiều lúc trốn kinh lắm Razz
Hướng dẫn add
module_game_menus.py. Đầu tiên là ông thị trưởng
Code:
], "Door to the castle."),
-----------------------------------------
    ("talk_mayor",[
          (party_slot_eq,"$current_town",slot_party_type, spt_town),
          (this_or_next|eq,"$entry_to_town_forbidden",0),
          (eq, "$sneaked_into_town",1)]
      ,"Talk to the Guild Master.",
      [
          (assign, "$talk_context", 0),
          (try_begin),
            (call_script, "script_cf_enter_center_location_bandit_check"),
          (else_try),
            (party_get_slot, ":town_scene", "$current_town", slot_town_center),
            (modify_visitors_at_site, ":town_scene"),
            (reset_visitors),
            (assign, "$g_mt_mode", tcm_default),
            (store_faction_of_party, ":town_faction","$current_town"),
            (try_begin),
              (neq, ":town_faction", "fac_player_supporters_faction"),
              (faction_get_slot, ":troop_prison_guard", "$g_encountered_party_faction", slot_faction_prison_guard_troop),
              (faction_get_slot, ":troop_castle_guard", "$g_encountered_party_faction", slot_faction_castle_guard_troop),
              (set_visitor, 23, ":troop_castle_guard"),
              (set_visitor, 24, ":troop_prison_guard"),
            (try_end),
            (faction_get_slot, ":tier_2_troop", ":town_faction", slot_faction_tier_2_troop),
            (faction_get_slot, ":tier_3_troop", ":town_faction", slot_faction_tier_3_troop),

            (try_begin),
              (gt,":tier_2_troop", 0),
              (assign,reg(0),":tier_3_troop"),
              (assign,reg(1),":tier_3_troop"),
              (assign,reg(2),":tier_2_troop"),
              (assign,reg(3),":tier_2_troop"),
            (else_try),
              (assign,reg(0),"trp_vaegir_infantry"),
              (assign,reg(1),"trp_vaegir_infantry"),
              (assign,reg(2),"trp_vaegir_archer"),
              (assign,reg(3),"trp_vaegir_footman"),
            (try_end),
            (shuffle_range,0,4),
            (set_visitor,25,reg(0)),
            (set_visitor,26,reg(1)),
            (set_visitor,27,reg(2)),
            (set_visitor,28,reg(3)),

            (party_get_slot, ":spawned_troop", "$current_town", slot_town_armorer),
            (set_visitor, 9, ":spawned_troop"),
            (party_get_slot, ":spawned_troop", "$current_town", slot_town_weaponsmith),
            (set_visitor, 10, ":spawned_troop"),
            (party_get_slot, ":spawned_troop", "$current_town", slot_town_horse_merchant),
            (set_visitor, 12, ":spawned_troop"),
            (party_get_slot, ":spawned_troop", "$current_town", slot_town_elder),
            (set_visitor, 11, ":spawned_troop"),

            (call_script, "script_init_town_walkers"),
            (set_jump_mission,"mt_town_center"),
            (assign, ":override_state", af_override_horse),
            (try_begin),
              (eq, "$sneaked_into_town", 1), #setup disguise
              (assign, ":override_state", af_override_all),
            (try_end),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 0, ":override_state"),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 2, ":override_state"),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 3, ":override_state"),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 4, ":override_state"),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 5, ":override_state"),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 6, ":override_state"),
            (mission_tpl_entry_set_override_flags, "mt_town_center", 7, ":override_state"),
            (try_begin),
              (eq, "$town_entered", 0),
              (assign, "$town_entered", 1),
              (eq, "$town_nighttime", 0),
              (set_jump_entry, 1),
            (try_end),
            (jump_to_scene, ":town_scene"),
            (change_screen_map_conversation, ":spawned_troop"),
          (try_end),
        ],"Door to the town center."),
--------------------------------------------------------------------------------------
 ("town_center",[

module_game_menus.py. Giờ tới ông trưởng làng
Code:
 (jump_to_menu, "mnu_center_manage"),
        ]),
---------------------------------------------------------------
      ("village_elder_talk",[(neg|party_slot_eq, "$current_town", slot_village_state, svs_looted),
                        (neg|party_slot_eq, "$current_town", slot_village_state, svs_being_raided),
                        (neg|party_slot_ge, "$current_town", slot_village_infested_by_bandits, 1),]
      ,"Speak with the Village Elder.",
      [
        (try_begin),
          (call_script, "script_cf_enter_center_location_bandit_check"),
        (else_try),
          (party_get_slot, ":village_scene", "$current_town", slot_castle_exterior),
          (modify_visitors_at_site,":village_scene"),
          (reset_visitors),
          (party_get_slot, ":village_elder_troop", "$current_town",slot_town_elder),
          (set_visitor, 11, ":village_elder_troop"),

          (call_script, "script_init_town_walkers"),

          (try_begin),
            (check_quest_active, "qst_hunt_down_fugitive"),
            (neg|is_currently_night),
            (quest_slot_eq, "qst_hunt_down_fugitive", slot_quest_target_center, "$current_town"),
            (neg|check_quest_succeeded, "qst_hunt_down_fugitive"),
            (neg|check_quest_failed, "qst_hunt_down_fugitive"),
            (set_visitor, 45, "trp_fugitive"),
          (try_end),

          (set_jump_mission,"mt_village_center"),
          (jump_to_scene,":village_scene"),

          (change_screen_map_conversation, ":village_elder_troop"),
        (try_end),
        ],"Door to the village center."),
--------------------------------------------------------------------------------------
  ("recruit_volunteers",[(call_script, "script_cf_village_recruit_volunteers_cond"),]
Về Đầu Trang Go down
Xem lý lịch thành viên
NewBie-BR
Nguyên soái
Nguyên soái


Tổng số bài gửi : 151
Ngân lượng : 12011
Danh tiếng : 20
Ngày gia nhập: : 31/12/2011
Tuổi : 19
Đến từ : Việt Nam

Bài gửiTiêu đề: Re: Viện lưu trữ code   Wed Feb 15, 2012 7:01 pm

Lính đi tuần

Tác giả : Geoffrey Ashe
Phiên bản code hỗ trợ : Warband 1.143 (đã test)
Chức năng: Nói chuyện với lính trong menu party, kêu nó đi tuần, chỉ thị hành động; đi theo, tuần quanh..., giữ vị trí,.... Code này hơi khó, có gì ko hiểu các bạn cứ pm nhá
Hướng dẫn add
module_party_templates.py
Code:
("looters","Looters",icon_axeman|carries_goods(8,0,fac_outlaws,bandit_personality,[(trp_looter,4,25)]),
-----------------------------------------------------------------------------------------------------------------------------------------
("player_patrol","Patrol",icon_gray_knight,0,fac_player_faction,hold_personality,[]),
-----------------------------------------------------------------------------------------------------------------------------------------
("manhunters","Manhunters",icon_gray_knight,0,fac_manhunters,soldier_personality,[(trp_manhunter,9,40)]),

module_scripts.py. Add code này vào cuối file:
Code:
#identify party as patrol
#input: party
#output: reg0
#0 yes, 1 no
     
  ("cf_is_patrol",
      [
        (store_script_param, ":cur_party", 1),
        (assign,reg0,0),
        (store_faction_of_party,":cur_faction",":cur_party"),
        (eq, ":cur_faction", "fac_player_faction"),
        (party_stack_get_troop_id,":cur_troop",":cur_party",0),
        (neq,":cur_troop","trp_player"),
        (try_for_range,":num",companions_begin,heroes_end),
          (eq,":cur_troop",":num"),
          (assign, reg0,1),
        (try_end),
      ]
  ),

#find all patrols and count them
#input: none
#output: reg0
#amount of existing patrols

  ("check_for_patrols",
      [
        (assign,":num",0),
        (try_for_parties,":cur_party"),
          (call_script, "script_cf_is_patrol",":cur_party"),
          (eq,reg0,0),
          (val_add,":num",1),
        (try_end),
        (assign,reg0,":num"),
      ]
  ),

#enforce patrol party size limit
#it is assumed that the party prisoner limit equals zero
#except for npc prisoners

#input: party, mode
#mode 0: delete all troops w/o doing anything else
#mode 1: all deleted troops are being added to the player party

#output: none (it uses reg0, but the information is useless outside of this script and its recursive brother)
 
  ("cf_fix_party_size",
      [
        (store_script_param, ":cur_party", 1),
        (store_script_param, ":mode", 2),
        (call_script, "script_cf_is_patrol",":cur_party"),
        (try_begin),
          (eq,reg0,0),
          (call_script,"script_game_get_party_companion_limit",3),
          (call_script,"script_cf_fix_party_size_recursive",":cur_party",":mode"),

          (assign,":bool",0),
          (party_get_num_prisoner_stacks, ":num_stacks",":cur_party"),
          (try_for_range_backwards,":index",0,":num_stacks"),
            (party_prisoner_stack_get_troop_id,":cur_troop",":cur_party",":index"),
            (party_prisoner_stack_get_size,":cur_size",":cur_party",":index"),
            (try_for_range,":num",companions_begin,heroes_end),
              (eq,":cur_troop",":num"),
              (assign,":bool",1),
            (try_end),
            (try_begin),
              (neq,":bool",1),
              (party_remove_prisoners,":cur_party",":cur_troop",":cur_size"),
            (try_end),
          (try_end),
        (try_end),
      ]
  ),

#a while do loop for cf_fix_party_size
#don't use it outside of the previous script
 
  ("cf_fix_party_size_recursive", #I am not exactly happy about the recursive
      [
        (store_script_param, ":cur_party", 1),
        (store_script_param, ":mode", 2),
        (assign,":reg0_backup",reg0),
        (store_party_size_wo_prisoners,":num",":cur_party"),
        (try_begin),
          (gt,":num",reg0),
          (neq,0,reg0),
          (store_sub,":delta",":num",reg0),
          (party_get_num_companion_stacks,":num_stacks",":cur_party"),
          (assign, ":to_del_stack",0),
          (assign, ":checker", 100),
          (try_for_range,":index",0,":num_stacks"),
            (party_stack_get_troop_id,":cur_troop",":cur_party",":index"),
            (store_character_level,":cur_level",":cur_troop"),
            (le,":cur_level",":checker"),
            (assign,":checker",":cur_level"),
            (assign,":to_del_stack",":index"),
          (try_end),
          (party_stack_get_size,":num_troop",":cur_party",":to_del_stack"),
          (party_stack_get_troop_id,":cur_troop",":cur_party",":to_del_stack"),
          (try_begin),
            (le,":num_troop",":delta"),
            (assign, ":delta", ":num_troop"),
          (try_end),
          (party_remove_members,":cur_party",":cur_troop",":delta"),
          (try_begin),
            (eq,":mode",1),
            (party_add_members,"p_main_party",":cur_troop",":delta"),
          (try_end),
          (assign,reg0,":reg0_backup"),
          (call_script,"script_cf_fix_party_size_recursive",":cur_party",":mode"),
        (try_end),
      ]
  ),

module_scripts.py. Tìm "game_event_simulate_battle"

Code:
              (call_script, "script_clear_party_group", ":root_defeated_party"),
----------------------------------------------------------------------------------------------------
            (call_script,"script_cf_fix_party_size", "p_temp_party",0),
-------------------------------------------------------------------------------------------------
 (try_end),

Tìm "let_nearby_parties_join_current_battle"

Code:
        (display_message, "str_s1_joined_battle_enemy"),
----------------------------------------------------------------------------
      (else_try),
        (eq, ":besiege_mode", 0),
          (lt, ":reln_with_player", 0),
          (gt, ":reln_with_enemy", 0),
        (store_faction_of_party,":cur_faction","$g_encountered_party"),
        (this_or_next|eq,":cur_faction","fac_outlaws"),
        (this_or_next|eq,":cur_faction","fac_deserters"),
        (this_or_next|eq,":cur_faction","fac_mountain_bandits"),
        (eq,":cur_faction","fac_forest_bandits"),
        (store_faction_of_party,":cur_faction",":party_no"),
        (this_or_next|eq,":cur_faction","fac_outlaws"),
        (this_or_next|eq,":cur_faction","fac_deserters"),
        (this_or_next|eq,":cur_faction","fac_mountain_bandits"),
        (eq,":cur_faction","fac_forest_bandits"),
          (party_quick_attach_to_current_battle, ":party_no", ":enemy_side"), #attach as enemy
          (str_store_party_name, s1, ":party_no"),
          (display_message, "str_s1_joined_battle_enemy"),
      (else_try),
          (eq, ":dont_add_friends", 0),
        (gt, ":reln_with_player", 0),
          (lt, ":reln_with_enemy", 0),
        (store_faction_of_party,":cur_faction",":party_no"),
        (eq,":cur_faction","fac_player_faction"),
          (party_quick_attach_to_current_battle, ":party_no", 0), #attach as ally
          (str_store_party_name, s1, ":party_no"),
          (display_message, "str_s1_joined_battle_friend"),
------------------------------------------------------------------------------------------------
      (else_try),
          (eq, ":dont_add_friends", 0),

Chép đè đoạn code "calculate_player_faction_wage" với code này:
Code:
  # script_calculate_player_faction_wage
  # Input: arg1 = party_no
  # Output: reg0 = weekly wage
  ("calculate_player_faction_wage",
    [(assign, ":nongarrison_wages", 0),
    (assign, ":garrison_wages", 0),
    (try_for_parties, ":party_no"),
      (assign, ":garrison_troop", 0),
      (assign, ":ungarrison_troop", 0),
      (try_begin),
        (this_or_next|party_slot_eq, ":party_no", slot_party_type, spt_town),
        (party_slot_eq, ":party_no", slot_party_type, spt_castle),
        (party_slot_eq, ":party_no", slot_town_lord, "trp_player"),
        (assign, ":garrison_troop", 1),
      (try_end),
      (try_begin),
        (call_script, "script_cf_is_patrol",":party_no"),
        (eq,reg0,0),
        (assign, ":ungarrison_troop", 1),
      (try_end),
      (this_or_next|eq, ":party_no", "p_main_party"),
      (this_or_next|eq, ":garrison_troop", 1),
      (eq, ":ungarrison_troop", 1),
      (party_get_num_companion_stacks, ":num_stacks",":party_no"),
      (try_for_range, ":i_stack", 0, ":num_stacks"),
        (party_stack_get_troop_id, ":stack_troop",":party_no",":i_stack"),
        (party_stack_get_size, ":stack_size",":party_no",":i_stack"),
        (call_script, "script_game_get_troop_wage", ":stack_troop", ":party_no"),
        (assign, ":cur_wage", reg0),
        (val_mul, ":cur_wage", ":stack_size"),
        (try_begin),
          (eq, ":garrison_troop", 1),
          (val_add, ":garrison_wages", ":cur_wage"),
        (else_try),
        (try_begin),
          (eq,":ungarrison_troop",1),
          (val_mul, ":cur_wage",3),
          (val_div, ":cur_wage",2),
        (try_end),
          (val_add, ":nongarrison_wages", ":cur_wage"),
        (try_end),
      (try_end),
    (try_end),
    (val_div, ":garrison_wages", 2),#Half payment for garrisons
    (store_sub, ":total_payment", 14, "$g_cur_week_half_daily_wage_payments"), #between 0 and 7
    (val_mul, ":nongarrison_wages", ":total_payment"),
    (val_div, ":nongarrison_wages", 14),
    (store_add, reg0, ":nongarrison_wages", ":garrison_wages"),
    ]),

module_game_menus.py. Tìm "total_victory"
Code:
            (call_script, "script_party_add_party", "$g_ally_party", "p_temp_party"), #Add remaining prisoners to ally TODO: FIX it.
#----------------------------------------------------------------------------------
            (call_script,"script_cf_fix_party_size", "$g_ally_party",0),
#----------------------------------------------------------------------------------
          (else_try),

Code:
      (call_script, "script_party_add_party", ":helper_party", "p_temp_party"), #Add remaining prisoners to our reinforcements
#----------------------------------------------------------------------------------
            (call_script,"script_cf_fix_party_size", ":helper_party",0),
#----------------------------------------------------------------------------------
          (try_end),


module_dialogs.py. add code này vào cuối file
Code:
######################################
# GENERIC MEMBER CHAT
######################################
#----------------------------------------------------------------------------------
  [anyone,"member_chat", [], "Your orders {sir/madam}?", "regular_member_talk",[]],
  [anyone|plyr,"regular_member_talk", [], "Tell me about yourself", "view_regular_char_requested",[]],
  [anyone,"view_regular_char_requested", [], "Aye {sir/madam}. Let me tell you all there is to know about me.", "do_regular_member_view_char",[[change_screen_view_character]]],
  [anyone,"do_regular_member_view_char", [], "Anything else?", "regular_member_talk",[]],
  [anyone|plyr,"regular_member_talk", [], "Become Party", "mate_check_leadership",[]],
  [anyone,"mate_check_leadership", [
                        (call_script, "script_check_for_patrols"),
                        (store_skill_level,":max_amount",skl_leadership,"trp_player"),
                        (troop_get_slot, ":renown", "trp_player", slot_troop_renown),
                        (val_div, ":renown", 250),
                        (val_add, ":max_amount",":renown"),
                        (try_for_range,":num",walled_centers_begin,walled_centers_end),
                            (party_slot_eq, ":num", slot_town_lord, "trp_player"),
                          (val_add,":max_amount",1),
                        (try_end),
                        (gt,":max_amount",reg0),
                        ],"Very well.","close_window",[
                                            (store_conversation_troop,":soldier"),
                                            (remove_member_from_party,":soldier"),
                                            (spawn_around_party,"p_main_party","pt_player_patrol"),
                                            (party_add_members,reg(0),":soldier",1),
                                            (party_set_ai_behavior,reg(0),ai_bhvr_hold),
                                            ]],

  [anyone,"mate_check_leadership", [],"I am sorry, but we don't think that you are capable of leading more parties.","member_chat",[]],
 
  [anyone|plyr,"regular_member_talk", [], "Nothing. Keep moving.", "close_window",[]],

 
 
  [anyone,"start", [(store_encountered_party,"$temp"),
              (store_faction_of_party, ":cur_faction", "$temp"),
                    (eq,":cur_faction","fac_player_faction"),
                    ],
  "Yes?", "mate_chat_talk",[(assign, "$g_leave_encounter", 1)]],
 
 
  [anyone|plyr,"mate_chat_talk",[],"I have a new task for you.", "mate_give_order_ask",[]],

  [anyone,"mate_give_order_ask", [],
  "What do you wish?", "mate_give_order",[]],
 
  [anyone|plyr,"mate_give_order",[],"Follow me","mate_follow",[]],
  [anyone,"mate_follow",[],"All right","close_window",[
                                      (party_set_ai_object,"$temp","p_main_party"),
                                      (party_set_ai_behavior,"$temp",ai_bhvr_escort_party),
                                      ]],
  [anyone|plyr,"mate_give_order",[],"Stay here","mate_stay",[]],
  [anyone,"mate_stay",[],"All right","close_window",[
                                      (party_set_ai_behavior,"$temp",ai_bhvr_hold),
                                      (party_get_position, pos1, "$temp"),
                                      (party_set_ai_target_position,"$temp",pos1),
                                      ]],
  [anyone|plyr,"mate_give_order",[],"Patrol this area","mate_patrol",[]],
  [anyone,"mate_patrol",[],"All right","close_window",[
                                      (party_set_ai_behavior,"$temp",ai_bhvr_patrol_location),
                                      (party_get_position, pos1, "$temp"),
                                      (party_set_ai_target_position,"$temp",pos1),
                                      ]],
 
  [anyone|plyr,"mate_give_order", [],"Go to...", "mate_give_order_details_ask",[(assign, "$temp_1", spai_holding_center),]],
  [anyone|plyr,"mate_give_order", [],"Patrol around...", "mate_give_order_details_ask",[(assign, "$temp_1", spai_patrolling_around_center),]],
  [anyone|plyr,"mate_give_order", [],"Forget it.", "mate_chat_pre_talk",[]],
 

  [anyone,"mate_give_order_details_ask", [],
  "Where?", "mate_give_order_details",[]],
 
  [anyone|plyr|repeat_for_parties, "mate_give_order_details",
  [
    (store_repeat_object, ":party_no"),
    (assign, ":continue", 0),
    (try_begin),
      (eq, "$temp_1", spai_holding_center),
      (try_begin),
        (this_or_next|party_slot_eq, ":party_no", slot_party_type, spt_castle),
        (party_slot_eq, ":party_no", slot_party_type, spt_town),
        (assign, ":continue", 1),
      (try_end),
    (else_try),
      (eq, "$temp_1", spai_patrolling_around_center),
      (try_begin),
        (is_between, ":party_no", centers_begin, centers_end),
        (assign, ":continue", 1),
      (try_end),
    (try_end),
    (eq, ":continue", 1),
    (neq, ":party_no", "$g_encountered_party"),
    (str_store_party_name, s1, ":party_no")],
  "{s1}", "mate_give_order_details_done",
  [
    (store_repeat_object, "$temp_2"),
    ]],
   
  [anyone,"mate_give_order_details_done", [],"Okay","close_window",[
                                            (try_begin),
                                              (eq,"$temp_1", spai_holding_center),
                                              (party_set_ai_behavior,"$temp",ai_bhvr_travel_to_point),
                                              (party_get_position, pos1, "$temp_2"),
                                              (map_get_land_position_around_position, pos1, pos1,1),
                                              (party_set_ai_target_position,"$temp",pos1),
                                            (try_end),
                                            (try_begin),
                                              (eq,"$temp_1", spai_patrolling_around_center),
                                              (party_set_ai_behavior,"$temp",ai_bhvr_patrol_party),
                                              (party_set_ai_object,"$temp","$temp_2"),
                                              (party_set_ai_patrol_radius ,"$temp",1),
                                            (try_end),
                                            ]],
 

  [anyone|plyr,"mate_chat_talk", [], "I want to give you troops.", "mate_give_troops",[(call_script,"script_game_get_party_companion_limit",3),(display_message, "@allowed party size {reg0}"),(change_screen_give_members),]],
  [anyone,"mate_give_troops", [], "Yes...", "mate_give_troops_end",[]],
  [anyone,"mate_give_troops_end", [], "That are good lads.", "mate_chat_pre_talk",[
                                                        (store_encountered_party,":cur_party"),
                                                        (call_script,"script_cf_fix_party_size",":cur_party",1),
                                                        ]],
  [anyone,"mate_chat_pre_talk", [], "Anything else?", "mate_chat_talk",[]],
 
  [anyone|plyr,"mate_chat_talk", [], "I want to you to join me again.", "mate_chat_rejoin",[]],
  [anyone,"mate_chat_rejoin", [(party_can_join)], "Very Well.", "close_window",[(party_join),]],
  [anyone,"mate_chat_rejoin", [(neg|party_can_join)], "We can't follow you, you haven't got enough capacity","mate_chat_talk",[]],
 
  [anyone|plyr,"mate_chat_talk", [], "Nevermind", "close_window",[]],
#----------------------------------------------------------------------------------
######################################
# GENERIC PARTY ENCOUNTER
######################################

header_parties.py. Add vào cuối file
Code:
hold_personality = aggressiveness_0 | courage_15
Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




Bài gửiTiêu đề: Re: Viện lưu trữ code   Today at 12:59 pm

Về Đầu Trang Go down
 
Viện lưu trữ code
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Bộ luật quốc tế về Ổn định nguyên vẹn năm 2008 (IS Code 2008)
» IMDG Code on CD Version 7.0 (2004) [Cập nhật: bản IMDG Code 2012 mới]
» Quanh IMDG Code
» Các tiêu chuẩn đánh giá ổn định nguyên vẹn tàu
» Hai cuốn catalog IMPA và ISSA

Permissions in this forum:Bạn không có quyền trả lời bài viết
Cộng đồng Modder Mount & Blade Việt Nam :: Khu vực dành cho các modder :: Workshop-
Chuyển đến