scripts

scripts

Back-to:World

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

id

mediumint(8)

unsigned



NO

0





effIndex [1]

tinyint(3)

unsigned



NO

0





delay

int(10)

unsigned



NO

0





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





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 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

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

*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

*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

*SCRIPT_COMMAND_QUEST_EXPLORED = 7

*SCRIPT_COMMAND_KILL_CREDIT = 8

*SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9

*SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10

*SCRIPT_COMMAND_OPEN_DOOR = 11

*SCRIPT_COMMAND_CLOSE_DOOR = 12

*SCRIPT_COMMAND_ACTIVATE_OBJECT = 13

  •  

    • source: Unit.

    • target: GameObject.

*SCRIPT_COMMAND_REMOVE_AURA = 14

*SCRIPT_COMMAND_CAST_SPELL = 15

*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

*SCRIPT_COMMAND_MODEL = 32

  •  

    • source: Creature.

    • datalong: model ID.

*SCRIPT_COMMAND_CLOSE_GOSSIP = 33

  •  

    • source: Player.

*SCRIPT_COMMAND_PLAYMOVIE = 34