跳到主要内容

脚本模块

Chemdah 在 TabooLib 的 Kether 脚本引擎基础上扩展了一批专属动作,用于操控任务、玩家数据、对话等。

脚本文件放在 Chemdah/module/script/ 目录下,扩展名为 .ks

可用命名空间:chemdahchemdah-quest

任务操作

关键字 quest,作用于当前选中的任务(通过 quest select 切换)。

动作说明
quest select <id>选中任务,后续操作均作用于该任务
quest accepted返回玩家是否正在进行该任务
quest completed返回任务是否已完成
quest accept使玩家接受任务,返回接受结果
quest accept-check检查接受条件,不实际接受
quest complete完成任务
quest complete-task <task>完成任务中的某个条目
quest close-task <task>关闭任务中的某个条目
quest fail使任务失败
quest reset重置任务
quest stop放弃任务
quest track追踪任务
quest track cancel取消追踪
quest count返回玩家进行中的任务数量
quest tasks返回当前任务的所有条目名列表
quest data <key>读取任务数据
quest data <key> to <value>设置任务数据
quest data <key> add <value>累加任务数据
quest progress value/target/percent [task <task>]读取任务或条目进度
示例:接受并追踪任务
quest select "main_quest_01"
quest accept
quest track
示例:判断条件后完成任务
quest select "daily_task"
if quest accepted {
quest complete
}

关键字 quests 返回玩家当前所有进行中任务的 id 列表:

示例:列出所有任务
set &list to quests

玩家数据

关键字 profile,操作玩家的持久化数据容器。

动作说明
profile data <key>读取数据,不存在返回 null
profile data <key> default <val>读取数据,不存在时返回默认值
profile data <key> to <value>设置数据
profile data <key> add <value>累加数据
profile data keys返回所有 key 列表
profile save立即将数据推送到数据库
示例:记录玩家杀敌数
profile data "kill_count" add 1

等级操作

等级操作也通过 profile level 完成,需要对应 id 已在等级模块中定义。

动作说明
profile level <id> level读取等级值
profile level <id> exp读取当前经验值
profile level <id> exp-max读取升级所需经验值
profile level <id> level to <n>设置等级
profile level <id> exp to <n>设置经验
profile level <id> level add <n>增加等级
profile level <id> exp add <n>增加经验
示例:奖励经验
profile level "default" exp add 100

全局变量

关键字 var,操作服务器级别的全局变量(所有玩家共享)。

动作说明
var <key>读取变量
var <key> to <value>设置变量
var <key> add <value>累加变量
var keys返回所有 key 列表
示例:全服计数器
var "server_kill_total" add 1

触发器

关键字 trigger,手动触发 trigger 类型的任务条目。

示例:单个触发器
trigger "player_crafted"
示例:批量触发
trigger in [ "step_a" "step_b" "step_c" ]

对话操作

对话相关动作仅在对话上下文(命名空间 chemdah-conversation)中有效。

动作说明
open <id>打开另一段对话
goto <id>跳转到另一段对话(保留当前会话)
close关闭当前对话
示例:对话条件分支
if &choice == "yes" {
goto "quest_accept_conv"
} else {
close
}

脚本互调

在脚本内部可以调用其他脚本文件。

动作说明
script run <name>运行脚本(全局唯一实例)
script run <name> @self运行脚本(每个玩家独立实例)
script run <name> using [ <arg0> <arg1> ]运行脚本并传参
script stop <name>停止脚本
示例:调用奖励脚本并传参
script run "give_reward" using [ "diamond" 5 ]
提示

脚本内通过 &arg0&arg1 依次获取传入的参数。

相关命令

脚本文件通过 /chemdah script 管理,详见 脚本系统命令