diff options
author | Rat <gmstreetrat@gmail.com> | 2015-04-10 11:29:46 +0200 |
---|---|---|
committer | Rat <gmstreetrat@gmail.com> | 2015-04-10 11:29:46 +0200 |
commit | e8b54b7ae823622cca5647b3571a7740c421aa41 (patch) | |
tree | 424a2ecf48c56bd4aeebaff82b68445218c96cd2 /src | |
parent | 48ac6a22557550bde14a2275b40a50f4a4e3125b (diff) |
Core/Scenes: implemented some scene related packets for debug purposes
* small cleanup
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ScenePackets.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ScenePackets.h | 31 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 12 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 28 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 1 |
7 files changed, 97 insertions, 18 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index df5fae683fe..28f908eae16 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -32,6 +32,7 @@ #include "ScriptMgr.h" #include "GameObjectAI.h" #include "QuestPackets.h" +#include "ScenePackets.h" void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet) { @@ -644,3 +645,19 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::Ques SendPacket(response.Write()); } + +void WorldSession::HandleSceneTriggerEvent(WorldPackets::Scenes::SceneTriggerEvent& sceneTriggerEvent) +{ + TC_LOG_DEBUG("scenes", "HandleSceneTriggerEvent: SceneInstanceID: %u Event: %s", sceneTriggerEvent.SceneInstanceID, sceneTriggerEvent._Event); +} + +void WorldSession::HandleScenePlaybackComplete(WorldPackets::Scenes::ScenePlaybackComplete& scenePlaybackComplete) +{ + + TC_LOG_DEBUG("scenes", "HandleScenePlaybackComplete: SceneInstanceID: %u", scenePlaybackComplete.SceneInstanceID); +} + +void WorldSession::HandleScenePlaybackCanceled(WorldPackets::Scenes::ScenePlaybackCanceled& scenePlaybackCanceled) +{ + TC_LOG_DEBUG("scenes", "HandleScenePlaybackCanceled: SceneInstanceID: %u", scenePlaybackCanceled.SceneInstanceID); +} diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp index d265107fc5e..df37156d9dd 100644 --- a/src/server/game/Server/Packets/ScenePackets.cpp +++ b/src/server/game/Server/Packets/ScenePackets.cpp @@ -28,3 +28,20 @@ WorldPacket const* WorldPackets::Scenes::PlayScene::Write() return &_worldPacket; } + +void WorldPackets::Scenes::SceneTriggerEvent::Read() +{ + uint32 len = _worldPacket.ReadBits(6); + _worldPacket >> SceneInstanceID; + _Event = _worldPacket.ReadString(len); +} + +void WorldPackets::Scenes::ScenePlaybackComplete::Read() +{ + _worldPacket >> SceneInstanceID; +} + +void WorldPackets::Scenes::ScenePlaybackCanceled::Read() +{ + _worldPacket >> SceneInstanceID; +} diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h index 1fddb1cfadf..0b8847167ea 100644 --- a/src/server/game/Server/Packets/ScenePackets.h +++ b/src/server/game/Server/Packets/ScenePackets.h @@ -39,6 +39,37 @@ namespace WorldPackets ObjectGuid TransportGUID; Position Location; }; + + class SceneTriggerEvent final : public ClientPacket + { + public: + SceneTriggerEvent(WorldPacket&& packet) : ClientPacket(CMSG_SCENE_TRIGGER_EVENT, std::move(packet)) { } + + void Read() override; + + uint32 SceneInstanceID; + std::string _Event; + }; + + class ScenePlaybackComplete final : public ClientPacket + { + public: + ScenePlaybackComplete(WorldPacket&& packet) : ClientPacket(CMSG_SCENE_PLAYBACK_COMPLETE, std::move(packet)) { } + + void Read() override; + + uint32 SceneInstanceID; + }; + + class ScenePlaybackCanceled final : public ClientPacket + { + public: + ScenePlaybackCanceled(WorldPacket&& packet) : ClientPacket(CMSG_SCENE_PLAYBACK_CANCELED, std::move(packet)) { } + + void Read() override; + + uint32 SceneInstanceID; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 79570812b9c..25755dbaf8e 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -44,6 +44,7 @@ #include "Packets/QuestPackets.h" #include "Packets/ReferAFriendPackets.h" #include "Packets/ReputationPackets.h" +#include "Packets/ScenePackets.h" #include "Packets/SocialPackets.h" #include "Packets/TalentPackets.h" #include "Packets/TradePackets.h" @@ -693,9 +694,9 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_CUF_PROFILES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles ); DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave); DEFINE_HANDLER(CMSG_SAVE_GUILD_EMBLEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::SaveGuildEmblem, &WorldSession::HandleSaveGuildEmblem); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SCENE_TRIGGER_EVENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackCanceled, &WorldSession::HandleScenePlaybackCanceled); + DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackComplete, &WorldSession::HandleScenePlaybackComplete); + DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::SceneTriggerEvent, &WorldSession::HandleSceneTriggerEvent); DEFINE_OPCODE_HANDLER_OLD(CMSG_SELF_RES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode ); DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SellItem, &WorldSession::HandleSellItemOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SELL_WOW_TOKEN_CONFIRM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -1480,7 +1481,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_OBJECT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ONE_SHOT_ANIM_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SCENE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SCENE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index f85a682eb4b..42a0f994ee1 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -367,6 +367,13 @@ namespace WorldPackets class RequestForcedReactions; } + namespace Scenes + { + class SceneTriggerEvent; + class ScenePlaybackComplete; + class ScenePlaybackCanceled; + } + namespace Social { class AddFriend; @@ -1390,6 +1397,11 @@ class WorldSession void HandleObjectUpdateFailedOpcode(WorldPacket& recvPacket); void HandleRequestCategoryCooldowns(WorldPackets::Spells::RequestCategoryCooldowns& requestCategoryCooldowns); + // Scenes + void HandleSceneTriggerEvent(WorldPackets::Scenes::SceneTriggerEvent& sceneTriggerEvent); + void HandleScenePlaybackComplete(WorldPackets::Scenes::ScenePlaybackComplete& scenePlaybackComplete); + void HandleScenePlaybackCanceled(WorldPackets::Scenes::ScenePlaybackCanceled& scenePlaybackCanceled); + void SendSpellCategoryCooldowns(); // Compact Unit Frames (4.x) diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index d9fada1d76c..bfc61ad9f78 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1437,10 +1437,10 @@ public: if (!*args) return false; - int32 SceneID = 0; - int32 PlaybackFlags = 0; - int32 SceneInstanceID = 0; - int32 SceneScriptPackageID = 0; + int32 sceneID = 0; + int32 playbackFlags = 0; + int32 sceneInstanceID = 0; + int32 sceneScriptPackageID = 0; char* a = strtok((char*)args, " "); char* b = strtok(NULL, " "); @@ -1451,26 +1451,26 @@ public: return false; if (a) - SceneID = atoi(a); + sceneID = atoi(a); if (b) - PlaybackFlags = atoi(b); + playbackFlags = atoi(b); if (c) - SceneInstanceID = atoi(c); + sceneInstanceID = atoi(c); if (d) - SceneScriptPackageID = atoi(d); + sceneScriptPackageID = atoi(d); Player* me = handler->GetSession()->GetPlayer(); WorldPackets::Scenes::PlayScene packet; - packet.SceneID = SceneID; - packet.PlaybackFlags = PlaybackFlags; - packet.SceneInstanceID = SceneInstanceID; - packet.SceneScriptPackageID = SceneScriptPackageID; + packet.SceneID = sceneID; + packet.PlaybackFlags = playbackFlags; + packet.SceneInstanceID = sceneInstanceID; + packet.SceneScriptPackageID = sceneScriptPackageID; packet.TransportGUID = me->GetTransGUID(); packet.Location = me->GetPosition(); - handler->GetSession()->SendPacket(packet.Write()); + handler->GetSession()->SendPacket(packet.Write(), true); - TC_LOG_DEBUG("network", "Sent SMSG_PLAY_SCENE to %s, SceneID: %d, PlaybackFlags: %d, SceneInstanceID: %d, SceneScriptPackageID: %d", me->GetName().c_str(), SceneID, PlaybackFlags, SceneInstanceID, SceneScriptPackageID); + TC_LOG_DEBUG("network", "Sent SMSG_PLAY_SCENE to %s, SceneID: %d, PlaybackFlags: %d, SceneInstanceID: %d, SceneScriptPackageID: %d", me->GetName().c_str(), sceneID, playbackFlags, sceneInstanceID, sceneScriptPackageID); return true; } diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index ba4bcd765e7..03dc96e2ccb 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3350,6 +3350,7 @@ Logger.sql.updates=3,Console Server #Logger.phase=3,Console Server #Logger.pool=3,Console Server #Logger.rbac=3,Console Server +#Logger.scenes=3,Console Server #Logger.scripts=3,Console Server #Logger.scripts.ai=3,Console Server #Logger.server.bnetserver=3,Console Server |