插件变量
LySkillView 注册的 PlaceholderAPI 变量标识符为 lsv。所有变量均以 %lsv_...% 格式调用。
变量功能需要安装 PlaceholderAPI。技能等级、键位绑定、技能冷却、当前蓝量和最大蓝量依赖玩家数据库数据,必须安装 LyMySQLCore,并确保 LySkillView 成功连接 MySQL 数据库后才能正常生效。
技能变量
技能 ID 是 plugins/LySkillView/skills 目录中技能配置文件的顶级节点名称,例如 测试主动技能。
| 变量 | 返回内容 | 无有效数据时 |
|---|---|---|
%lsv_level:技能ID% | 玩家指定技能的当前等级 | 0 |
%lsv_mana:技能ID% | 指定技能当前等级经过耗蓝缩减后的实际蓝耗 | 0 |
%lsv_cooldown:技能ID% | 指定技能当前等级经过冷却缩减后的冷却时间,单位为秒,保留一位小数 | 0 |
以技能 ID 测试主动技能 为例:
| 变量 | 返回内容 |
|---|---|
%lsv_level:测试主动技能% | 玩家 测试主动技能 的当前等级 |
%lsv_mana:测试主动技能% | 当前等级经过耗蓝缩减后的实际蓝耗 |
%lsv_cooldown:测试主动技能% | 当前等级经过冷却缩减后的冷却秒数 |
蓝耗计算
%lsv_mana:技能ID% 按以下顺序计算:
- 读取玩家当前技能等级配置中的
mana。 - 读取
mana-reduction-placeholder配置的 PlaceholderAPI 变量结果。 - 将缩减数值限制在
mana-reduction-max配置的上限内。 - 按百分比减少技能蓝耗。
- 将结果转换为整数,小数部分直接截断。
计算关系为:
text
实际蓝耗 = mana × (1 - 耗蓝缩减百分比 ÷ 100)当 mana-reduction-placeholder 留空、无法转换为数字或玩家数据未正确载入时,耗蓝缩减按 0 处理。
冷却计算
%lsv_cooldown:技能ID% 按以下顺序计算:
- 读取玩家当前技能等级配置中的
cooldown。 - 解析其中的 PlaceholderAPI 变量和计算表达式。
- 读取
cooling-reduction-placeholder配置的冷却缩减数值。 - 将缩减数值限制在
cooling-reduction-max配置的上限内。 - 应用冷却缩减,并将毫秒转换为秒。
- 返回保留一位小数的结果。
计算关系为:
text
冷却秒数 = cooldown × (1 - 冷却缩减百分比 ÷ 100) ÷ 1000技能等级配置中的 cooldown 支持 PlaceholderAPI 变量,以及 +、-、*、/ 和括号组成的计算表达式。
例如:
yaml
cooldown: '1000 + %player_level% * 10'技能变量应填写已经加载的真实技能 ID。不存在的技能 ID 不属于稳定支持的查询目标,不应依赖其返回值。
键位变量
键位变量使用省略 KEY_ 前缀后的键位名称。配置中的 KEY_Z 在变量中写作 Z。
默认配置注册了以下键位:
| 配置键位 | 变量键位 | 对应萌芽组件 |
|---|---|---|
KEY_Z | Z | 技能槽位1 |
KEY_X | X | 技能槽位2 |
KEY_C | C | 技能槽位3 |
KEY_V | V | 技能槽位4 |
KEY_B | B | 技能槽位5 |
下表中的 键位 应替换为 register-skill-slot 中已经注册的键位名称,并省略 KEY_ 前缀。
| 变量 | 返回内容 | 未绑定技能或无有效数据时 |
|---|---|---|
%lsv_键位:cd% | 键位所绑定技能的剩余冷却时间,单位为毫秒 | 0 |
%lsv_键位:cdmax% | 键位所绑定技能当前等级配置的冷却时间,单位为毫秒 | 0 |
%lsv_键位:cdsecond% | 键位所绑定技能的剩余冷却时间,单位为秒,保留一位小数 | 0 |
%lsv_键位:icon% | 键位所绑定技能的萌芽图标路径 | default-slot-texture 配置的默认槽位贴图 |
%lsv_键位:skill% | 键位所绑定技能的技能 ID | null |
%lsv_键位:autocast% | 该键位记录的自动释放开关状态 | disable |
以 KEY_Z 为例:
| 变量 | 返回内容 |
|---|---|
%lsv_Z:cd% | Z 键技能的剩余冷却毫秒数 |
%lsv_Z:cdmax% | Z 键技能当前等级配置的冷却毫秒数 |
%lsv_Z:cdsecond% | Z 键技能的剩余冷却秒数 |
%lsv_Z:icon% | Z 键技能的图标路径 |
%lsv_Z:skill% | Z 键绑定的技能 ID |
%lsv_Z:autocast% | Z 键自动释放的开关状态 |
冷却变量区别
| 变量后缀 | 单位 | 是否应用冷却缩减 | 说明 |
|---|---|---|---|
cd | 毫秒 | 已体现在实际冷却结束时间中 | 当前时刻距离冷却结束的剩余时间 |
cdsecond | 秒 | 已体现在实际冷却结束时间中 | 将剩余冷却转换为秒并保留一位小数 |
cdmax | 毫秒 | 否 | 当前技能等级 cooldown 表达式的原始计算结果 |
当技能未处于冷却状态时,cd 和 cdsecond 均返回 0。
cdmax 只计算技能等级配置中的 cooldown 表达式,不应用玩家的冷却缩减,也不表示技能当前实际剩余冷却。主动技能释放时,如果技能配置了更长的公共冷却,实际冷却结束时间还可能受到 gcd 和 gcd-group 影响。
自动释放状态
%lsv_键位:autocast% 只返回以下固定值:
| 返回值 | 含义 |
|---|---|
enable | 该键位的自动释放开关已记录为开启 |
disable | 该键位的自动释放开关未开启 |
自动释放任务还会检查玩家是否拥有对应键位权限 lsv.autocast.键位。例如 Z 键对应 lsv.autocast.Z。
变量返回 enable 只表示该键位的开关状态已开启,不代表技能一定能够自动释放。实际自动释放还要求:
- 玩家拥有对应的
lsv.autocast.键位权限。 - 玩家不是旁观者模式。
- 键位已经注册并绑定有效主动技能。
- 玩家数据和蓝量数据已经载入。
- 技能已经激活且满足显示条件。
- 技能不在冷却中。
- 玩家满足技能释放条件。
- 玩家拥有足够蓝量。
不支持的键位蓝耗变量
默认 config.yml 的注释中列出了 %lsv_Z:mana%,但当前 PlaceholderAPI 扩展代码没有处理键位的 mana 后缀。该变量会落入未识别变量处理,不应使用。
需要显示键位技能蓝耗时,可以先通过 %lsv_键位:skill% 获取技能 ID,但 PlaceholderAPI 不能直接将一个变量的返回值动态作为另一个 LySkillView 变量的参数。固定技能可以直接使用 %lsv_mana:技能ID%。
蓝量变量
| 变量 | 返回内容 | 玩家蓝量数据未载入时 |
|---|---|---|
%lsv_mana% | 玩家当前蓝量 | 0 |
%lsv_maxmana% | 玩家当前最大蓝量 | 100 |
当前蓝量和技能数据存储在 MySQL 中。必须安装 LyMySQLCore,并确保数据库连接成功,否则相关玩家数据不会正常载入。
玩家当前蓝量始终限制在 0 到当前最大蓝量之间。恢复蓝量或修改最大蓝量时,超过最大蓝量的部分会被截断;低于 0 的蓝量会被修正为 0。
最大蓝量以 player-max-mana-default 为基础,并结合 player-max-mana-placeholder 的结果计算。回蓝数值由 player-mana-recovery-value 和 player-mana-recovery-placeholder 共同决定,恢复间隔由 player-mana-recovery-interval 控制。
%lsv_maxmana% 在玩家蓝量数据尚未载入时固定返回 100,此返回值不读取 player-max-mana-default。
当前选中技能变量
当前选中技能是玩家在萌芽技能菜单中点击的技能。玩家关闭 LySkillView 技能菜单后,插件会清除当前选中状态。
| 变量 | 返回内容 | 未选中技能或无有效数据时 |
|---|---|---|
%lsv_target_skill_max_level% | 当前选中技能的最大等级 | 0 |
%lsv_target_skill_level% | 玩家当前选中技能的等级 | 0 |
%lsv_target_skill_name% | 当前选中技能配置的名称文本 | 空字符串 |
%lsv_target_skill_icon% | 当前选中技能的图标路径 | 通常为空字符串;选中记录存在但技能数据无效时返回默认槽位贴图 |
%lsv_target_skill_id% | 当前选中技能的技能 ID | 空字符串 |
技能名称处理
%lsv_target_skill_name% 直接读取技能配置中的 skill-name 列表,并使用换行连接各行。实现会在每一行后追加换行符,因此返回文本末尾也可能包含换行。
技能菜单组件会处理技能名称中的 {level} 和 {max},但 %lsv_target_skill_name% 本身不会替换这两个标记,也不会主动处理颜色符号或其他 PlaceholderAPI 变量。
例如配置为:
yaml
skill-name:
- '&6天火暴动 &7({level}/{max})'
- '&b主动技能'%lsv_target_skill_name% 返回的是配置中的原始两行文本,而不是替换等级后的菜单显示结果。
返回值规则
| 情况 | 返回结果 |
|---|---|
| PlaceholderAPI 请求没有关联玩家 | 空字符串 |
| 未识别的 LySkillView 变量 | null |
| 技能等级数据不存在 | 技能等级变量通常返回 0 |
| 键位未绑定技能 | 冷却变量返回 0,技能 ID 返回 null,图标返回默认槽位贴图 |
| 当前没有选中技能 | 选中技能等级返回 0,文本和 ID 返回空字符串 |
| 玩家蓝量数据未载入 | 当前蓝量返回 0,最大蓝量返回 100 |
使用注意
- 技能 ID 必须与
plugins/LySkillView/skills中的顶级节点名称一致。 - 键位必须已经在
register-skill-slot中注册。 - 键位名称建议保持配置中的原始大小写,例如
KEY_Z对应变量中的Z。 - 图标变量返回萌芽资源路径,例如
local<->textures/gui/技能视图/slot.png,主要用于萌芽 GUI 或 HUD 贴图组件。 %lsv_cooldown:技能ID%返回应用冷却缩减后的秒数,%lsv_键位:cdmax%返回未应用冷却缩减的配置毫秒数,两者不能直接作为同一单位比较。- 当前技能等级决定蓝耗和冷却配置。技能等级为
0时,不应将该技能视为已经激活或可以正常释放的技能。 - 自动释放开关数据只保存在运行时内存中,项目代码没有将该开关写入玩家 MySQL 存档。