角色库中最核心的表格,存储每个玩家角色的完整信息和属性数据
characters表是角色库中最核心的表格,存储了每个玩家角色的基本信息和属性。这个表包含了角色的身份信息、外观设置、当前状态、位置坐标、等级经验等关键数据。
序号 | 字段名 | 数据类型 | 默认值 | 是否为空 | 键类型 | 说明 | |||
---|---|---|---|---|---|---|---|---|---|
1 | guid | int UNSIGNED | 0 | NOT NULL | PRIMARY KEY | 角色唯一标识符 (主键,自动递增) - 范围: 1-4294967295,关联characters库中所有角色相关表 | |||
2 | account | int(10) unsigned | 0 | NOT NULL | INDEX | 所属账号ID (关联auth.account表) - 必须为已存在的账号ID | |||
3 | name | varchar(12) | '' | NOT NULL | UNIQUE | 角色名称 (全服务器唯一) - 长度限制: 2-12字符,支持中文/英文/数字,不能包含特殊符号 | |||
4 | race | tinyint UNSIGNED | 0 | NOT NULL | 种族ID (对应ChrRaces.dbc) - 1=人类,2=兽人,3=矮人,4=暗夜精灵,5=亡灵,6=牛头人,7=侏儒,8=巨魔,10=血精灵,11=德莱尼 | ||||
5 | class | tinyint(3) unsigned | 0 | NOT NULL | 职业ID (对应ChrClasses.dbc) - 1=战士,2=圣骑士,3=猎人,4=盗贼,5=牧师,6=死亡骑士,7=萨满,8=法师,9=术士,11=德鲁伊 | ||||
6 | gender | tinyint(3) unsigned | 0 | NOT NULL | 性别 (0=男性,1=女性) - 创建角色时选择,后期不可修改 | ||||
7 | level | tinyint(3) unsigned | 1 | NOT NULL | 角色等级 (1-80) - 影响角色属性、技能学习和可进入区域 | ||||
8 | xp | int(10) unsigned | 0 | NOT NULL | 当前经验值 (从0到当前等级升级所需经验) - 满级后固定为0 | ||||
9 | money | int(10) unsigned | 0 | NOT NULL | 金钱数量 (铜币为单位) - 1金=100银=10000铜,最大值: 4294967295铜(约42万金) | ||||
10 | skin | tinyint(3) unsigned | 0 | NOT NULL | 肤色选择 (0-255) - 对应角色创建时的皮肤选项,不同种族有不同的可选范围 | ||||
11 | face | tinyint(3) unsigned | 0 | NOT NULL | 面部特征选择 (0-255) - 对应角色创建时的面部选项,不同种族/性别有不同的可选范围 | ||||
12 | hairStyle | tinyint(3) unsigned | 0 | NOT NULL | 发型选择 (0-255) - 对应角色创建时的发型选项,不同种族/性别有不同的可选范围 | ||||
13 | hairColor | tinyint(3) unsigned | 0 | NOT NULL | 发色选择 (0-255) - 对应角色创建时的发色选项,不同种族/性别有不同的可选范围 | ||||
14 | facialStyle | tinyint UNSIGNED | 0 | NOT NULL | 面部装饰 (0-255) - 包括胡须、刺青等,不同种族/性别有不同的可选范围 | ||||
15 | bankSlots | tinyint UNSIGNED | 0 | NOT NULL | 银行槽位数量 (0-255) - 初始为0,可通过购买扩展,每个槽位可存放一个背包 | ||||
16 | restState | tinyint UNSIGNED | 0 | NOT NULL | 休息状态 (0=正常,1=旅店休息,2=城市休息) - 旅店休息可获得双倍经验加成,城市休息可获得1.5倍经验加成 | ||||
17 | playerFlags | int UNSIGNED | 0 | NOT NULL | 玩家标志位 (位掩码: 0x1=群组领袖,0x2=AFK,0x4=DND,0x8=幽灵状态,0x10=休息状态,0x20=GM模式,0x40=PVP状态) - 详见文档中的状态标志详解 | ||||
18 | position_x | float | 0 | NOT NULL | X坐标 (世界坐标值,需与map字段配合使用) - 修改时需确保坐标有效,建议使用游戏内.gps命令获取准确坐标 | ||||
19 | position_y | float | 0 | NOT NULL | Y坐标 (世界坐标值,需与map字段配合使用) - 修改时需确保坐标有效,建议使用游戏内.gps命令获取准确坐标 | ||||
20 | position_z | float | 0 | NOT NULL | Z坐标 (世界坐标值,需与map字段配合使用) - 修改时需确保坐标有效,建议使用游戏内.gps命令获取准确坐标 | ||||
21 | map | smallint UNSIGNED | 0 | NOT NULL | 地图ID (对应Map.dbc) - 0=东部王国,1=卡利姆多,530=外域,571=诺森德,修改时需确保与坐标匹配 | ||||
22 | instance_id | int UNSIGNED | 0 | NOT NULL | 副本ID (关联instance表) - 0=不在副本中,非0值对应instance.id,修改时需确保副本存在 | ||||
23 | instance_mode_mask | tinyint UNSIGNED | 0 | NOT NULL | 副本模式掩码 (位掩码: 1=普通,2=英雄,4=10人,8=25人,16=40人) - 可组合使用如5=10人普通(1+4) | ||||
24 | orientation | float | 0 | NOT NULL | 朝向 (弧度值,0=北,π/2=东,π=南,3π/2=西) - 建议使用游戏内.gps命令获取准确值 | ||||
25 | taximask | text | '' | NOT NULL | 飞行点掩码 (位掩码格式) - 记录已解锁的飞行点,格式为16进制字符串,每字符代表4个飞行点 | ||||
26 | online | tinyint UNSIGNED | 0 | NOT NULL | 在线状态 (0=离线,1=在线) - 系统自动维护,不建议手动修改 | ||||
27 | cinematic | tinyint UNSIGNED | 0 | NOT NULL | 是否观看过开场动画 (0=未观看,1=已观看) - 首次创建角色时播放,仅可设置一次 | ||||
28 | totaltime | int UNSIGNED | 0 | NOT NULL | 总游戏时间 (秒数) - 包括所有等级的游戏时间,系统自动累计 | ||||
29 | leveltime | int UNSIGNED | 0 | NOT NULL | 当前等级游戏时间 (秒数) - 升级后重置,系统自动累计 | ||||
30 | logout_time | int UNSIGNED | 0 | NOT NULL | 登出时间 (Unix时间戳) - 记录最后一次登出时间,系统自动更新 | ||||
31 | is_logout_resting | tinyint UNSIGNED | 0 | NOT NULL | 是否在休息区登出 (0=否,1=是) - 影响下次登录时的经验加成 | ||||
32 | rest_bonus | float | 0 | NOT NULL | 休息奖励倍数 (0-2) - 1=正常经验,2=双倍经验上限 | ||||
33 | resettalents_cost | int UNSIGNED | 0 | NOT NULL | 重置天赋花费 (铜币) - 每次重置费用递增,最高10金 | ||||
34 | resettalents_time | int UNSIGNED | 0 | NOT NULL | 重置天赋时间 (Unix时间戳) - 记录最后一次重置天赋的时间 | ||||
35 | trans_x | float | 0 | NOT NULL | 传送点X坐标 (世界坐标) - 用于角色死亡或传送时的位置 | ||||
36 | trans_y | float | 0 | NOT NULL | 传送点Y坐标 (世界坐标) - 用于角色死亡或传送时的位置 | ||||
37 | trans_z | float | 0 | NOT NULL | 传送点Z坐标 (世界坐标) - 用于角色死亡或传送时的位置 | ||||
38 | trans_o | float | 0 | NOT NULL | 传送点朝向 (弧度值) - 用于角色死亡或传送时的朝向 | ||||
39 | transguid | int | 0 | NULL | 传送GUID - 关联传送点或NPC的GUID,0表示无关联 | ||||
40 | extra_flags | smallint UNSIGNED | 0 | NOT NULL | 额外标志位 (位掩码: 0x1=GM角色,0x2=隐藏头盔,0x4=隐藏披风,0x8=PVP标记) | ||||
41 | stable_slots | tinyint UNSIGNED | 0 | NOT NULL | 宠物栏位数量 (0-255) - 猎人职业专用,初始为2,可通过任务扩展 | ||||
42 | at_login | smallint UNSIGNED | 0 | NOT NULL | 登录标志位 (位掩码: 0x1=重置天赋,0x2=重置宠物栏,0x4=重命名角色) | ||||
43 | zone | smallint UNSIGNED | 0 | NOT NULL | 区域ID (对应AreaTable.dbc) - 记录角色当前所在区域 | ||||
44 | death_expire_time | int UNSIGNED | 0 | NOT NULL | 死亡过期时间 (Unix时间戳) - 记录角色尸体消失时间,默认10分钟 | ||||
45 | taxi_path | text | NULL | NULL | 飞行路线 (节点ID序列) - 记录角色当前飞行路线,格式为逗号分隔的TaxiNodes.dbc ID | ||||
46 | arenaPoints | int UNSIGNED | 0 | NOT NULL | 竞技场点数 (0-5000) - 每周结算,用于购买竞技场装备 | ||||
47 | totalHonorPoints | int UNSIGNED | 0 | NOT NULL | 总荣誉点数 (0-75000) - 累计获得的荣誉点数,用于购买PVP装备 | ||||
48 | todayHonorPoints | int UNSIGNED | 0 | NOT NULL | 今日荣誉点数 (0-2000) - 每日获得的荣誉点数,每日重置 | ||||
49 | yesterdayHonorPoints | int UNSIGNED | 0 | NOT NULL | 昨日荣誉点数 (0-2000) - 前一天获得的荣誉点数,用于计算荣誉排名 | ||||
50 | totalKills | int UNSIGNED | 0 | NOT NULL | 总击杀数 (0-4294967295) - 累计击杀敌对玩家数量 | ||||
51 | todayKills | smallint UNSIGNED | 0 | NOT NULL | 今日击杀数 (0-65535) - 当天击杀敌对玩家数量,每日重置 | ||||
52 | yesterdayKills | smallint UNSIGNED | 0 | NOT NULL | 昨日击杀数 | ||||
53 | chosenTitle | int UNSIGNED | 0 | NOT NULL | 选择的称号 | ||||
54 | knownCurrencies | bigint UNSIGNED | 0 | NOT NULL | 位掩码表示玩家已知的货币类型,每位对应一种货币ID | 已知货币 | |||
55 | watchedFaction | int UNSIGNED | 0 | NOT NULL | 玩家当前关注的阵营ID,关联faction_template表 | 关注阵营 | |||
56 | drunk | tinyint UNSIGNED | 0 | NOT NULL | 醉酒程度,0-100表示醉酒状态,影响角色移动和视野 | 醉酒状态 | |||
57 | health | int UNSIGNED | 0 | NOT NULL | 角色当前生命值,服务器会自动更新此值 | 生命值 | |||
58 | power1 | int UNSIGNED | 0 | NOT NULL | 角色主要能量值(如法力、怒气、能量等),具体类型由职业决定 | 能量类型1 | |||
59 | power2 | int UNSIGNED | 0 | NOT NULL | 角色次要能量值(如符文能量、圣能等),具体类型由职业决定 | 能量类型2 | |||
60 | power3 | int UNSIGNED | 0 | NOT NULL | 角色第三能量值(如符文能量、圣能等),具体类型由职业决定 | 能量类型3 | |||
61 | power4 | int UNSIGNED | 0 | NOT NULL | 角色第四能量值(如符文能量、圣能等),具体类型由职业决定 | 能量类型4 | |||
62 | power5 | int UNSIGNED | 0 | NOT NULL | 角色第五能量值(如符文能量、圣能等),具体类型由职业决定 | 能量类型5 | |||
63 | power6 | int UNSIGNED | 0 | NOT NULL | 角色第六能量值(如符文能量、圣能等),具体类型由职业决定 | 能量类型6 | |||
64 | power7 | int UNSIGNED | 0 | NOT NULL | 角色第七能量值(如符文能量、圣能等),具体类型由职业决定 | 能量类型7 | |||
65 | latency | int UNSIGNED | 0 | NULL | 玩家网络延迟毫秒数,由服务器定期更新 | 网络延迟 | |||
66 | talentGroupsCount | tinyint UNSIGNED | 1 | NOT NULL | 玩家拥有的天赋配置组数量(1-2组) | 天赋组数量 | |||
67 | activeTalentGroup | tinyint UNSIGNED | 0 | NOT NULL | 当前激活的天赋配置组索引(0或1) | 当前激活天赋组 | |||
68 | exploredZones | longtext | NULL | NULL | 已探索区域ID的二进制掩码数据 | 已探索区域 | |||
69 | equipmentCache | longtext | NULL | NULL | 角色装备信息的JSON格式缓存 | 装备缓存 | |||
70 | ammoId | int UNSIGNED | 0 | NOT NULL | 当前使用的弹药物品ID | 弹药ID | NOT NULL | 弹药ID | |
71 | knownTitles | longtext | NULL | NULL | 玩家已解锁称号的二进制掩码数据 | 已知称号 | |||
72 | actionBars | tinyint UNSIGNED | 0 | NOT NULL | 动作条状态位掩码(0-7表示各动作条是否解锁) | 动作条设置 | |||
73 | grantableLevels | tinyint UNSIGNED | 0 | NOT NULL | 可授予其他角色的等级点数(通过招募系统) | 可授予等级 | |||
74 | order | tinyint | NULL | NULL | 角色在角色选择界面的排序位置 | 排序 | |||
75 | creation_date | timestamp | CURRENT_TIMESTAMP | NOT NULL | 角色创建时间戳,格式为YYYY-MM-DD HH:MM:SS | 创建时间 | |||
76 | deleteInfos_Account | int UNSIGNED | NULL | NULL | 删除角色时关联的账号ID,用于恢复功能 | 删除账号信息 | |||
77 | deleteInfos_Name | varchar(12) | NULL | NULL | 删除角色时保存的原始角色名,用于恢复功能 | 删除角色名 | |||
78 | deleteDate | int UNSIGNED | NULL | NULL | 角色删除时间戳(Unix时间戳格式) | 删除时间 | |||
79 | innTriggerId | int UNSIGNED | 0 | NOT NULL | 角色设置的旅店(休息区)触发器ID | 旅店触发器ID | |||
80 | extraBonusTalentCount | int | 0 | NOT NULL | 通过特殊活动或成就获得的额外天赋点数 | 额外天赋点数 | |||
种族ID对照表:
职业ID对照表:
power1-7字段说明:
playerFlags常见值:
at_login标志:
-- 查询指定账号的所有角色 SELECT guid, name, race, class, level FROM characters WHERE account = 1; -- 查询等级最高的10个角色 SELECT name, level, race, class FROM characters ORDER BY level DESC LIMIT 10; -- 查询在线角色(最近1小时内登录) SELECT name, level FROM characters WHERE logout_time > UNIX_TIMESTAMP() - 3600; -- 统计各职业角色数量 SELECT class, COUNT(*) as count FROM characters GROUP BY class;