mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 07:07:45 +00:00
commit
9e061aefa3
3 changed files with 58 additions and 40 deletions
|
@ -473,34 +473,40 @@ enum class OnlineStatus : uint8_t
|
|||
WaitingforFreeCompanyApproval = 8,
|
||||
NotFound = 9,
|
||||
Offline = 10,
|
||||
Busy = 11,
|
||||
PvP = 12,
|
||||
PlayingTripleTriad = 13,
|
||||
ViewingCutscene = 14,
|
||||
UsingaChocoboPorter = 15,
|
||||
AwayfromKeyboard = 16,
|
||||
LookingforRepairs = 17,
|
||||
LookingtoRepair = 18,
|
||||
LookingtoMeldMateria = 19,
|
||||
LookingforParty = 20,
|
||||
//Missing = 21
|
||||
WaitingforDutyFinder = 22,
|
||||
RecruitingPartyMembers = 23,
|
||||
NewAdventurer = 24,
|
||||
AllianceLeader = 25,
|
||||
AlliancePartyLeader = 26,
|
||||
AlliancePartyMember = 27,
|
||||
PartyLeader = 28,
|
||||
PartyMember = 29,
|
||||
AnotherWorld = 30,
|
||||
SharingDuty = 31,
|
||||
SimilarDuty = 32,
|
||||
InDuty = 33,
|
||||
TrialAdventurer = 34,
|
||||
Mentor = 11,
|
||||
Busy = 12,
|
||||
PvP = 13,
|
||||
PlayingTripleTriad = 14,
|
||||
ViewingCutscene = 15,
|
||||
UsingaChocoboPorter = 16,
|
||||
AwayfromKeyboard = 17,
|
||||
LookingforRepairs = 18,
|
||||
LookingtoRepair = 19,
|
||||
LookingtoMeldMateria = 20,
|
||||
LookingforParty = 21,
|
||||
//Missing = 22
|
||||
WaitingforDutyFinder = 23,
|
||||
RecruitingPartyMembers = 24,
|
||||
Mentor25 = 25,
|
||||
PvEMentor = 26,
|
||||
TradeMentor = 27,
|
||||
PvPMentor = 28,
|
||||
|
||||
FreeCompany = 35,
|
||||
GrandCompany = 36,
|
||||
Online = 37,
|
||||
NewAdventurer = 29,
|
||||
AllianceLeader = 30,
|
||||
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 HierarchyType;
|
||||
uint8_t HierarchyGroup;
|
||||
uint8_t HierarchyUnk;
|
||||
uint8_t IsDeleted;
|
||||
uint16_t TerritoryType;
|
||||
uint8_t GrandCompanyID;
|
||||
uint8_t Region;
|
||||
|
@ -114,14 +114,16 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
|||
uint64_t SelectClassID;
|
||||
uint64_t CrestID;
|
||||
uint8_t ListType;
|
||||
|
||||
char SearchComment[193];
|
||||
char FreeCompanyName[23];
|
||||
uint8_t GrandCompanyRank[3];
|
||||
|
||||
struct ClassJobEntry
|
||||
{
|
||||
uint16_t id;
|
||||
uint16_t level;
|
||||
} ClassData[Common::CLASSJOB_TOTAL];
|
||||
} ClassData[34]; // ClassJob::MAX
|
||||
};
|
||||
|
||||
struct FFXIVIpcPcSearchResult : FFXIVIpcBasePacket< PcSearchResult >
|
||||
|
|
|
@ -44,7 +44,7 @@ void Sapphire::Network::GameConnection::getCommonlistDetailHandler( const Packet
|
|||
resultPacket->data().ListType = data.ListType;
|
||||
resultPacket->data().CommunityID = data.CommunityID;
|
||||
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[ 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
|
||||
|
||||
// serialize class data to packet
|
||||
|
||||
auto classDataArr = pPlayer->getClassArray();
|
||||
|
||||
for( size_t i = 0; i < Common::CLASSJOB_TOTAL; ++i )
|
||||
auto classArrayLen = sizeof( resultPacket->data().ClassData ) / sizeof( resultPacket->data().ClassData[ 0 ] );
|
||||
for( size_t i = 1; i < classArrayLen; ++i )
|
||||
{
|
||||
resultPacket->data().ClassData[ i ].id = static_cast< uint16_t >( i );
|
||||
resultPacket->data().ClassData[ i ].level = classDataArr[ i ];
|
||||
resultPacket->data().ClassData[ i-1 ].id = static_cast< uint16_t >( i );
|
||||
resultPacket->data().ClassData[ i-1 ].level = static_cast< uint16_t >( pPlayer->getLevelForClass( static_cast< Common::ClassJob >( i ) ) );
|
||||
}
|
||||
|
||||
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
|
||||
entry.SelectRegion = pPlayer->getSearchSelectRegion();
|
||||
entry.OnlineStatus = pPlayer->getOnlineStatusMask() | pPlayer->getOnlineStatusCustomMask();
|
||||
|
||||
strcpy( entry.FcTag, "Awoo" );
|
||||
}
|
||||
|
||||
entry.CharacterID = pPlayer->getCharacterId();
|
||||
|
@ -128,7 +128,7 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
|||
entry.HierarchyStatus = hierarchy.data.status;
|
||||
entry.HierarchyType = hierarchy.data.type;
|
||||
entry.HierarchyGroup = hierarchy.data.group;
|
||||
entry.HierarchyUnk = hierarchy.data.unavailable;
|
||||
entry.IsDeleted = hierarchy.data.unavailable;
|
||||
}
|
||||
|
||||
entries.emplace_back( entry );
|
||||
|
@ -157,6 +157,7 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
|||
offset = 0;
|
||||
isLast = true;
|
||||
|
||||
|
||||
if( player.getPartyId() != 0 )
|
||||
{
|
||||
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() );
|
||||
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
|
||||
for( int i = 0; i < 8; ++i )
|
||||
{
|
||||
|
@ -175,7 +186,6 @@ void Sapphire::Network::GameConnection::getCommonlistHandler( const Packets::FFX
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue