- 好友
 - 6
  
- 在线时间
 - 266 小时
  
- 最后登录
 - 2025-8-31
  
 
 
 
 
见习骑士 
  
 
- UID
 - 286084
  
- 第纳尔
 - 1293 
  
- 精华
 - 0
  
- 互助
 - 13 
  
- 荣誉
 - 0 
  
- 贡献
 - 0 
  
- 魅力
 - 26 
  
- 注册时间
 - 2010-7-23
  
     
  
  鲜花( 33)   鸡蛋( 0)  
 | 
 
 
发表于 2020-3-30 10:42:06
|
显示全部楼层
 
 
 
 本帖最后由 yunwei1237 于 2020-3-30 13:11 编辑  
 
你好,你的功能和基本是类似的,他的功能是,根据指令出现在地图上,你的是出现地图上时,从据点中的预备兵中直接招募。 
 
你的功能大概分以下几个步骤: 
1.定时贮备预备兵 
2.限制领主私自招募士兵 
3.领主士兵不够时直接从据点取兵 
 
 
针对这三个问题 
 
定时贮备预备兵: 
给据点(城镇,城堡,村庄)使用两个slot,用于保存预备兵的id(不同国家可能不一样)和预备兵的数量。在游戏开始时,就给每一个据点设置好兵种,创建一个触发器,定时给据点增加预备兵的数量 
限制领主私自招募士兵 
系统本身有一个触发器,每48小时会自动检测领主是否从监狱放出,然后给该领主创建部队和招募士兵,可以从这个触发器入手,用改变招募士兵,并从预备兵的数量中减去,创建部队和招募士兵使用的是script_create_kingdom_hero_party,可以创建一个新的脚本,用于创建部队,并从预备兵中招募,以及维护据点士兵数量。不需要大改这个触发器。 
 
领主士兵不够时直接从据点取兵 
这个最简单,创建一个触发器,定时检测领主士兵是否够用(可以使用script_party_get_ideal_size来检测士兵是否满员),如果不够就从预备军中招募,然后修改据点士兵数量。为了真实一点,也可以定时让领主移到到自己的土地,然后,再修改士兵数量,这样看起来就像是从领地招募的士兵,而不是凭空出现的士兵。 
我只提供了思路,并没有提供代码,现在没有时间写,所以只能写一个思路给你。 
 
 
简单触发器(第二个问题参考的触发器)如下: 
- # Respawn hero party after kingdom hero is released from captivity.
 
 -   (48, 
 
 -    [
 
 -        (try_for_range, ":troop_no", active_npcs_begin, active_npcs_end),
 
 -          (troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),
 
  
-          (str_store_troop_name, s1, ":troop_no"),
 
 -        
 
 -          (neg|troop_slot_ge, ":troop_no", slot_troop_prisoner_of_party, 0),
 
 -          (neg|troop_slot_ge, ":troop_no", slot_troop_leaded_party, 1),
 
  
-          (store_troop_faction, ":cur_faction", ":troop_no"),
 
 -          (try_begin),
 
 -            (eq, ":cur_faction", "fac_outlaws"), #Do nothing
 
 -          (else_try),         
 
 -            (try_begin),
 
 -              (eq, "$cheat_mode", 2),
 
 -              (str_store_troop_name, s4, ":troop_no"),
 
 -              (display_message, "str_debug__attempting_to_spawn_s4"),
 
 -            (try_end),
 
 -            
 
 -            (call_script, "script_cf_select_random_walled_center_with_faction_and_owner_priority_no_siege", ":cur_faction", ":troop_no"),#Can fail
 
 -            (assign, ":center_no", reg0),
 
  
-            (try_begin),
 
 -              (eq, "$cheat_mode", 2),             
 
 -              (str_store_party_name, s7, ":center_no"),
 
 -                          (str_store_troop_name, s0, ":troop_no"),
 
 -              (display_message, "str_debug__s0_is_spawning_around_party__s7"),
 
 -            (try_end),
 
 -        
 
 -            (call_script, "script_create_kingdom_hero_party", ":troop_no", ":center_no"),
 
  
-                    (try_begin),
 
 -                      (eq, "$g_there_is_no_avaliable_centers", 0),
 
 -              (party_attach_to_party, "$pout_party", ":center_no"),
 
 -            (try_end),
 
 -            
 
 -            #new
 
 -            #(troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
 
 -                    #(call_script, "script_npc_decision_checklist_party_ai", ":troop_no"), #This handles AI for both marshal and other parties                
 
 -                    #(call_script, "script_party_set_ai_state", ":party_no", reg0, reg1),
 
 -                    #new end
 
  
-            (troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
 
 -            (call_script, "script_party_set_ai_state", ":party_no", spai_holding_center, ":center_no"),           
 
 -            
 
 -          (else_try),
 
 -            (neg|faction_slot_eq, ":cur_faction", slot_faction_state, sfs_active),
 
 -            (try_begin),
 
 -              (is_between, ":troop_no", kings_begin, kings_end),
 
 -              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, "fac_commoners"),
 
 -            (else_try),
 
 -              (store_random_in_range, ":random_no", 0, 100),
 
 -              (lt, ":random_no", 10),
 
 -              (call_script, "script_cf_get_random_active_faction_except_player_faction_and_faction", ":cur_faction"),
 
 -              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, reg0),
 
 -            (try_end),
 
 -          (try_end),
 
 -        (try_end),
 
 -     ]),
 
  复制代码 
【已解决】如何实现国家没有元帅或者指令一个阵营的所有领主不在大地图出现? 
http://bbs.mountblade.com.cn/thread-2054894-1-1.html 
(出处: 骑马与砍杀中文站论坛) 
 
 |   
 
评分
- 
查看全部评分
 
 
 
鲜花鸡蛋TurpinHero  在2020-3-30 12:45   送朵鲜花  并说:谢谢你!——不过那个链接失效了😂  TurpinHero  在2020-3-30 12:45   送朵鲜花  并说:谢谢你!——不过那个链接失效了😂   
 
 |