📖 character_entry_point 表
角色加入点位表,记录角色被召唤或通过集合石传送时的加入位置信息。
📋 表概述
character_entry_point 表用于记录角色的"返回位置",当玩家被组队召唤、使用集合石传送或其他方式被传送到某个位置后,可以通过某些机制返回原来的位置。
- 主键:(guid)
- 引擎:InnoDB
- 关联表:characters(guid)
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
guid | int UNSIGNED | 0 | 角色全局唯一标识 |
joinX | float | 0 | 加入点的 X 坐标 |
joinY | float | 0 | 加入点的 Y 坐标 |
joinZ | float | 0 | 加入点的 Z 坐标 |
joinO | float | 0 | 加入点的朝向(弧度) |
joinMapId | int UNSIGNED | 0 | 加入点的地图ID |
taxiPath0 | int UNSIGNED | 0 | 飞行路径ID 0(返回时使用的飞行路线) |
taxiPath1 | int UNSIGNED | 0 | 飞行路径ID 1(备用) |
mountSpell | int UNSIGNED | 0 | 返回时自动使用的坐骑法术ID |
🔍 重要字段详解
joinX / joinY / joinZ / joinO — 加入位置坐标
记录角色被传送前所在的位置。这四个值构成完整的空间位置信息:XYZ 为三维坐标,O 为身体朝向(弧度,0 指向北,π 指向南)。通过这些数据可以精确还原角色的初始位置。
joinMapId — 加入点地图
记录加入点所在的地图 ID,对应 Map.dbc 中的地图编号。例如 0=东部王国,1=卡利姆多,530=外域。确保返回时角色被传送到正确的地图。
taxiPath0 / taxiPath1 / mountSpell — 返回方式
这三个字段定义了角色如何返回原位置:taxiPath0/1 存储飞行路线 ID(自动飞行回去),mountSpell 存储坐骑法术 ID(骑坐骑回去)。它们不是同时使用的,而是根据场景选择最合适的返回方式。
💡 SQL查询示例
查询某个角色的加入点位置信息
SELECT guid, joinMapId, joinX, joinY, joinZ, joinO,
taxiPath0, taxiPath1, mountSpell
FROM character_entry_point
WHERE guid = 12345;
清除所有过期或无效的加入点数据
DELETE FROM character_entry_point
WHERE joinMapId = 0 AND joinX = 0 AND joinY = 0 AND joinZ = 0;
❓ 常见问题
Q: 这个表的数据何时写入?
当玩家通过组队召唤、集合石等方式被传送到新位置时,系统会先记录当前的位置到该表,然后执行传送。这样玩家可以通过特定机制返回。
Q: joinO 为什么用弧度而不是角度?
这是 WoW 服务端的标准存储格式。1 弧度 ≈ 57.3 度。0=北,π/2≈1.57=东,π≈3.14=南,3π/2≈4.71=西。