📖 worldstates 表
全局变量保存表,以键值对形式存储服务器级别的全局状态变量。
📋 表概述
worldstates 表用于存储服务器级别的全局变量,以简单的键值对(entry → value)形式保存。常用于存储服务器累计数据、全局计数器、特定活动状态等。数据在服务器关闭时写入,启动时加载。
- 主键:(entry)
- 引擎:InnoDB
- 关联表:无
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
entry | int UNSIGNED | 0 | 全局变量ID(键) |
value | int UNSIGNED | 0 | 全局变量值 |
comment | tinytext | NULL | 变量注释说明 |
🔍 重要字段详解
entry — 变量键
全局变量的唯一标识符。AZ 中预定义了一些 entry 值用于特定的全局状态,如服务器累计在线时间、特定 Boss 被击杀次数等。也可以通过 Lua 或 C++ 模块自定义新的 entry。
value — 变量值
存储 entry 对应的数值。仅支持整数类型。如果需要在 Lua 中存储字符串或其他复杂数据,通常需要通过编码转换或使用 world_state 表。
comment — 注释
可选的说明文本,记录该变量的用途。方便数据库管理员理解每个 entry 的含义,不是系统必需字段。
💡 SQL查询示例
查看所有全局变量
SELECT entry, value, comment FROM worldstates ORDER BY entry;
在 Lua 中读取和修改全局变量
-- 读取全局变量
local val = GetWorldState(1001)
-- 设置全局变量
SetWorldState(1001, val + 1)
❓ 常见问题
Q: 如何在 Lua 脚本中使用 worldstates?
Eluna 引擎提供了 GetWorldState(entry) 和 SetWorldState(entry, value) 函数来读写全局变量。数据会自动持久化到数据库。
Q: worldstates 的数据何时保存?
通常在服务器正常关闭时批量写入。如果服务器异常崩溃,最近修改的数据可能会丢失。关键数据建议在 Lua 中手动调用保存。