characters表 - 角色基础信息表

角色库中最核心的表格,存储每个玩家角色的完整信息和属性数据

表格概述

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对照表:

  • 1 = 人类 (Human)
  • 2 = 兽人 (Orc)
  • 3 = 矮人 (Dwarf)
  • 4 = 暗夜精灵 (Night Elf)
  • 5 = 亡灵 (Undead)
  • 6 = 牛头人 (Tauren)
  • 7 = 侏儒 (Gnome)
  • 8 = 巨魔 (Troll)
  • 10 = 血精灵 (Blood Elf)
  • 11 = 德莱尼 (Draenei)

职业ID对照表:

  • 1 = 战士 (Warrior)
  • 2 = 圣骑士 (Paladin)
  • 3 = 猎人 (Hunter)
  • 4 = 盗贼 (Rogue)
  • 5 = 牧师 (Priest)
  • 6 = 死亡骑士 (Death Knight)
  • 7 = 萨满祭司 (Shaman)
  • 8 = 法师 (Mage)
  • 9 = 术士 (Warlock)
  • 11 = 德鲁伊 (Druid)

⚡ 能量系统详解

power1-7字段说明:

  • power1: 法力值(法师、牧师、术士、萨满、德鲁伊、圣骑士)
  • power2: 怒气值(战士、德鲁伊熊形态)
  • power3: 集中值(猎人)
  • power4: 能量值(盗贼、德鲁伊猫形态)
  • power5: 符文能量(死亡骑士)
  • power6: 符文冷却(死亡骑士)
  • power7: 灵魂碎片(术士)

🏃 状态标志详解

playerFlags常见值:

  • 0x00000001 = 群组领袖
  • 0x00000002 = AFK(暂离)
  • 0x00000004 = DND(请勿打扰)
  • 0x00000008 = 幽灵状态
  • 0x00000010 = 休息状态
  • 0x00000020 = 免费复活
  • 0x00000040 = 免费天赋重置
  • 0x00000080 = 无PVP计时器

at_login标志:

  • 0x01 = 重置法术
  • 0x02 = 重置天赋
  • 0x04 = 自定义
  • 0x08 = 重置宠物天赋
  • 0x10 = 首次登录
  • 0x20 = 更改种族
  • 0x40 = 更改阵营
  • 0x80 = 更改外观

使用注意事项

⚠️ 重要提醒

  • 数据完整性 - 修改角色数据前务必备份,错误修改可能导致角色无法登录
  • 关联关系 - 删除角色时需要同时清理相关的物品、任务、成就等数据
  • 坐标验证 - 修改位置坐标时要确保坐标有效,避免角色卡在无效位置
  • 等级限制 - 等级修改要符合服务器设置的最大等级限制

常用查询示例

💡 SQL查询示例

-- 查询指定账号的所有角色
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;