[MD]
## 一、安装步骤
1. 解压 `antiAFK.zip`,得到 `manifest.json`、`antiAFK.js`、`config.json` 三个文件
2. 在 **BDS 根目录**下创建目录 `plugins/antiAFK/`,把这三个文件放进去
3. 加载插件(在 BDS 控制台执行,**不是**系统命令行):
- 首次安装:`ll load antiAFK`
- 已安装、改了代码:`ll reload antiAFK`
4. 控制台出现 `[antiAFK] 插件已加载,当前状态: 启用` 即安装成功
> ⚠️ 目录名必须是 `antiAFK`。代码里硬编码读写 `./plugins/antiAFK/config.json` 与 `./plugins/antiAFK/data`(KV 数据库),改名会导致配置与数据失效。
---
## 二、配置项说明(config.json)
| 键 | 默认值 | 含义 |
|---|---|---|
| `enabled` | `true` | 检测总开关 |
| `warnTime1` | `600` | 第一次警告触发点 |
| `warnTime2` | `900` | 第二次警告触发点 |
| `kickTime` | `1200` | 踢出触发点 |
| `kickMessage` | `您因长时间挂机被踢出服务器,请重新连接!` | 踢出时的提示语 |
| `excludeOps` | `true` | 是否豁免 OP(管理员) |
| `checkInterval` | `20` | 巡检间隔(游戏刻,20 = 1 秒,最小生效值 1 秒) |
| `paidAfkEnabled` | `true` | 是否启用付费挂机 |
| `paidAfkCost` | `100` | 单次购买花费(LLMoney 单位) |
| `paidAfkDuration` | `1800` | 单次购买获得的挂机时长 |
| `timeAfkEnabled` | `false` | 是否启用「定时允许挂机」 |
| `timeAfkStart` | `"22:00"` | 允许挂机时段的开始时间(HH:MM) |
| `timeAfkEnd` | `"08:00"` | 允许挂机时段的结束时间(HH:MM) |
修改方式二选一:
- 直接编辑 `plugins/antiAFK/config.json`,然后游戏内执行 `/antiafk reload`
- 游戏内 `/antiafk gui` → 「修改基础配置」,表单保存后**自动热重载**定时器
---
## 三、指令与 GUI
### 指令
| 指令 | 权限 | 作用 |
|---|---|---|
| `/antiafk reload` | OP | 重载配置文件并热重启检测定时器 |
| `/antiafk status` | 玩家 | 查看自己当前的挂机秒数 |
| `/antiafk kick <玩家>` | OP | 手动踢出指定玩家(挂机理由) |
| `/antiafk gui` | OP | 打开反挂机管理主界面 |
| `/antiafk debug` | OP | 切换「事件 Debug」播报开关 |
| `/antiafk shop` | 玩家 | 打开付费挂机商店 |
| `/afkshop` | 玩家 | 同 `shop`,为普通玩家提供的快捷入口 |
### 主管理界面(`/antiafk gui`)
主菜单共 7 项:
1. **切换全局状态** — 一键启用/禁用检测
2. **修改基础配置** — 表单化改所有配置项(含数字与 HH:MM 格式校验)
3. **玩家挂机管理** — 列出在线玩家及各自挂机秒数,可重置计时或直接踢出
4. **切换事件 Debug 模式** — 开启后,每次警告/踢出会给开启者播报详细事件
5. **精细检测设置** — 选一个玩家作为目标,按设定间隔(1~60 秒)向管理员聊天栏播报其挂机秒数
6. **付费挂机商店** — 玩家自助购买挂机时长
7. **关闭**
[/MD]