areatrigger_scripts 表
areatrigger_scripts表将区域触发器绑定到C++脚本,实现触发器激活时的自定义逻辑。
表概述
areatrigger_scripts表将区域触发器(AreaTrigger ID)与C++脚本类关联。当玩家进入触发器范围时,对应的脚本会被激活。与areatrigger_teleport的区别在于:本表用于脚本逻辑处理(如触发对话、Boss战、过场动画),而非单纯传送。
主键为 entry,对应AreaTrigger.dbc中的ID。ScriptName为C++ AreaTriggerScript类的子类名。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| entry | INT | NOT NULL | 区域触发器ID(主键) |
| ScriptName | CHAR(64) | NOT NULL | C++脚本类名 |
重要字段详解
ScriptName (C++脚本)
必须与源码中AreaTriggerScript子类的类名完全一致(区分大小写)。脚本定义玩家进入/离开触发器时的行为逻辑。
常见脚本如副本入口触发Boss战开始、任务剧情触发等。
实战案例
绑定触发器到Boss战脚本
INSERT INTO areatrigger_scripts (entry, ScriptName)
VALUES (3546, 'at_malygos')
ON DUPLICATE KEY UPDATE ScriptName='at_malygos';
-- 触发器3546(玛里苟斯战斗区域),绑定at_malygos脚本
查询所有绑定了脚本的触发器
SELECT entry, ScriptName
FROM areatrigger_scripts
WHERE ScriptName != ''
ORDER BY entry;
常见问题
Q: 触发器不生效?
A: 检查ScriptName是否与C++代码中的类名完全一致(大小写敏感),确认对应源码已编译进服务器。使用服务器日志验证脚本是否被加载。
Q: 与areatrigger_teleport有什么区别?
A: areatrigger_teleport纯数据驱动,只需配置目标坐标。areatrigger_scripts需要C++代码实现,用于复杂逻辑场景。