Cộng đồng Modder Mount & Blade Việt Nam Ngôi nhà cho anh em yêu thích mod Mount & Blade |
| | Viện lưu trữ code | |
| | Tác giả | Thông điệp |
---|
NewBie-BR Nguyên soái
Tổng số bài gửi : 151 Ngân lượng : 14678 Danh tiếng : 20 Ngày gia nhập: : 31/12/2011 Tuổi : 26 Đến từ : Việt Nam
| Tiê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 https://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:
-Không hỏi đáp, post lỗi code trong topic này -Code phải được chính tay test -Khi viết bài hướng dẫn add 1 code nào đó phải theo cấu trúc sau: Tên code ( Size 15, In đậm, 1 màu tự chọn) Tác giả code ( In đậm) Phiên bản code hỗ trợ (in đậm) Chức năng code Hướng dẫn rõ ràng, chi tiết vị trí cần add ( mình sẽ làm mẫu ở dưới) Có thể thêm vài chú thích nếu cần, hay ghi thêm dòng đã test ổn cho mọi người yên tâm -Ko dùng ngôn từ, icon có ý khiêu khích, chê bai, gây kích khi thảo luận code - Hướng dẫn ghi là add vào... có nghĩa là add vào cuổi cùng của file và trước dấu "]' nếu có. Trong trường hợp trong phần code có dấu ngăn cách"-----------------" thì xem phần dưới. - Hướng dẫn định vị trí add những code khó bằng cách: codecodecodecodecodecodecodecodecode <-Code có sẵn để định vị trí add ---------------------------------------------------- codecodecodecodecodecodecodecodecode <- Code cần add ---------------------------------------------------- codecodecodecodecodecodecodecodecode <-Code có sẵn để định vị trí add
-Ngoài ra các bạn có thể thêm hình ảnh kết quả của code vào cuối phần hướng dẫn để cho người xem tin tưởng hơn và dễ hiểu hơn
CÁC CODE ĐÃ "ĐƯA VÀO KHO LƯU TRỮ"- Spoiler:
Trang 1: -Ngân hàng -Cá cược tung đồng xu với chủ quán rượu -Yêu cầu bandit gia nhập quân đội -Gặp trưởng làng/ thi trưởng nhanh hơn -Lính đi tuần Mọi thắc mắc có thể hỏi ở topic này : https://mbmodder.forumvi.com/t30-topic#157Hi 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ự
Được sửa bởi NewBie-BR ngày Wed Feb 15, 2012 7:06 pm; sửa lần 4. | |
| | | NewBie-BR Nguyên soái
Tổng số bài gửi : 151 Ngân lượng : 14678 Danh tiếng : 20 Ngày gia nhập: : 31/12/2011 Tuổi : 26 Đến từ : Việt Nam
| Tiê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 ) 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 (. Bạn có thể lấy lại tiền gửi bất kì lúc nào Hướng dẫn addMở 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 | |
| | | NewBie-BR Nguyên soái
Tổng số bài gửi : 151 Ngân lượng : 14678 Danh tiếng : 20 Ngày gia nhập: : 31/12/2011 Tuổi : 26 Đến từ : Việt Nam
| Tiê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ố" . 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 . Hướng dẫn addCá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á | |
| | | NewBie-BR Nguyên soái
Tổng số bài gửi : 151 Ngân lượng : 14678 Danh tiếng : 20 Ngày gia nhập: : 31/12/2011 Tuổi : 26 Đến từ : Việt Nam
| Tiê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 addCode này cũng rất dễ, chỉ 1 code duy nhất . 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)]], | |
| | | NewBie-BR Nguyên soái
Tổng số bài gửi : 151 Ngân lượng : 14678 Danh tiếng : 20 Ngày gia nhập: : 31/12/2011 Tuổi : 26 Đến từ : Việt Nam
| Tiê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 Hướng dẫn addmodule_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"),] | |
| | | NewBie-BR Nguyên soái
Tổng số bài gửi : 151 Ngân lượng : 14678 Danh tiếng : 20 Ngày gia nhập: : 31/12/2011 Tuổi : 26 Đến từ : Việt Nam
| Tiê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 addmodule_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 | |
| | | Sponsored content
| Tiêu đề: Re: Viện lưu trữ code | |
| |
| | | | Viện lưu trữ code | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |
|