mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 15:17:46 +00:00
commit
9e061aefa3
3 changed files with 58 additions and 40 deletions
|
@ -473,34 +473,40 @@ enum class OnlineStatus : uint8_t
|
||||||
WaitingforFreeCompanyApproval = 8,
|
WaitingforFreeCompanyApproval = 8,
|
||||||
NotFound = 9,
|
NotFound = 9,
|
||||||
Offline = 10,
|
Offline = 10,
|
||||||
Busy = 11,
|
Mentor = 11,
|
||||||
PvP = 12,
|
Busy = 12,
|
||||||
PlayingTripleTriad = 13,
|
PvP = 13,
|
||||||
ViewingCutscene = 14,
|
PlayingTripleTriad = 14,
|
||||||
UsingaChocoboPorter = 15,
|
ViewingCutscene = 15,
|
||||||
AwayfromKeyboard = 16,
|
UsingaChocoboPorter = 16,
|
||||||
LookingforRepairs = 17,
|
AwayfromKeyboard = 17,
|
||||||
LookingtoRepair = 18,
|
LookingforRepairs = 18,
|
||||||
LookingtoMeldMateria = 19,
|
LookingtoRepair = 19,
|
||||||
LookingforParty = 20,
|
LookingtoMeldMateria = 20,
|
||||||
//Missing = 21
|
LookingforParty = 21,
|
||||||
WaitingforDutyFinder = 22,
|
//Missing = 22
|
||||||
RecruitingPartyMembers = 23,
|
WaitingforDutyFinder = 23,
|
||||||
NewAdventurer = 24,
|
RecruitingPartyMembers = 24,
|
||||||
AllianceLeader = 25,
|
Mentor25 = 25,
|
||||||
AlliancePartyLeader = 26,
|
PvEMentor = 26,
|
||||||
AlliancePartyMember = 27,
|
TradeMentor = 27,
|
||||||
PartyLeader = 28,
|
PvPMentor = 28,
|
||||||
PartyMember = 29,
|
|
||||||
AnotherWorld = 30,
|
|
||||||
SharingDuty = 31,
|
|
||||||
SimilarDuty = 32,
|
|
||||||
InDuty = 33,
|
|
||||||
TrialAdventurer = 34,
|
|
||||||
|
|
||||||
FreeCompany = 35,
|
NewAdventurer = 29,
|
||||||
GrandCompany = 36,
|
AllianceLeader = 30,
|
||||||
Online = 37,
|
AlliancePartyLeader = 31,
|
||||||
|
AlliancePartyMember = 32,
|
||||||
|
PartyLeader = 33,
|
||||||
|
PartyMember = 34,
|
||||||
|
AnotherWorld = 25,
|
||||||
|
SharingDuty = 36,
|
||||||
|
SimilarDuty = 37,
|
||||||
|
InDuty = 38,
|
||||||
|
TrialAdventurer = 39,
|
||||||
|
|
||||||
|
FreeCompany = 40,
|
||||||
|
GrandCompany = 41,
|
||||||
|
Online = 42,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -76,7 +76,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
||||||
uint8_t HierarchyStatus;
|
uint8_t HierarchyStatus;
|
||||||
uint8_t HierarchyType;
|
uint8_t HierarchyType;
|
||||||
uint8_t HierarchyGroup;
|
uint8_t HierarchyGroup;
|
||||||
uint8_t HierarchyUnk;
|
uint8_t IsDeleted;
|
||||||
uint16_t TerritoryType;
|
uint16_t TerritoryType;
|
||||||
uint8_t GrandCompanyID;
|
uint8_t GrandCompanyID;
|
||||||
uint8_t Region;
|
uint8_t Region;
|
||||||
|
@ -114,14 +114,16 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
||||||
uint64_t SelectClassID;
|
uint64_t SelectClassID;
|
||||||
uint64_t CrestID;
|
uint64_t CrestID;
|
||||||
uint8_t ListType;
|
uint8_t ListType;
|
||||||
|
|
||||||
char SearchComment[193];
|
char SearchComment[193];
|
||||||
char FreeCompanyName[23];
|
char FreeCompanyName[23];
|
||||||
uint8_t GrandCompanyRank[3];
|
uint8_t GrandCompanyRank[3];
|
||||||
|
|
||||||
struct ClassJobEntry
|
struct ClassJobEntry
|
||||||
{
|
{
|
||||||
uint16_t id;
|
uint16_t id;
|
||||||
uint16_t level;
|
uint16_t level;
|
||||||
} ClassData[Common::CLASSJOB_TOTAL];
|
} ClassData[34]; // ClassJob::MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcPcSearchResult : FFXIVIpcBasePacket< PcSearchResult >
|
struct FFXIVIpcPcSearchResult : FFXIVIpcBasePacket< PcSearchResult >
|
||||||
|
|
|
@ -44,7 +44,7 @@ void Sapphire::Network::GameConnection::getCommonlistDetailHandler( const Packet
|
||||||
resultPacket->data().ListType = data.ListType;
|
resultPacket->data().ListType = data.ListType;
|
||||||
resultPacket->data().CommunityID = data.CommunityID;
|
resultPacket->data().CommunityID = data.CommunityID;
|
||||||
resultPacket->data().DetailCharacterID = data.DetailCharacterID;
|
resultPacket->data().DetailCharacterID = data.DetailCharacterID;
|
||||||
strcpy( resultPacket->data().FreeCompanyName, "ducks" ); // didn't work
|
strcpy( resultPacket->data().FreeCompanyName, "Awooga" );
|
||||||
|
|
||||||
resultPacket->data().GrandCompanyRank[ 0 ] = pPlayer->getGcRankArray()[0];
|
resultPacket->data().GrandCompanyRank[ 0 ] = pPlayer->getGcRankArray()[0];
|
||||||
resultPacket->data().GrandCompanyRank[ 1 ] = pPlayer->getGcRankArray()[1];
|
resultPacket->data().GrandCompanyRank[ 1 ] = pPlayer->getGcRankArray()[1];
|
||||||
|
@ -54,13 +54,11 @@ void Sapphire::Network::GameConnection::getCommonlistDetailHandler( const Packet
|
||||||
resultPacket->data().SelectClassID = pPlayer->getSearchSelectClass(); // this is probably unused in retail
|
resultPacket->data().SelectClassID = pPlayer->getSearchSelectClass(); // this is probably unused in retail
|
||||||
|
|
||||||
// serialize class data to packet
|
// serialize class data to packet
|
||||||
|
auto classArrayLen = sizeof( resultPacket->data().ClassData ) / sizeof( resultPacket->data().ClassData[ 0 ] );
|
||||||
auto classDataArr = pPlayer->getClassArray();
|
for( size_t i = 1; i < classArrayLen; ++i )
|
||||||
|
|
||||||
for( size_t i = 0; i < Common::CLASSJOB_TOTAL; ++i )
|
|
||||||
{
|
{
|
||||||
resultPacket->data().ClassData[ i ].id = static_cast< uint16_t >( i );
|
resultPacket->data().ClassData[ i-1 ].id = static_cast< uint16_t >( i );
|
||||||
resultPacket->data().ClassData[ i ].level = classDataArr[ i ];
|
resultPacket->data().ClassData[ i-1 ].level = static_cast< uint16_t >( pPlayer->getLevelForClass( static_cast< Common::ClassJob >( i ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
queueOutPacket( resultPacket );
|
queueOutPacket( resultPacket );
|
||||||
|
@ -115,6 +113,8 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
||||||
// user language settings flag J = 1, E = 2, D = 4, F = 8
|
// user language settings flag J = 1, E = 2, D = 4, F = 8
|
||||||
entry.SelectRegion = pPlayer->getSearchSelectRegion();
|
entry.SelectRegion = pPlayer->getSearchSelectRegion();
|
||||||
entry.OnlineStatus = pPlayer->getOnlineStatusMask() | pPlayer->getOnlineStatusCustomMask();
|
entry.OnlineStatus = pPlayer->getOnlineStatusMask() | pPlayer->getOnlineStatusCustomMask();
|
||||||
|
|
||||||
|
strcpy( entry.FcTag, "Awoo" );
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.CharacterID = pPlayer->getCharacterId();
|
entry.CharacterID = pPlayer->getCharacterId();
|
||||||
|
@ -128,7 +128,7 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
||||||
entry.HierarchyStatus = hierarchy.data.status;
|
entry.HierarchyStatus = hierarchy.data.status;
|
||||||
entry.HierarchyType = hierarchy.data.type;
|
entry.HierarchyType = hierarchy.data.type;
|
||||||
entry.HierarchyGroup = hierarchy.data.group;
|
entry.HierarchyGroup = hierarchy.data.group;
|
||||||
entry.HierarchyUnk = hierarchy.data.unavailable;
|
entry.IsDeleted = hierarchy.data.unavailable;
|
||||||
}
|
}
|
||||||
|
|
||||||
entries.emplace_back( entry );
|
entries.emplace_back( entry );
|
||||||
|
@ -157,6 +157,7 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
||||||
offset = 0;
|
offset = 0;
|
||||||
isLast = true;
|
isLast = true;
|
||||||
|
|
||||||
|
|
||||||
if( player.getPartyId() != 0 )
|
if( player.getPartyId() != 0 )
|
||||||
{
|
{
|
||||||
auto& partyMgr = Common::Service< World::Manager::PartyMgr >::ref();
|
auto& partyMgr = Common::Service< World::Manager::PartyMgr >::ref();
|
||||||
|
@ -164,8 +165,18 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
||||||
auto pParty = partyMgr.getParty( player.getPartyId() );
|
auto pParty = partyMgr.getParty( player.getPartyId() );
|
||||||
assert( pParty );
|
assert( pParty );
|
||||||
|
|
||||||
page = generateEntries( pParty->MemberId, offset, {} );
|
std::vector< Common::HierarchyData > hierarchyData;
|
||||||
|
|
||||||
|
for( const auto& id : pParty->MemberId )
|
||||||
|
{
|
||||||
|
Common::HierarchyData hierarchy{};
|
||||||
|
if( pParty->LeaderId == id )
|
||||||
|
hierarchy.data.status = Hierarchy::MASTER;
|
||||||
|
|
||||||
|
hierarchyData.emplace_back( hierarchy );
|
||||||
|
}
|
||||||
|
|
||||||
|
page = generateEntries( pParty->MemberId, offset, hierarchyData );
|
||||||
// ensure first entry is the player requesting packet
|
// ensure first entry is the player requesting packet
|
||||||
for( int i = 0; i < 8; ++i )
|
for( int i = 0; i < 8; ++i )
|
||||||
{
|
{
|
||||||
|
@ -175,7 +186,6 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue