character_stats 角色属性表
存储角色的基础属性和战斗属性数据
官方文档来源表概述
character_stats 表是 Characters 数据库中的核心表之一,用于存储每个角色的所有属性数值,包括基础属性、战斗属性和各种百分比属性。
该表与 characters 表一对一关联,每个角色只有一条属性记录。当角色升级、更换装备、学习天赋或受到各种增益效果影响时,服务器的属性重算系统会自动更新此表中的数据。
character_stats 是服务器端属性的"缓存表",由 StatsSystem 自动维护,不建议手动修改其值。该表通过 guid 作为主键与 characters 表一对一连动,guid 为角色的全局唯一标识符。
表结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| guid | INT UNSIGNED | 角色全局唯一标识符(主键) |
| maxhealth | INT UNSIGNED | 最大生命值 |
| maxpower1 | INT UNSIGNED | 最大法力值 |
| maxpower2 | INT UNSIGNED | 最大怒气值 |
| maxpower3 | INT UNSIGNED | 最大能量值 |
| maxpower4 | INT UNSIGNED | 最大符能值(死亡骑士) |
| maxpower5 | INT UNSIGNED | 最大符文能量 |
| maxpower6 | INT UNSIGNED | 最大集中值(猎人) |
| maxpower7 | INT UNSIGNED | 最大灵力值(牧师暗影) |
| strength | INT UNSIGNED | 力量值 |
| agility | INT UNSIGNED | 敏捷值 |
| stamina | INT UNSIGNED | 耐力值 |
| intellect | INT UNSIGNED | 智力值 |
| spirit | INT UNSIGNED | 精神值 |
| armor | INT UNSIGNED | 护甲值 |
| resHoly | INT UNSIGNED | 神圣抗性 |
| resFire | INT UNSIGNED | 火焰抗性 |
| resNature | INT UNSIGNED | 自然抗性 |
| resFrost | INT UNSIGNED | 冰霜抗性 |
| resShadow | INT UNSIGNED | 暗影抗性 |
| resArcane | INT UNSIGNED | 奥术抗性 |
| blockPct | FLOAT | 格挡几率(百分比) |
| dodgePct | FLOAT | 闪避几率(百分比) |
| parryPct | FLOAT | 招架几率(百分比) |
| critPct | FLOAT | 近战暴击几率(百分比) |
| rangedCritPct | FLOAT | 远程暴击几率(百分比) |
| spellCritPct | FLOAT | 法术暴击几率(百分比) |
| attackPower | INT UNSIGNED | 近战攻击强度 |
| rangedAttackPower | INT UNSIGNED | 远程攻击强度 |
| spellPower | INT UNSIGNED | 法术强度 |
| resilience | INT UNSIGNED | 韧性等级 |
核心字段说明
基础属性(五维)
strength(力量)、agility(敏捷)、stamina(耐力)、intellect(智力)、spirit(精神) 构成了角色的五大基础属性。
| 属性 | 主要受益职业 | 主要加成效果 |
|---|---|---|
| 力量 | 战士、圣骑士、死亡骑士 | 近战攻击强度(每点力量+2AP) |
| 敏捷 | 猎人、盗贼、猫德 | 暴击几率、护甲值、攻击强度(猎人/盗贼) |
| 耐力 | 所有职业 | 每点耐力+10最大生命值 |
| 智力 | 法师、术士、牧师 | 法术暴击、最大法力值 |
| 精神 | 治疗职业 | 非战斗状态生命/法力回复速度 |
Power 值说明
maxpower1~7 对应不同职业的能量类型。WotLK 3.3.5 中能量类型定义:
| 字段 | 能量类型 | 使用职业 |
|---|---|---|
| maxpower1 | 法力值 (Mana) | 法师、术士、牧师、德鲁伊、圣骑士、萨满、猎人 |
| maxpower2 | 怒气值 (Rage) | 战士、熊德 |
| maxpower3 | 能量值 (Energy) | 盗贼、猫德 |
| maxpower4 | 符能 (Runic Power) | 死亡骑士 |
| maxpower6 | 集中值 (Focus) | 猎人 |
抗性系统
六种魔法抗性:resHoly(神圣)、resFire(火焰)、resNature(自然)、resFrost(冰霜)、resShadow(暗影)、resArcane(奥术)。通过装备、天赋和增益获得,用于减免对应类型的魔法伤害。
实际案例
查询角色的基础属性
-- 查询指定角色的力量、敏捷、耐力、智力、精神和生命值
SELECT c.name, s.strength, s.agility, s.stamina, s.intellect, s.spirit, s.maxhealth
FROM character_stats s
JOIN characters c ON c.guid = s.guid
WHERE c.name = '玩家名字';查看角色完整战斗属性
-- 查询角色的所有战斗百分比和攻击数据
SELECT c.name,
s.attackPower AS 近战攻强,
s.spellPower AS 法术强度,
CONCAT(ROUND(s.critPct, 2), '%') AS 近战暴击,
CONCAT(ROUND(s.spellCritPct, 2), '%') AS 法术暴击,
CONCAT(ROUND(s.dodgePct, 2), '%') AS 闪避,
CONCAT(ROUND(s.parryPct, 2), '%') AS 招架,
s.resilience AS 韧性
FROM character_stats s
JOIN characters c ON c.guid = s.guid
WHERE c.guid = 1;找出属性异常的玩家
-- 查找生命值超过100万的异常角色(排查作弊)
SELECT c.name, c.level, s.maxhealth, s.strength, s.agility
FROM character_stats s
JOIN characters c ON c.guid = s.guid
WHERE s.maxhealth > 1000000
ORDER BY s.maxhealth DESC;常见问题
Q1: 手动修改 character_stats 表中的属性值有效吗?
不推荐。character_stats 是系统自动维护的缓存属性表,由 StatsSystem 定期重新计算。手动修改的值会在角色登录、升级、更换装备时被服务器自动覆盖。如果需要临时修改属性,应通过 GM 命令或光环效果(aura)实现。
Q2: maxpower1~7 中哪些字段对具体角色有意义?
取决于角色的职业。例如法师只使用 maxpower1(法力值),其他 maxpower 字段值为 0;盗贼使用 maxpower3(能量值)但 maxpower1 也为 0。但某些职业会同时使用多种能量,如德鲁伊在熊形态使用怒气(maxpower2),猫形态使用能量(maxpower3),人形态使用法力(maxpower1)。
Q3: 如何重置某个角色的所有属性?
最佳方式是让角色重新登录。服务器在角色登录时会自动调用 StatsSystem 重新计算所有属性并写入 character_stats 表。如果需要强制重置,可以使用
DELETE FROM character_stats WHERE guid = [角色GUID] 然后让角色重新登录。