📖 表说明
法术目标位置表定义了法术传送目标的具体坐标。这个表主要用于传送法术,定义传送的目标地图、坐标和朝向。例如:法师的传送门、术士的召唤仪式、死亡骑士的死亡之门等。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 属性 | 键 | 默认值 | 描述 |
|---|---|---|---|---|---|
| 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)指定坐标。
🔗 相关表格
- spell_dbc - 法术数据表
- spell_scripts - 法术脚本表