📖 表说明

法术目标位置表定义了法术传送目标的具体坐标。这个表主要用于传送法术,定义传送的目标地图、坐标和朝向。例如:法师的传送门、术士的召唤仪式、死亡骑士的死亡之门等。

数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。

官方文档: AzerothCore Wiki - spell_target_position

📊 表结构

字段名 数据类型 属性 默认值 描述
ID int UNSIGNED 不为空 主键 0 法术ID
EffectIndex tinyint UNSIGNED 不为空 主键 0 效果索引(0-2)
MapID smallint UNSIGNED 不为空 0 目标地图ID
PositionX float 不为空 0 X坐标
PositionY float 不为空 0 Y坐标
PositionZ float 不为空 0 Z坐标
Orientation float 不为空 0 朝向角度
VerifiedBuild int 可空 NULL 验证的客户端版本

主键: ID + EffectIndex(联合主键)

表注释: Spell System

🔑 核心字段详解

🆔 ID - 法术ID

详细说明:传送法术的ID,对应Spell.dbc文件中的法术记录。 取值范围:对应Spell.dbc中的法术ID
  • 联合主键的一部分
  • 对应传送法术的ID
  • 例如:法师传送门、术士召唤等
  • 与EffectIndex组合确定传送目标

示例:

  • ID=3561 - 传送:暴风城
  • ID=3562 - 传送:铁炉堡

📍 EffectIndex - 效果索引

详细说明:法术效果的索引,因为一个法术可能有多个效果。 取值范围:0-2(每个法术最多3个效果)
  • 联合主键的一部分
  • 值为0、1或2
  • 对应Spell.dbc中的Effect_1、Effect_2、Effect_3
  • 大多数传送法术使用EffectIndex=0

示例:

  • EffectIndex=0 - 第一个效果
  • EffectIndex=1 - 第二个效果

🗺️ MapID - 目标地图ID

详细说明:传送目标地图的ID。 取值范围:对应Map.dbc中的地图ID
  • 定义传送的目标地图
  • 对应Map.dbc中的地图记录
  • 例如:0=东部王国,1=卡利姆多
  • 副本地图使用特定的ID

示例:

  • MapID=0 - 东部王国
  • MapID=1 - 卡利姆多
  • MapID=530 - 外域

📐 PositionX/Y/Z - 坐标

详细说明:传送目标的具体坐标位置。 取值范围:浮点数,取决于地图大小
  • PositionX:X轴坐标(东西方向)
  • PositionY:Y轴坐标(南北方向)
  • PositionZ:Z轴坐标(高度)
  • 使用游戏内坐标系

示例:

  • 暴风城坐标:X=-8842.09, Y=626.358, Z=94.7866
  • 铁炉堡坐标:X=-4924.07, Y=-952.495, Z=501.653

🧭 Orientation - 朝向角度

详细说明:传送后角色的朝向角度。 取值范围:0-2π(弧度)
  • 定义传送后角色面对的方向
  • 使用弧度制,不是角度制
  • 0=正北,π/2=正东,π=正南,3π/2=正西
  • 通过坐标计算得出

示例:

  • Orientation=0 - 面向正北
  • Orientation=1.57 - 面向正东(π/2)

💡 实际案例

传送 传送:暴风城

法师传送门法术,传送到暴风城

-- 传送:暴风城 DELETE FROM spell_target_position WHERE ID = 3561; INSERT INTO spell_target_position VALUES (3561, 0, 0, -8842.09, 626.358, 94.7866, 1.05, NULL);

效果: 法术3561传送到暴风城(地图0)指定坐标。

传送 传送:铁炉堡

法师传送门法术,传送到铁炉堡

-- 传送:铁炉堡 DELETE FROM spell_target_position WHERE ID = 3562; INSERT INTO spell_target_position VALUES (3562, 0, 0, -4924.07, -952.495, 501.653, 5.77, NULL);

效果: 法术3562传送到铁炉堡(地图0)指定坐标。

🔗 相关表格