本帖最后由 Ray_Hughes 于 2023-1-6 10:52 编辑 
首选属性为SkillAPI原生属性 兼容性广泛 支持做元素伤害 元素防御 颗粒度最细
如何开启
复制代码
在config 对以上节点进行配置 即可开启ProSkillAPI枫溪定制的属性功能
特点
支持Lore读取属性 模糊匹配
更好的API操作
支持从其他插件获取数据
属性配置
可操作的内容
复制代码
属性编写
复制代码
公式写法
常规运算符号
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
复制代码
只需要写属性节点即可
psk-attribute
支持了技能带来的临时属性
首选属性为SkillAPI原生属性 兼容性广泛 支持做元素伤害 元素防御 颗粒度最细
如何开启
- Classes:
 
-   # 是否启用属性
 
-   attributes-enabled: true
 
-   #启用怪物读取SkillAPI属性
 
-   attributes-mob-enabled: true
 
-   #关闭后skillapi将忽略自带的生命属性操作
 
- attributes-heal: true
在config 对以上节点进行配置 即可开启ProSkillAPI枫溪定制的属性功能
特点
支持Lore读取属性 模糊匹配
更好的API操作
支持从其他插件获取数据
属性配置
可操作的内容
- # Attributes.yml
 
- #   armor            | 原版的护甲
 
- #   armor-toughness  | 原版韧性
 
- #   attack-speed     | 攻击速度
 
- #   cooldown         | 技能冷却缩减
 
- #   defense-<type>   | 防御某些特殊的源的伤害
 
- #                    |     具体的  
 
- #                    |     <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>
 
- #                    |     比如减少来自方块的伤害 "defense-block_explosion".
 
- #   exp              | 获得的经验提升
 
- #   health           | 最大血量
 
- #   hunger           | 饥饿速度 默认是1 如果提升为 2相当于比1的人要多1倍的饱腹时间
 
- #   hunger-heal      | 饱腹时血量回复
 
- #   knockback-resist | 抗击退 1.0为100%
 
- #   luck         | 幸运值 增加掉落概率的(原版的抢夺效果
 
- #   mana         | 玩家魔法值
 
- #   mana-regen       | 魔法恢复速度
 
- #   move-speed       | 移动速度
 
- #   physical-damage  | 物理伤害
 
- #   physical-defense | 物理防御
 
- #   skill-damage     | 全局技能伤害增加
 
- #   skill-defense    | 全局技能伤害减少
 
- #   skill-damage-<classification>  | 某个源的技能伤害增加 (下方详细解释)
 
- # skill-defense-<classification> | 某个源的技能伤害减少
属性编写
- #属性内部名 可为中文
 
- 体质:
 
-   #lore中需要写的属性名 建议与内部名相同
 
-   display: '体质'
 
-   #属性最大值 玩家拥有的属性不会超过最大值的限制
 
-   max: 999
 
-   #在GUI中显示的图标物品
 
-   icon: 'ink sack'
 
-   icon-data: 1
 
-   icon-lore:
 
-   - '&6Vitality &7(&2{amount}&7)'
 
-   - ''
 
-   - '&7Grants 1 health per'
 
-   - '&7point invested.'
 
-   #技能修正
 
-   global:
 
-     #条件修正
 
-     condition: {}
 
-     #效果修正
 
-     mechanic:
 
-       Damage-value: 'a*0.025+1*v'
 
-       Speed-multiplier: 'a+v'
 
-     #选择器修正
 
-     target:
 
-       #选择器的范围提升
 
-       Cone-range: 'a*0.025+1*v'
 
-   #属性修改
 
-   stats:
 
-     #更多配置看上方
 
- 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
- 属性测试:
 
-   Type: PIG
 
-   Display: '&a测试怪物'
 
-   Health: 100
 
-   Damage: 2
 
-   psk-attribute:
 
- - "基础防御 10000"
只需要写属性节点即可
psk-attribute
支持了技能带来的临时属性
我的建议是加个字体把配置文件的文本对齐一下,不然看起来怪乱的。