aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIntel <chemicstry@gmail.com>2014-11-17 02:36:53 +0200
committerIntel <chemicstry@gmail.com>2014-11-17 02:36:53 +0200
commit2580e7e30b21fdc46ea302761b08545d222fbaab (patch)
tree1cfa05f4f94d7da480a67b3fc9ce383f7dd1f6d6
parent218f14f84b692288e58c292a9808a073e50f96ad (diff)
Core/Packets: Added SMSG_NEW_WORLD and CMSG_MOVE_WORLDPORT_ACK
Also fixed wrong glyph index define
-rw-r--r--src/server/game/Entities/Player/Player.cpp13
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp2
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h21
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h3
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);