📋 表概述

character_settings 表用于保存每个角色的个性化设置数据。包括界面布局、宏命令、按键绑定、插件配置等通过客户端同步到服务端的玩家偏好数据。数据以文本形式存储,source 字段标识设置类别。

📊 表结构

字段名数据类型默认值说明
guidint UNSIGNED(无)角色GUID,关联 characters.guid
sourcevarchar(40)(无)设置来源标识,如 "macro"、"binding"、"layout" 等
datatextNULL设置的具体内容(文本/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 字段存储的是客户端编码的二进制数据以文本形式表示,直接查看可能显示乱码。需要通过客户端的反序列化逻辑才能正确解析。