event_scripts表

概述

event_scripts表是AzerothCore中事件脚本系统的核心表格,用于定义各种游戏事件触发时执行的脚本动作。这个表格提供了一种灵活的方式来创建复杂的游戏事件序列,如任务事件、区域触发事件、物品使用事件等。

表格作用

表格结构

字段名 数据类型 默认值 说明
id INT UNSIGNED 0 事件ID
delay INT UNSIGNED 0 延迟时间(秒)
command INT UNSIGNED 0 脚本命令
datalong INT UNSIGNED 0 数据参数1
datalong2 INT UNSIGNED 0 数据参数2
dataint INT 0 整数参数
x FLOAT 0 X坐标
y FLOAT 0 Y坐标
z FLOAT 0 Z坐标
o FLOAT 0 朝向角度

字段详细说明

id (事件ID)

事件的唯一标识符,用于在其他表格中引用此事件脚本。相同ID的多个记录会按照delay字段的顺序依次执行。

delay (延迟时间)

脚本命令执行前的延迟时间,以秒为单位:

command (脚本命令)

要执行的脚本命令类型,定义了具体的动作:

命令值 命令名称 说明
0 SCRIPT_COMMAND_TALK 说话/聊天
1 SCRIPT_COMMAND_EMOTE 表情动作
2 SCRIPT_COMMAND_FIELD_SET 设置字段值
3 SCRIPT_COMMAND_MOVE_TO 移动到指定位置
4 SCRIPT_COMMAND_FLAG_SET 设置标志
5 SCRIPT_COMMAND_FLAG_REMOVE 移除标志
6 SCRIPT_COMMAND_TELEPORT_TO 传送到指定位置
7 SCRIPT_COMMAND_QUEST_EXPLORED 任务探索完成
8 SCRIPT_COMMAND_KILL_CREDIT 给予击杀奖励
9 SCRIPT_COMMAND_RESPAWN_GAMEOBJECT 重生游戏对象
10 SCRIPT_COMMAND_TEMP_SUMMON_CREATURE 临时召唤生物
11 SCRIPT_COMMAND_OPEN_DOOR 打开门
12 SCRIPT_COMMAND_CLOSE_DOOR 关闭门
13 SCRIPT_COMMAND_ACTIVATE_OBJECT 激活对象
14 SCRIPT_COMMAND_REMOVE_AURA 移除光环
15 SCRIPT_COMMAND_CAST_SPELL 施放法术
16 SCRIPT_COMMAND_PLAY_SOUND 播放声音
17 SCRIPT_COMMAND_CREATE_ITEM 创建物品
18 SCRIPT_COMMAND_DESPAWN_SELF 自我消失
19 SCRIPT_COMMAND_LOAD_PATH 加载路径
20 SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT 对单位调用脚本

参数字段说明

datalong / datalong2 (数据参数)

根据不同的命令类型,这些字段有不同的含义:

命令 datalong datalong2
TALK (0) 聊天类型 语言ID
EMOTE (1) 表情ID 未使用
FIELD_SET (2) 字段ID 字段值
MOVE_TO (3) 移动选项 移动时间(毫秒)
TELEPORT_TO (6) 地图ID 未使用
QUEST_EXPLORED (7) 任务ID 距离
KILL_CREDIT (8) 生物ID 未使用
TEMP_SUMMON_CREATURE (10) 生物ID 消失时间(毫秒)
CAST_SPELL (15) 法术ID 目标类型
PLAY_SOUND (16) 声音ID 播放标志
CREATE_ITEM (17) 物品ID 数量

dataint (整数参数)

通常用于存储文本ID、额外的数值参数或特殊标志。

x, y, z, o (坐标和朝向)

用于需要位置信息的命令,如移动、传送、召唤等。

使用示例

示例1:NPC对话序列

场景:NPC说话后做表情动作

INSERT INTO event_scripts (id, delay, command, datalong, dataint) VALUES
(1001, 0, 0, 0, 12345), -- 立即说话,文本ID 12345
(1001, 3, 1, 3, 0); -- 3秒后做表情动作,表情ID 3

说明:事件1001先让NPC说话,3秒后做表情

示例2:任务完成特效

场景:任务完成时播放声音和施放法术

INSERT INTO event_scripts (id, delay, command, datalong, datalong2) VALUES
(2001, 0, 16, 8192, 0), -- 播放声音ID 8192
(2001, 1, 15, 26740, 1); -- 1秒后施放法术ID 26740给自己

说明:事件2001播放完成音效,然后施放庆祝法术

示例3:召唤和移动序列

场景:召唤生物并让其移动到指定位置

INSERT INTO event_scripts (id, delay, command, datalong, datalong2, x, y, z, o) VALUES
(3001, 0, 10, 12345, 30000, -8913.23, 554.633, 93.0517, 0), -- 召唤生物ID 12345,持续30秒
(3001, 2, 3, 0, 5000, -8923.45, 564.123, 93.0517, 0); -- 2秒后移动到新位置,耗时5秒

说明:事件3001召唤生物,然后让其移动到指定位置

常用脚本模式

对话脚本模式

-- 多段对话序列
INSERT INTO event_scripts VALUES
(4001, 0, 0, 0, 0, 10001, 0, 0, 0, 0), -- 第一句话
(4001, 4, 0, 0, 0, 10002, 0, 0, 0, 0), -- 4秒后第二句话
(4001, 8, 0, 0, 0, 10003, 0, 0, 0, 0), -- 8秒后第三句话
(4001, 10, 1, 2, 0, 0, 0, 0, 0, 0); -- 10秒后鞠躬表情

战斗脚本模式

-- 战斗开始特效
INSERT INTO event_scripts VALUES
(5001, 0, 0, 1, 0, 20001, 0, 0, 0, 0), -- 大喊战斗口号
(5001, 1, 15, 12345, 0, 0, 0, 0, 0, 0), -- 施放增益法术
(5001, 2, 16, 9278, 0, 0, 0, 0, 0, 0); -- 播放战斗音效

环境脚本模式

-- 环境变化效果
INSERT INTO event_scripts VALUES
(6001, 0, 9, 180001, 0, 0, 0, 0, 0, 0), -- 重生门对象
(6001, 2, 16, 8959, 1, 0, 0, 0, 0, 0), -- 播放环境音效
(6001, 5, 11, 180002, 0, 0, 0, 0, 0, 0); -- 打开另一扇门

脚本调试技巧

测试脚本

使用GM命令测试事件脚本:

.event start 1001 -- 启动事件ID 1001
.event stop 1001 -- 停止事件ID 1001

调试输出

在脚本中添加说话命令作为调试输出:

INSERT INTO event_scripts (id, delay, command, dataint) VALUES
(9999, 0, 0, 99999); -- 调试文本:"脚本执行到此处"

性能优化建议

💡 优化技巧

注意事项

⚠️ 重要提醒

相关表格

event_scripts表经常与以下表格配合使用: