骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] [OSP][战团]仿砍2ai规避玩家功能

[复制链接]

42

主题

489

回帖

394

积分

见习骑士

Rank: 3

UID
3398051
第纳尔
1413
精华
0
互助
39
荣誉
4
贡献
10
魅力
300
注册时间
2022-8-13
鲜花(48) 鸡蛋(0)
发表于 2023-8-25 17:36:50 | 显示全部楼层 |阅读模式
战团由于引擎局限,玩家会被ai挡住,砍2 则会让路

以下受@武安apk43 的mod启发写的小功能,py代码实现
module_misson_templates.py中开头定义
添加


evade_ai = (
        0.5, 0, 0,
        [
                (set_fixed_point_multiplier, 100),
                (get_player_agent_no,":agent"),
                (agent_get_speed, pos14, ":agent"),
                (position_get_y, ":speed", pos14),
                (position_get_x, ":speed_x", pos14),
                (val_max, ":speed", ":speed_x"),
                (lt,":speed",150),
                (agent_get_animation,":ani",":agent",0),
                # (assign,reg1,":ani"),
                # (display_message,"@{reg1}"),
                (this_or_next|eq,":ani",26),
                (this_or_next|eq,":ani",27),
                (this_or_next|eq,":ani",63),
                (this_or_next|eq,":ani",69),
                (this_or_next|eq,":ani",33),
                (this_or_next|eq,":ani",39),
                (this_or_next|eq,":ani",93),
                (this_or_next|eq,":ani",96),
                (this_or_next|eq,":ani",81),
                (this_or_next|eq,":ani",75),
                (eq,":ani",45),
                (agent_get_position,pos15,":agent"),
                (position_get_x, ":x", pos15),
                (position_get_y, ":y", pos15),
                (position_get_z, ":z", pos15),
                (try_for_agents,":agent_no", pos15, 50),
                        (agent_is_alive,":agent_no"),
                    (agent_is_human,":agent_no"),
                        (agent_is_ally,":agent_no"),
                        (agent_get_combat_state, ":state", ":agent_no"),
                        (neq, ":state", cs_guard),
                        (neq, ":state", cs_swing),
                        (agent_get_position,pos16,":agent_no"),
                        (position_get_x, ":tx", pos16),
                        (position_get_y, ":ty", pos16),
                        (position_set_z_to_ground_level, pos16),
                        (position_get_z, ":tz", pos16),
                        (val_sub,":tx",":x"),
                        (val_sub,":ty",":y"),
                        (val_sub,":z",":tz"),
                        (val_abs,":z"),
                        (try_begin),
                        (lt,":z",50),
                        (val_div,":tx",5),
                        (val_div,":ty",5),
                        (position_move_x,pos16,":tx",1),
                    (position_move_y,pos16,":ty",1),
                        # (agent_force_rethink,":agent"),
                        # (agent_set_scripted_destination, ":agent_no", pos16, 1),
                        (agent_set_position, ":agent_no", pos16, 1, 0),
                        # (agent_set_animation,":agent_no",27,1),
                        (try_end),
                (try_end),
        ],[
        ])



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

这里以野战(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),

............
      evade_ai, #新增代码
      common_battle_order_panel,
      common_battle_order_panel_tick,


    ],
  ),


另外这个功能不太自然,希望汽油们能给点建议优化一下

评分

参与人数 1第纳尔 +20 互助 +1 魅力 +5 收起 理由
幼稚园殺手 + 20 + 1 + 5 文章不错,继续努力!

查看全部评分

42

主题

489

回帖

394

积分

见习骑士

Rank: 3

UID
3398051
第纳尔
1413
精华
0
互助
39
荣誉
4
贡献
10
魅力
300
注册时间
2022-8-13
鲜花(48) 鸡蛋(0)
 楼主| 发表于 2023-8-26 11:56:10 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-9-16 11:17 编辑

游客,如果您要查看本帖隐藏内容请回复

23

主题

331

回帖

266

积分

见习骑士

Rank: 3

UID
3189500
第纳尔
2549
精华
0
互助
24
荣誉
4
贡献
10
魅力
235
注册时间
2020-6-13
鲜花(66) 鸡蛋(0)
发表于 2023-8-27 16:02:10 来自手机 | 显示全部楼层
不要在未经作者同意的情况下随便反编译代码,特别是发布在中文站帖子里,影响不好来自: Android客户端

鲜花鸡蛋

ggfgfgf  在2023-8-27 17:02  送朵鲜花  并说:已经隐藏了反编译的您的代码
ggfgfgf  在2023-8-27 16:57  送朵鲜花  并说:我向您道歉,是我意识不足,下次绝不再犯

2

主题

112

回帖

109

积分

