Skip to content

流程控制

用于控制脚本执行流程。

等待

暂停脚本执行指定时间。

语法

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();

基于 MIT 许可发布