areatrigger_teleport - 区域触发传送表

区域触发传送表存储了游戏中所有区域触发传送点的信息。当玩家进入特定区域(如副本入口、传送门等)时,会触发传送到指定位置。

表结构

字段名 类型 属性 描述
ID mediumint(8) unsigned 主键,不为空 区域触发器ID,对应AreaTrigger.dbc的ID
Name text 区域触发器名称(仅供参考,不影响游戏)
target_map smallint(5) unsigned 不为空 目标地图ID
target_position_x float 不为空 目标X坐标
target_position_y float 不为空 目标Y坐标
target_position_z float 不为空 目标Z坐标
target_orientation float 不为空 目标朝向角度(0-6.28弧度)
VerifiedBuild smallint(5) 不为空,默认0 验证版本

使用示例

添加新的传送点

以下SQL语句将添加一个从暴风城到铁炉堡的传送点:

INSERT INTO areatrigger_teleport (ID, Name, target_map, target_position_x, target_position_y, target_position_z, target_orientation)
VALUES (5000, '暴风城到铁炉堡传送点', 0, -4918.88, -940.406, 501.564, 5.42);

注意: 添加新的传送点后,还需要在游戏世界中创建对应的区域触发器。这通常需要使用地图编辑工具或通过脚本实现。

修改现有传送点

以下SQL语句将修改ID为45的传送点(通常是死亡矿井的入口)的目标位置:

UPDATE areatrigger_teleport
SET target_position_x = -16.4, target_position_y = -383.07, target_position_z = 61.78, target_orientation = 1.86
WHERE ID = 45;

删除传送点

以下SQL语句将删除ID为45的传送点:

DELETE FROM areatrigger_teleport
WHERE ID = 45;

警告: 删除官方传送点可能会导致玩家无法正常进入某些区域或副本。请谨慎操作。

常见问题

如何查找特定区域的传送点?

使用以下SQL语句查询特定地图的所有传送点:

SELECT * FROM areatrigger_teleport
WHERE target_map = 地图ID;

如何查找特定副本的入口传送点?

使用以下SQL语句查询特定副本的入口传送点:

SELECT * FROM areatrigger_teleport
WHERE target_map = 副本地图ID;

修改传送点后需要重启服务器吗?

不需要完全重启服务器,但需要重新加载区域触发器数据:

.reload areatrigger_teleport

如何限制特定等级的玩家使用传送点?

区域触发传送表本身不支持等级限制。如果需要添加等级限制,可以:

  1. 使用脚本来检查玩家等级,并决定是否允许传送
  2. 使用副本入口的等级限制(在instance_template表中设置)
  3. 使用区域触发器脚本(在areatrigger_scripts表中设置)

如何创建一个需要钥匙才能使用的传送点?

区域触发传送表本身不支持钥匙限制。如果需要添加钥匙限制,可以:

  1. 使用脚本来检查玩家是否有特定物品,并决定是否允许传送
  2. 使用副本入口的钥匙限制(在instance_template表中设置)
  3. 使用区域触发器脚本(在areatrigger_scripts表中设置)

为什么我添加的传送点不起作用?

可能的原因包括:

提示: 可以使用以下命令在游戏中测试传送:

.go xyz 目标地图ID 目标X坐标 目标Y坐标 目标Z坐标