full implement FETCH_BLEEP_PROXIES for shop2

This commit is contained in:
luis
2026-09-24 07:25:46 -03:00
parent cc8c877fc5
commit bbbf3bea53
5 changed files with 66 additions and 2 deletions
+5
View File
@@ -1678,6 +1678,11 @@ void WorldSession::HandleSetStopConversation(WorldPackets::Misc::SetStopConversa
conversation->Remove();
}
void WorldSession::HandleFetchBleepProxies(WorldPackets::Misc::FetchBleepProxies& fetchBleepProxies)
{
SendPacket(WorldPackets::Misc::FetchBleepProxiesResponse().Write());
}
void WorldSession::HandleRafClaimNextReward(WorldPackets::RaF::RafClaimNextReward& /*packet*/)
{
//LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_RAF_CLAIMED_ALL);
@@ -1077,4 +1077,30 @@ WorldPacket const* UpdateRecentPlayerGuids::Write()
_worldPacket << uint32(0);
return &_worldPacket;
}
WorldPacket const* FetchBleepProxiesResponse::Write()
{
// Reader 0x612BD0. Gegen sechs echte Pakete byteweise nachgerechnet, Rest jeweils 0.
_worldPacket << Size<uint32>(Proxies);
for (BleepProxy const& proxy : Proxies)
{
// Bit-Sektion 6 + 5 + 8 = 19 Bit -> 3 Byte, MSB-first.
_worldPacket << SizedString::BitsSize<6>(proxy.Address);
_worldPacket << SizedString::BitsSize<5>(proxy.PingToken);
_worldPacket << SizedString::BitsSize<8>(proxy.ProxyId);
_worldPacket.FlushBits();
_worldPacket << uint64(proxy.PingPort);
_worldPacket << uint64(proxy.PingTokenValidDuration);
_worldPacket << uint64(proxy.Port);
_worldPacket << SizedString::Data(proxy.Address);
_worldPacket << SizedString::Data(proxy.PingToken);
_worldPacket << SizedString::Data(proxy.ProxyId);
}
return &_worldPacket;
}
}
@@ -1511,6 +1511,37 @@ namespace WorldPackets
explicit UpdateRecentPlayerGuids() : ServerPacket(SMSG_UPDATE_RECENT_PLAYER_GUIDS, 8) {}
WorldPacket const* Write() override;
};
class FetchBleepProxies final : public ClientPacket
{
public:
explicit FetchBleepProxies(WorldPacket&& packet) : ClientPacket(CMSG_FETCH_BLEEP_PROXIES, std::move(packet)) {}
void Read() override {}
};
// Element von SMSG_FETCH_BLEEP_PROXIES_RESPONSE, Client-Typ BleepProxy (360 Byte).
struct BleepProxy
{
std::string Address; // Puffer 46, bits<6>, ohne NUL
uint64 PingPort = 0;
std::string PingToken; // Puffer 25, bits<5>, ohne NUL
uint64 PingTokenValidDuration = 0; // Nanosekunden
uint64 Port = 0;
std::string ProxyId; // Puffer 256, bits<8>, ohne NUL
};
// 0x450383, Reader 0x612BD0. Draht beidseitig belegt (siehe Kopfkommentar).
class FetchBleepProxiesResponse final : public ServerPacket
{
public:
explicit FetchBleepProxiesResponse() : ServerPacket(SMSG_FETCH_BLEEP_PROXIES_RESPONSE, 4) {}
WorldPacket const* Write() override;
std::vector<BleepProxy> Proxies;
};
}
}
+2 -2
View File
@@ -461,7 +461,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteEnumOpcode);
DEFINE_HANDLER(CMSG_EXPIRE_BLEEP_TOKENS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_FAR_SIGHT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleFarSightOpcode);
DEFINE_HANDLER(CMSG_FETCH_BLEEP_PROXIES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_FETCH_BLEEP_PROXIES, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleFetchBleepProxies);
DEFINE_HANDLER(CMSG_GAME_OBJ_REPORT_USE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGameobjectReportUse);
DEFINE_HANDLER(CMSG_GAME_OBJ_USE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGameObjectUseOpcode);
DEFINE_HANDLER(CMSG_GARRISON_ADD_FOLLOWER_HEALTH, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGarrisonAddFollowerHealth);
@@ -1553,7 +1553,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEIGN_DEATH_RESISTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FETCH_BLEEP_PROXIES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FETCH_BLEEP_PROXIES_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_ESCAPED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_NOT_HOOKED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FLIGHT_SPLINE_SYNC, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+2
View File
@@ -864,6 +864,7 @@ namespace WorldPackets
class IslandQueue;
class ShowTradeSkill;
class SetStopConversation;
class FetchBleepProxies;
}
namespace MajorFactions
@@ -1717,6 +1718,7 @@ public:
void HandleIslandQueue(WorldPackets::Misc::IslandQueue& packet);
void HandleShowTradeSkill(WorldPackets::Misc::ShowTradeSkill& packet);
void HandleSetStopConversation(WorldPackets::Misc::SetStopConversation& setStopConversation);
void HandleFetchBleepProxies(WorldPackets::Misc::FetchBleepProxies& fetchBleepProxies);
// Inspect
void HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect);