📖 表说明

事件脚本表定义了事件触发时执行的脚本命令。这个表用于实现事件触发后的各种效果,例如:传送、召唤生物、播放声音、给予物品等。

数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。

📊 表结构

字段名 数据类型 描述
idint UNSIGNED事件ID
delayint UNSIGNED延迟时间(毫秒)
commandint UNSIGNED脚本命令类型
datalongint UNSIGNED数据参数1
datalong2int UNSIGNED数据参数2
dataintint数据参数3
xfloatX坐标
yfloatY坐标
zfloatZ坐标
ofloat朝向角度

💡 使用建议

建议:

  • delay字段控制脚本执行的延迟时间
  • command字段定义脚本命令类型
  • x/y/z/o字段用于传送或召唤坐标

🔍 重要字段详解

command (脚本命令类型)

定义事件触发后执行的命令类型,是脚本表最核心的字段。常用命令类型:

  • 0 TALK - NPC说话/喊话
  • 1 EMOTE - NPC表情动作
  • 2 FORCE_FIELD - 创建力场
  • 3 TELEPORT_ENTITY - 传送实体
  • 4 CAST_SPELL - 施放法术
  • 5 DESPAWN_SELF - 自身消失

datalong、datalong2、dataint三个参数的含义根据command不同而变化。

delay (延迟时间)

控制脚本命令执行的延迟时间,单位为毫秒。通过设定不同的delay值可以实现脚本的顺序执行:

  • 0 - 立即执行
  • 5000 - 5秒后执行
  • 10000 - 10秒后执行

多行脚本按相同id分组,通过delay值控制命令之间的执行顺序。

x / y / z / o (坐标与朝向)

用于传送类命令的目标坐标和朝向角度。x、y、z为三维坐标,o为朝向(弧度制,范围0~2π)。

注意:非传送类命令中这些字段可能不使用或具有特殊含义。

💡 实战案例

查询某个事件的所有脚本命令:
SELECT id, delay, command, datalong, datalong2, dataint, x, y, z, o
FROM event_scripts
WHERE id = 1000
ORDER BY delay;
为事件添加一个5秒延迟后说话的命令:
INSERT INTO event_scripts (id, delay, command, datalong, datalong2, dataint, x, y, z, o)
VALUES (1000, 5000, 0, 0, 0, 2000000100, 0, 0, 0, 0);

❓ 常见问题

Q: 如何让多个脚本命令按顺序执行?

使用相同的id和递增的delay值。系统会按delay从小到大依次执行同一id下的所有命令。例如delay=0、delay=3000、delay=6000,分别表示立即执行、3秒后执行、6秒后执行。

Q: datalong和dataint有什么区别?

datalong和datalong2是无符号整数(INT UNSIGNED),dataint是有符号整数(INT)。对于需要存储负值的场景(如某些特殊标识),应使用dataint字段。具体使用哪个字段取决于command类型的参数需求。