骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] [OSP][战团]士兵溃逃功能

[复制链接]

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
发表于 2023-9-29 14:57:56 | 显示全部楼层 |阅读模式
本帖最后由 ggfgfgf 于 2023-9-30 22:31 编辑

战团原版士气崩溃和没有差不多,经常出现一些离谱情况,比如明明只有几个兵在地图边界,就是硬刚,太不符合现实了,一周几十第纳尔,玩什么命啊

所以做个小玩意,基本根据现实上战场士兵个人感受计算部队逃跑,是整体溃逃,计算具体实力,即步兵全顶级兵,对面全低级骑兵,大概率会跑路。。
欢迎各位骑友测试,报告bug!祝中秋、国庆快乐!

[Module_system]
贴代码:
mission_templates.py 注释下方开头添加


start_agent_run_away =  (
        10, 0, 0, [(neg|all_enemies_defeated),],
    [
        (assign,":ally",0),
        (assign,":enemy",0),
        (assign,":ally_num",0),
        (assign,":enemy_num",0),
        (try_for_agents,":agent"),
                (agent_get_troop_id,":troop",":agent"),
                (store_character_level, ":strength", ":troop"),
               
                (troop_get_class,":class",":troop"),
                (try_begin),
                        (eq,":class",grc_cavalry),
                        (assign,":value",3),
                (else_try),
                        (eq,":class",grc_archers),
                        (assign,":value",2),
                (else_try),
                        (assign,":value",1),
                (try_end),
                (val_add,":value",":strength"),
                (try_begin),
                        (agent_is_ally,":agent"),
                        (val_add,":ally_num",1),
                        (val_add,":ally",":value"),
                (else_try),
                        (val_add,":enemy_num",1),
                        (val_add,":enemy",":value"),
                (try_end),
        (try_end),
        
        (assign,":run",1),
        (try_begin),
                (lt,":ally_num",30),
                (val_mul,":run",-1),
        (try_end),
        
        (try_begin),
                (lt,":enemy_num",30),
                (val_mul,":run",-1),
        (try_end),
               
        (try_begin),
                (val_sub,":enemy",":ally"),
                #(assign,reg7,":enemy"),
                #(display_message,"@{reg7}"),
                (val_sub,":enemy_num",":ally_num"),
            (val_abs,":enemy_num"),
                (this_or_next|eq,":run",-1),
                (this_or_next|gt,":enemy_num",60),
                (this_or_next|lt,":enemy",-400),
                (gt,":enemy",400),
                #(assign,reg7,":enemy"),
                #(display_message,"@{reg7}"),
                (try_begin),
                        (lt,":enemy",-200),
                        (try_for_agents, ":agent"),
                                (agent_is_enemy,":agent"),
                                (agent_is_alive,":agent"),
                                (agent_is_human,":agent"),
                                (agent_get_combat_state,":state_no",":agent"),
                                (neq,":state_no",2),
                                (neq,":state_no",3),
                                (neq,":state_no",4),
                                (agent_start_running_away,":agent"),
                        (try_end),
                (else_try),
                        (gt,":enemy",200),
                        (assign,"$run_away",1),
                (try_end),
        (try_end),
        ])



player_down = (0, 0, 0,
        [
                (try_begin),
                (main_hero_fallen),
                        (try_begin),
                        (eq,"$run_away",1),
                        (try_for_agents, ":agent"),
                                (agent_is_ally,":agent"),
                                (agent_is_alive,":agent"),
                                (agent_is_human,":agent"),
                                (agent_clear_scripted_mode,":agent"),
                                (agent_get_combat_state,":state_no",":agent"),
                                (neq,":state_no",2),
                            (neq,":state_no",3),
                                (neq,":state_no",4),
                                (agent_start_running_away,":agent"),
                    (try_end),
                        (try_end),
                (try_end),
        ], [])

t_mission_begin = (0, 0, ti_once, [],
       [
           (assign,"$run_away",0),
           ])

在你需要的战场触发器中添加:

t_mission_begin,
start_agent_run_away,
player_down,

这里以野战(lead_charge)为例


  (
    "lead_charge",mtf_battle_mode|mtf_synch_inventory,charge,
    "You lead your men to battle.",
    [
     (1,mtef_defenders|mtef_team_0,0,aif_start_alarmed,12,[]),
     (0,mtef_defenders|mtef_team_0,0,aif_start_alarmed,0,[]),
     (4,mtef_attackers|mtef_team_1,0,aif_start_alarmed,12,[]),
     (4,mtef_attackers|mtef_team_1,0,aif_start_alarmed,0,[]),
     ],
    [
      (ti_on_agent_spawn, 0, 0, [],
       [
         (store_trigger_param_1, ":agent_no"),
         (call_script, "script_agent_reassign_team", ":agent_no"),

         (assign, ":initial_courage_score", 5000),

............
      t_mission_begin,#新增代码
      start_agent_run_away, #新增代码
      player_down,#新增代码

      common_battle_order_panel,
      common_battle_order_panel_tick,


    ],
  ),



评分

参与人数 1第纳尔 +20 互助 +2 魅力 +2 收起 理由
agjib + 20 + 2 + 2 您的帖子很有价值!

查看全部评分

1

主题

26

回帖

8

积分

平民

Rank: 1

UID
3284052
第纳尔
467
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-11-3

骑砍中文站APP会员勋章

鲜花(10) 鸡蛋(0)
发表于 2023-9-29 19:14:30 来自手机 | 显示全部楼层
是的,好功能,或者直接投降来自: Android客户端

0

主题

4

回帖

6

积分

平民

Rank: 1

UID
3293268
第纳尔
180
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2021-11-29
鲜花(0) 鸡蛋(0)
发表于 2023-9-29 23:42:50 | 显示全部楼层
没有'agent_is_enemy

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 00:19:08 | 显示全部楼层

你的源码版本太老了吧,怎么都没有的?
agent_is_ally                            = 1706                   # (agent_is_ally, <agent_id>),
                                                                  # Checks if the agent is allied to the player (belongs to player's party or allied party in current encounter).
agent_is_enemy                           = neg|agent_is_ally      # (agent_is_enemy, <agent_id>),

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 00:24:01 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 00:19
你的源码版本太老了吧,怎么都没有的?
agent_is_ally                            = 1706               ...

1171算老吗?来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 00:31:47 | 显示全部楼层

1171照理应该有吧,不知道你为什么缺这么多。我现在用自己整合的,WSE2

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 00:34:44 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 00:31
1171照理应该有吧,不知道你为什么缺这么多。我现在用自己整合的,WSE2

你的是wse2?来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 00:40:23 | 显示全部楼层

这段代码不需要wse2

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 00:54:37 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 00:19
你的源码版本太老了吧,怎么都没有的?
agent_is_ally                            = 1706               ...

我的mod好像真没有这个op来自: Android客户端

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 12:20:52 来自手机 | 显示全部楼层
昨天晚上试了一下有bug来自: Android客户端

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 12:22:57 来自手机 | 显示全部楼层
战场里,大于敌兵兵力,敌军会逃跑没错,但是界面却还留在开战时的界面来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 12:34:20 | 显示全部楼层
十万个为什么 发表于 2023-9-30 12:22
战场里,大于敌兵兵力,敌军会逃跑没错,但是界面却还留在开战时的界面

?只是撤退,打不了

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 12:35:53 | 显示全部楼层
十万个为什么 发表于 2023-9-30 12:22
战场里,大于敌兵兵力,敌军会逃跑没错,但是界面却还留在开战时的界面

这个我觉得正常,不应该就是这样吗,不然变成溃军?

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 12:42:43 | 显示全部楼层
十万个为什么 发表于 2023-9-30 12:22
战场里,大于敌兵兵力,敌军会逃跑没错,但是界面却还留在开战时的界面

这是骑砍本身判定,逃跑人数小于与总数某个比例才会变成溃军

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 14:18:27 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 12:35
这个我觉得正常,不应该就是这样吗,不然变成溃军?

是根本退不出去,因为敌人逃跑后,会陷入一个循环里面,除非全部杀死,要不然一直逃来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 15:09:28 | 显示全部楼层
十万个为什么 发表于 2023-9-30 14:18
是根本退不出去,因为敌人逃跑后,会陷入一个循环里面,除非全部杀死,要不然一直逃 ...

差不多如图流程。只是打不到,可以离开啊,不过有点不太爽,但是改进下条件就行,没有卡住啊

mb3 (1).png mb4 (1).png mb2.png mb1.png

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 17:45:28 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 15:09
差不多如图流程。只是打不到,可以离开啊,不过有点不太爽,但是改进下条件就行,没有卡住啊

你试试带100兵打十几个土匪试试来自: Android客户端

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-30 17:45:51 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 15:09
差不多如图流程。只是打不到,可以离开啊,不过有点不太爽,但是改进下条件就行,没有卡住啊

不要杀死,让他们逃跑,你看看来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 20:43:29 | 显示全部楼层
十万个为什么 发表于 2023-9-30 17:45
不要杀死,让他们逃跑,你看看

试了,只能选离开,你打不到的,这只是一个实例代码,你用在mod需要加一些判定,比如刚开战时就要跑的情况排除,ai不能过于智能

18

主题

160

回帖

168

积分

见习骑士

Rank: 3

UID
3048044
第纳尔
2095
精华
0
互助
19
荣誉
2
贡献
20
魅力
295
注册时间
2018-12-15
鲜花(36) 鸡蛋(0)
发表于 2023-9-30 22:13:22 | 显示全部楼层
其实可以直接加在script_decide_run_away_or_not脚本里头吧,这样只需要一个mt里的common就够了,判定也很简单,直接加个agent的slot然后在加个截胡判定就行了(比如你举的例子做个几秒一次全巡就行了)
(eq, ":is_cur_agent_running_away", 0),这个下面那个循环的第一个加上一个slot判定直接跑还是怎么样,如果想死战不退的直接在那下面加个截胡(agent_get_troop_id, ":agent_troop_id", ":cur_agent"),也可以做到特定兵种死战不退或者接着用溃逃的slot换个数这样,主要这样不会mt里的common大战骑砍自带的这个script

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-9-30 22:16:13 | 显示全部楼层
黑暗路西法 发表于 2023-9-30 22:13
其实可以直接加在script_decide_run_away_or_not脚本里头吧,这样只需要一个mt里的common就够了,判定也很 ...

嗯,我这个只是个抛砖引玉的,真做mod了不能这么简单的,要不然ai也太软蛋了

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-10-1 12:23:26 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-30 20:43
试了,只能选离开,你打不到的,这只是一个实例代码,你用在mod需要加一些判定,比如刚开战时就要跑的情 ...

?,不会吧    难道只有我不能离开?来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-10-1 12:27:40 | 显示全部楼层
十万个为什么 发表于 2023-10-1 12:23
?,不会吧    难道只有我不能离开?

嗯。。。。。。我已经改进加入我的mod了https://bbs.mountblade.com.cn/fo ... 39&pid=10303172
这里面有问题吗,我没发现,你可以看看,里面有源码(BAF-source)

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-10-1 13:56:36 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-10-1 12:27
嗯。。。。。。我已经改进加入我的mod了https://bbs.mountblade.com.cn/forum.php?mod=redirect&amp;goto=fin ...

给个联系方式,我加一下,发视频给你来自: Android客户端

46

主题

628

回帖

492

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
1845
精华
0
互助
48
荣誉
5
贡献
10
魅力
341
注册时间
2022-8-13
鲜花(57) 鸡蛋(0)
 楼主| 发表于 2023-10-1 14:03:42 | 显示全部楼层
十万个为什么 发表于 2023-10-1 13:56
给个联系方式,我加一下,发视频给你

看私信。还有我的mod你看了吗,没有这个问题吧

33

主题

180

回帖

64

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-10-1 14:25:21 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-10-1 14:03
看私信。还有我的mod你看了吗,没有这个问题吧

我手机端的看不到私信来自: Android客户端

0

主题

4

回帖

6

积分

平民

Rank: 1

UID
3293268
第纳尔
180
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2021-11-29
鲜花(0) 鸡蛋(0)
发表于 2023-10-1 14:25:47 | 显示全部楼层
再发一次私信,我刚才登录的是手机端的,看不到私信
。。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-12-27 12:42 , Processed in 0.181148 second(s), 28 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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