event_scripts
保存每当激活事件时要执行的脚本,事件可以由 Gameobject 激活,也可以由具有以下法术效果的法术(Spell)激活:
SPELL _ EFFECT _ SEND _ EVENT (61)
- id:事件脚本 ID
- delay:事件脚本触发延时,秒为单位
- command:取值来源源码 ObjectMgr.h 的 ScriptCommands 定义
enum ScriptCommands
{
SCRIPT_COMMAND_TALK = 0, // source/target = Creature, target = any, datalong = talk type (see ChatType enum), datalong2 & 1 = player talk (instead of creature), dataint = string_id
SCRIPT_COMMAND_EMOTE = 1, // source/target = Creature, datalong = emote id, datalong2 = 0: set emote state; > 0: play emote state
SCRIPT_COMMAND_FIELD_SET_DEPRECATED = 2,
SCRIPT_COMMAND_MOVE_TO = 3, // source/target = Creature, datalong2 = time to reach, x/y/z = destination
SCRIPT_COMMAND_FLAG_SET_DEPRECATED = 4,
SCRIPT_COMMAND_FLAG_REMOVE_DEPRECATED= 5,
SCRIPT_COMMAND_TELEPORT_TO = 6, // source/target = Creature/Player (see datalong2), datalong = map_id, datalong2 = 0: Player; 1: Creature, x/y/z = destination, o = orientation
SCRIPT_COMMAND_QUEST_EXPLORED = 7, // target/source = Player, target/source = GO/Creature, datalong = quest id, datalong2 = distance or 0
SCRIPT_COMMAND_KILL_CREDIT = 8, // target/source = Player, datalong = creature entry, datalong2 = 0: personal credit, 1: group credit
SCRIPT_COMMAND_RESPAWN_GAMEOBJECT = 9, // source = WorldObject (summoner), datalong = GO guid, datalong2 = despawn delay
SCRIPT_COMMAND_TEMP_SUMMON_CREATURE = 10, // source = WorldObject (summoner), datalong = creature entry, datalong2 = despawn delay, x/y/z = summon position, o = orientation
SCRIPT_COMMAND_OPEN_DOOR = 11, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
SCRIPT_COMMAND_CLOSE_DOOR = 12, // source = Unit, datalong = GO guid, datalong2 = reset delay (min 15)
SCRIPT_COMMAND_ACTIVATE_OBJECT = 13, // source = Unit, target = GO
SCRIPT_COMMAND_REMOVE_AURA = 14, // source (datalong2 != 0) or target (datalong2 == 0) = Unit, datalong = spell id
SCRIPT_COMMAND_CAST_SPELL = 15, // source and/or target = Unit, datalong2 = cast direction (0: s->t 1: s->s 2: t->t 3: t->s 4: s->creature with dataint entry), dataint & 1 = triggered flag
SCRIPT_COMMAND_PLAY_SOUND = 16, // source = WorldObject, target = none/Player, datalong = sound id, datalong2 (bitmask: 0/1=anyone/player, 0/2=without/with distance dependency, so 1|2 = 3 is target with distance dependency)
SCRIPT_COMMAND_CREATE_ITEM = 17, // target/source = Player, datalong = item entry, datalong2 = amount
SCRIPT_COMMAND_DESPAWN_SELF = 18, // target/source = Creature, datalong = despawn delay
SCRIPT_COMMAND_LOAD_PATH = 20, // source = Unit, datalong = path id, datalong2 = is repeatable
SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT = 21, // source = WorldObject (if present used as a search center), datalong = script id, datalong2 = unit lowguid, dataint = script table to use (see ScriptsType)
SCRIPT_COMMAND_KILL = 22, // source/target = Creature, dataint = remove corpse attribute
// TrinityCore only
SCRIPT_COMMAND_ORIENTATION = 30, // source = Unit, target (datalong > 0) = Unit, datalong = > 0 turn source to face target, o = orientation
SCRIPT_COMMAND_EQUIP = 31, // soucre = Creature, datalong = equipment 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
SCRIPT_COMMAND_MOVEMENT = 35, // source = Creature, datalong = MovementType, datalong2 = MovementDistance (wander_distance f.ex.), dataint = pathid
SCRIPT_COMMAND_PLAY_ANIMKIT = 36 // source = Creature, datalong = AnimKit id
};
// SCRIPT_COMMAND_TALK (0)
struct
{
uint32 ChatType; // datalong
uint32 Flags; // datalong2
int32 TextID; // dataint
} Talk;
// SCRIPT_COMMAND_EMOTE (1)
struct
{
uint32 EmoteID; // datalong
uint32 Flags; // datalong2
} Emote;
// SCRIPT_COMMAND_FIELD_SET (2)
struct
{
uint32 FieldID; // datalong
uint32 FieldValue; // datalong2
} FieldSet;
// SCRIPT_COMMAND_MOVE_TO (3)
struct
{
uint32 Unused1; // datalong
uint32 TravelTime; // datalong2
int32 Unused2; // dataint
float DestX;
float DestY;
float DestZ;
} MoveTo;
// SCRIPT_COMMAND_FLAG_SET (4)
//SCRIPT_COMMAND_FLAG_REMOVE (5)
struct
{
uint32 FieldID; // datalong
uint32 FieldValue; // datalong2
} FlagToggle;
// SCRIPT_COMMAND_TELEPORT_TO (6)
struct
{
uint32 MapID; // datalong
uint32 Flags; // datalong2
int32 Unused1; // dataint
float DestX;
float DestY;
float DestZ;
float Orientation;
} TeleportTo;
// SCRIPT_COMMAND_QUEST_EXPLORED (7)
struct
{
uint32 QuestID; // datalong
uint32 Distance; // datalong2
} QuestExplored;
// SCRIPT_COMMAND_KILL_CREDIT (8)
struct
{
uint32 CreatureEntry; // datalong
uint32 Flags; // datalong2
} KillCredit;
// SCRIPT_COMMAND_RESPAWN_GAMEOBJECT (9)
struct
{
uint32 GOGuid; // datalong
uint32 DespawnDelay; // datalong2
} RespawnGameobject;
// SCRIPT_COMMAND_TEMP_SUMMON_CREATURE (10)
struct
{
uint32 CreatureEntry; // datalong
uint32 DespawnDelay; // datalong2
int32 Unused1; // dataint
float PosX;
float PosY;
float PosZ;
float Orientation;
} TempSummonCreature;
// SCRIPT_COMMAND_OPEN_DOOR (11)
// SCRIPT_COMMAND_CLOSE_DOOR (12)
struct
uint32 GOGuid; // datalong
uint32 ResetDelay; // datalong2
} ToggleDoor;
// SCRIPT_COMMAND_ACTIVATE_OBJECT (13)
// SCRIPT_COMMAND_REMOVE_AURA (14)
struct
{
uint32 SpellID; // datalong
uint32 Flags; // datalong2
} RemoveAura;
// SCRIPT_COMMAND_CAST_SPELL (15)
struct
{
uint32 SpellID; // datalong
uint32 Flags; // datalong2
int32 CreatureEntry; // dataint
float SearchRadius;
} CastSpell;
// SCRIPT_COMMAND_PLAY_SOUND (16)
struct
{
uint32 SoundID; // datalong
uint32 Flags; // datalong2
} PlaySound;
// SCRIPT_COMMAND_CREATE_ITEM (17)
struct
{
uint32 ItemEntry; // datalong
uint32 Amount; // datalong2
} CreateItem;
// SCRIPT_COMMAND_DESPAWN_SELF (18)
struct
{
uint32 DespawnDelay; // datalong
} DespawnSelf;
// SCRIPT_COMMAND_LOAD_PATH (20)
struct
{
uint32 PathID; // datalong
uint32 IsRepeatable; // datalong2
} LoadPath;
// SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT (21)
struct
{
uint32 CreatureEntry; // datalong
uint32 ScriptID; // datalong2
uint32 ScriptType; // dataint
} CallScript;
// SCRIPT_COMMAND_KILL (22)
struct
{
uint32 Unused1; // datalong
uint32 Unused2; // datalong2
int32 RemoveCorpse; // dataint
} Kill;
// SCRIPT_COMMAND_ORIENTATION (30)
struct
{
uint32 Flags; // datalong
uint32 Unused1; // datalong2
int32 Unused2; // dataint
float Unused3;
float Unused4;
float Unused5;
float Orientation;
} Orientation;
// SCRIPT_COMMAND_EQUIP (31)
struct
{
uint32 EquipmentID; // datalong
} Equip;
// SCRIPT_COMMAND_MODEL (32)
struct
{
uint32 ModelID; // datalong
} Model;
// SCRIPT_COMMAND_CLOSE_GOSSIP (33)
// SCRIPT_COMMAND_PLAYMOVIE (34)
struct
{
uint32 MovieID; // datalong
} PlayMovie;
// SCRIPT_COMMAND_MOVEMENT (35)
struct
{
uint32 MovementType; // datalong
uint32 MovementDistance; // datalong2
int32 Path; // dataint
} Movement;
// SCRIPT_COMMAND_PLAY_ANIMKIT (36)
struct
{
uint32 AnimKitID; // datalong
} PlayAnimKit;
- datalong - datalong2:取值由 command 决定,详见上表
- dataint:取值由 command 决定,详见上表
- x,y,z,o:坐标信息
- 部分参数如下
-
enum ChatType { CHAT_TYPE_SAY = 0, CHAT_TYPE_YELL = 1, CHAT_TYPE_TEXT_EMOTE = 2, CHAT_TYPE_BOSS_EMOTE = 3, CHAT_TYPE_WHISPER = 4, CHAT_TYPE_BOSS_WHISPER = 5, CHAT_TYPE_ZONE_YELL = 6, CHAT_TYPE_END = 255 }; enum ScriptsType { SCRIPTS_FIRST, SCRIPTS_SPELL = SCRIPTS_FIRST, = 1 SCRIPTS_EVENT, = 2 SCRIPTS_WAYPOINT, = 3 SCRIPTS_LAST }; enum eScriptFlags { // Talk Flags SF_TALK_USE_PLAYER = 0x1, // Emote flags SF_EMOTE_USE_STATE = 0x1, // TeleportTo flags SF_TELEPORT_USE_CREATURE = 0x1, // KillCredit flags SF_KILLCREDIT_REWARD_GROUP = 0x1, // RemoveAura flags SF_REMOVEAURA_REVERSE = 0x1, // CastSpell flags SF_CASTSPELL_SOURCE_TO_TARGET = 0, SF_CASTSPELL_SOURCE_TO_SOURCE = 1, SF_CASTSPELL_TARGET_TO_TARGET = 2, SF_CASTSPELL_TARGET_TO_SOURCE = 3, SF_CASTSPELL_SEARCH_CREATURE = 4, SF_CASTSPELL_TRIGGERED = 0x1, // PlaySound flags SF_PLAYSOUND_TARGET_PLAYER = 0x1, SF_PLAYSOUND_DISTANCE_SOUND = 0x2, // Orientation flags SF_ORIENTATION_FACE_TARGET = 0x1 };
spell_scripts
保存每当使用(激活)法术时要执行的脚本,此表脚本应由具有以下法术效果的法术(Spell)触发:
SPELL_EFFECT_SCRIPT_EFFECT (77)
SPELL_EFFECT_DUMMY (3)
- id:法术脚本ID
- effIndex:对应的法术效果索引
- Effect 0 对应的值为 0,Effect 1 对应的之值 1,以此类推
- 以传送暴风城法术为例,该法术共有 Effect 0 和 Effect 1 两个法术效果,该法术仅有Effect 1为 SPELL_EFFECT_SCRIPT_EFFECT (77)
- delay:法术脚本触发延时,秒为单位
- command:取值来源源码 ObjectMgr.h 的 ScriptCommands 定义,见上表
- datalong - datalong2:取值由 command 决定,详见上表
- dataint:取值由 command 决定,详见上表
- x,y,z,o:坐标信息
举例
command = 15 (SCRIPT_COMMAND_CAST_SPELL)
- id:源法术的 Spell ID
- datalong:被触发法术的 Spell ID
- datalong2:触发法术的施放方向
- 0:source -> target
- 1:source -> source
- 2:target -> target
- 3:target -> source
- 4:source -> creature with dataint entry
- dataint:默认为 0,当 datalong2 = 4 时,此处应填 法术释放的 Creature entry
INSERT INTO `world`.`spell_scripts` (`id`, `effIndex`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `Comment`) VALUES (28698, 0, 0, 15, 28694, 2, 1, 0, 0, 0, 0, 'Dreaming Glory');