主题
脚本系统 API
QueDPAPI.scripts() 提供 JavaScript 脚本执行功能(基于 Rhino 引擎)。
执行脚本
使用实例上下文
kotlin
val scripts = listOf(
"action.title('@所有玩家', '&6&l开始!', '&7击败所有怪物');",
"action.sound('@所有玩家', 'ENTITY_PLAYER_LEVELUP');"
)
QueDPAPI.scripts().execute(instance, scripts)使用自定义上下文
kotlin
val context = instance.scriptContext
val scripts = listOf(
"var time = dungeon.time;",
"if (time < 300) {",
" action.message('@所有玩家', '&a时间充足!');",
"}"
)
QueDPAPI.scripts().execute(scripts, context)条件评估
kotlin
val context = instance.scriptContext
// 评估条件表达式
val result: Boolean = QueDPAPI.scripts().evaluateCondition(
"dungeon.time < 300",
context
)
if (result) {
player.sendMessage("时间充足")
}执行预定义脚本
kotlin
// 执行地牢配置中的脚本
val success: Boolean = QueDPAPI.scripts().executeDungeonScript(
dungeonId = "my_dungeon",
scriptName = "start",
context = instance.scriptContext
)重载脚本引擎
kotlin
// 重新加载所有脚本
QueDPAPI.scripts().reload()完整示例
kotlin
fun executeCustomBossSpawn(instance: DungeonInstance) {
val scripts = listOf(
"""
// 设置时间为夜晚
action.time('night');
// 给所有玩家发送标题
action.title('@所有玩家', '&c&lBoss 即将出现', '&7做好准备!');
// 播放音效
action.sound('@所有玩家', 'ENTITY_ENDER_DRAGON_GROWL', 1.0, 0.8);
// 3秒后生成 Boss
action.wait('3秒');
action.spawn_group('boss_wave');
// 封锁大门
action.create_obstacle('boss_gate');
// 记录Boss生成时间
setVar('boss_spawn_time', dungeon.time);
""".trimIndent()
)
QueDPAPI.scripts().execute(instance, scripts)
}可用的脚本动作
查看 JavaScript 脚本文档 了解所有可用的动作。
常用动作
action.message()- 发送消息action.title()- 发送标题action.sound()- 播放音效action.teleport()- 传送玩家action.spawn_group()- 生成怪物组action.create_obstacle()- 创建障碍物action.remove_obstacle()- 移除障碍物action.complete()- 完成副本action.fail()- 失败副本action.wait()- 延迟执行
变量操作
setVar(key, value)- 设置变量getVar(key)- 获取变量dungeon.time- 副本运行时间
注意事项
- 脚本使用 JavaScript 语法(Rhino 引擎)
- 变量通过
setVar/getVar在脚本间共享 - 脚本在副本实例的上下文中执行
- 长时间运行的脚本会阻塞主线程
返回值说明
execute()无返回值(执行失败会输出日志)evaluateCondition()返回BooleanexecuteDungeonScript()返回Boolean表示成功/失败
