diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.h | 21 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
7 files changed, 41 insertions, 12 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 67f533f0833..fabdf61c2c0 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -88,6 +88,7 @@ #include "WorldStatePackets.h" #include "MiscPackets.h" #include "ChatPackets.h" +#include "MovementPackets.h" #define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS) @@ -2159,14 +2160,12 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if (!GetSession()->PlayerLogout()) { - WorldPacket data(SMSG_NEW_WORLD, 4 + 4 + 4 + 4 + 4); - data << float(m_teleport_dest.GetPositionX()); - data << float(m_teleport_dest.GetOrientation()); - data << float(m_teleport_dest.GetPositionZ()); - data << uint32(mapid); - data << float(m_teleport_dest.GetPositionY()); + WorldPackets::Movement::NewWorld packet; + packet.MapID = mapid; + packet.Pos = m_teleport_dest; + packet.Reason = 16; - GetSession()->SendPacket(&data); + GetSession()->SendPacket(packet.Write()); SendSavedInstances(); } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index adc2e185591..1ccd7294cc8 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -36,7 +36,7 @@ #define MOVEMENT_PACKET_TIME_DELAY 0 -void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/) +void WorldSession::HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortAck& /*packet*/) { TC_LOG_DEBUG("network", "WORLD: got MSG_MOVE_WORLDPORT_ACK."); HandleMoveWorldportAckOpcode(); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 2b5c2e9e052..09197206fdc 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -820,7 +820,7 @@ enum SpellAttr13 #define MAX_TALENT_GROUP 1 #define MIN_TALENT_GROUPS 1 #define MAX_TALENT_GROUPS 2 -#define MAX_GLYPH_SLOT_INDEX 9 +#define MAX_GLYPH_SLOT_INDEX 6 #define MIN_SPECIALIZATION_LEVEL 10 #define MAX_SPECIALIZATIONS 4 diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 45d5b86e3fd..de09acbd37a 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -175,3 +175,11 @@ WorldPacket const* WorldPackets::Movement::ServerPlayerMovement::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Movement::NewWorld::Write() +{ + _worldPacket << MapID; + _worldPacket << Pos.PositionXYZOStream(); + _worldPacket << Reason; + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index f018757eada..d88438908d5 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -19,6 +19,7 @@ #define MovementPackets_h__ #include "Packet.h" +#include "Object.h" namespace WorldPackets { @@ -43,6 +44,26 @@ namespace WorldPackets Unit* mover; }; + + class NewWorld final : public ServerPacket + { + public: + NewWorld() : ServerPacket(SMSG_NEW_WORLD, 24) {} + + WorldPacket const* Write() override; + + int32 MapID = 0; + uint32 Reason = 0; + Position Pos; + }; + + class WorldPortAck final : public ClientPacket + { + public: + WorldPortAck(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } + + void Read() override {}; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 9699d519fd3..7da92b20908 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -474,7 +474,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_MOVE_STOP_TURN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Movement::ClientPlayerMovement, &WorldSession::HandleMovementOpcodes); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_TIME_SKIPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_WATER_WALK_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_WORLDPORT_ACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode ); + DEFINE_HANDLER(CMSG_MOVE_WORLDPORT_ACK, STATUS_TRANSFER, PROCESS_THREADUNSAFE, WorldPackets::Movement::WorldPortAck, &WorldSession::HandleMoveWorldportAckOpcode); DEFINE_HANDLER(CMSG_NAME_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryPlayerName, &WorldSession::HandleNameQueryOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera ); DEFINE_OPCODE_HANDLER_OLD(CMSG_NPC_TEXT_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNpcTextQueryOpcode ); @@ -1133,7 +1133,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NAME_QUERY_RESPONSE, STATUS_NEVER); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_UNHANDLED); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_UNHANDLED); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD_ABORT, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFICATION, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DANCE, STATUS_UNHANDLED); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3eaf30bd779..011cfbaf6c4 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -144,6 +144,7 @@ namespace WorldPackets namespace Movement { class ClientPlayerMovement; + class WorldPortAck; } } @@ -616,7 +617,7 @@ class WorldSession void HandleGameObjectQueryOpcode(WorldPacket& recvPacket); - void HandleMoveWorldportAckOpcode(WorldPacket& recvPacket); + void HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortAck& packet); void HandleMoveWorldportAckOpcode(); // for server-side calls void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet); |