diff options
author | Nayd <dnpd.dd@gmail.com> | 2015-01-28 22:26:47 +0000 |
---|---|---|
committer | Nayd <dnpd.dd@gmail.com> | 2015-01-28 22:26:47 +0000 |
commit | a93c40143f4e79577ac8e0a3faee92b1effbcd89 (patch) | |
tree | f88ae1f671f19f389f876b8aad23f58a862b4da4 | |
parent | 802725817bcdab6a838e2b86a22bbe10b03370d4 (diff) |
Core/Packets: Update and enable SMSG_ATTACKSWING_ERROR and SMSG_CANCEL_COMBAT
Removed old SMSG_ATTACKSWING_NOTINRANGE, SMSG_ATTACKSWING_DEADTARGET, SMSG_ATTACKSWING_CANT_ATTACK and SMSG_ATTACKSWING_BADFACING
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 31 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatPackets.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatPackets.h | 19 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 6 |
7 files changed, 58 insertions, 31 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index bd084491dee..4e32d8ca4e4 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -33,6 +33,7 @@ #include "CharacterPackets.h" #include "TalentPackets.h" #include "Chat.h" +#include "CombatPackets.h" #include "Common.h" #include "ConditionMgr.h" #include "CreatureAI.h" @@ -19937,12 +19938,6 @@ bool Player::CanSpeak() const /*** LOW LEVEL FUNCTIONS:Notifiers ***/ /*********************************************************/ -void Player::SendAttackSwingNotInRange() -{ - WorldPacket data(SMSG_ATTACKSWING_NOTINRANGE, 0); - GetSession()->SendPacket(&data); -} - void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, SQLTransaction& trans) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_POSITION); @@ -19971,26 +19966,32 @@ void Player::SetUInt32ValueInArray(Tokenizer& Tokenizer, uint16 index, uint32 va void Player::SendAttackSwingDeadTarget() { - WorldPacket data(SMSG_ATTACKSWING_DEADTARGET, 0); - GetSession()->SendPacket(&data); + WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_DEADTARGET); + GetSession()->SendPacket(packet.Write()); } void Player::SendAttackSwingCantAttack() { - WorldPacket data(SMSG_ATTACKSWING_CANT_ATTACK, 0); - GetSession()->SendPacket(&data); + WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_CANT_ATTACK); + GetSession()->SendPacket(packet.Write()); } -void Player::SendAttackSwingCancelAttack() +void Player::SendAttackSwingNotInRange() { - WorldPacket data(SMSG_CANCEL_COMBAT, 0); - GetSession()->SendPacket(&data); + WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_NOTINRANGE); + GetSession()->SendPacket(packet.Write()); } void Player::SendAttackSwingBadFacingAttack() { - WorldPacket data(SMSG_ATTACKSWING_BADFACING, 0); - GetSession()->SendPacket(&data); + WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_BADFACING); + GetSession()->SendPacket(packet.Write()); +} + +void Player::SendAttackSwingCancelAttack() +{ + WorldPackets::Combat::CancelCombat packet; + GetSession()->SendPacket(packet.Write()); } void Player::SendAutoRepeatCancel(Unit* target) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e895e696bb4..e72a22fefbb 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -670,6 +670,14 @@ struct SkillStatusData typedef std::unordered_map<uint32, SkillStatusData> SkillStatusMap; +enum AttackSwingErr +{ + ATTACKSWINGERR_CANT_ATTACK = 0, + ATTACKSWINGERR_NOTINRANGE = 1, + ATTACKSWINGERR_BADFACING = 2, + ATTACKSWINGERR_DEADTARGET = 3 +}; + class Quest; class Spell; class Item; diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index a23cbc7515b..53a489ebc21 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -140,3 +140,10 @@ WorldPacket const* WorldPackets::Combat::AttackerStateUpdate::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Combat::AttackSwingError::Write() +{ + _worldPacket.WriteBits(Reason, 2); + _worldPacket.FlushBits(); + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 012859ffc65..54d97e5774c 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -36,6 +36,17 @@ namespace WorldPackets ObjectGuid Victim; }; + class AttackSwingError final : public ServerPacket + { + public: + AttackSwingError() : ServerPacket(SMSG_ATTACKSWING_ERROR, 4) { } + AttackSwingError(AttackSwingErr reason) : ServerPacket(SMSG_ATTACKSWING_ERROR, 4), Reason(reason) { } + + WorldPacket const* Write() override; + + AttackSwingErr Reason = ATTACKSWINGERR_CANT_ATTACK; + }; + class AttackStop final : public ClientPacket { public: @@ -165,6 +176,14 @@ namespace WorldPackets UnkAttackerState UnkState; float Unk = 0.0f; }; + + class CancelCombat final : public ServerPacket + { + public: + CancelCombat() : ServerPacket(SMSG_CANCEL_COMBAT, 0) { } + + WorldPacket const* Write() override { return &_worldPacket; } + }; } } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 710059f1d3c..4a0d0bfbd12 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -341,7 +341,7 @@ namespace WorldPackets void Read() override { } }; - class RequestCemeteryListResponse : public ServerPacket + class RequestCemeteryListResponse final : public ServerPacket { public: RequestCemeteryListResponse() : ServerPacket(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, 1) { } @@ -363,7 +363,7 @@ namespace WorldPackets uint32 Response = 0; }; - class AreaTriggerNoCorpse : public ServerPacket + class AreaTriggerNoCorpse final : public ServerPacket { public: AreaTriggerNoCorpse() : ServerPacket(SMSG_AREA_TRIGGER_NO_CORPSE, 0) { } @@ -371,7 +371,7 @@ namespace WorldPackets WorldPacket const* Write() override { return &_worldPacket; } }; - class Weather : public ServerPacket + class Weather final : public ServerPacket { public: Weather(); @@ -384,7 +384,7 @@ namespace WorldPackets WeatherState WeatherID = WEATHER_STATE_FINE; }; - class StandStateChange : public ClientPacket + class StandStateChange final : public ClientPacket { public: StandStateChange(WorldPacket&& packet) : ClientPacket(CMSG_STAND_STATE_CHANGE, std::move(packet)) { } @@ -394,7 +394,7 @@ namespace WorldPackets UnitStandStateType StandState = UNIT_STAND_STATE_STAND; }; - class StandStateUpdate : public ServerPacket + class StandStateUpdate final : public ServerPacket { public: StandStateUpdate() : ServerPacket(SMSG_STAND_STATE_UPDATE, 1) { } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index a7ed472d192..49649c2df0c 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -938,11 +938,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKERSTATEUPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTART, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTOP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_BADFACING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_CANT_ATTACK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_DEADTARGET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_NOTINRANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_BIDDER_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_CLOSED_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1056,7 +1052,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_UPDATE_INVITE_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_SHAKE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SCENE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index c9571d34d2e..fa0ffde42cb 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -846,11 +846,7 @@ enum OpcodeServer : uint32 SMSG_ATTACKERSTATEUPDATE = 0x1204, SMSG_ATTACKSTART = 0x1D3E, SMSG_ATTACKSTOP = 0x1382, - SMSG_ATTACKSWING_BADFACING = 0xBADD, - SMSG_ATTACKSWING_CANT_ATTACK = 0xBADD, - SMSG_ATTACKSWING_DEADTARGET = 0xBADD, SMSG_ATTACKSWING_ERROR = 0x0509, - SMSG_ATTACKSWING_NOTINRANGE = 0xBADD, SMSG_AUCTION_BIDDER_NOTIFICATION = 0xBADD, SMSG_AUCTION_CLOSED_NOTIFICATION = 0x058E, SMSG_AUCTION_COMMAND_RESULT = 0x0B2D, @@ -1712,7 +1708,7 @@ enum OpcodeServer : uint32 SMSG_SPELL_START = 0x0803, SMSG_SPELL_UPDATE_CHAIN_TARGETS = 0x0374, SMSG_SPIRIT_HEALER_CONFIRM = 0x1331, - SMSG_STAND_STATE_UPDATE = 0x1311, + SMSG_STAND_STATE_UPDATE = 0x1311, SMSG_START_ELAPSED_TIMER = 0x0D2A, SMSG_START_ELAPSED_TIMERS = 0x093F, SMSG_START_LOOT_ROLL = 0x1B84, |