📖 表说明

法术脚本表定义了法术施放时执行的脚本命令。这个表允许开发者通过脚本系统为法术添加自定义行为和效果,扩展法术系统的功能。

数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写,确保字段定义的准确性和权威性。

官方文档: AzerothCore Wiki - spell_scripts

📊 表结构

字段名 数据类型 属性 默认值 描述
id int UNSIGNED 不为空 0 脚本ID,对应法术效果
effIndex tinyint UNSIGNED 不为空 0 效果索引(0-2)
delay int UNSIGNED 不为空 0 执行延迟(毫秒)
command int UNSIGNED 不为空 0 脚本命令类型
datalong int UNSIGNED 不为空 0 数据参数1
datalong2 int UNSIGNED 不为空 0 数据参数2
dataint int 不为空 0 数据参数3(整数)
x float 不为空 0 X坐标
y float 不为空 0 Y坐标
z float 不为空 0 Z坐标
o float 不为空 0 方向(Orientation)

注意: spell_scripts表没有主键定义

🔑 核心字段详解

🆔 id - 脚本ID

详细说明:脚本ID,对应法术的效果ID。 取值范围:对应法术效果ID
  • 标识脚本所属的法术效果
  • 通常对应法术ID
  • 用于关联脚本和法术
  • 多个脚本可以对应同一个法术

示例:

  • id=12345 - 法术12345的脚本
  • id=67890 - 法术67890的脚本

📊 effIndex - 效果索引

详细说明:法术效果索引,标识法术的哪个效果触发脚本。 取值范围:0-2(法术最多有3个效果)
  • 标识法术的哪个效果触发脚本
  • 值为0表示第一个效果
  • 值为1表示第二个效果
  • 值为2表示第三个效果

示例:

  • effIndex=0 - 法术的第一个效果触发脚本
  • effIndex=1 - 法术的第二个效果触发脚本

⏱️ delay - 执行延迟

详细说明:脚本执行的延迟时间,以毫秒为单位。 取值范围:0-无限(毫秒)
  • 定义脚本执行的延迟时间
  • 值为0表示立即执行
  • 值为1000表示延迟1秒执行
  • 用于创建延迟效果或序列脚本

示例:

  • delay=0 - 立即执行脚本
  • delay=5000 - 延迟5秒执行脚本

🔧 command - 脚本命令类型

详细说明:脚本命令类型,定义脚本执行的具体操作。 取值范围:0-100+(不同的命令类型)
  • 定义脚本执行的操作类型
  • 不同的值代表不同的命令
  • 例如:召唤生物、播放动画、传送玩家等
  • 用于扩展法术的功能

示例:

  • command=10 - 召唤生物命令
  • command=15 - 传送玩家命令

其他字段说明

datalong: 数据参数1,根据不同的command命令有不同的含义。

datalong2: 数据参数2,根据不同的command命令有不同的含义。

dataint: 数据参数3(整数),根据不同的command命令有不同的含义。

x、y、z: 坐标参数,用于需要位置信息的命令(如传送、召唤等)。

o: 方向参数,用于需要方向信息的命令。

💡 实际案例

脚本 召唤生物脚本

配置法术施放后召唤生物

-- 召唤生物脚本 DELETE FROM spell_scripts WHERE id = 12345; INSERT INTO spell_scripts VALUES (12345, 0, 0, 10, 100, 0, 0, 0, 0, 0, 0);

效果: 法术12345的第一个效果立即执行召唤生物命令(command=10),召唤生物ID为100(datalong=100)。

脚本 传送玩家脚本

配置法术施放后传送玩家到指定位置

-- 传送玩家脚本 DELETE FROM spell_scripts WHERE id = 67890; INSERT INTO spell_scripts VALUES (67890, 0, 0, 15, 0, 0, 0, 100.0, 200.0, 50.0, 0.0);

效果: 法术67890的第一个效果立即执行传送命令(command=15),将玩家传送到坐标(100.0, 200.0, 50.0)。

⚡ 快速参考

常用脚本命令

命令值 命令类型 说明
10 召唤生物 在指定位置召唤生物
15 传送玩家 将玩家传送到指定位置
其他值 其他命令 根据脚本系统定义的其他命令类型

表关系

🔗 相关表格

❓ 常见问题

Q1: 如何为法术添加自定义脚本?
在spell_scripts表中添加条目,指定法术ID(id)、效果索引(effIndex)和脚本命令(command)。根据命令类型设置相应的数据参数。
Q2: 如何创建延迟执行的脚本?
设置delay字段为延迟时间(毫秒)。例如,delay=5000表示脚本在法术施放5秒后执行。
Q3: 脚本命令的具体含义是什么?
不同的command值代表不同的脚本命令。具体含义需要参考AzerothCore脚本系统的文档,不同的命令有不同的数据参数含义。