骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 3085|回复: 3

[求助] 【已解决】如何实现国家没有元帅或者指令一个阵营的所有领主不在大地图出现?

[复制链接]

7

主题

49

回帖

17

积分

随仆

Rank: 1

UID
3135446
第纳尔
72
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-2-11
鲜花(0) 鸡蛋(0)
发表于 2020-3-28 09:16:47 | 显示全部楼层 |阅读模式
本帖最后由 3396255585 于 2020-3-30 10:43 编辑

已解决此类问题

18

主题

47

回帖

30

积分

扈从

Rank: 2Rank: 2

UID
2881933
第纳尔
589
精华
0
互助
2
荣誉
0
贡献
0
魅力
1
注册时间
2017-10-6
鲜花(17) 鸡蛋(0)
发表于 2020-3-30 09:26:17 | 显示全部楼层
script里的"create_kingdom_hero_party"创建领主队伍

评分

参与人数 1第纳尔 +10 收起 理由
幼稚园殺手 + 10 乐于助人!

查看全部评分

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
发表于 2020-3-30 10:13:13 | 显示全部楼层
本帖最后由 yunwei1237 于 2020-3-30 10:24 编辑

可以从以下情况着手,
slot_faction_ai_state该slot保存着一个国家当前的ai情况,大概有以下几个情况:

#slot_faction_ai_state values
'''
    默认行为(防守)
'''
sfai_default                                    = 0 #also defending
'''
    集结军队
'''
sfai_gathering_army                             = 1
'''
    攻城
'''
sfai_attacking_center                           = 2
'''
    洗劫村庄
'''
sfai_raiding_village                            = 3
'''
   攻击敌军
'''
sfai_attacking_enemy_army                       = 4
'''
    攻击某个城堡附近的敌人
'''
sfai_attacking_enemies_around_center = 5
'''
    宴会(婚礼,竞技大会)
'''
sfai_feast                                               = 6 #can be feast, wedding, or major tournament


可以创建一个简单触发器,每隔一段时间检测国家的ai情况,然后再让领主从地图上刷出来。

游戏开始时,已经刷新的时候,可以在游戏一开始就检测一次,让所有领主一开始就进入城镇。

在简单触发器中,有一个触发器,每隔一段时间会检测领主是否战败,然后重新刷领主与招募相应的士兵。也可以从这个触发器着手,添加一个条件,只有国家当前的ai情况是集结,攻击,攻城等等行为时,才刷新,否都进入城镇休息。

以前只是一个设想,并没有写代码验证,我想应该可以解决。
这就是简单触发器(大概在simple_triggers.py中的1845行左右):
  1. # Respawn hero party after kingdom hero is released from captivity.
  2.   (48,
  3.    [
  4.        (try_for_range, ":troop_no", active_npcs_begin, active_npcs_end),
  5.          (troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),

  6.          (str_store_troop_name, s1, ":troop_no"),
  7.       
  8.          (neg|troop_slot_ge, ":troop_no", slot_troop_prisoner_of_party, 0),
  9.          (neg|troop_slot_ge, ":troop_no", slot_troop_leaded_party, 1),

  10.          (store_troop_faction, ":cur_faction", ":troop_no"),
  11.          (try_begin),
  12.            (eq, ":cur_faction", "fac_outlaws"), #Do nothing
  13.          (else_try),         
  14.            (try_begin),
  15.              (eq, "$cheat_mode", 2),
  16.              (str_store_troop_name, s4, ":troop_no"),
  17.              (display_message, "str_debug__attempting_to_spawn_s4"),
  18.            (try_end),
  19.            
  20.            (call_script, "script_cf_select_random_walled_center_with_faction_and_owner_priority_no_siege", ":cur_faction", ":troop_no"),#Can fail
  21.            (assign, ":center_no", reg0),

  22.            (try_begin),
  23.              (eq, "$cheat_mode", 2),            
  24.              (str_store_party_name, s7, ":center_no"),
  25.                          (str_store_troop_name, s0, ":troop_no"),
  26.              (display_message, "str_debug__s0_is_spawning_around_party__s7"),
  27.            (try_end),
  28.       
  29.            (call_script, "script_create_kingdom_hero_party", ":troop_no", ":center_no"),

  30.                    (try_begin),
  31.                      (eq, "$g_there_is_no_avaliable_centers", 0),
  32.              (party_attach_to_party, "$pout_party", ":center_no"),
  33.            (try_end),
  34.            
  35.            #new
  36.            #(troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
  37.                    #(call_script, "script_npc_decision_checklist_party_ai", ":troop_no"), #This handles AI for both marshal and other parties               
  38.                    #(call_script, "script_party_set_ai_state", ":party_no", reg0, reg1),
  39.                    #new end

  40.            (troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
  41.            (call_script, "script_party_set_ai_state", ":party_no", spai_holding_center, ":center_no"),           
  42.            
  43.          (else_try),
  44.            (neg|faction_slot_eq, ":cur_faction", slot_faction_state, sfs_active),
  45.            (try_begin),
  46.              (is_between, ":troop_no", kings_begin, kings_end),
  47.              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, "fac_commoners"),
  48.            (else_try),
  49.              (store_random_in_range, ":random_no", 0, 100),
  50.              (lt, ":random_no", 10),
  51.              (call_script, "script_cf_get_random_active_faction_except_player_faction_and_faction", ":cur_faction"),
  52.              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, reg0),
  53.            (try_end),
  54.          (try_end),
  55.        (try_end),
  56.     ]),
复制代码


评分

参与人数 1第纳尔 +30 互助 +1 收起 理由
幼稚园殺手 + 30 + 1 乐于助人!

查看全部评分

鲜花鸡蛋

3396255585  在2020-3-30 10:37  送朵鲜花  并说:谢谢大佬!!!
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

5

主题

102

回帖

72

积分

扈从

暴风骑士团(SK)
战团ID:SK_Zyz

Rank: 2Rank: 2

UID
209971
第纳尔
401
精华
0
互助
4
荣誉
2
贡献
5
魅力
0
注册时间
2010-3-6

骑士美德之诚信勋章原版正版勋章战团正版勋章拿破仑正版勋章战团正版勋章元老骑士勋章霸主正版勋章

鲜花(7) 鸡蛋(0)
发表于 2023-5-8 23:12:34 | 显示全部楼层
yunwei1237 发表于 2020-3-30 10:13
可以从以下情况着手,
slot_faction_ai_state该slot保存着一个国家当前的ai情况,大概有以下几个情况:

...

请问大佬如何添加这个直接复制粘贴到simple_triggers.py里吗
“我们已经设定了一个目标,并将为之努力奋斗,直到永恒!”
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-11-19 10:27 , Processed in 0.136373 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表