Script 表
<-返回至:World
表:***_scripts
此表格式用于 3 个不同的表,以控制由不同动作触发的可能脚本:
spell_scripts: 保存可由具有 SPELL_EFFECT_SCRIPT_EFFECT (77) 或 SPELL_EFFECT_DUMMY(3) 效果的法术触发的脚本。
event_scripts: 保存每当事件被激活时触发的脚本,无论是由对象触发,还是作为法术效果 SPELL_EFFECT_SEND_EVENT (61) 触发。
waypoint_scripts: 保存在 waypoint_data 表中使用的脚本。有关路径点的一般信息,另请参阅 路径点信息。
注意:此表中的一条记录可能对应多行,因为一个脚本可能执行多个动作。此外,脚本执行的每个动作都可以附带单独的延迟。在这种情况下,核心(core)会在正确的延迟之后激活相应的动作。
表结构
| Field |
Type |
Attributes |
Key |
Null |
Default |
Extra |
Comment |
| id |
INT |
UNSIGNED |
|
NO |
0 |
|
|
| effIndex |
INT |
UNSIGNED |
|
NO |
0 |
仅用于 spell_scripts |
|
| delay |
INT |
UNSIGNED |
|
NO |
0 |
|
|
| command |
INT |
UNSIGNED |
|
NO |
0 |
|
|
| datalong |
INT |
UNSIGNED |
|
NO |
0 |
|
|
| datalong2 |
INT |
UNSIGNED |
|
NO |
0 |
|
|
| dataint |
INT |
|
|
NO |
0 |
|
|
| x |
FLOAT |
|
|
NO |
0 |
|
|
| y |
FLOAT |
|
|
NO |
0 |
|
|
| z |
FLOAT |
|
|
NO |
0 |
|
|
| o |
FLOAT |
|
|
NO |
0 |
|
|
| guid |
INT |
|
PRI |
NO |
0 |
仅用于 waypoint_scripts;作为主键,并通过 GM 命令 'wp event add' 自动设置 |
|
字段说明
id
对于 spell_scripts,它是法术 ID。参见 Spell.dbc
对于 event_scripts,它是事件 ID。目前不存在完整的事件列表。无论如何,事件 ID 直接取自 gameobject WDB 数据或法术效果数据。如果游戏对象(gameobject)和法术激活同一事件,则它们的 ID 将匹配。
对于 waypoint_scripts,它是 action ID。
effIndex
此脚本所要应用的法术效果索引。
delay
此脚本步骤激活前的延迟秒数。0 = 立即。
command
脚本在 delay 秒过后执行的动作类型。此字段的值会影响还需要设置哪些其他字段。可以使用以下命令:
OtherFields
根据所使用的命令,以下字段的含义和用途会有所不同。
*SCRIPT_COMMAND_TALK = 0
- source(源):Creature(生物)。
- target(目标):any/Player(用于耳语)。
- datalong:0=说话,1=大喊,2=文字表情,3=首领表情,4=耳语,5=首领耳语
- dataint:引用 broadcast_text.id
*SCRIPT_COMMAND_EMOTE = 1
- source 或 target:Creature(生物)。
- datalong:要播放的表情 ID。
- datalong2:如果此值 > 0,NPC 将播放表情状态而不是一次性播放。
*SCRIPT_COMMAND_FIELD_SET = 2
- source 或 target:Creature(生物)。
- datalong:字段的索引。
- datalong2:要放置在该索引处的值。
*SCRIPT_COMMAND_MOVE_TO = 3
- source:Creature(生物)。
- datalong2:移动的时长(以时间为单位)。
- x:要移动到的 X 位置。
- y:要移动到的 Y 位置。
- z:要移动到的 Z 位置。
*SCRIPT_COMMAND_FLAG_SET = 4
- source 或 target:Creature(生物)。
- datalong:要设置的字段索引。
- datalong2:要设置的标志位。
*SCRIPT_COMMAND_FLAG_REMOVE = 5
- source 或 target:Creature(生物)。
- datalong:要取消设置的字段索引。
- datalong2:要取消设置的标志位。
*SCRIPT_COMMAND_TELEPORT_TO = 6
- source 或 target:Player(datalong2 0)或 Creature(datalong2 1)。
- datalong:目标地图 ID。参见 Map.dbc
- x:传送目标的 x 坐标。
- y:传送目标的 y 坐标。
- z:传送目标的 z 坐标。
- o:传送目标的朝向。
*SCRIPT_COMMAND_QUEST_EXPLORED = 7
- source 或 target:Player(玩家)。
- target 或 source:WorldObject(世界对象)。
- datalong:应满足外部状态的任务条目。参见 quest_template.id。
- datalong2:玩家可以与 NPC/对象保持的距离,在此距离内脚本仍然生效(最小值为 5)。
*SCRIPT_COMMAND_KILL_CREDIT = 8
- target 或 source:Player(玩家)。
- datalong:击杀计数的生物条目。参见 creature_template.entry。
- datalong2:如果值 > 0,则给予玩家所属整个队伍的击杀计数,否则给予个人击杀计数。
*SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9
- source:WorldObject(召唤者)。
- datalong:要重新生成的游戏对象的 Guid。参见 gameobject.guid。
- datalong2:消失时间(秒)。如果该值 < 5 秒:则使用 5。
*SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10
- source:WorldObject(召唤者)。
- datalong:被召唤生物的条目。参见 creature_template.entry。
- datalong2:消失时间(毫秒)。
- x:召唤目标的 x 坐标。
- y:召唤目标的 y 坐标。
- z:召唤目标的 z 坐标。
- o:召唤目标的朝向。
*SCRIPT_COMMAND_OPEN_DOOR = 11
- source:WorldObject(世界对象)。
- datalong:被激活的门 Guid。参见 gameobject.guid。
- datalong2:再次关闭门之前的延迟。如果该值 < 15 秒:则使用 15。
*SCRIPT_COMMAND_CLOSE_DOOR = 12
- source:WorldObject(世界对象)。
- datalong:被激活的门 Guid。参见 gameobject.guid。
- datalong2:再次打开门之前的延迟。如果该值 < 15 秒:则使用 15。
*SCRIPT_COMMAND_ACTIVATE_OBJECT = 13
- source:Unit(单位)。
- target:GameObject(游戏对象)。
*SCRIPT_COMMAND_REMOVE_AURA = 14
- source(datalong2 != 0)或 target(datalong2 == 0):Unit(单位)。
- datalong:法术 ID。参见 Spell.dbc
- datalong2:如果值 > 0,则从 source 移除;否则从 target 移除。
*SCRIPT_COMMAND_CAST_SPELL = 15
- source:Unit(单位)。
- target:Unit(单位)。
- datalong:法术 ID。参见 Spell.dbc
- datalong2:
- 0 - Source->Target
- 1 - Source->Source(自我施放,用于 dummy 法术)
- 2 - Target->Target
- 3 - Target->Source
- 4 - Source->最近的 dataint 条目。
- dataint:如果 datalong2 值为 4,则为要作为目标的生物条目;在其他情况下,则为 CastSpell 方法的触发属性。
- x:如果 datalong2 值为 4,则为生物条目(dataint)的搜索范围。
*SCRIPT_COMMAND_PLAY_SOUND = 16
- source:WorldObject(世界对象)。
- target:无(datalong2 & 1 == 0)或 Player(datalong2 & 1 != 0)。
- datalong:声音 ID。
- datalong2:
- 0 - 向所有人直接播放声音。
- 1 - 向目标直接播放声音(必须是 Player)。
- 2 - 向所有人播放带距离衰减的声音。
- 3 - 向目标播放带距离衰减的声音(必须是 Player)。
- 4 - 向半径范围内的任何人播放声音。
- dataint:如果 datalong2 值为 4,则为半径
*SCRIPT_COMMAND_CREATE_ITEM = 17
*SCRIPT_COMMAND_DESPAWN_SELF = 18
- target:Creature(生物)。
- datalong:消失延迟。
*SCRIPT_COMMAND_LOAD_PATH = 20
- source:Unit(单位)。
- datalong:路径 ID。参见 waypoint_data.id。
- datalong2:如果值 > 0,表示路径点移动可重复。
*SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT = 21
- source:如果存在,用作搜索中心。
- datalong:被搜索生物的条目;如果 source 存在,则为生物的 guid。
**datalong2:来自 *_scripts 表的脚本 ID。
- dataint:
- 3 - 使用 spell_scripts 表;
- 5 - 使用 event_scripts 表;
- 6 - 使用 waypoint_scripts 表。
*SCRIPT_COMMAND_KILL = 22
- source:Creature(生物)。
- dataint:如果值 == 1,移除尸体。
*SCRIPT_COMMAND_ORIENTATION = 30
- source:Unit(单位)。
- target:Unit(datalong != 0)。
- datalong:如果值 != 0,则转向面向目标;否则转向字段 `o` 中的值。
- o:将朝向设置为字段 `o` 中的值。
*SCRIPT_COMMAND_EQUIP = 31
*SCRIPT_COMMAND_MODEL = 32
- source:Creature(生物)。
- datalong:模型 ID。
*SCRIPT_COMMAND_CLOSE_GOSSIP = 33
*SCRIPT_COMMAND_PLAYMOVIE = 34
- source:Player(玩家)。
- datalong:电影 ID。
*SCRIPT_COMMAND_MOVEMENT = 35
- source:Creature(生物)。
- datalong:MovementType(移动类型)。
- datalong2:MovementDistance(移动距离,例如 MovementType 1 的 wander_distance)。
- dataint:pathid(用于 MovementType 2,参见 waypoint_data.id)。
guid
仅存在于 'waypoint_scripts' 中,并在其中作为主键;它通过 GM 命令 'wp event add' 自动设置。