mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 14:37:44 +00:00
Merge pull request #46 from Minoost/matchmaking
Implement basic duty finder window response
This commit is contained in:
commit
db1832aeef
4 changed files with 66 additions and 10 deletions
|
@ -1309,17 +1309,13 @@ struct FFXIVIpcPrepareZoning : FFXIVIpcBasePacket<PrepareZoning>
|
||||||
struct FFXIVIpcCFNotify : FFXIVIpcBasePacket<CFNotify>
|
struct FFXIVIpcCFNotify : FFXIVIpcBasePacket<CFNotify>
|
||||||
{
|
{
|
||||||
uint32_t state1; // 3 = cancelled, 4 = duty ready
|
uint32_t state1; // 3 = cancelled, 4 = duty ready
|
||||||
uint32_t param; // if state1 == 3, state2 is cancelled reason
|
uint32_t state2; // if state1 == 3, state2 is cancelled reason
|
||||||
|
|
||||||
uint8_t classJob; // classJobId you registered
|
uint32_t param1; // usually classJobId
|
||||||
uint8_t unknown0[3];
|
uint32_t param2; // usually flag
|
||||||
|
uint32_t param3; // usually languages, sometimes join in progress timestamp
|
||||||
|
|
||||||
uint32_t unknown1; // unknown, just used 0x20442 from the dumped packet
|
uint16_t param4; // usually roulette id
|
||||||
|
|
||||||
uint8_t languages;
|
|
||||||
uint8_t unknown2[3];
|
|
||||||
|
|
||||||
uint16_t unknown3;
|
|
||||||
uint16_t contents[5];
|
uint16_t contents[5];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,12 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive,
|
||||||
|
|
||||||
setHandler( ClientIpcType::ReturnEventHandler, "EventHandlerReturn", &GameConnection::eventHandler );
|
setHandler( ClientIpcType::ReturnEventHandler, "EventHandlerReturn", &GameConnection::eventHandler );
|
||||||
setHandler( ClientIpcType::TradeReturnEventHandler, "EventHandlerReturn", &GameConnection::eventHandler );
|
setHandler( ClientIpcType::TradeReturnEventHandler, "EventHandlerReturn", &GameConnection::eventHandler );
|
||||||
|
|
||||||
|
setHandler(ClientIpcType::CFDutyInfoHandler, "CFDutyInfoRequest", &GameConnection::cfDutyInfoRequest );
|
||||||
|
setHandler(ClientIpcType::CFRegisterDuty, "CFRegisterDuty", &GameConnection::cfRegisterDuty );
|
||||||
|
setHandler(ClientIpcType::CFRegisterRoulette, "CFRegisterRoulette", &GameConnection::cfRegisterRoulette );
|
||||||
|
setHandler(ClientIpcType::CFCommenceHandler, "CFDutyAccepted", &GameConnection::cfDutyAccepted);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Network::GameConnection::~GameConnection()
|
Core::Network::GameConnection::~GameConnection()
|
||||||
|
|
|
@ -95,6 +95,13 @@ public:
|
||||||
DECLARE_HANDLER( discoveryHandler );
|
DECLARE_HANDLER( discoveryHandler );
|
||||||
DECLARE_HANDLER( eventHandler );
|
DECLARE_HANDLER( eventHandler );
|
||||||
DECLARE_HANDLER( logoutHandler );
|
DECLARE_HANDLER( logoutHandler );
|
||||||
|
|
||||||
|
DECLARE_HANDLER( cfDutyInfoRequest );
|
||||||
|
DECLARE_HANDLER( cfRegisterDuty );
|
||||||
|
DECLARE_HANDLER( cfRegisterRoulette );
|
||||||
|
DECLARE_HANDLER( cfDutyAccepted );
|
||||||
|
|
||||||
|
|
||||||
DECLARE_HANDLER( skillHandler );
|
DECLARE_HANDLER( skillHandler );
|
||||||
|
|
||||||
DECLARE_HANDLER( gm1Handler );
|
DECLARE_HANDLER( gm1Handler );
|
||||||
|
|
|
@ -1139,3 +1139,50 @@ void Core::Network::GameConnection::logoutHandler( Core::Network::Packets::GameP
|
||||||
logoutPacket.data().flags2 = 0x2000;
|
logoutPacket.data().flags2 = 0x2000;
|
||||||
queueOutPacket( logoutPacket );
|
queueOutPacket( logoutPacket );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Core::Network::GameConnection::cfDutyInfoRequest(Core::Network::Packets::GamePacketPtr pInPacket,
|
||||||
|
Core::Entity::PlayerPtr pPlayer)
|
||||||
|
{
|
||||||
|
GamePacketNew< FFXIVIpcCFDutyInfo > dutyInfoPacket( pPlayer->getId() );
|
||||||
|
queueOutPacket( dutyInfoPacket );
|
||||||
|
|
||||||
|
GamePacketNew< FFXIVIpcCFPlayerInNeed > inNeedsPacket( pPlayer->getId() );
|
||||||
|
queueOutPacket( inNeedsPacket );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Network::GameConnection::cfRegisterDuty(Core::Network::Packets::GamePacketPtr pInPacket,
|
||||||
|
Core::Entity::PlayerPtr pPlayer)
|
||||||
|
{
|
||||||
|
// TODO use for loop for this
|
||||||
|
auto contentId1 = pInPacket->getValAt< uint16_t >( 46 );
|
||||||
|
auto contentId2 = pInPacket->getValAt< uint16_t >( 48 );
|
||||||
|
auto contentId3 = pInPacket->getValAt< uint16_t >( 50 );
|
||||||
|
auto contentId4 = pInPacket->getValAt< uint16_t >( 52 );
|
||||||
|
auto contentId5 = pInPacket->getValAt< uint16_t >( 54 );
|
||||||
|
|
||||||
|
pPlayer->sendDebug("Duty register request");
|
||||||
|
pPlayer->sendDebug("ContentId1" + std::to_string(contentId1));
|
||||||
|
pPlayer->sendDebug("ContentId2" + std::to_string(contentId2));
|
||||||
|
pPlayer->sendDebug("ContentId3" + std::to_string(contentId3));
|
||||||
|
pPlayer->sendDebug("ContentId4" + std::to_string(contentId4));
|
||||||
|
pPlayer->sendDebug("ContentId5" + std::to_string(contentId5));
|
||||||
|
|
||||||
|
// let's cancel it because otherwise you can't register it again
|
||||||
|
GamePacketNew< FFXIVIpcCFNotify > cfCancelPacket( pPlayer->getId() );
|
||||||
|
cfCancelPacket.data().state1 = 3;
|
||||||
|
cfCancelPacket.data().state2 = 1; // Your registration is withdrawn.
|
||||||
|
queueOutPacket( cfCancelPacket );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Network::GameConnection::cfRegisterRoulette(Core::Network::Packets::GamePacketPtr pInPacket,
|
||||||
|
Core::Entity::PlayerPtr pPlayer)
|
||||||
|
{
|
||||||
|
pPlayer->sendDebug("Roulette register");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Network::GameConnection::cfDutyAccepted(Core::Network::Packets::GamePacketPtr pInPacket,
|
||||||
|
Core::Entity::PlayerPtr pPlayer)
|
||||||
|
{
|
||||||
|
pPlayer->sendDebug("TODO: Duty accept");
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue