感受划时代的 RPG 色彩!
| 命令 | 描述 |
|---|---|
/supernpc value <player> <typeEnum: string, int, boolean> <string: key> <any: data> |
设置玩家持久化数据的值 |
/supernpc open <player> <scenes> |
为玩家打开一个指定的场景 |
/supernpc change <player> <scenes> |
暂无实际作用(WIP) |
/supernpc reload |
重载配置文件和 Lua 缓存 |
/supernpc help |
获取帮助 |
只需要 NPC 执行 /supernpc open Mcayear default 即可向玩家 Mcayear 打开 default.lua 编写的对话框。
dialog:
scrolling: true # 使用滚动对话框
scrolling_speed: 1 # 滚动速度,正整数,最小为 1,值越大越快每一个 lua 脚本都是一个场景,你可以在 lua 脚本中定义多个对话框。
不包含后缀的文件名就是命令中的 <scenes> 值,如 default.lua 就是 default。
Lua 语言的语法非常简单,你可以参考 LuaJava API 官方文档。
轻便简洁是设计的初衷,每一个场景都必须包含 function main() 与 function close() 两个函数。
函数 main() 是默认执行的,函数 close() 是当对话框关闭时执行的。
openCount = nil;
function main()
openCount = share:getIntValue("openCount", 0); -- 读取玩家持久化数据的值
openCount = openCount + 1;
local playerName = player:getName() -- 调用Java方法获取玩家名称
local entityName = entity:getName().."§r" -- 调用Java方法获取实体名称
local title = "Welcome " .. playerName .. "!"
local description = "You are interacting with " .. entityName .. ".\nopen count: ".. openCount ..".\nChoose again:"
local options = {"Option 1", "Option 2"}
return {title, description, options, { "close", "close" }}
end
function close()
-- 此函数没有返回值。
share:setIntValue("openCount", openCount);
end我们添加了一些全局变量
| 变量名 | 描述 | Java 类型 |
|---|---|---|
| player | 玩家对象 | cn.nukkit.Player |
| entity | 实体对象 | cn.nukkit.entity.Entity |
| share | 共享变量对象 | cn.vusv.plugin.superdialog.config.LuaShareVariable |
| tools | 工具对象 | cn.vusv.plugin.superdialog.config.LuaToolsVariable |
share 是玩家的数据文件,它会以玩家名字被持久化保存到服务器的 ./plugins/SuperDialog/players/ 目录下。`
我们只提供了基础的 int、string、boolean 类型的读写方法。
gh-proxy:提供 gif 图片 proxy CDN
