character_homebind - 角色炉石绑定位置
基于 AzerothCore Characters 数据库 · 角色炉石传送绑定位置表
📋 表概述
character_homebind 表存储每个角色的炉石绑定位置。当玩家与旅店老板对话并选择"将这里设为我的家"后,该旅店的位置信息会被记录在此表中。使用炉石(Hearthstone)时将玩家传送回此位置。
- 炉石传送目标
- 旅店绑定管理
- 复活点参考位置
- 地图/坐标精确记录
主键为 guid,每个角色只有一条炉石绑定记录。mapId 和 zoneId 记录所在大陆和区域ID,posX/Y/Z 记录精确坐标。属于 Player System 模块。
📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | int UNSIGNED | 0 | 角色全局唯一ID(主键) |
| mapId | smallint UNSIGNED | 0 | 绑定地图ID(0=东部王国,1=卡利姆多,530=外域,571=诺森德) |
| zoneId | smallint UNSIGNED | 0 | 绑定区域ID |
| posX | float | 0 | 炉石目标X坐标 |
| posY | float | 0 | 炉石目标Y坐标 |
| posZ | float | 0 | 炉石目标Z坐标 |
🔍 重要字段详解
🗺️ mapId - 绑定地图
详细说明:SMALLINT UNSIGNED类型,记录炉石绑定所在的大陆/地图。
- 0 = 东部王国(暴风城、铁炉堡等)
- 1 = 卡利姆多(奥格瑞玛、雷霆崖等)
- 530 = 外域(沙塔斯城等)
- 571 = 诺森德(达拉然等)
📍 zoneId - 区域标识
详细说明:SMALLINT UNSIGNED类型,更精细的区域ID。
- 比 mapId 更具体,对应 AreaTable.dbc 中的区域ID
- 例如暴风城 zoneId=1519,奥格瑞玛 zoneId=1637
- 用于区域判断(如邮件系统判定发送区域)
🎯 posX/Y/Z - 精确坐标
详细说明:FLOAT类型三维坐标,炉石使用后传送到此精确位置。
- 通常为旅店门口或内部的安全坐标
- 坐标为有效坐标,否则可能导致传送后掉线
- 修改坐标需确保 mapId 匹配
💡 修改炉石位置:将角色传送到奥格瑞玛旅店 →
UPDATE character_homebind SET mapId=1, zoneId=1637, posX=1629.36, posY=-4373.39, posZ=31.26 WHERE guid=1;💡 SQL示例
示例1:查询角色的炉石绑定位置
SELECT
c.name, c.race, c.class,
hb.mapId, hb.zoneId, hb.posX, hb.posY, hb.posZ
FROM character_homebind hb
JOIN characters c ON c.guid = hb.guid
WHERE hb.guid = 100;示例2:批量修改指定地图所有角色的炉石位置
-- 将所有达拉然绑定的角色改为沙塔斯
UPDATE character_homebind
SET mapId = 530, zoneId = 3703,
posX = -1838.16, posY = 5301.79, posZ = -12.43
WHERE mapId = 571;❓ 常见问题
Q1: 新创建的角色炉石绑定在哪里?
取决于角色的种族。人类绑定在艾尔文森林北郡修道院,兽人绑定在杜隆塔尔试炼谷,系统在创建角色时自动设置初始绑定位置。
Q2: 炉石使用后传送到空中/地下怎么办?
说明坐标不合法。检查 mapId 和 posX/Y/Z 是否匹配。可手动修改为对应主城的安全坐标或删除后让角色重新绑定。