scripts
Tables: ***_scripts
This table format is used for 3 different tables to control possible scripts activated by different actions:
spell_scripts: Holds scripts that can be activated by spells with effect SPELL_EFFECT_SCRIPT_EFFECT (77) or SPELL_EFFECT_DUMMY(3).
event_scripts: Holds scripts activated whenever an event is activated, be it by an object or as the spell effect SPELL_EFFECT_SEND_EVENT (61).
waypoint_scripts: Holds scripts used in the waypoint_data table.
NOTE: An entry in this table may have more than one row as a script may do more than just one action. Also each action the script may make can have a separate delay attached to it. In that case, the core will activate the appropriate action after the correct delay.
Structure
Field | Type | Attributes | Key | Null | Default | Extra | Comment |
scripts#id | mediumint(8) | unsigned | NO | 0 | |||
scripts#effIndex [1] | tinyint(3) | unsigned | NO | 0 | |||
scripts#delay | int(10) | unsigned | NO | 0 | |||
scripts#command | mediumint(8) | unsigned | NO | 0 | |||
datalong | mediumint(8) | unsigned | NO | 0 | |||
datalong2 | int(10) | unsigned | NO | 0 | |||
dataint | int(11) | signed | NO | 0 | |||
x | float | signed | NO | 0 | |||
y | float | signed | NO | 0 | |||
z | float | signed | NO | 0 | |||
o | float | signed | NO | 0 | |||
scripts#guid [2] | int(11) | signed | PRI | NO | 0 | Acts as primary key and is set automatically using the GM command 'wp event add' |
1 present in spell_scripts table only.
2 present in waypoint_scripts table only.
Description of the fields
id
For spell_scripts, it is the spell ID. See Spell.dbc
For event_scripts, it is the event ID. There doesn't exist currently a full list of events. In any case, the event IDs are taken directly from gameobject WDB data or spell effect data. If both a gameobject and a spell activate the same event, the IDs will match.
For waypoint_scripts, it is the action ID.
effIndex
The effect index of the spell that this script is to be applied to.
delay
Delay in seconds before this current step of the script activates. 0 = instant.
command
The type of action performed by the script after scripts#delay seconds have passed. The value of this field affects what other fields also need to be set. The following commands can be used:
Command | Name | Description |
---|---|---|
0 | TALK | Creature say/whisper/yell/textemote. |
1 | EMOTE | Play emote on creature. |
2 | FIELD_SET | Change the value at an index for the player. |
3 | MOVE_TO | Relocate creature to a destination. |
4 | FLAG_SET | Turns on bits on a flag field at an index for the player. |
5 | FLAG_REMOVE | Turns off bits on a flag field at an index for the player. |
6 | TELEPORT_TO | Teleports the player to a location. |
7 | QUEST_EXPLORED | Satisfies the explore requirement for a quest. |
8 | KILL_CREDIT | Gives kill credit to the player. |
9 | RESPAWN_GAMEOBJECT | Spawns a despawned gameobject. |
10 | TEMP_SUMMON_CREATURE | Temporarily summons a creature. |
11 | OPEN_DOOR | Opens a door gameobject (type h1. 0). |
12 | CLOSE_DOOR | Closes a door gameobject (type 0). |
13 | ACTIVATE_OBJECT | Activates an object. |
14 | REMOVE_AURA | Removes an aura due to a spell. |
15 | CAST_SPELL | Casts a spell. |
16 | PLAY_SOUND | Plays a sound. |
17 | CREATE_ITEM | Creates specified amount of items for the player. |
18 | DESPAWN_SELF | Forces unit to despawn. |
19 | nuttin | There is no command 19. |
20 | LOAD_PATH | Load path to unit, then unit starts waypoint movement. |
21 | CALLSCRIPT_TO_UNIT | Calls script from one of *_scripts table with given unit as source. |
22 | KILL | Changes state of the creature to dead and optionally removes its corpse. |
30 | ORIENTATION | Changes unit's orientation (Used in Waypoint Scripts) |
31 | EQUIP | Sets creature equipment. |
32 | MODEL | Sets creature model. |
33 | CLOSE_GOSSIP | Closes gossip window. This command is only used for Gossip Scripts. |
34 | PLAYMOVIE | Plays movie. |
OtherFields
Depending on what command was used, the meaning and use for the following fields varies.
*SCRIPT_COMMAND_TALK = 0
- source: Creature.
- target: any/Player (for whisper).
- datalong: 0=say, 1=yell, 2=text emote, 3=boss emote, 4=whisper 5=boss whisper
- dataint: reference to broadcast_text.id
*SCRIPT_COMMAND_EMOTE = 1
- source or target: Creature.
- datalong: The emote ID to play.
- datalong2: If this value is > 0 the npc will play emote state rather than oneshot.
*SCRIPT_COMMAND_FIELD_SET = 2
- source or target: Creature.
- datalong: Index of the field.
- datalong2: Value to place at the index.
*SCRIPT_COMMAND_MOVE_TO = 3
- source: Creature.
- datalong2: Length (in time) of the motion.
- x: X position to move to.
- y: Y position to move to.
- z: Z position to move to.
*SCRIPT_COMMAND_FLAG_SET = 4
- source or target: Creature.
- datalong: Field index to be set.
- datalong2: Flag bit(s) to set.
*SCRIPT_COMMAND_FLAG_REMOVE = 5
- source or target: Creature.
- datalong: Field index to be unset.
- datalong2: Flag bit(s) to unset.
*SCRIPT_COMMAND_TELEPORT_TO = 6
- source or target: Player (datalong2 0) or Creature (datalong2 1).
- datalong: Target Map ID. See Map.dbc
- x: Teleport target x coordinate.
- y: Teleport target y coordinate.
- z: Teleport target z coordinate.
- o: Teleport target orientation.
*SCRIPT_COMMAND_QUEST_EXPLORED = 7
- source or target: Player.
- target or source: WorldObject.
- datalong: Quest entry which external status should be satisfied. See quest_template.entry.
- datalong2: Distance away from the NPC/object that the player can be and have the script still take effect (min value 5).
*SCRIPT_COMMAND_KILL_CREDIT = 8
- target or source: Player.
- datalong: Creatue entry of kill credit. See creature_template.entry.
- datalong2: If value > 0 gives kill credit to the whole group player belongs to, otherwise, gives personal kill credit.
*SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9
- source: WorldObject (summoner).
- datalong: Guid of the gameobject to respawn. See gameobject.guid.
- datalong2: Despawn time in seconds. If the value is < 5 seconds: 5 is used instead.
*SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10
- source: WorldObject (summoner).
- datalong: Entry of the summoned creature. See creature_template.entry.
- datalong2: Despawn time in ms.
- x: Summon target x coordinate.
- y: Summon target y coordinate.
- z: Summon target z coordinate.
- o: Summon target orientation.
*SCRIPT_COMMAND_OPEN_DOOR = 11
- source: WorldObject.
- datalong: Guid of the activated door. See gameobject.guid.
- datalong2: Delay before closing again the door. If the value is < 15000 ms: 15000 ms is used instead.
*SCRIPT_COMMAND_CLOSE_DOOR = 12
- source: WorldObject.
- datalong: Guid of the activated door. See gameobject.guid.
- datalong2: Delay before opening again the door. If the value is < 15000 ms: 15000 ms is used instead.
*SCRIPT_COMMAND_ACTIVATE_OBJECT = 13
- source: Unit.
- target: GameObject.
*SCRIPT_COMMAND_REMOVE_AURA = 14
- source (datalong2 != 0) or target (datalong2 h1. 0): Unit.
- datalong: Spell ID. See Spell.dbc
- datalong2: If value > 0, then remove from the source; otherwise remove from the target.
*SCRIPT_COMMAND_CAST_SPELL = 15
- source: Unit.
- target: Unit.
- datalong: Spell ID. See Spell.dbc
- datalong2:
- 0 - Source->Target
- 1 - Source->Source (Self cast, use for dummy spells)
- 2 - Target->Target
- 3 - Target->Source
- 4 - Source->Closest entry of dataint.
- dataint: Creature entry to target if datalong2 value is 4, or triggered attribute for CastSpell method in other cases.
- x: Search range for creature entry (dataint) if datalong2 value is 4.
*SCRIPT_COMMAND_PLAY_SOUND = 16
- source: WorldObject.
- target: none (datalong2 & 1 0) or Player (datalong2 & 1 != 0).
- datalong: Sound ID.
- datalong2:
- 0 - play direct sound to everyone.
- 1 - play direct sound to target (must be Player).
- 2 - play sound with distance dependency to anyone.
- 3 - play sound with distance dependency to target (must be Player).
*SCRIPT_COMMAND_CREATE_ITEM = 17
- target or source: Player.
- datalong: Item entry to create. See item_template.entry.
- datalong2: Amount of items to create.
*SCRIPT_COMMAND_DESPAWN_SELF = 18
- target: Creature/GameObject.
- datalong: Despawn delay.
*SCRIPT_COMMAND_LOAD_PATH = 20
- source: Unit.
- datalong: Path ID. See waypoint_data.id.
- datalong2: If value > 0, means waypoint movement is repeatable.
*SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT = 21
- source: if present, used as a search center.
- datalong: entry of searched creature, if source exists, guid of the creature otherwise.
**datalong2: ID of the script from *_scripts table. - dataint:
- 3 - use spell_scripts table;
- 5 - use event_scripts table;
- 6 - use waypoint_scripts table.
*SCRIPT_COMMAND_KILL = 22
- source: Creature.
- dataint: if value == 1 remove corpse.
*SCRIPT_COMMAND_ORIENTATION = 30
- source: Unit.
- target: Unit (datalong != 0).
- datalong: If value != 0, then turn to face the target; otherwise turn to value in o.
- o: Set orientation to value in field `o`.
*SCRIPT_COMMAND_EQUIP = 31
- source: Creature.
- datalong: ID (1, 2, 3 ...) from equipment entry. See creature_equip_template.ID
*SCRIPT_COMMAND_MODEL = 32
- source: Creature.
- datalong: model ID.
*SCRIPT_COMMAND_CLOSE_GOSSIP = 33
- source: Player.
*SCRIPT_COMMAND_PLAYMOVIE = 34
- source: Player.
- datalong: movie ID.
guid
Exists only for 'waypoint_scripts' and acts there as primary key; it is set automatically using the GM command 'wp event add'.