Ray_Hughes
本帖最后由 Ray_Hughes 于 2023-1-6 10:52 编辑

原文来自: http://host390770.web.hk.mcstory.cc/forums/topic/proskillapi-attribute/


首选属性为SkillAPI原生属性 兼容性广泛 支持做元素伤害 元素防御 颗粒度最细

如何开启
  1. Classes:
  2.   # 是否启用属性
  3.   attributes-enabled: true
  4.   #启用怪物读取SkillAPI属性
  5.   attributes-mob-enabled: true
  6.   #关闭后skillapi将忽略自带的生命属性操作
  7.   attributes-heal: true
复制代码

在config 对以上节点进行配置 即可开启ProSkillAPI枫溪定制的属性功能

特点
支持Lore读取属性 模糊匹配
更好的API操作
支持从其他插件获取数据
属性配置

可操作的内容

  1. # Attributes.yml
  2. #   armor            | 原版的护甲
  3. #   armor-toughness  | 原版韧性
  4. #   attack-speed     | 攻击速度
  5. #   cooldown         | 技能冷却缩减
  6. #   defense-<type>   | 防御某些特殊的源的伤害
  7. #                    |     具体的  
  8. #                    |     <a href="https://docs.zoyn.top/bukkitapi/1.12.2/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html" target="_blank">https://docs.zoyn.top/bukkitapi/ ... nt.DamageCause.html</a>
  9. #                    |     比如减少来自方块的伤害 "defense-block_explosion".
  10. #   exp              | 获得的经验提升
  11. #   health           | 最大血量
  12. #   hunger           | 饥饿速度 默认是1 如果提升为 2相当于比1的人要多1倍的饱腹时间
  13. #   hunger-heal      | 饱腹时血量回复
  14. #   knockback-resist | 抗击退 1.0为100%
  15. #   luck         | 幸运值 增加掉落概率的(原版的抢夺效果
  16. #   mana         | 玩家魔法值
  17. #   mana-regen       | 魔法恢复速度
  18. #   move-speed       | 移动速度
  19. #   physical-damage  | 物理伤害
  20. #   physical-defense | 物理防御
  21. #   skill-damage     | 全局技能伤害增加
  22. #   skill-defense    | 全局技能伤害减少
  23. #   skill-damage-<classification>  | 某个源的技能伤害增加 (下方详细解释)
  24. #   skill-defense-<classification> | 某个源的技能伤害减少
复制代码

属性编写

  1. #属性内部名 可为中文
  2. 体质:
  3.   #lore中需要写的属性名 建议与内部名相同
  4.   display: '体质'
  5.   #属性最大值 玩家拥有的属性不会超过最大值的限制
  6.   max: 999
  7.   #在GUI中显示的图标物品
  8.   icon: 'ink sack'
  9.   icon-data: 1
  10.   icon-lore:
  11.   - '&6Vitality &7(&2{amount}&7)'
  12.   - ''
  13.   - '&7Grants 1 health per'
  14.   - '&7point invested.'
  15.   #技能修正
  16.   global:
  17.     #条件修正
  18.     condition: {}
  19.     #效果修正
  20.     mechanic:
  21.       Damage-value: 'a*0.025+1*v'
  22.       Speed-multiplier: 'a+v'
  23.     #选择器修正
  24.     target:
  25.       #选择器的范围提升
  26.       Cone-range: 'a*0.025+1*v'
  27.   #属性修改
  28.   stats:
  29.     #更多配置看上方
  30.     health: 'a+v'
复制代码

公式写法
常规运算符号
Addition ( + )
Subtraction ( - )
Multiplication ( * )
Division ( / )
Exponent ( ^ )
Log ( _ )
高级的运算符号 (不写中文了  看不懂的就真是看不懂
-----------------------------------------------------------------------------
Function   |   Description                       |   Example            
-----------------------------------------------------------------------------
abs(x)       | Absolute value                       | abs(-1 * lvl)         
ceil(x)       | Rounds up                               | ceil(0.25 * lvl) + 4
cos(x)       | Cosine using degrees                  | cos(360 / lvl)
floor(x)   | Rounds down                           | floor(lvl * 2.25 ^ 2)
sqrt(x)       | Square root                           | root(lvl * 0.3 + 2)
sign(x)       | 1 if positive, -1 if negative, 0 if 0 | sign(cos(lvl * 20))
sin(x)       | Sine using degrees                    | sin(lvl ^ 2)
sq(x)       | Square (x * x)                       | sq(lvl) * 2
tan(x)       | Tangent using degrees               | tan(lvl ^ 0.1)
-----------------------------------------------------------------------------
关于运算符读取顺序 顺序是由左到右进行计算
例子:
2-5*4+2(5+1)^2 ((2-5)*4+2(5+1))^2
常用算法:
a*0.025+1*v   每点属性提高2.5%效果
physical-damage: 'a*0.025+1*v' 每点属性额外提供2.5%物理伤害
a+v 每点属性提供100%效果
mana: 'a+v' 每点属性提供1点魔法最大值
mana: 'a*10+v' 每点属性提供10点魔法最大值

特效属性
很多情况下 不止有 攻击力 防御力这些基本属性 也会有一些特效属性
比如 物理暴击 法术暴击 火元素暴击 流血 等等
在SkillAPI内 也是可以实现的 这里提供思路 具体的写法还得看各位的实操
这个功能的核心实现方式就是被动技能的使用
所谓被动技能 就是非cast触发器以外的触发器为起点制作的技能
比如 我要实现一个物理流血buff 这个流血buff的伤害是 等级*5

第一步 创建技能 选择触发器 为 [Physical Damage]
写一个目标选择器 因为要获取技能释放者属性(你们也可以用别的) 所以就用 [Self]
然后获取自身属性 这里使用 [Value Attribute] 把自身属性存成一个value 假设key现在是 流血属性
然后接下来就是判断目标了 所以要写一个目标选择器 这里选择 [Single] 因为我想这个只生效给单体
接下来是写属性的实际功能
然后给目标添加一个流血的FLAG
写伤害环节 用Damage


关于怪物属性
支持了mythicmobs

  1. 属性测试:
  2.   Type: PIG
  3.   Display: '&a测试怪物'
  4.   Health: 100
  5.   Damage: 2
  6.   psk-attribute:
  7.     - "基础防御 10000"
复制代码

只需要写属性节点即可
psk-attribute
支持了技能带来的临时属性

名副其实
我的建议是加个字体把配置文件的文本对齐一下,不然看起来怪乱的。