法术目标位置表定义了特定法术的固定目标位置。某些法术需要传送玩家到特定的坐标位置,或者在特定位置产生效果,这个表提供了这些法术所需的精确坐标信息。
字段名 | 类型 | 描述 |
---|---|---|
id | mediumint unsigned | 法术ID (主键) |
详细说明:指定需要固定目标位置的法术ID。对应Spell.dbc文件中的法术记录。
适用法术类型:
常见示例:
|
||
target_map | smallint unsigned | 目标地图ID |
详细说明:指定法术目标位置所在的地图ID。对应Map.dbc文件中的地图记录。
取值范围:0 - 65535 (smallint unsigned的范围) 常见地图ID:
地图类型:
|
||
target_position_x | float | 目标X坐标 |
详细说明:指定目标位置的X轴坐标。X轴通常表示东西方向,数值越大越偏东。
坐标系统:
获取方法:
|
||
target_position_y | float | 目标Y坐标 |
详细说明:指定目标位置的Y轴坐标。Y轴通常表示南北方向,数值越大越偏北。
坐标特点:
|
||
target_position_z | float | 目标Z坐标 |
详细说明:指定目标位置的Z轴坐标。Z轴表示高度,数值越大位置越高。
高度考虑:
高度获取:
|
||
target_orientation | float | 目标朝向 |
详细说明:指定传送后玩家的朝向角度。朝向以弧度为单位,决定玩家传送后面向的方向。
取值范围:0.0 - 6.28318 (0到2π弧度,即0到360度) 方向对应:
角度转换:
设置建议:
|
-- 传送到暴风城
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(3561, 0, -8833.38, 628.628, 94.0066, 1.06465); -- 暴风城法师区
-- 传送到奥格瑞玛
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(3567, 1, 1676.21, -4315.29, 61.5243, 1.06465); -- 奥格瑞玛智慧谷
-- 传送到铁炉堡
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(3562, 0, -4981.25, -881.542, 501.66, 2.16421); -- 铁炉堡神秘区
-- 传送到死亡矿井
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(8690, 36, -14.8425, -385.248, 62.4561, 1.5708); -- 死亡矿井入口
-- 传送到怒焰裂谷
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(8676, 389, 1.71934, -0.161438, -2.78423, 0.0); -- 怒焰裂谷入口
-- 传送到监狱
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(8724, 34, 54.2331, 0.28, -18.4775, 1.5708); -- 监狱入口
-- 任务相关的特殊传送
INSERT INTO spell_target_position (id, target_map, target_position_x, target_position_y, target_position_z, target_orientation) VALUES
(12885, 0, -8949.95, -132.493, 83.5312, 0.0), -- 特殊任务传送点1
(23442, 1, 9947.52, 2482.73, 1316.21, 1.5708), -- 特殊任务传送点2
(34123, 530, -3864.92, -11643.7, -137.644, 2.16); -- 外域任务传送点
SELECT stp.*, s.SpellName
FROM spell_target_position stp
LEFT JOIN spell_template s ON stp.id = s.ID
ORDER BY stp.target_map, stp.id;
-- 查找东部王国的所有传送点
SELECT stp.*, s.SpellName
FROM spell_target_position stp
LEFT JOIN spell_template s ON stp.id = s.ID
WHERE stp.target_map = 0 -- 东部王国
ORDER BY stp.target_position_x, stp.target_position_y;
-- 计算两个传送点之间的距离
SELECT
stp1.id as spell1_id,
stp2.id as spell2_id,
SQRT(
POWER(stp1.target_position_x - stp2.target_position_x, 2) +
POWER(stp1.target_position_y - stp2.target_position_y, 2)
) as distance_2d
FROM spell_target_position stp1
CROSS JOIN spell_target_position stp2
WHERE stp1.target_map = stp2.target_map
AND stp1.id != stp2.id
AND stp1.id = 3561 -- 暴风城传送
ORDER BY distance_2d;