playercreateinfo 表
playercreateinfo表定义新角色创建时的出生信息,包括种族-职业组合的出生地图、坐标和朝向。
表概述
playercreateinfo表是角色创建系统的核心表,定义了每种种族-职业组合的出生信息。当玩家创建新角色时,系统查询此表获取该角色应该从哪个地图、哪个坐标出生。
主键为 (race, class),每条记录对应一种种族和职业组合的出生配置。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| race | TINYINT UNSIGNED | 0 | 种族ID |
| class | TINYINT UNSIGNED | 0 | 职业ID |
| map | SMALLINT UNSIGNED | 0 | 出生地图ID |
| zone | INT UNSIGNED | 0 | 出生区域ID |
| position_x | FLOAT | 0 | 出生点X坐标 |
| position_y | FLOAT | 0 | 出生点Y坐标 |
| position_z | FLOAT | 0 | 出生点Z坐标(高度) |
| orientation | FLOAT | 0 | 出生朝向角度 |
重要字段详解
race / class (种族-职业组合)
联合主键,定义每种有效的种族-职业组合的出生信息。不同种族有不同的出生区域:
- 人类(race=1) → 出生在艾尔文森林(map=0, zone=12)
- 兽人(race=2) → 出生在杜隆塔尔(map=1, zone=14)
- 矮人(race=3) → 出生在丹莫罗(map=0, zone=1)
- 暗夜精灵(race=4) → 出生在泰达希尔(map=1, zone=141)
- 亡灵(race=5) → 出生在提瑞斯法林地(map=0, zone=85)
- 牛头人(race=6) → 出生在莫高雷(map=1, zone=215)
- 侏儒(race=7) → 出生在丹莫罗(map=0, zone=1)
- 巨魔(race=8) → 出生在杜隆塔尔(map=1, zone=14)
- 血精灵(race=10) → 出生在永歌森林(map=530, zone=3430)
- 德莱尼(race=11) → 出生在秘蓝岛(map=530, zone=3524)
zone (出生区域)
指定角色出生的具体区域编号。zone不同于map,一个map(如东部王国=0)包含多个zone(如艾尔文森林=12, 丹莫罗=1)。
position_x/y/z & orientation (出生位置)
精确定义角色创建后在世界中出现的坐标位置和朝向。每个种族-职业组合的出生点通常对应该种族的新手村区域。
实战案例
查询所有种族-职业组合的出生信息:
SELECT race, class, map, zone, position_x, position_y, position_z
FROM playercreateinfo
ORDER BY race, class;
查询联盟阵营所有角色的出生信息:
SELECT race, class, map, zone
FROM playercreateinfo
WHERE race IN (1, 3, 4, 7, 11)
ORDER BY race, class;
修改人类战士的出生位置:
UPDATE playercreateinfo
SET position_x = -8949.95, position_y = -132.93, position_z = 83.53, orientation = 0
WHERE race = 1 AND class = 1;
常见问题
Q: 创建角色时无法选择某职业,如何排查?
检查playercreateinfo表中是否存在该(race, class)组合。如果缺少记录,该种族将无法创建该职业的角色。
Q: 如何修改所有角色的出生位置?
更新playercreateinfo表中对应race-class组合的坐标值即可。配合playercreateinfo_item/action/skills表可以完全自定义角色创建配置。