- 好友
- 2
- 在线时间
- 0 小时
- 最后登录
- 2025-3-24
随仆

- UID
- 3713555
- 第纳尔
- 115
- 精华
- 0
- 互助
- 0
- 荣誉
- 1
- 贡献
- 0
- 魅力
- 202
- 注册时间
- 2024-11-10
 鲜花( 7)  鸡蛋( 0)
|
本帖最后由 AntiN0m1 于 2024-12-28 18:57 编辑
玩家进入城堡时,城堡内的人物是按固定顺序刷出的,所以当人数过多时有些人是刷不出来的。一个简单的解决思路是让人物按随机顺序刷出,找不到人可以退出再进去反复刷。这样游戏也稍生动些,毕竟都是活人,一动不动太死板了。
相关代码在module_scripts.py中的script_enter_court。
修改时把3处###(((括起来的原方法注释掉,加入5处###(((括起来的新方法即可。我注释好了每段代码的功能。
3处原方法分别是设置3类兵种位置的,都一样。5处新方法中,第1处就1句,中间3处分别替换掉原方法,除了兵种id的变量名全都一样,最后一处就是统一设置一下兵种位置。看起来有点多其实很简单。
- ("enter_court",
- [
- (store_script_param_1, ":center_no"),
-
- (assign, "$talk_context", tc_court_talk),
- (set_jump_mission,"mt_visit_town_castle"),
-
- (mission_tpl_entry_clear_override_items, "mt_visit_town_castle", 0),
- #(mission_tpl_entry_set_override_flags, "mt_visit_town_castle", 0, af_override_all),
-
- (party_get_slot, ":castle_scene", ":center_no", slot_town_castle),
- (modify_visitors_at_site,":castle_scene"),
- (reset_visitors),
- ###开始设置兵种位置
- ###1.守卫
- #Adding guards
- (store_faction_of_party, ":center_faction", ":center_no"),
- (faction_get_slot, ":guard_troop", ":center_faction", slot_faction_guard_troop),
- (try_begin),
- (le, ":guard_troop", 0),
- (assign, ":guard_troop", "trp_swadian_sergeant"),
- (try_end),
- (set_visitor, 6, ":guard_troop"),
- (set_visitor, 7, ":guard_troop"),
- (assign, ":cur_pos", 16),
- ###2.玩家妻子
- (try_begin),
- (troop_get_slot, ":player_spouse", "trp_player", slot_troop_spouse),
- (gt, ":player_spouse", 0),
- (troop_slot_eq, ":player_spouse", slot_troop_cur_center, ":center_no"),
- (set_visitor, ":cur_pos", ":player_spouse"),
- (val_add,":cur_pos", 1),
- (else_try),
- (troop_get_slot, ":player_betrothed", "trp_player", slot_troop_betrothed),
- (gt, ":player_betrothed", 0),
- (troop_slot_eq, ":player_betrothed", slot_troop_cur_center, ":center_no"),
- (set_visitor, ":cur_pos", ":player_betrothed"),
- (val_add,":cur_pos", 1),
- (try_end),
-
- ###3.首席大臣
- (try_begin),
- (eq, "$g_player_court", ":center_no"),
- (gt, "$g_player_minister", 0),
- (neg|troop_slot_eq, "trp_player", slot_troop_spouse, "$g_player_minister"),
- (set_visitor, ":cur_pos", "$g_player_minister"),
- (val_add,":cur_pos", 1),
- (try_end),
- ###(((新方法
- (assign, ":num_visitors", 0),
- ###)))
- ###4.来投奔的领主
- #Lords wishing to pledge allegiance - inactive, but part of player faction
- (try_begin),
- (eq, "$g_player_court", ":center_no"),
- (faction_slot_eq, ":center_faction", slot_faction_leader, "trp_player"),
- (try_for_range, ":active_npc", active_npcs_begin, active_npcs_end),
- (store_faction_of_troop, ":active_npc_faction", ":active_npc"),
- (eq, ":active_npc_faction", "fac_player_supporters_faction"),
- (troop_slot_eq, ":active_npc", slot_troop_occupation, slto_inactive),
- (neg|troop_slot_ge, ":active_npc", slot_troop_prisoner_of_party, 0), #if he/she is not prisoner in any center.
- (neq, ":active_npc", "$g_player_minister"),
- ###(((原方法
- # (set_visitor, ":cur_pos", ":active_npc"),
- # (val_add,":cur_pos", 1),
- ###)))
- ###(((新方法,先把兵种随机地加入trp_temp_array_a的slot,最后统一设置
- (val_add, ":num_visitors", 1),
- (store_sub, ":last_slot_no", ":num_visitors", 1),
- (store_random, ":random_slot_no", ":num_visitors"),
- (try_begin),
- (eq, ":random_slot_no", ":last_slot_no"),
- (troop_set_slot, "trp_temp_array_a", ":random_slot_no", ":active_npc"),
- (else_try),
- (troop_get_slot, ":random_slot_troop", "trp_temp_array_a", ":random_slot_no"),
- (troop_set_slot, "trp_temp_array_a", ":last_slot_no", ":random_slot_troop"),
- (troop_set_slot, "trp_temp_array_a", ":random_slot_no", ":active_npc"),
- (try_end),
- ###)))
- (try_end),
- (try_end),
- ###5.城内领主
- (call_script, "script_get_heroes_attached_to_center", ":center_no", "p_temp_party"),
- (party_get_num_companion_stacks, ":num_stacks","p_temp_party"),
- (try_for_range, ":i_stack", 0, ":num_stacks"),
- (party_stack_get_troop_id, ":stack_troop","p_temp_party",":i_stack"),
- ###(((原方法
- # (lt, ":cur_pos", 32), # spawn up to entry point 32 - is it possible to add another 10 spots?
- # (set_visitor, ":cur_pos", ":stack_troop"),
- # (val_add,":cur_pos", 1),
- ###)))
- ###(((新方法,先把兵种随机地加入trp_temp_array_a的slot,最后统一设置
- (val_add, ":num_visitors", 1),
- (store_sub, ":last_slot_no", ":num_visitors", 1),
- (store_random, ":random_slot_no", ":num_visitors"),
- (try_begin),
- (eq, ":random_slot_no", ":last_slot_no"),
- (troop_set_slot, "trp_temp_array_a", ":random_slot_no", ":stack_troop"),
- (else_try),
- (troop_get_slot, ":random_slot_troop", "trp_temp_array_a", ":random_slot_no"),
- (troop_set_slot, "trp_temp_array_a", ":last_slot_no", ":random_slot_troop"),
- (troop_set_slot, "trp_temp_array_a", ":random_slot_no", ":stack_troop"),
- (try_end),
- ###)))
- (try_end),
- ###6.城内女士
- (try_for_range, ":cur_troop", kingdom_ladies_begin, kingdom_ladies_end),
- (neq, ":cur_troop", "trp_knight_1_1_wife"), #The one who should not appear in game
- #(troop_slot_eq, ":cur_troop", slot_troop_occupation, slto_kingdom_lady),
- (troop_slot_eq, ":cur_troop", slot_troop_cur_center, ":center_no"),
-
- (assign, ":lady_meets_visitors", 0),
- (try_begin),
- #这里略去的一大段是女士刷出的条件
-
- (try_end),
- (eq, ":lady_meets_visitors", 1),
-
- ###(((原方法
- # (lt, ":cur_pos", 32), # spawn up to entry point 32
- # (set_visitor, ":cur_pos", ":cur_troop"),
- # (val_add,":cur_pos", 1),
- ###)))
- ###(((新方法,先把兵种随机地加入trp_temp_array_a的slot,最后统一设置
- (val_add, ":num_visitors", 1),
- (store_sub, ":last_slot_no", ":num_visitors", 1),
- (store_random, ":random_slot_no", ":num_visitors"),
- (try_begin),
- (eq, ":random_slot_no", ":last_slot_no"),
- (troop_set_slot, "trp_temp_array_a", ":random_slot_no", ":cur_troop"),
- (else_try),
- (troop_get_slot, ":random_slot_troop", "trp_temp_array_a", ":random_slot_no"),
- (troop_set_slot, "trp_temp_array_a", ":last_slot_no", ":random_slot_troop"),
- (troop_set_slot, "trp_temp_array_a", ":random_slot_no", ":cur_troop"),
- (try_end),
- ###)))
- (try_end),
- ###设置兵种位置结束
- ###(((新方法,统一设置兵种位置
- (try_for_range, ":cur_slot_no", 0, ":num_visitors"),
- (ge, ":cur_pos", 32),
- (assign, ":num_visitors", 0),
- (else_try),
- (troop_get_slot, ":cur_slot_troop", "trp_temp_array_a", ":cur_slot_no"),
- (set_visitor, ":cur_pos", ":cur_slot_troop"),
- (val_add,":cur_pos", 1),
- (try_end),
- ###)))
-
- (set_jump_entry, 0),
-
- (jump_to_scene,":castle_scene"),
- (scene_set_slot, ":castle_scene", slot_scene_visited, 1),
- (change_screen_mission),
- ]),
复制代码
|
|
|