missing opcodes implementation

This commit is contained in:
luis
2026-03-31 17:31:19 -03:00
parent f43549b385
commit dcd9f13034
5 changed files with 75 additions and 2 deletions
@@ -922,3 +922,9 @@ void WorldSession::HandleJoinSkirmish(WorldPackets::Battleground::JoinSkirmish&
sBattlegroundMgr->ScheduleQueueUpdate(0, bgQueueTypeId, bracketEntry->GetBracketId());
}
void WorldSession::HandleRequestScheduledPVPInfo(WorldPackets::Battleground::RequestScheduledPVPInfo& /*packet*/)
{
WorldPackets::Battleground::RequestScheduledPVPInfoResponse requestScheduledPVPInfoResponse;
SendPacket(requestScheduledPVPInfoResponse.Write());
}
@@ -479,5 +479,30 @@ void JoinSkirmish::Read()
_worldPacket >> Bracket;
IsRequeue = _worldPacket.ReadBit();
}
WorldPacket const* RequestScheduledPVPInfoResponse::Write()
{
_worldPacket << Bits<1>(HasBrawlInfo);
_worldPacket << Bits<1>(HasSpecialEventInfo);
_worldPacket.FlushBits();
if (HasBrawlInfo)
{
_worldPacket << Brawl->PvpBrawlID;
_worldPacket << Brawl->TimeToBrawl;
_worldPacket.WriteBit(Brawl->IsActive);
_worldPacket.FlushBits();
}
if (HasSpecialEventInfo)
{
_worldPacket << SpecialEvent->PvpBrawlID;
_worldPacket << SpecialEvent->AchievementId;
_worldPacket << Bits<1>(SpecialEvent->CanQueue);
_worldPacket.FlushBits();
}
return &_worldPacket;
}
//WowCommunity
}
@@ -606,6 +606,42 @@ namespace WorldPackets
uint8 Bracket = 0;
bool IsRequeue = false;
};
class RequestScheduledPVPInfo final : public ClientPacket
{
public:
RequestScheduledPVPInfo(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_SCHEDULED_PVP_INFO, std::move(packet)) {}
void Read() override {}
};
struct SpecialEventInfo
{
int32 PvpBrawlID = 0;
int32 AchievementId = 0;
bool CanQueue = true;
};
struct BrawlInfo
{
int32 PvpBrawlID = 0;
int32 TimeToBrawl = 0;
bool IsActive = true;
};
class RequestScheduledPVPInfoResponse final : public ServerPacket
{
public:
RequestScheduledPVPInfoResponse() : ServerPacket(SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE) {}
WorldPacket const* Write() override;
bool HasBrawlInfo = false;
bool HasSpecialEventInfo = false;
Optional<BrawlInfo> Brawl;
Optional<SpecialEventInfo> SpecialEvent;
};
//WowCommunity
}
}
+5 -2
View File
@@ -1002,14 +1002,17 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyEligibilityForDelveTiers);
DEFINE_HANDLER(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyJoinUpdates);
DEFINE_HANDLER(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyMemberStatsOpcode);
DEFINE_HANDLER(CMSG_REQUEST_PET_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPetInfo);
DEFINE_HANDLER(CMSG_REQUEST_PLAYED_TIME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePlayedTime);
DEFINE_HANDLER(CMSG_REQUEST_PVP_REWARDS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestPvpReward);
DEFINE_HANDLER(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode);
DEFINE_HANDLER(CMSG_REQUEST_RATED_PVP_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedPvpInfo);
DEFINE_HANDLER(CMSG_REQUEST_REALM_GUILD_MASTER_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_SCHEDULED_PVP_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_SCHEDULED_PVP_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestScheduledPVPInfo);
DEFINE_HANDLER(CMSG_REQUEST_STABLED_PETS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestStabledPets);
DEFINE_HANDLER(CMSG_REQUEST_STORE_FRONT_INFO_UPDATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_STORE_FRONT_INFO_UPDATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestStoreFrontInfoUpdate);
DEFINE_HANDLER(CMSG_REQUEST_SURVEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_TREASURE_PUNCH_LIST_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestVehicleExit);
+3
View File
@@ -204,6 +204,8 @@ namespace WorldPackets
class AcceptWargameInvite;
class BattlemasterJoinBrawl;
class JoinSkirmish;
class RequestScheduledPVPInfo;
class RequestScheduledPVPInfoResponse;
}
namespace Battlenet
@@ -2167,6 +2169,7 @@ class TC_GAME_API WorldSession
void HandleBattlemasterJoinBrawl(WorldPackets::Battleground::BattlemasterJoinBrawl& packet);
void JoinBracket(uint8 slot, uint8 rolesMask = 0);
void HandleJoinSkirmish(WorldPackets::Battleground::JoinSkirmish& packet);
void HandleRequestScheduledPVPInfo(WorldPackets::Battleground::RequestScheduledPVPInfo& /*packet*/);
void HandleMinimapPingOpcode(WorldPackets::Party::MinimapPingClient& packet);
void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet);