主题
流程控制
用于控制脚本执行流程。
等待
暂停脚本执行指定时间。
语法
javascript
action.wait(时间)时间格式
| 格式 | 说明 |
|---|---|
秒 | 秒数(如 3秒, 5秒) |
分钟 | 分钟数(如 1分钟, 2分钟) |
| 数字 | 刻数(20刻=1秒) |
示例
javascript
// 等待3秒
action.wait('3秒');
// 倒计时
for (var i = 3; i > 0; i--) {
action.title('@所有玩家', '&e' + i, '');
action.wait('1秒');
}
action.title('@所有玩家', '&a开始!', '');设置死亡检测延迟
设置玩家死亡后多少秒才触发副本失败检测。用于给玩家复活的时间窗口。
语法
javascript
action.setDeathCheckDelay(秒数)参数
| 参数 | 类型 | 说明 |
|---|---|---|
| 秒数 | 数字 | 死亡后延迟检测的秒数(默认1秒) |
示例
javascript
// 给玩家10秒复活时间
action.setDeathCheckDelay(10);
// 配合复活机制使用
action.setDeathCheckDelay(30); // 30秒内可以复活
action.spawn_group('BOSS波');
action.wait_clear('BOSS波');
action.complete();说明
- 默认情况下,玩家死亡后1秒会检测是否所有玩家都死亡
- 设置延迟后,会在指定秒数后才进行检测
- 如果在延迟期间有玩家复活,副本不会失败
- 建议在有复活机制的副本开始时设置
等待怪物清空
等待怪物组清空后继续。
语法
javascript
action.wait_clear(怪物组名称)
action.wait_monster_clear(怪物组名称)示例
javascript
// 波次系统
action.spawn_group('第一波');
action.wait_clear('第一波');
action.message('@所有玩家', '&a第一波完成!');
action.spawn_group('第二波');
action.wait_clear('第二波');
action.message('@所有玩家', '&a第二波完成!');
action.complete();条件判断
使用 JavaScript 条件语句。
语法
javascript
if (条件) {
// 代码
} else if (条件2) {
// 代码
} else {
// 代码
}示例
javascript
// 简单条件
var kills = getVar('总击杀') || 0;
if (kills >= 50) {
action.complete();
}
// 多分支
var score = getVar('总分');
if (score >= 1500) {
action.reward('传说礼包');
} else if (score >= 1000) {
action.reward('精良礼包');
} else {
action.reward('普通礼包');
}循环
使用 JavaScript 循环语句。
For 循环
javascript
for (var i = 0; i < 5; i++) {
action.message('@所有玩家', '倒计时: ' + (5 - i));
action.wait('1秒');
}While 循环
javascript
var wave = 0;
while (wave < 3) {
wave++;
action.spawn_group('波次' + wave);
action.wait_clear('波次' + wave);
}设置变量
使用 setVar() 和 getVar() 管理变量。
语法
javascript
setVar(变量名, 值)
var value = getVar(变量名)示例
javascript
// 设置变量
setVar('当前波次', 1);
setVar('总击杀', 0);
// 读取变量
var wave = getVar('当前波次') || 0;
var kills = getVar('总击杀') || 0;
// 更新变量
wave++;
setVar('当前波次', wave);完整示例
波次系统
javascript
// scripts.yml - 开始脚本
setVar('当前波次', 0);
for (var i = 1; i <= 3; i++) {
setVar('当前波次', i);
action.title('@所有玩家', '&c第' + i + '波', '');
action.spawn_group('第' + i + '波');
action.wait_clear('第' + i + '波');
action.wait('3秒');
}
action.title('@所有玩家', '&a全部完成!', '');
action.complete();计分系统
javascript
// scripts.yml - 完成脚本
var baseScore = 1000;
var timeBonus = 600 - dungeon.time;
var killBonus = (getVar('总击杀') || 0) * 10;
var totalScore = baseScore + timeBonus + killBonus;
setVar('最终得分', totalScore);
if (totalScore >= 1500) {
action.reward('传说礼包');
} else if (totalScore >= 1000) {
action.reward('精良礼包');
} else {
action.reward('普通礼包');
}
action.complete();