HUD状态栏
技能列表
版本 | 功能 | 授权方式 | 星球售价 | 公开售价 |
免费版 | 基础功能可用 | 星球免费 | 0 | 388 |
高级版 | 存储 支持MySQL | 付费 | 188 | 588 |
未配置 MiaoScriptPackageManager 会提示找不到插件
注意 是把压缩包内的整个 MiaoSkillView 文件夹丢进去
客户端
资源目录 DragonCore服务端
资源目录 DragonCoreResource注意 是把压缩包内的整个 MiaoSkillViewResource 文件夹丢进去
config.yml
# 消息前缀
prefix: '§6[§e斗罗大陆§6]§r '
# 界面文件 DragonCore/Gui 为起始目录
gui:
hud: MiaoSkillView/hud
list: MiaoSkillView/list
# 材质根目录 DragonCore 为起始目录
textureRoot: MiaoSkillViewResource/icon
# 默认参数
# $root 会自动替换成 textureRoot
# $name 会自动替换成 技能名称
default:
texture: $root/$name.png
# 世界限制 黑名单内无法使用按键技能
# 只限制按键 通过 class cast 命令还是可以释放的
world:
# 黑名单列表
blacklist:
- blackworld
# 技能列表隐藏无权限的技能
hideNoPermission: false
skills.yml
# 技能名称
后闪:
# 材质文件
texture: $root/后闪.png
# 技能权限 仅技能视图内有效
permission: msv.skill.hs
# 是否为被动技能
# 被动技能无法绑定按键
passive: true
魂力爆发:
texture: $root/魂力爆发.png
# 宗门名称
昊天宗:
# 从 skills/昊天宗.yml 导入技能
import: true
蓝电霸王龙:
import: true
七宝琉璃宗:
import: true
skills/昊天宗.yml
雷刃龙尾:
雷霆龙爪:
踏雷前斩:
裂雷魂炸:
雷电领域:
龙雷天击:
闪千雷动:
四面雷爆:
龙之毁灭:
雷霆万钧:
圣龙降世:
技能配置说明
当技能配置为空或缺少配置时 会自动附加默认配置
所以 下列配置
雷刃龙尾:
的能默认配置为
雷刃龙尾:
# 默认拼接的文件路径后缀为png
# 如果是 jpg 请自己修改配置 $root/雷刃龙尾.jpg
texture: $root/雷刃龙尾.png
# 技能权限 仅技能视图内有效 默认为空
permission:
# 是否为被动技能 默认为主动技能
passive: false
/msv open 打开技能列表
/mspm reload MiaoSkillView 重载插件
打开技能列表 拖动技能到快捷栏即可
快捷栏右键即可解绑技能
hud.yml
技能按键列表 可自定义按键 不限数量
# 战斗模式切换按键
切换按键: "F9"
# 界面配置区域
背景材质: "MiaoSkillViewResource/hud.png"
技能栏材质: "MiaoSkillViewResource/hotbarIcon.png"
冷却时间颜色: "§c§l"
冷却背景透明度: "0.5"
无职业提示: "§c无§4(无法升级)"
开启状态提示: "§a开启 §7(F9关闭)"
关闭状态提示: "§c关闭 §7(F9开启)"
技能按键列表:
- '1'
- '2'
- '3'
- '4'
- '5'
match: "hud"
# 发包参数定义 identifier view action data
# 参数名称 MiaoSkillView hud|list 动作 数据
Functions:
open: |-
界面变量.切换按键 = 方法.取YAML值('切换按键');
界面变量.材质前缀 = '';
界面变量.背景材质 = 界面变量.材质前缀 & 方法.取YAML值('背景材质');
界面变量.技能栏材质 = 界面变量.材质前缀 & 方法.取YAML值('技能栏材质');
界面变量.冷却时间颜色 = 方法.取YAML值('冷却时间颜色');
界面变量.冷却透明度 = 方法.取YAML值('冷却背景透明度');
界面变量.无职业提示 = 方法.取YAML值('无职业提示');
界面变量.开启状态提示 = 方法.取YAML值('开启状态提示');
界面变量.关闭状态提示 = 方法.取YAML值('关闭状态提示');
界面变量.技能按键列表 = 方法.取YAML值('技能按键列表');
方法.执行方法('renderHuds');
方法.执行方法('开启战斗模式');
方法.发包('MiaoSkillView', 'hud', 'init');
renderPrefix: |-
方法.更新变量('sapi_prefix', 'sapi_level');
方法.异步执行方法('检测宗门是否存在');
检测宗门是否存在: |-
方法.延时(500);
方法.取变量('sapi_prefix') == "" ? {
方法.设置变量('sapi_prefix', 界面变量.无职业提示);
全局变量.喵式视图战斗模式 == 1 ? {
方法.执行方法('关闭战斗模式');
方法.消息('§c您当前尚未加入宗门 已自动关闭战斗模式!');
}
}
renderHuds: |-
for_each(局部变量.值, 局部变量.索引, 界面变量.技能按键列表, {
局部变量.技能栏 = 方法.新建组件(局部变量.值 & '_技能栏_texture', '技能栏继承');
局部变量.技能栏.x = '背景.X + 24 + ' & 局部变量.索引 * 28;
方法.添加组件(局部变量.技能栏);
局部变量.技能冷却 = 方法.新建组件(局部变量.值 & '_技能冷却_texture', '技能冷却继承');
局部变量.技能冷却.x = '背景.X + 24 + ' & 局部变量.索引 * 28;
方法.添加组件(局部变量.技能冷却);
局部变量.技能按键 = 方法.新建组件(局部变量.值 & '_快捷栏按键_label', '技能按键继承');
局部变量.技能按键.X = '背景.X + 31.5 + ' & 局部变量.索引 * 28;
局部变量.技能按键.texts = '§c§l' & 局部变量.值;
方法.添加组件(局部变量.技能按键);
});
renderHud: |-
局部变量.技能序号 = 局部变量.参数.0;
局部变量.技能名称 = 局部变量.参数.1;
局部变量.技能图片 = 局部变量.参数.2;
局部变量.技能冷却 = 局部变量.参数.3;
方法.设置变量值(局部变量.技能序号 & '号技能名称', 局部变量.技能名称);
方法.设置变量值(局部变量.技能名称 & '技能槽位', 局部变量.技能序号);
方法.设置组件值(局部变量.技能序号 & '_技能栏_texture', 'texture', 局部变量.技能图片);
方法.设置变量值(局部变量.技能序号 & '号技能冷却', 局部变量.技能冷却);
reset: |-
方法.执行方法('renderPrefix');
for_each(局部变量.值, 局部变量.索引, 界面变量.技能按键列表, {
方法.删除变量(局部变量.值 & '号技能名称');
方法.设置组件值(局部变量.值 & '_技能栏_texture', 'texture', 界面变量.技能栏材质);
方法.删除变量(局部变量.值 & '号技能冷却');
});
# 只处理 默认界面下的按键逻辑
keyPress: |-
界面变量.聊天栏已打开 == 1 ? return 0;
方法.取当前按下键 == 界面变量.切换按键 ? return 方法.执行方法('切换战斗模式');
全局变量.喵式视图战斗模式 == 1 ? {
for_each(局部变量.值, 局部变量.索引, 界面变量.技能按键列表, {
方法.取当前按下键 == 局部变量.值 ? return 方法.执行方法('释放技能', 局部变量.值);
});
};
chatOpen: |-
界面变量.聊天栏已打开 = 1;
chatClose: |-
界面变量.聊天栏已打开 = 0;
释放技能: |-
局部变量.技能序号 = 局部变量.参数.0;
局部变量.技能名称 = 方法.取变量值(局部变量.技能序号 & '号技能名称');
局部变量.技能名称 == "" ? return 方法.title(
'§c按 键 ' &局部变量.技能序号 & ' §4尚 未 绑 定 技 能',
'§3请使用 §a/msv open §3配置技能后使用',
10, 120, 10
);
方法.发包('MiaoSkillView', 'hud', 'cast', 局部变量.技能名称);
castSkill: |-
局部变量.技能名称 = 局部变量.参数.0;
局部变量.技能冷却 = 局部变量.参数.1;
局部变量.技能槽位 = 方法.取变量值(局部变量.技能名称 & '技能槽位');
方法.异步执行方法('播放技能冷却', 局部变量.技能槽位, 局部变量.技能冷却);
播放技能冷却: |-
局部变量.技能槽位 = 局部变量.参数.0;
局部变量.当前冷却 = 局部变量.参数.1 * 10;
局部变量.技能组件 = 方法.取组件(局部变量.技能槽位 & '_技能栏_texture');
局部变量.技能冷却组件 = 方法.取组件(局部变量.技能槽位 & '_技能冷却_texture');
局部变量.技能冷却组件.index = 局部变量.技能冷却组件.index + 1;
局部变量.技能冷却组件索引 = 局部变量.技能冷却组件.index;
局部变量.原始高度 = 局部变量.技能组件.y;
局部变量.循环次数 = 局部变量.当前冷却;
局部变量.冷却计数 = 0;
loop(局部变量.循环次数, {
方法.设置组件值(局部变量.技能冷却组件, 'limitY', 局部变量.原始高度 + 18 * (局部变量.冷却计数 / 局部变量.当前冷却));
方法.设置组件值(局部变量.技能组件, 'text', 界面变量.冷却时间颜色 & ((局部变量.当前冷却 - 局部变量.冷却计数) / 10));
方法.延时(100);
局部变量.技能冷却组件索引 != 局部变量.技能冷却组件.index ? return 0;
局部变量.冷却计数 = 局部变量.冷却计数 + 1;
});
方法.设置组件值(局部变量.技能冷却组件, 'limitY', 局部变量.原始高度 + 18);
方法.设置组件值(局部变量.技能组件, 'text', '');
切换战斗模式: |-
全局变量.喵式视图战斗模式 == 1 ? 方法.执行方法('关闭战斗模式') : 方法.执行方法('开启战斗模式');
开启战斗模式: |-
全局变量.喵式视图战斗模式 == 1 ? return 0;
方法.取变量('sapi_prefix') == 界面变量.无职业提示 ? return 方法.消息('§c您当前尚未加入宗门 无法开启战斗模式!');
方法.title('§4开 启 战 斗 模 式§6(F9关闭)', '§f该模式下 技能按键只能释放技能,无法切换手持栏!', 10, 60, 10);
for_each(局部变量.值, 局部变量.索引, 方法.新建数组('1', '2', '3', '4', '5'), {
方法.设置按键('key.hotbar.' & 局部变量.值, 'NONE', 'NONE');
});
方法.发包('MiaoSkillView', 'hud', 'switch', 1);
全局变量.喵式视图战斗模式 = 1;
关闭战斗模式: |-
全局变量.喵式视图战斗模式 == 0 ? return 0;
方法.title('§a关 闭 战 斗 模 式§6(F9开启)', '§f已解除解除切换手持栏禁用,关闭技能快捷键!', 10, 60, 10);
for_each(局部变量.值, 局部变量.索引, 方法.新建数组('1', '2', '3', '4', '5'), {
方法.设置按键('key.hotbar.' & 局部变量.值, 'NONE', 局部变量.值);
});
方法.发包('MiaoSkillView', 'hud', 'switch', 0);
全局变量.喵式视图战斗模式 = 0;
背景:
type: "texture"
width: "162"
height: "75"
texture: "界面变量.背景材质"
当前职业:
type: "label"
x: "背景.x+26"
y: "背景.y+18"
texts: "§6宗门: %sapi_prefix%"
当前状态:
type: "label"
x: "背景.x+26"
y: "背景.y+29"
texts: " '§6状态: ' & (全局变量.喵式视图战斗模式 == 0 ? 界面变量.关闭状态提示 : 界面变量.开启状态提示)"
scale: 0.8
技能栏继承:
x: "背景.x+24"
y: "背景.y+43.5+25*0"
width: "18"
height: "18"
texture: "界面变量.技能栏材质"
技能冷却继承:
x: "背景.x+24"
y: "背景.y+43.5+25*0"
width: "18"
height: "18"
texture: "0,0,0,150"
limitX: "局部变量.组件.X"
limitY: "局部变量.组件.Y+18"
limitWidth: "28*6"
limitHeight: "19"
技能按键继承:
x: "背景.x+32"
y: "背景.y+65"
list.yml
技能按键列表 可自定义按键 不限数量
背景材质: "MiaoSkillViewResource/backgroud.png"
快捷栏默认材质: "MiaoSkillViewResource/hotbarIcon.png"
技能栏默认材质: "MiaoSkillViewResource/icon/后闪.png"
技能栏默认背景: "MiaoSkillViewResource/skillBackground.png"
技能栏选择背景: "MiaoSkillViewResource/skillBackground_.png"
按钮默认材质: "MiaoSkillViewResource/button.png"
按钮选择材质: "MiaoSkillViewResource/button_.png"
技能按键列表:
- '1'
- '2'
- '3'
- '4'
- '5'
Functions:
open: |-
界面变量.材质前缀 = '';
界面变量.背景材质 = 界面变量.材质前缀 & 方法.取YAML值('背景材质');
界面变量.快捷栏默认材质 = 界面变量.材质前缀 & 方法.取YAML值('快捷栏默认材质');
界面变量.技能栏默认材质 = 界面变量.材质前缀 & 方法.取YAML值('技能栏默认材质');
界面变量.技能栏默认背景 = 界面变量.材质前缀 & 方法.取YAML值('技能栏默认背景');
界面变量.技能栏选择背景 = 界面变量.材质前缀 & 方法.取YAML值('技能栏选择背景');
界面变量.按钮默认材质 = 界面变量.材质前缀 & 方法.取YAML值('按钮默认材质');
界面变量.按钮选择材质 = 界面变量.材质前缀 & 方法.取YAML值('按钮选择材质');
界面变量.技能按键列表 = 方法.取YAML值('技能按键列表');
方法.执行方法('init');
方法.执行方法('reset');
方法.执行方法('resize');
方法.发包('MiaoSkillView', 'list', 'hotbar');
方法.发包('MiaoSkillView', 'list', 'skills');
close: |-
方法.发包('MiaoSkillView', 'hud', 'init');
init: |-
界面变量.技能渲染间隔 = 45;
界面变量.滚动距离 = 45;
reset: |-
界面变量.最大滚动值 = 0;
界面变量.当前选择技能 = '';
界面变量.上次选择技能 = '';
界面变量.当前技能名称 = '';
界面变量.当前技能图标 = '';
方法.更新变量('sapi_skill_points');
# 渲染快捷栏
renderHotbar: |-
for_each(局部变量.值, 局部变量.索引, 界面变量.技能按键列表, {
局部变量.快捷栏 = 方法.新建组件(局部变量.值 & '_快捷栏_texture', '快捷栏');
局部变量.快捷栏.texture = 界面变量.快捷栏默认材质;
局部变量.快捷栏.x = '界面变量.X + 33 + ' & (局部变量.索引 + 1) * 26;
局部变量.快捷栏.value = 局部变量.值;
方法.设置组件值(
局部变量.快捷栏,
'actions.click_right',
"方法.执行方法('bindSkill');"
);
方法.添加组件(局部变量.快捷栏);
局部变量.快捷栏按键 = 方法.新建组件(局部变量.值 & '_快捷栏按键_label');
局部变量.快捷栏按键.X = '界面变量.X + 41 + ' & (局部变量.索引 + 1) * 26;
局部变量.快捷栏按键.Y = '界面变量.Y + 280';
局部变量.快捷栏按键.center = true;
局部变量.快捷栏按键.texts = '§c§l' & 局部变量.值;
方法.添加组件(局部变量.快捷栏按键, '绑定按钮');
});
renderHotbarSkill: |-
局部变量.快捷栏序号 = 局部变量.参数.0;
局部变量.技能名称 = 局部变量.参数.1;
局部变量.技能材质 = 局部变量.参数.2;
局部变量.技能名称 != "" ? {
方法.设置组件值(局部变量.快捷栏序号 & '_快捷栏_texture', 'texture', 局部变量.技能材质);
方法.设置组件值(局部变量.快捷栏序号 & '_快捷栏_texture', 'tip', "右键点击取消绑定 " & 局部变量.技能名称);
} : {
方法.设置组件值(局部变量.快捷栏序号 & '_快捷栏_texture', 'texture', 界面变量.快捷栏默认材质);
方法.设置组件值(局部变量.快捷栏序号 & '_快捷栏_texture', 'tip', "将上方技能图标拖动到此进行绑定!");
};
renderSkill: |-
局部变量.技能序号 = 局部变量.参数.0;
局部变量.技能名称 = 局部变量.参数.1;
局部变量.技能材质 = (局部变量.参数.2 == '' ? 界面变量.技能栏默认材质 : 局部变量.参数.2);
局部变量.技能等级 = 局部变量.参数.3;
局部变量.技能最大等级 = 局部变量.参数.4;
局部变量.技能材质 == "" ? 局部变量.技能材质 = 界面变量.技能栏默认材质;
界面变量.最大滚动值 = 方法.MAX(局部变量.技能序号, 界面变量.最大滚动值);
局部变量.技能背景组件 = 方法.新建组件( 局部变量.技能名称 & '_技能背景_texture', '技能背景');
局部变量.技能背景组件.y = '界面变量.Y + 68 + ' & 局部变量.技能序号 * 45 & ' + 界面变量.滚动值 * 界面变量.滚动距离';
局部变量.技能背景组件.value = 局部变量.技能名称;
方法.添加组件(局部变量.技能背景组件, '绑定按钮');
局部变量.技能图标组件 = 方法.新建组件( 局部变量.技能名称 & '_技能图标_texture', '技能图标');
局部变量.技能图标组件.texture = 局部变量.技能材质;
局部变量.技能图标组件.y = '界面变量.Y + 77.5 + ' & 局部变量.技能序号 * 45 & ' + 界面变量.滚动值 * 界面变量.滚动距离';
局部变量.技能图标组件.value = 局部变量.技能名称;
方法.设置组件值(
局部变量.技能图标组件,
'actions.click_left',
"方法.执行方法('dragSkill', '" & 局部变量.技能名称 & "', '" & 局部变量.技能材质 & "');"
);
方法.设置组件值(
局部变量.技能图标组件,
'actions.release_left',
"方法.执行方法('bindSkill');"
);
方法.添加组件(局部变量.技能图标组件, '绑定按钮');
局部变量.技能名称组件 = 方法.新建组件( 局部变量.技能名称 & '_技能名称_label', '技能名称');
局部变量.技能名称组件.texts = 局部变量.技能名称;
局部变量.技能名称组件.y = '界面变量.Y + 76 + ' & 局部变量.技能序号 * 45 & ' + 界面变量.滚动值 * 界面变量.滚动距离';
局部变量.技能名称组件.value = 局部变量.技能名称;
方法.添加组件(局部变量.技能名称组件, '绑定按钮');
局部变量.技能等级组件 = 方法.新建组件( 局部变量.技能名称 & '_技能等级_label', '技能等级');
局部变量.技能等级组件.texts = '等级: ' & 局部变量.技能等级 & ' / ' & 局部变量.技能最大等级;
局部变量.技能等级组件.y = '界面变量.Y + 93 + ' & 局部变量.技能序号 * 45 & ' + 界面变量.滚动值 * 界面变量.滚动距离';
局部变量.技能等级组件.value = 局部变量.技能名称;
方法.添加组件(局部变量.技能等级组件, '绑定按钮');
updateSkill: |-
局部变量.技能名称 = 局部变量.参数.0;
局部变量.技能等级 = 局部变量.参数.1;
局部变量.技能最大等级 = 局部变量.参数.2;
局部变量.技能等级组件 = 方法.取组件(局部变量.技能名称 & '_技能等级_label');
局部变量.技能等级组件.texts = '等级: ' & 局部变量.技能等级 & ' / ' & 局部变量.技能最大等级;
方法.执行方法('getSkillDetail', 局部变量.技能名称);
方法.更新变量('sapi_skill_points');
# 渲染拖拽按钮
renderDrag: |-
return 0;
# 局部变量.绑定按钮 = 方法.新建组件('绑定按钮_texture', '绑定按钮');
# 局部变量.绑定按钮.visible = true;
# 方法.添加组件(局部变量.绑定按钮);
# 渲染界面详情
selectSkill: |-
界面变量.当前选择技能 = 局部变量.参数.0;
界面变量.上次选择技能 = 局部变量.参数.1;
界面变量.当前选择技能 == 界面变量.上次选择技能 ? return 0;
界面变量.上次选择技能 != "" ? 方法.设置组件值(界面变量.上次选择技能 & '_技能背景_texture', 'texture', 界面变量.技能栏默认背景);
方法.设置组件值(界面变量.当前选择技能 & '_技能背景_texture', 'texture', 界面变量.技能栏选择背景);
方法.执行方法('getSkillDetail', 界面变量.当前选择技能);
getSkillDetail: |-
局部变量.技能名称 = 局部变量.参数.0;
技能显示标题.texts = 局部变量.技能名称;
方法.发包('MiaoSkillView', 'list', 'select', 局部变量.技能名称);
renderSkillDetail: |-
技能显示介绍.texts = 局部变量.参数;
dragSkill: |-
界面变量.当前技能名称 = 局部变量.参数.0;
界面变量.当前技能图标 = 局部变量.参数.1;
绑定按钮.visible = true;
bindSkill: |-
界面变量.当前绑定槽位 != '' ? {
方法.发包('MiaoSkillView', 'list', 'bind', 界面变量.当前绑定槽位, 界面变量.当前技能名称);
};
界面变量.当前技能名称 = '';
界面变量.当前技能图标 = '';
绑定按钮.visible = false;
upgradeSkill: |-
方法.发包('MiaoSkillView', 'list', 'upgrade', 界面变量.当前选择技能);
wheel: |-
界面变量.滚动值 = 界面变量.滚动值 + 方法.取滚轮值;
界面变量.滚动值 = 方法.MIN(界面变量.滚动值, 0);
界面变量.滚动值 = 方法.MAX(-界面变量.最大滚动值, 界面变量.滚动值);
resize: |-
界面变量.X = ( w - 背景.width ) / 2;
界面变量.Y = ( h - 背景.height ) / 2;
背景:
type: "texture"
x: "界面变量.X"
y: "界面变量.Y"
width: "420"
height: "330"
texture: "界面变量.背景材质"
绑定按钮:
type: "texture"
x: "方法.取鼠标X - 10"
y: "方法.取鼠标Y - 10"
width: "18"
height: "18"
texture: 界面变量.当前技能图标
value: 界面变量.当前技能名称
text: "绑定该技能"
visible: false
enable: false
快捷栏:
x: "界面变量.X + 59.5"
y: "界面变量.Y + 260"
width: "16"
height: "16"
value: "1"
tip: "将上方技能图标拖动到此进行绑定!"
actions:
enter: |-
界面变量.当前绑定槽位 = 局部变量.当前组件.value;
leave: |-
界面变量.当前绑定槽位 = '';
技能点文本:
type: 'label'
x: 界面变量.X + 116
y: 界面变量.Y + 304
texts: "可用技能点 %sapi_skill_points% 点"
scale: 1.1
center: true
技能通用属性: &common
tip:
- "&f&l拖动技能头像拖动至下方绑定"
- "&f&l点击技能名称查看描述和升级"
limitX: "界面变量.X + 38"
limitY: "界面变量.Y + 67"
limitWidth: "262"
limitHeight: "158"
actions:
click_left: |-
局部变量.名称数组 = 方法.分割(方法.取鼠标悬浮组件名, '_');
方法.异步执行方法('selectSkill', 局部变量.名称数组[0], 界面变量.当前选择技能);
技能背景:
<<: *common
x: "界面变量.X + 39"
y: "界面变量.Y + 68"
width: "158"
height: "42"
texture: "界面变量.技能栏默认背景"
textureHovered: "界面变量.技能栏选择背景"
技能图标:
<<: *common
x: "界面变量.X + 52"
y: "界面变量.Y + 77"
width: "22.5"
height: "22.5"
actions:
click_left: |-
局部变量.名称数组 = 方法.分割(方法.取鼠标悬浮组件名, '_');
方法.异步执行方法('selectSkill', 局部变量.名称数组[0], 界面变量.当前选择技能);
技能名称:
<<: *common
x: "界面变量.X + 122"
y: "界面变量.Y + 76"
scale: 1.2
center: true
技能等级:
<<: *common
x: "界面变量.X + 122"
y: "界面变量.Y + 93"
scale: 0.9
center: true
技能显示介绍:
type: "label"
x: "界面变量.X + 220"
y: "界面变量.Y + 35"
texts:
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- " <-- 请从左侧选择技能查看详情"
技能升级按钮:
type: "texture"
x: 界面变量.X + 223
y: 界面变量.Y + 288
width: 180
height: 30
text: "§r§l升 级 技 能"
texture: 界面变量.按钮默认材质
textureHovered: 界面变量.按钮选择材质
visible: "界面变量.当前选择技能 != ''"
actions:
click: |-
方法.异步执行方法('upgradeSkill');