event_scripts | spell_scripts

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)
  • 76638b4e406ed1e1b7f66f5ea94ddabd.png
  • 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');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值