📖 character_settings 表
角色个人设置表,存储玩家的客户端设置和偏好配置信息。
📋 表概述
character_settings 表用于保存每个角色的个性化设置数据。包括界面布局、宏命令、按键绑定、插件配置等通过客户端同步到服务端的玩家偏好数据。数据以文本形式存储,source 字段标识设置类别。
- 主键:(guid, source)
- 引擎:InnoDB
- 关联表:characters(guid)
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
guid | int UNSIGNED | (无) | 角色GUID,关联 characters.guid |
source | varchar(40) | (无) | 设置来源标识,如 "macro"、"binding"、"layout" 等 |
data | text | NULL | 设置的具体内容(文本/JSON/二进制编码文本) |
🔍 重要字段详解
source — 设置来源
标识设置的类别,通常包括:"macro"(宏命令)、"binding"(按键绑定)、"layout"(动作条布局)、"chat"(聊天设置)等。不同的 source 值对应不同类型的客户端配置。
data — 设置数据
存储设置的原始数据。格式可能是纯文本、序列化的二进制数据、或自定义编码格式。由服务端的 CharacterPackets 处理序列化和反序列化。
💡 SQL查询示例
查询某个角色保存了哪些类型的设置
SELECT source, CHAR_LENGTH(data) AS 数据长度
FROM character_settings
WHERE guid = 12345;
清除某个角色的宏命令设置
DELETE FROM character_settings
WHERE guid = 12345 AND source LIKE '%macro%';
❓ 常见问题
Q: 这个表的数据是客户端还是服务端生成的?
数据由客户端生成并通过网络包发送到服务端保存。当玩家换一台电脑登录时,服务端会将存储的设置同步到新的客户端,实现跨设备设置同步。
Q: data 字段为什么有时是乱码?
data 字段存储的是客户端编码的二进制数据以文本形式表示,直接查看可能显示乱码。需要通过客户端的反序列化逻辑才能正确解析。