骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] 关于@jj95198大佬做出来的四向翻滚动作我又有新思路顺带发布下载

[复制链接]

59

主题

352

回帖

173

积分

见习骑士

自由骑士
战团ID:Silversword

Rank: 3

UID
1800745
第纳尔
675
精华
0
互助
8
荣誉
1
贡献
0
魅力
125
注册时间
2014-2-8

战团正版勋章维京征服正版勋章骑友真人秀Ⅲ勋章元老骑士勋章

鲜花(33) 鸡蛋(1)
发表于 2020-5-29 22:03:01 | 显示全部楼层 |阅读模式
本帖最后由 get.shot.with.. 于 2020-5-30 06:55 编辑

https://bbs.mountblade.com.cn/thread-2025807-1-1.html
首先我个人是从骑砍中文站@jj95198大佬的PY代码中得到的思路然后再结合@无面的无名氏大佬的代码然后自己写出的,而后我自己又用3dsMAX重新K了7个动作。
原帖大佬的代码功能是实现双击方向(0.3秒内)触发翻滚动作,以及Q键和E键对应左右闪避
我的思路是双击方向键(0.3秒内)触发向前滑步(w+w)向后撤步(s+s)以及A+A、D+D对应左右滑步(不过我右滑步K帧K的有些粗糙),然后我又增加了ALT+(W、A、D)触发向前向左向右的翻滚(向后翻滚的动作目前还没做)
现在先放出PY 的MS代码 (前半部分基本没变

这里是module_mission_templates.py中的
  1.           ( 0, 0, 0, [],
  2.        [
  3.            (try_begin),#前
  4.                 (assign, ":coule_time", 0.3),
  5.             (game_key_clicked, gk_move_forward),
  6.                     (store_mission_timer_a,":cur_time_a"),
  7.                         (try_begin),
  8.                       (le, ":cur_time_a", ":coule_time"),
  9.                       (game_key_clicked, gk_move_forward),
  10.                       (get_player_agent_no,":player_agent"),
  11.                           (agent_is_alive,":player_agent"),
  12.                           (agent_get_horse, ":horse_no", ":player_agent"),
  13.               (le, ":horse_no", -1),#无马
  14.               (agent_set_animation,":player_agent","anim_coule_forward"),
  15.                           (play_sound, "snd_tc_fangun"),
  16.                         (else_try),
  17.                           (val_add,":coule_time",1),
  18.                           (gt, ":cur_time_a", ":coule_time"),
  19.                           (reset_mission_timer_a),
  20.                 (try_end),
  21.            (try_end),
  22.            
  23.            (try_begin),#后
  24.                 (assign, ":coule_time", 0.3),
  25.             (game_key_clicked, gk_move_backward),
  26.                     (store_mission_timer_a,":cur_time_a"),
  27.                         (try_begin),
  28.                       (le, ":cur_time_a", ":coule_time"),
  29.                       (game_key_clicked, gk_move_backward),
  30.                       (get_player_agent_no,":player_agent"),
  31.                           (agent_is_alive,":player_agent"),
  32.                           (agent_get_horse, ":horse_no", ":player_agent"),
  33.               (le, ":horse_no", -1),#无马
  34.               (agent_set_animation,":player_agent","anim_coule_backward"),
  35.                           (play_sound, "snd_tc_fangun"),
  36.                         (else_try),
  37.                           (val_add,":coule_time",1),
  38.                           (gt, ":cur_time_a", ":coule_time"),
  39.                           (reset_mission_timer_a),
  40.                 (try_end),
  41.            (try_end),
  42.            
  43.            (try_begin),#左
  44.                 (assign, ":coule_time", 0.3),
  45.             (game_key_clicked, gk_move_left),
  46.                     (store_mission_timer_a,":cur_time_a"),
  47.                         (try_begin),
  48.                       (le, ":cur_time_a", ":coule_time"),
  49.                       (game_key_clicked, gk_move_left),
  50.                       (get_player_agent_no,":player_agent"),
  51.                           (agent_is_alive,":player_agent"),
  52.                           (agent_get_horse, ":horse_no", ":player_agent"),
  53.               (le, ":horse_no", -1),#无马
  54.               (agent_set_animation,":player_agent","anim_coule_left"),
  55.                           (play_sound, "snd_tc_fangun"),
  56.                         (else_try),
  57.                           (val_add,":coule_time",1),
  58.                           (gt, ":cur_time_a", ":coule_time"),
  59.                           (reset_mission_timer_a),
  60.                 (try_end),
  61.            (try_end),
  62.            
  63.            (try_begin),#右
  64.                 (assign, ":coule_time", 0.3),
  65.             (game_key_clicked, gk_move_right),
  66.                     (store_mission_timer_a,":cur_time_a"),
  67.                         (try_begin),
  68.                       (le, ":cur_time_a", ":coule_time"),
  69.                       (game_key_clicked, gk_move_right),
  70.                       (get_player_agent_no,":player_agent"),
  71.                           (agent_is_alive,":player_agent"),
  72.                           (agent_get_horse, ":horse_no", ":player_agent"),
  73.               (le, ":horse_no", -1),#无马
  74.               (agent_set_animation,":player_agent","anim_coule_right"),
  75.                           (play_sound, "snd_tc_fangun"),
  76.                         (else_try),
  77.                           (val_add,":coule_time",1),
  78.                           (gt, ":cur_time_a", ":coule_time"),
  79.                           (reset_mission_timer_a),
  80.                 (try_end),
  81.            (try_end),
  82.          
  83.             (try_begin),#前 翻滚
  84.             (key_is_down, key_left_alt),
  85.             (game_key_clicked, gk_move_forward),
  86.                       (get_player_agent_no,":player_agent"),
  87.                           (agent_is_alive,":player_agent"),
  88.                           (agent_get_horse, ":horse_no", ":player_agent"),
  89.               (le, ":horse_no", -1),#无马
  90.               (agent_set_animation,":player_agent","anim_roll_forward"),
  91.                           (play_sound, "snd_tc_fangun"),
  92.            (try_end),

  93.             (try_begin),#左 翻滚
  94.             (key_is_down, key_left_alt),
  95.             (game_key_clicked, gk_move_left),
  96.                       (get_player_agent_no,":player_agent"),
  97.                           (agent_is_alive,":player_agent"),
  98.                           (agent_get_horse, ":horse_no", ":player_agent"),
  99.               (le, ":horse_no", -1),#无马
  100.               (agent_set_animation,":player_agent","anim_roll_left"),
  101.                           (play_sound, "snd_tc_fangun"),
  102.            (try_end),

  103.             (try_begin),#右 翻滚
  104.             (key_is_down, key_left_alt),
  105.             (game_key_clicked, gk_move_right),
  106.                       (get_player_agent_no,":player_agent"),
  107.                           (agent_is_alive,":player_agent"),
  108.                           (agent_get_horse, ":horse_no", ":player_agent"),
  109.               (le, ":horse_no", -1),#无马
  110.               (agent_set_animation,":player_agent","anim_roll_right"),
  111.                           (play_sound, "snd_tc_fangun"),
  112.            (try_end),
  113.      ]),
复制代码

然后这是animation.py中的
  1. ["roll_forward", acf_right_cut|acf_rot_vertical_bow|acf_enforce_all|acf_displace_position|acf_anim_length(100), amf_priority_attack|amf_play|amf_accurate_body|amf_client_prediction|amf_use_weapon_speed,#前
  2.    [1.4, "roll_forward", 0, 49, blend_in_release, 0, (0,3.2133,0)],
  3. ],

  4. ["roll_backward", acf_enforce_all|acf_displace_position, amf_priority_defend_parry|amf_play|amf_accurate_body|amf_client_prediction,#后
  5.    [1.4, "fangun_backward", 0, 72, arf_blend_in_1, 0, (0,-2,0)],
  6. ],

  7. ["roll_left", acf_enforce_all|acf_displace_position, amf_priority_defend_parry|amf_play|amf_accurate_body|amf_client_prediction,#左
  8.    [1.4, "roll_left", 0, 49, arf_blend_in_1, 0, (-3.2133,0,0)],
  9. ],

  10. ["roll_right", acf_enforce_all|acf_displace_position, amf_priority_defend_parry|amf_play|amf_accurate_body|amf_client_prediction,#右
  11.    [1.4, "roll_right", 0, 49, arf_blend_in_1, 0, (3.2133,0,0)],
  12. ],

  13. ["coule_forward", acf_right_cut|acf_rot_vertical_bow|acf_enforce_all|acf_displace_position|acf_anim_length(100), amf_priority_attack|amf_play|amf_accurate_body|amf_client_prediction|amf_use_weapon_speed,#前
  14.    [1.0, "coule_forward", 0, 32, blend_in_release, 0, (0.1639,1.879,0)],
  15. ],

  16. ["coule_backward", acf_right_cut|acf_rot_vertical_bow|acf_enforce_all|acf_displace_position|acf_anim_length(100), amf_priority_attack|amf_play|amf_accurate_body|amf_client_prediction|amf_use_weapon_speed,#后
  17.    [1.3, "coule_backward", 0, 32, blend_in_release, 0, (0.1639,-2.2901,0)],
  18. ],

  19. ["coule_left", acf_right_cut|acf_rot_vertical_bow|acf_enforce_all|acf_displace_position|acf_anim_length(100), amf_priority_attack|amf_play|amf_accurate_body|amf_client_prediction|amf_use_weapon_speed,#左
  20.    [1.0, "coule_left", 0, 34, blend_in_release, 0, (-3.528,0,0)],
  21. ],

  22. ["coule_right", acf_right_cut|acf_rot_vertical_bow|acf_enforce_all|acf_displace_position|acf_anim_length(100), amf_priority_attack|amf_play|amf_accurate_body|amf_client_prediction|amf_use_weapon_speed,#右
  23.    [1.0, "coule_right", 0, 34, blend_in_release, 0, (3.528,0,0)],
  24. ],
复制代码
而之后的sounds.py则是和大佬的一样。
而后我将编译过后的 TXT 代码粘贴到潘德MOD中,将
mission_templates.txt
中所有场景中的

1152921504606847176改成1152921504606847615后就大功告成了(原理我在二楼解释)
我同时在贴吧发的贴子https://tieba.baidu.com/p/671291 ... 589007#132480157337

演示视频也过审了,大家可以去看看具体动作是怎么样的。
https://www.bilibili.com/video/BV11g4y1B7Se




评分

参与人数 1第纳尔 +20 互助 +2 魅力 +20 收起 理由
Aomine Daiki + 20 + 2 + 20 文章不错,继续努力!

查看全部评分

Utulie'n aure

59

主题

352

回帖

173

积分

见习骑士

自由骑士
战团ID:Silversword

Rank: 3

UID
1800745
第纳尔
675
精华
0
互助
8
荣誉
1
贡献
0
魅力
125
注册时间
2014-2-8

战团正版勋章维京征服正版勋章骑友真人秀Ⅲ勋章元老骑士勋章

鲜花(33) 鸡蛋(1)
 楼主| 发表于 2020-5-29 22:13:17 | 显示全部楼层
本帖最后由 get.shot.with.. 于 2020-5-29 22:46 编辑

由于潘德的源码没有发布我们可以先在战团1.171的源码中编译,然后把编译出来的代码重新粘贴到潘德原版对应的actions.txt、mission_templates.txt、sounds.txt文件中。(本来这种操作没有可行性,但是由于我这个代码涉及到的animation.py很少被其他MOD的修改(当然不包括魔戒)以及mission_templates.py我的代码全程只有玩家一个agentt,所以可以无脑粘贴)但是有关于声音也就是sounds.py我们需要注意因为战团原版snd资源只有200个,也就是说再加上我上面那句编译之后就是201个,而我们在mission_templates.py中引用的声音资源文件是以序列的形式编译后保存在mission_templates.txt中的因此就会出现我们在触发动作的时候,播放的声音资源文件是MOD声音资源列表中序号为201的资源文件在潘德3.9.5中也就是more blood (异端遭遇语音)而我们在潘德MOD中的sound.txt文件中添加了txt代码之后会发现,翻滚动作的声音资源文件的序号是640,而我们所要做的就是在6楼的代码中找到引用声音资源的TXT代码也就是1152921504606847615(这里是我以及修改过的,一般正常按我的代码在1.171战团源码中编译出来是1152921504606847176),然后我们所要做的就是用notepad++替换掉就是。之后再在module.ini文件中添加load_mod_resource = coule然后把brf文件放到 resource文件中就行了。
这里是我以及改好的对应原版潘德3.9.5 和她城子MOD的无脑无脑覆盖包
顺便我也把我K的左右滑步的动作的MAX源文件传上来供各位大佬斧正。
另外在这里特别感谢jj951988大佬和无面的无名氏大佬提供的思路,以及我的好友和以及某MMD群友提供的K帧指导还有她城执念大佬提供的代码援助

scenes.zip

970.02 KB, 下载次数: 56

覆盖包.zip

350.43 KB, 下载次数: 45

鲜花鸡蛋

NEW_SHIT  在2021-5-22 21:03  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
Utulie'n aure

53

主题

151

回帖

66

积分

扈从

Rank: 2Rank: 2

UID
2628029
第纳尔
1167
精华
0
互助
1
荣誉
0
贡献
0
魅力
2
注册时间
2015-10-31

战团正版勋章维京征服正版勋章

鲜花(4) 鸡蛋(0)
发表于 2020-5-30 10:22:02 | 显示全部楼层
潘德的跟头

6

主题

35

回帖

12

积分

随仆

Rank: 1

UID
2863374
第纳尔
219
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-8-6

霸主正版勋章

鲜花(0) 鸡蛋(0)
发表于 2023-1-6 19:09:12 | 显示全部楼层
砍2也做一个?
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-4-16 16:10 , Processed in 0.120192 second(s), 29 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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