• 【问卷调查奖励发放公告】

    感谢大家积极参与本次 MineBBS 社区问卷调查。200 金粒的参与奖励已完成发放。部分用户发放失败,请【点击此处】 查看详情。

SuperDialog - 超级 NPC 对话框

插件 SuperDialog - 超级 NPC 对话框 1.0.0

请登录后获取
版权类型
原创
API版本
1.0.5
版权链接
https://github.com/Mcayear/SuperDialog
语言支持
中文(简体)
前置组件
NInvShop https://github.com/mcayear/ninvshop/tree/mot
[MD]
# SuperDialog - 超级 NPC 对话框

感受划时代的 RPG 色彩!

## 预览

![preview](https://github.com/Mcayear/SuperDialog/blob/master/image/preview.gif?raw=true)

## 快速开始

### 命令

| 命令 | 描述 |
|--------------------------------------------------------------------|----------------|
| `/supernpc value <player> <typeEnum: string, int, boolean> <data>` | 设置玩家持久化数据的值 |
| `/supernpc open <player> <scenes>` | 为玩家打开一个指定的场景 |
| `/supernpc change <player> <scenes>` | 暂无实际作用(WIP) |
| `/supernpc reload` | 重载配置文件和 Lua 缓存 |
| `/supernpc help` | 获取帮助 |

只需要 NPC 执行 `/supernpc open Mcayear default` 即可向玩家 `Mcayear` 打开 `default.lua` 编写的对话框。

### config.yml

```yml
dialog:
scrolling: true # 使用滚动对话框
scrolling_speed: 1 # 滚动速度,正整数,最小为 1,值越大越快
```

### scenes/default.lua

每一个 lua 脚本都是一个场景,你可以在 lua 脚本中定义多个对话框。

不包含后缀的文件名就是命令中的 `<scenes>` 值,如 `default.lua` 就是 `default`。

## Lua 进阶

Lua 语言的语法非常简单,你可以参考 [LuaJava API 官方文档](https://gudzpoz.github.io/luajava/api.html#jclass-type)。

### Lua 函数设计

轻便简洁是设计的初衷,每一个场景都必须包含 `function main()` 与 `function close()` 两个函数。

函数 `main()` 是默认执行的,函数 `close()` 是当对话框关闭时执行的。

```lua
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
```

### Lua 全局变量设计

我们添加了一些全局变量

| 变量名 | 描述 | Java 类型 |
|-----|--------|-------------------------------------------------------------------------------------------------------------------------------|
| player | 玩家对象 | [cn.nukkit.Player](https://github.com/CloudburstMC/Nukkit/blob/master/src/main/java/cn/nukkit/Player.java) |
| entity | 实体对象 | [cn.nukkit.entity.Entity](https://github.com/CloudburstMC/Nukkit/blob/master/src/main/java/cn/nukkit/entity/Entity.java) |
| share | 共享变量对象 | [cn.vusv.plugin.superdialog.config.LuaShareVariable](./src/main/java/cn/vusv/plugin/superdialog/config/LuaShareVariable.java) |
| tools | 工具对象 | [cn.vusv.plugin.superdialog.config.LuaToolsVariable](./src/main/java/cn/vusv/plugin/superdialog/config/LuaToolsVariable.java) |

### share 变量详解

share 是玩家的数据文件,它会以玩家名字被持久化保存到服务器的 `./plugins/SuperDialog/players/` 目录下。`

我们只提供了基础的 int、string、boolean 类型的读写方法。

[/MD]
  • 喜欢
反馈: 若尘在长大
作者
Mcayear
价格
200金粒
下载
7
查看
1,198
首次发布
最后更新

评分

0.00 星 0 次评分

Mcayear 的其他资源

后退
顶部 底部