文件概述

AreaTrigger.dbc 定义了游戏世界中无形的触发区域。当玩家进入这些区域时,客户端检测并发送 AREA_TRIGGER 数据包给服务端,服务端根据触发器ID执行相应逻辑:如进入副本传送、触发剧情、切换位面等。支持球形和矩形两种触发器形状。

列结构

列号字段类型详细说明
1编号整数区域触发器唯一标识符
2指向的地图编号整数触发器所在的地图编号,参考 Map.dbc
3X浮点数区域 X 坐标(触发器中心位置)
4Y浮点数区域 Y 坐标
5Z浮点数区域 Z 坐标
6半径浮点数球形触发半径。以 XYZ 坐标为中心点的码数大小。大于0时使用球形,忽略盒子参数
7盒子长度 (box_x)浮点数矩形触发器的长度,通常为0但不总是如此
8盒子宽度 (box_y)浮点数矩形触发器的宽度,通常为0但不总是如此
9盒子高度 (box_z)浮点数矩形触发器的高度,通常为0但不总是如此
10盒子朝向 (box_orientation)浮点数矩形触发器的旋转朝向,通常为0但不总是如此

重要字段详解

触发器形状:球形 vs 矩形

AreaTrigger 支持两种形状,通过半径和盒子参数区分:

形状判别条件参数说明
球形 (Sphere)半径 > 0以 XYZ 坐标为中心,半径为码数大小的球体区域。盒子参数被忽略
矩形 (Box)半径 = 0以盒子长度/宽度/高度定义长方体区域,盒子朝向定义旋转角度

注意:盒子参数通常为0是因为大多数触发器使用球形,但在门廊、走廊等场景中矩形触发器更合适。

常见应用场景
  • 副本入口:玩家走入副本传送门时触发传送
  • Boss战区域:进入Boss房间触发Boss激活
  • 任务区域:到达指定位置触发任务进度更新
  • 传送门:走进传送门触发传送效果
  • 世界事件:进入触发区域开始特定剧情事件
客户端-服务端交互机制

AreaTrigger 是客户端主动检测并通知服务端的机制。工作流程如下:

  1. 客户端持续检测玩家所在位置
  2. 玩家进入 AreaTrigger 范围时,客户端发送 AREA_TRIGGER 数据包给服务端
  3. 服务端收到数据包后,根据触发器编号执行对应的处理逻辑
  4. 具体行为(传送、剧情、战利品等)由服务端的 C++ 代码或 Lua 脚本决定

使用技巧