见习骑士

Rank: 3

UID
3500189
第纳尔
750
精华
0
互助
13
荣誉
1
贡献
10
魅力
225
注册时间
2023-3-30
鲜花(36) 鸡蛋(0)
发表于 2023-8-28 01:53:28 | 显示全部楼层
三年前官网就有人发过类似的了,
代码如下,引用请鸣谢Dalion
passable_allies = (0, 0, 0,
    [
    (neg|main_hero_fallen),
    (key_is_down, key_left_control),
    ],
    [
    (set_fixed_point_multiplier, 1),
    (get_player_agent_no, ":player"),
    (agent_get_position, pos1, ":player"),
    (agent_get_team, ":p_team", ":player"),
    (try_for_agents, ":agent", pos1, 1),
        (agent_is_alive, ":agent"),
        (agent_is_human, ":agent"),
        (agent_is_non_player, ":agent"),
        (agent_get_team, ":a_team", ":agent"),
        (neg|teams_are_enemies, ":a_team", ":p_team"),
        (agent_get_speed, pos2, ":player"),
        (position_get_y, ":forward_momentum", pos2),
        (position_get_x, ":sideway_momentum", pos2),
        (convert_to_fixed_point, ":forward_momentum"),
        (convert_to_fixed_point, ":sideway_momentum"),
        (try_begin),
            (lt, ":forward_momentum", 0), # backwards moving speed is higher somehow, so we divide it in half
            (val_div, ":forward_momentum", 2),
        (try_end),
        (val_div, ":sideway_momentum", 2), # so is sideways moving speed
        (position_move_y, pos1, ":forward_momentum"),
        (position_move_x, pos1, ":sideway_momentum"),
        (agent_set_position, ":player", pos1),      
    (try_end),
    ])

42

主题

489

回帖

394

积分

见习骑士

Rank: 3

UID
3398051
第纳尔
1413
精华
0
互助
39
荣誉
4
贡献
10
魅力
300
注册时间
2022-8-13
鲜花(48) 鸡蛋(0)
 楼主| 发表于 2023-8-28 08:57:58 | 显示全部楼层
