📖 表说明
事件脚本表定义了事件触发时执行的脚本命令。这个表用于实现事件触发后的各种效果,例如:传送、召唤生物、播放声音、给予物品等。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int UNSIGNED | 事件ID |
| delay | int UNSIGNED | 延迟时间(毫秒) |
| command | int UNSIGNED | 脚本命令类型 |
| datalong | int UNSIGNED | 数据参数1 |
| datalong2 | int UNSIGNED | 数据参数2 |
| dataint | int | 数据参数3 |
| x | float | X坐标 |
| y | float | Y坐标 |
| z | float | Z坐标 |
| o | float | 朝向角度 |
💡 使用建议
建议:
- 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类型的参数需求。