📋 表概述

worldstates 表用于存储服务器级别的全局变量,以简单的键值对(entry → value)形式保存。常用于存储服务器累计数据、全局计数器、特定活动状态等。数据在服务器关闭时写入,启动时加载。

📊 表结构

字段名数据类型默认值说明
entryint UNSIGNED0全局变量ID(键)
valueint UNSIGNED0全局变量值
commenttinytextNULL变量注释说明

🔍 重要字段详解

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 中手动调用保存。