表概述

areatrigger_scripts表将区域触发器(AreaTrigger ID)与C++脚本类关联。当玩家进入触发器范围时,对应的脚本会被激活。与areatrigger_teleport的区别在于:本表用于脚本逻辑处理(如触发对话、Boss战、过场动画),而非单纯传送。

主键为 entry,对应AreaTrigger.dbc中的ID。ScriptName为C++ AreaTriggerScript类的子类名。

表结构

字段名数据类型默认值说明
entryINTNOT NULL区域触发器ID(主键)
ScriptNameCHAR(64)NOT NULLC++脚本类名

重要字段详解

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++代码实现,用于复杂逻辑场景。