diff options
-rw-r--r-- | sql/base/world_database.sql | 1 | ||||
-rw-r--r-- | sql/updates/9189_world_transports.sql | 1 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.h | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.h | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 2 |
7 files changed, 11 insertions, 1 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 3365b352406..87c843618da 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -14728,6 +14728,7 @@ CREATE TABLE `transports` ( `entry` mediumint(8) unsigned NOT NULL DEFAULT '0', `name` text, `period` mediumint(8) unsigned NOT NULL DEFAULT '0', + `ScriptName` char(64) NOT NULL DEFAULT '', PRIMARY KEY (`entry`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Transports'; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/updates/9189_world_transports.sql b/sql/updates/9189_world_transports.sql new file mode 100644 index 00000000000..da3d2245c54 --- /dev/null +++ b/sql/updates/9189_world_transports.sql @@ -0,0 +1 @@ +ALTER TABLE `transports` ADD `ScriptName` char(64) NOT NULL DEFAULT '' AFTER `period`; diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 70a09c26f11..400597cfb77 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -744,6 +744,7 @@ class GameObject : public WorldObject, public GridObject<GameObject> void EventInform(uint32 eventId); uint64 GetRotation() const { return m_rotation; } + virtual uint32 GetScriptId() const { return GetGOInfo()->ScriptId; } protected: uint32 m_spellId; time_t m_respawnTime; // (secs) time of next respawn (or despawn if GO have owner()), diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index c2b18badf9b..bab9bc9060a 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -347,6 +347,7 @@ class Item : public Object void BuildUpdate(UpdateDataMapType&); + uint32 GetScriptId() const { return GetProto()->ScriptId; } private: std::string m_text; uint8 m_slot; diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index e1036436af0..29bb3007b1b 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -33,7 +33,7 @@ void MapManager::LoadTransports() { - QueryResult_AutoPtr result = WorldDatabase.Query("SELECT entry, name, period FROM transports"); + QueryResult_AutoPtr result = WorldDatabase.Query("SELECT entry, name, period, ScriptName FROM transports"); uint32 count = 0; @@ -60,6 +60,7 @@ void MapManager::LoadTransports() uint32 entry = fields[0].GetUInt32(); std::string name = fields[1].GetCppString(); t->m_period = fields[2].GetUInt32(); + t->ScriptId = objmgr.GetScriptId(fields[3].GetString()); const GameObjectInfo *goinfo = objmgr.GetGameObjectInfo(entry); @@ -182,6 +183,7 @@ void MapManager::LoadTransportNPCs() Transport::Transport() : GameObject() { m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION); + ScriptId = 0; } bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress, uint32 dynflags) diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h index aa8328afed4..00d9e0ef84b 100644 --- a/src/server/game/Entities/Transport/Transport.h +++ b/src/server/game/Entities/Transport/Transport.h @@ -59,6 +59,7 @@ class Transport : public GameObject void UpdateNPCPositions(); void BuildStartMovePacket(Map const *targetMap); void BuildStopMovePacket(Map const *targetMap); + uint32 GetScriptId() const { return ScriptId; } private: struct WayPoint { @@ -89,6 +90,7 @@ class Transport : public GameObject PlayerSet m_passengers; uint32 currenttguid; + uint32 ScriptId; public: WayPointMap m_WayPoints; uint32 m_nextNodeTime; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 469f9f5c021..305edb1bd3b 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -8740,6 +8740,8 @@ void ObjectMgr::LoadScriptNames() "UNION " "SELECT DISTINCT(ScriptName) FROM spell_script_names WHERE ScriptName <> '' " "UNION " + "SELECT DISTINCT(ScriptName) FROM transports WHERE ScriptName <> '' " + "UNION " "SELECT DISTINCT(script) FROM instance_template WHERE script <> ''"); if (!result) |