📋 表概述

character_homebind 表存储每个角色的炉石绑定位置。当玩家与旅店老板对话并选择"将这里设为我的家"后,该旅店的位置信息会被记录在此表中。使用炉石(Hearthstone)时将玩家传送回此位置。

主键为 guid,每个角色只有一条炉石绑定记录。mapId 和 zoneId 记录所在大陆和区域ID,posX/Y/Z 记录精确坐标。属于 Player System 模块。

📊 表结构

字段名类型默认值说明
guidint UNSIGNED0角色全局唯一ID(主键)
mapIdsmallint UNSIGNED0绑定地图ID(0=东部王国,1=卡利姆多,530=外域,571=诺森德)
zoneIdsmallint UNSIGNED0绑定区域ID
posXfloat0炉石目标X坐标
posYfloat0炉石目标Y坐标
posZfloat0炉石目标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 是否匹配。可手动修改为对应主城的安全坐标或删除后让角色重新绑定。