1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-25 19:17:45 +00:00

Fix CFCancel so we can enter more than one instance.

This commit is contained in:
collett 2020-05-01 01:03:27 +09:00
parent 587e2937de
commit eab07e1edf
5 changed files with 33 additions and 6 deletions

View file

@ -69,7 +69,7 @@ namespace Sapphire::Network::Packets
CFDutyInfo = 0x007A,
CFPlayerInNeed = 0xF07F,
CFPreferredRole = 0x0186, // added 5.25
CFCancel = 0x00B7, // updated 5.25
SocialRequestError = 0xF0AD,
CFRegistered = 0x00B8, // updated 4.1
@ -119,9 +119,9 @@ namespace Sapphire::Network::Packets
CharaFreeCompanyTag = 0x013B, // updated 4.5
FreeCompanyBoardMsg = 0x013C, // updated 4.5
FreeCompanyInfo = 0x0000,//0x013D, // updated 4.5
ExamineFreeCompanyInfo = 0x013E, // updated 4.5
ExamineFreeCompanyInfo = 0xF13E, // updated 4.5
FreeCompanyUpdateShortMessage = 0x0157, // added 5.0
FreeCompanyUpdateShortMessage = 0xF157, // added 5.0
StatusEffectList = 0x01D7, // updated 5.25
EurekaStatusEffectList = 0x0167, // updated 5.18
@ -177,13 +177,13 @@ namespace Sapphire::Network::Packets
InventoryActionAck = 0x01AE, // updated 5.25
UpdateInventorySlot = 0x0151, // updated 5.25
HuntingLogEntry = 0x01B3, // updated 5.0
HuntingLogEntry = 0xF1B3, // updated 5.0
EventPlay = 0x02C3, // updated 5.25
EventPlay4 = 0x029A, // updated 5.25
EventPlay8 = 0x0119, // updated 5.18
EventPlay16 = 0x01FB, // updated 5.18
EventPlay32 = 0x017D, // updated 5.21
EventPlay32 = 0x02D9, // updated 5.25
EventPlay64 = 0x00E5, // updated 5.18
EventPlay128 = 0x02BE, // updated 5.18
EventPlay255 = 0x01AC, // updated 5.25
@ -290,7 +290,7 @@ namespace Sapphire::Network::Packets
CFCommenceHandler = 0x0228, // updated 5.25
CFCancelHandler = 0x013E, // updated 5.25
CFRegisterDuty = 0x0180, // updated 5.25
CFRegisterRoulette = 0x0395, // updated 5.25
PlayTimeHandler = 0x02FE, // updated 5.25

View file

@ -1999,6 +1999,12 @@ namespace Sapphire::Network::Packets::Server
uint32_t padding;
};
struct FFXIVIpcCFCancel : FFXIVIpcBasePacket< CFCancel >
{
uint32_t cancelReason;
uint32_t unknown2;
};
}
#endif /*_CORE_NETWORK_PACKETS_SERVER_IPC_H*/

View file

@ -117,6 +117,7 @@ Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pH
setZoneHandler( ClientZoneIpcType::CFRegisterDuty, "CFRegisterDuty", &GameConnection::cfRegisterDuty );
setZoneHandler( ClientZoneIpcType::CFRegisterRoulette, "CFRegisterRoulette", &GameConnection::cfRegisterRoulette );
setZoneHandler( ClientZoneIpcType::CFCommenceHandler, "CFDutyAccepted", &GameConnection::cfDutyAccepted );
setZoneHandler( ClientZoneIpcType::CFCancelHandler, "CFCancel", &GameConnection::cfCancel );
setZoneHandler( ClientZoneIpcType::ReqEquipDisplayFlagsChange, "ReqEquipDisplayFlagsChange",
&GameConnection::reqEquipDisplayFlagsHandler );

View file

@ -155,6 +155,8 @@ namespace Sapphire::Network
DECLARE_HANDLER( cfDutyAccepted );
DECLARE_HANDLER( cfCancel );
DECLARE_HANDLER( actionHandler );
DECLARE_HANDLER( placedActionHandler );

View file

@ -66,10 +66,15 @@ void Sapphire::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_
player.sendDebug( "Duty register request for contentid#{0}", contentId );
// let's cancel it because otherwise you can't register it again
/*
auto cfCancelPacket = makeZonePacket< FFXIVIpcCFNotify >( player.getId() );
cfCancelPacket->data().state1 = 3;
cfCancelPacket->data().state2 = 1; // Your registration is withdrawn.
queueOutPacket( cfCancelPacket );
*/
auto packet = makeZonePacket< FFXIVIpcCFCancel >( player.getId() );
packet->data().cancelReason = 890;
queueOutPacket( packet );
auto cfCondition = exdData.get< Sapphire::Data::ContentFinderCondition >( contentId );
if( !cfCondition )
@ -90,10 +95,15 @@ void Sapphire::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_
void Sapphire::Network::GameConnection::cfRegisterRoulette( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
/*
auto cfCancelPacket = makeZonePacket< FFXIVIpcCFNotify >( player.getId() );
cfCancelPacket->data().state1 = 3;
cfCancelPacket->data().state2 = 1; // Your registration is withdrawn.
queueOutPacket( cfCancelPacket );
*/
auto packet = makeZonePacket< FFXIVIpcCFCancel >( player.getId() );
packet->data().cancelReason = 890;
queueOutPacket( packet );
player.sendDebug( "Roulette register" );
}
@ -103,3 +113,11 @@ void Sapphire::Network::GameConnection::cfDutyAccepted( const Packets::FFXIVARR_
{
player.sendDebug( "TODO: Duty accept" );
}
void Sapphire::Network::GameConnection::cfCancel( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto packet = makeZonePacket< FFXIVIpcCFCancel >( player.getId() );
packet->data().cancelReason = 890;
queueOutPacket( packet );
}