龙静颜 发表于 2023-8-28 01:53
三年前官网就有人发过类似的了,
代码如下,引用请鸣谢Dalion
passable_allies = (0, 0, 0,

我没看见过,感谢指出

23

主题

331

回帖

266

积分

见习骑士

Rank: 3

UID
3189500
第纳尔
2549
精华
0
互助
24
荣誉
4
贡献
10
魅力
235
注册时间
2020-6-13
鲜花(66) 鸡蛋(0)
发表于 2023-8-28 18:10:29 | 显示全部楼层
龙静颜 发表于 2023-8-28 01:53
三年前官网就有人发过类似的了,
代码如下,引用请鸣谢Dalion
passable_allies = (0, 0, 0,

这个原理不太一样,这个是让玩家瞬移,而不是让士兵让路,效果上也大相径庭
B站个人空间:https://b23.tv/rZhCYpH

2

主题

112

回帖

109

积分

见习骑士

Rank: 3

UID
3500189
第纳尔
750
精华
0
互助
13
荣誉
1
贡献
10
魅力
225
注册时间
2023-3-30
鲜花(36) 鸡蛋(0)
发表于 2023-8-28 21:10:13 | 显示全部楼层
武安apk43 发表于 2023-8-28 18:10
这个原理不太一样,这个是让玩家瞬移,而不是让士兵让路,效果上也大相径庭 ...

没啥本质区别,一个让玩家瞬移,一个让士兵瞬移

23

主题

331

回帖

266

积分

见习骑士

Rank: 3

UID
3189500
第纳尔
2549
精华
0
互助
24
荣誉
4
贡献
10
魅力
235
注册时间
2020-6-13
鲜花(66) 鸡蛋(0)
发表于 2023-8-28 23:43:18 | 显示全部楼层
龙静颜 发表于 2023-8-28 21:10
没啥本质区别,一个让玩家瞬移,一个让士兵瞬移

怎么说呢,让玩家瞬移是玩家直接穿过AI,当初我看到群里的代码试过,可以说完全解决了拥挤的问题,但是非常出戏。所以我就想了这个让士兵瞬移,虽然不能完全解决拥挤的问题,但是玩家不注意根本感觉不到,只能算是缓解拥挤。你可以试试那个穿过士兵的代码,玩家过人群就像是穿墙一样,溜一下就过去了
B站个人空间:https://b23.tv/rZhCYpH

0

主题

4

回帖

6

积分

平民

Rank: 1

UID
3293268
第纳尔
180
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2021-11-29
鲜花(0) 鸡蛋(0)
发表于 2023-9-10 12:58:35 | 显示全部楼层
找不到cs_guard

42

主题

489

回帖

394

积分

见习骑士

Rank: 3

UID
3398051
第纳尔
1413
精华
0
互助
39
荣誉
4
贡献
10
魅力
300
注册时间
2022-8-13
鲜花(48) 鸡蛋(0)
 楼主| 发表于 2023-9-16 12:19:26 | 显示全部楼层

添加到header_common.py

cs_free                        = 0     #no action
cs_target_in_sight             = 1     # ranged units
cs_guard                       = 2     # no shield,Block hit
cs_wield                       = 3     # reach out weapon, preparing to strike, melee units
cs_fire                        = 3     # ranged units
cs_swing                       = 4     # cut / thrust, melee units
cs_load                        = 4     # crossbow units
cs_still                       = 7     # melee units, happens, not always (seems to have something to do with the part of body hit), when hit
cs_no_visible_targets          = 7     # ranged units
cs_target_on_right_hand_side   = 8     # horse archers,unit on left

32

主题

175

回帖

62

积分

扈从

Rank: 2Rank: 2

UID
3256923
第纳尔
746
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-7-30
鲜花(5) 鸡蛋(0)
发表于 2023-9-17 08:43:07 来自手机 | 显示全部楼层
ggfgfgf 发表于 2023-9-16 12:19
添加到header_common.py

cs_free                        = 0     #no action

感谢,好的来自: Android客户端

13

主题

85

回帖

144

积分

见习骑士

Rank: 3

UID
3304622
第纳尔
605
精华
0
互助
19
荣誉
2
贡献
0
魅力
123
注册时间
2021-12-28
鲜花(26) 鸡蛋(0)
发表于 2023-9-21 21:30:05 | 显示全部楼层
看看学习学习

4

主题

32

回帖

26

积分

随仆

Rank: 1

UID
3328218
第纳尔
346
精华
0
互助
3
荣誉
0
贡献
0
魅力
0
注册时间
2022-2-17
鲜花(4) 鸡蛋(0)
发表于 2023-11-26 16:34:14 | 显示全部楼层
6666666666666

15

主题

46

回帖

18

积分

随仆

Rank: 1

UID
1189089
第纳尔
360
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-2-4
鲜花(1) 鸡蛋(0)
发表于 2024-1-3 15:17:09 | 显示全部楼层
有TXT办法能分享一下么?   

0

主题

8

回帖

7

积分

平民

Rank: 1

UID
3588356
第纳尔
0
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2023-12-7
鲜花(0) 鸡蛋(0)
发表于 2024-1-5 16:09:35 | 显示全部楼层
6666

29

主题

691

回帖

551

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1738
精华
0
互助
67
荣誉
0
贡献
0
魅力
4
注册时间
2022-2-3
鲜花(55) 鸡蛋(0)
发表于 2024-1-5 17:15:52 来自手机 | 显示全部楼层
chunbo3210 发表于 2024-1-3 15:17
有TXT办法能分享一下么?

魔球就可以做ms和txt的转换,自己搞个魔球转换去。来自: Android客户端

15

主题

46

回帖

18

积分

随仆

Rank: 1

UID
1189089
第纳尔
360
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-2-4
鲜花(1) 鸡蛋(0)
发表于 2024-1-6 19:56:29 | 显示全部楼层
112233lyh 发表于 2024-1-5 17:15
魔球就可以做ms和txt的转换,自己搞个魔球转换去。

魔球咋做啊,触发器里添加PY代码   TXT显示读不出来啊

29

主题

691

回帖

551

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1738
精华
0
互助
67
荣誉
0
贡献
0
魅力
4
注册时间
2022-2-3
鲜花(55) 鸡蛋(0)
发表于 2024-1-6 21:00:43 来自手机 | 显示全部楼层
chunbo3210 发表于 2024-1-6 19:56
魔球咋做啊,触发器里添加PY代码   TXT显示读不出来啊

把头尾去掉,不要留[和],里面的纯代码可以翻译。来自: Android客户端

16

主题

163

回帖

59

积分

扈从

Rank: 2Rank: 2

UID
268488
第纳尔
958
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2010-6-17
鲜花(2) 鸡蛋(0)
发表于 2024-4-21 16:07:02 | 显示全部楼层
!!!!!!!!!

5

主题

160

回帖

65

积分

扈从

Rank: 2Rank: 2

UID
2743218
第纳尔
1031
精华
0
互助
3
荣誉
0
贡献
0
魅力
30
注册时间
2016-5-1
鲜花(2) 鸡蛋(0)
发表于 2024-4-22 08:20:38 | 显示全部楼层
66666666666666666
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-5-4 13:05 , Processed in 0.136901 second(s), 41 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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