1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 22:37:45 +00:00

fix searchinfo update, add searchinfo ipc struct

This commit is contained in:
NotAdam 2018-07-07 16:50:11 +10:00
parent 7607f42a67
commit 0fa55e3d9a
4 changed files with 36 additions and 12 deletions

View file

@ -27,6 +27,14 @@ namespace Common {
float z; float z;
}; };
enum ClientLanguage : uint8_t
{
Japanese = 1,
English = 2,
German = 4,
French = 8
};
enum EquipSlot : uint8_t enum EquipSlot : uint8_t
{ {
MainHand = 0, MainHand = 0,

View file

@ -9,6 +9,8 @@ namespace Network {
namespace Packets { namespace Packets {
namespace Client { namespace Client {
#pragma pack(push, 1)
struct FFXIVIpcGmCommand1 : FFXIVIpcBasePacket< GMCommand1 > struct FFXIVIpcGmCommand1 : FFXIVIpcBasePacket< GMCommand1 >
{ {
/* 0000 */ uint32_t commandId; /* 0000 */ uint32_t commandId;
@ -25,8 +27,6 @@ struct FFXIVIpcGmCommand2 : FFXIVIpcBasePacket< GMCommand2 >
/* 0014 */ char param1[0x20]; /* 0014 */ char param1[0x20];
}; };
#pragma pack(push, 4)
struct FFXIVIpcClientTrigger : FFXIVIpcBasePacket< ClientTrigger > struct FFXIVIpcClientTrigger : FFXIVIpcBasePacket< ClientTrigger >
{ {
/* 0000 */ uint16_t commandId; /* 0000 */ uint16_t commandId;
@ -47,8 +47,6 @@ struct FFXIVIpcClientTrigger : FFXIVIpcBasePacket< ClientTrigger >
/* 0018 */ uint64_t param3; /* 0018 */ uint64_t param3;
}; };
#pragma pack(pop)
struct FFXIVIpcSkillHandler : FFXIVIpcBasePacket< SkillHandler > struct FFXIVIpcSkillHandler : FFXIVIpcBasePacket< SkillHandler >
{ {
/* 0000 */ char pad_0000[1]; /* 0000 */ char pad_0000[1];
@ -119,6 +117,25 @@ struct FFXIVIpcPingHandler : FFXIVIpcBasePacket< PingHandler >
/* 0000 */ uint32_t timestamp; // maybe lol.. /* 0000 */ uint32_t timestamp; // maybe lol..
}; };
struct FFXIVIpcSetSearchInfo : FFXIVIpcBasePacket< SetSearchInfoHandler >
{
union
{
/* 0000 */ uint64_t status;
struct
{
/* 0000 */ uint32_t status1;
/* 0004 */ uint32_t status2;
};
};
/* 0008 */ char pad_0008[9];
/* 0011 */ Common::ClientLanguage language;
/* 0012 */ char searchComment[193];
};
#pragma pack(pop)
} }
} }
} }

View file

@ -488,7 +488,7 @@ void Core::Entity::Player::updateDbSearchInfo() const
stmtS1->setInt( 2, m_id ); stmtS1->setInt( 2, m_id );
pDb->execute( stmtS1 ); pDb->execute( stmtS1 );
auto stmtS2 = pDb->getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTREGION ); auto stmtS2 = pDb->getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SEARCHCOMMENT );
stmtS2->setString( 1, string( m_searchMessage != nullptr ? m_searchMessage : "" ) ); stmtS2->setString( 1, string( m_searchMessage != nullptr ? m_searchMessage : "" ) );
stmtS2->setInt( 2, m_id ); stmtS2->setInt( 2, m_id );
pDb->execute( stmtS2 ); pDb->execute( stmtS2 );

View file

@ -63,15 +63,14 @@ void Core::Network::GameConnection::fcInfoReqHandler( const Core::Network::Packe
void Core::Network::GameConnection::setSearchInfoHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, void Core::Network::GameConnection::setSearchInfoHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player ) Entity::Player& player )
{ {
Packets::FFXIVARR_PACKET_RAW copy = inPacket; const auto packet = ZoneChannelPacket< Client::FFXIVIpcSetSearchInfo >( inPacket, true );
auto inval = *reinterpret_cast< uint32_t* >( &copy.data[0x10] ); const auto& inval = packet.data().status1;
auto inval1 = *reinterpret_cast< uint32_t* >( &copy.data[0x14] ); const auto& inval1 = packet.data().status2;
auto status = *reinterpret_cast< uint64_t* >( &copy.data[0x10] ); const auto& status = packet.data().status;
const auto& selectRegion = packet.data().language;
auto selectRegion = copy.data[0x21]; player.setSearchInfo( selectRegion, 0, packet.data().searchComment );
player.setSearchInfo( selectRegion, 0, reinterpret_cast< char* >( &copy.data[0x22] ) );
player.setOnlineStatusMask( status ); player.setOnlineStatusMask( status );