骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] [狂人的知识]可控附魔

[复制链接]

42

主题

94

回帖

221

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1162
精华
0
互助
36
荣誉
0
贡献
1
魅力
227
注册时间
2020-9-4
鲜花(60) 鸡蛋(0)
发表于 2024-2-15 16:32:58 | 显示全部楼层 |阅读模式
本帖最后由 奥杜因阿卡托什 于 2024-2-15 16:41 编辑

      通过物品触发器给武器上粒子效果,是魔球都能做到的事,比如典中典的火把,但是这样上上去的粒子效果没法控制开闭,仅仅是武器自带的一个特殊视效而已,算不上一般意义上的附魔。为了能控制特效的开闭,我琢磨了好几种办法,最后表现如视频所示。https://www.bilibili.com/video/B ... 13c7736d290eab41395
     现附代码如下:
     先从slot开始。
  1. slot_flame_weapon
复制代码

    下面的代码是从我的状态系统里抠出来的,放进某个(1,0,0的战场触发器里就行。
  1. (try_for_agents, ":agent_no"),
  2.          (agent_get_slot, ":timer", ":agent_no", slot_flame_weapon),
  3.          (gt, ":timer", 0),
  4.          (try_begin),
  5.             (eq, ":timer", 2),#等于2时结束附魔,通过刷新武器取消特效。附魔类效果的检测条件均为大于1小于阈值。若是在附魔持续时间内更换了武器(切换武器或者捡起武器等),则直接设置为1,避免重复刷新武器。
  6.             (agent_get_wielded_item, ":weapon_no", ":agent_no", 0),
  7.             (agent_unequip_item, ":agent_no", ":weapon_no", 1),
  8.             (agent_equip_item, ":agent_no", ":weapon_no", 1),
  9.             (agent_set_wielded_item, ":agent_no", ":weapon_no"),#刷新掉粒子效果
  10.          (try_end),
  11.          (try_begin),
  12.             (lt, ":timer", 阈值),#附魔时设置为阈值,等于阈值时持续时间不会减少。在物品触发器中附魔过一次后值减少一,开始随时间减少。
  13.             (val_sub, ":timer", 1),
  14.          (try_end),
  15. (try_end),
复制代码

     因为挂在武器上的那种粒子效果只能用物品触发器写,而四种物品触发器中shield和missile排除,init试了一下发现会导致数据混乱,所以使用ti on weapon attack。
  1.     (ti_on_weapon_attack, [
  2.         (store_trigger_param_1, ":agent_no"),
  3.         (assign, ":value_no", 阈值),#阈值
  4.         (agent_slot_ge, ":agent_no", slot_flame_weapon, ":value_no"),
  5.         (val_sub, ":value_no", 1),
  6.         (agent_set_slot, ":agent_no", slot_flame_weapon, ":value_no"),#在等于阈值时不会附魔,也不会减少时间,附魔过一次后设置为小于阈值,并开始减少时间。
  7. #        (agent_set_animation, ":agent_no", "anim_active_enchant_1"),#这一行是自己搓的附魔动作,不要就是正常攻击,可以自己准备一个

  8.         (set_position_delta, 0, 60, 0),
  9.         (particle_system_add_new, "psys_torch_fire"),
  10.         (set_current_color, 150, 130, 70),
  11.         (add_point_light, 10, 30),
  12.     ]),
复制代码
   最后是以防中途切换武器的战场触发器:
  1.       (ti_on_item_wielded, 0, 0,
  2.        [],
  3.        [
  4.         (store_trigger_param_1, ":agent_no"),
  5.          (agent_get_slot, ":timer", ":agent_no", slot_flame_weapon),
  6.          (gt, ":timer", 1),
  7.          (agent_set_slot, ":agent_no", slot_flame_weapon, 1),
  8.        ]),
复制代码
   要写伤害加成的之类的判定,记得从slot中获取的值得范围为大于等于2,小于那个自己填的阈值。


    附魔之外,还有一个引子。在上面物品触发器那一部分,有一个利用更高优先级的动作覆盖普通攻击的操作。利用这个手段,理论上可以实现像老环黑魂那样的武器战技、战灰、特殊动作,而且由于仅仅是覆盖了一下动作,理论上还是伤害判定还是在的。简化后的物品触发器是
  1.     (ti_on_weapon_attack, [
  2.         (store_trigger_param_1, ":agent_no"),
  3.         (key_is_down, key_e),
  4.         (agent_set_animation, ":agent_no", "anim_active_jumping_chop"),
  5.     ]),
复制代码
填入的动作设置为
  1. ["active_jumping_chop", acf_enforce_all|acf_overswing|acf_displace_position, amf_accurate_body|amf_use_weapon_speed|amf_play|amf_priority_striked,
  2. [0.4, "tiaozhang", 29, 40, blend_in_walk|blend_in_continue, 0, (0, 3, 0), 0.0],
  3. ],
复制代码
效果是按住E键不放再攻击,能将普通攻击变成特殊动作(我这里写的是个跳劈)

    不过实操之后还是有个问题:普通攻击的动作太短了,加上玩家的熟练度加成和武器速度,导致有效判定时间只有0.2秒不到,基本新加的动作稍微花哨一点就来不及造成伤害了,有待进一步的研究。

评分

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

查看全部评分

42

主题

94

回帖

221

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1162
精华
0
互助
36
荣誉
0
贡献
1
魅力
227
注册时间
2020-9-4
鲜花(60) 鸡蛋(0)
 楼主| 发表于 2024-2-16 16:09:33 | 显示全部楼层
武器特技那个做完寻思了一下,不方便放近战技能,还可以群攻治疗上buff发射missile嘛,也挺狂霸眩酷拽的。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-12-27 12:34 , Processed in 0.118866 second(s), 24 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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