mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-27 06:47:45 +00:00
Login packet flow further adjusted to be closer to retail
This commit is contained in:
parent
d34d93a7dd
commit
00cb4ade45
3 changed files with 24 additions and 24 deletions
|
@ -1444,6 +1444,11 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
||||||
uint8_t unknownCompleteMask[32];
|
uint8_t unknownCompleteMask[32];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FFXIVIpcLegacyQuestCompleteList : FFXIVIpcBasePacket< LegacyQuestCompleteFlags >
|
||||||
|
{
|
||||||
|
uint8_t completeFlagArray[40];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to finish a quest
|
* to finish a quest
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <Manager/PartyMgr.h>
|
#include <Manager/PartyMgr.h>
|
||||||
#include <Manager/HousingMgr.h>
|
#include <Manager/HousingMgr.h>
|
||||||
#include <Manager/FreeCompanyMgr.h>
|
#include <Manager/FreeCompanyMgr.h>
|
||||||
|
#include <Manager/QuestMgr.h>
|
||||||
|
|
||||||
#include <Script/ScriptMgr.h>
|
#include <Script/ScriptMgr.h>
|
||||||
#include <WorldServer.h>
|
#include <WorldServer.h>
|
||||||
|
@ -397,29 +398,25 @@ void PlayerMgr::onZone( Sapphire::Entity::Player& player )
|
||||||
player.sendHuntingLog();
|
player.sendHuntingLog();
|
||||||
|
|
||||||
if( player.isLogin() )
|
if( player.isLogin() )
|
||||||
{
|
|
||||||
player.sendItemLevel();
|
|
||||||
server().queueForPlayer( player.getCharacterId(), makePlayerSetup( player ) );
|
server().queueForPlayer( player.getCharacterId(), makePlayerSetup( player ) );
|
||||||
}
|
|
||||||
|
|
||||||
player.sendStats();
|
|
||||||
player.sendRecastGroups();
|
player.sendRecastGroups();
|
||||||
|
player.sendStats();
|
||||||
auto classInfo = makeZonePacket< FFXIVIpcChangeClass >( player.getId() );
|
player.sendItemLevel();
|
||||||
classInfo->data().ClassJob = static_cast< uint8_t >( player.getClass() );
|
|
||||||
classInfo->data().Lv = player.getLevel();
|
|
||||||
classInfo->data().Lv1 = player.getLevel();
|
|
||||||
if( player.isLogin() )
|
|
||||||
classInfo->data().Login = 1;
|
|
||||||
server().queueForPlayer( player.getCharacterId(), classInfo );
|
|
||||||
|
|
||||||
server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), 0x112, 0x24 ) ); // unknown
|
|
||||||
// only initialize the UI if the player in fact just logged in.
|
|
||||||
if( player.isLogin() )
|
if( player.isLogin() )
|
||||||
{
|
{
|
||||||
|
auto classInfo = makeZonePacket< FFXIVIpcChangeClass >( player.getId() );
|
||||||
|
classInfo->data().ClassJob = static_cast< uint8_t >( player.getClass() );
|
||||||
|
classInfo->data().Lv = player.getLevel();
|
||||||
|
classInfo->data().Lv1 = player.getLevel();
|
||||||
|
if( player.isLogin() )
|
||||||
|
classInfo->data().Login = 1;
|
||||||
|
server().queueForPlayer( player.getCharacterId(), classInfo );
|
||||||
|
|
||||||
|
server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), 0x112, 0x24 ) ); // unknown
|
||||||
|
|
||||||
auto contentFinderList = makeZonePacket< FFXIVIpcContentAttainFlags >( player.getId() );
|
auto contentFinderList = makeZonePacket< FFXIVIpcContentAttainFlags >( player.getId() );
|
||||||
std::memset( &contentFinderList->data(), 0xFF, sizeof( contentFinderList->data() ) );
|
std::memset( &contentFinderList->data(), 0xFF, sizeof( contentFinderList->data() ) );
|
||||||
|
|
||||||
server().queueForPlayer( player.getCharacterId(), contentFinderList );
|
server().queueForPlayer( player.getCharacterId(), contentFinderList );
|
||||||
|
|
||||||
player.clearSoldItems();
|
player.clearSoldItems();
|
||||||
|
@ -449,9 +446,13 @@ void PlayerMgr::onZone( Sapphire::Entity::Player& player )
|
||||||
{
|
{
|
||||||
server().queueForPlayer( player.getCharacterId(),
|
server().queueForPlayer( player.getCharacterId(),
|
||||||
{
|
{
|
||||||
makeZonePacket< FFXIVIpcQuestRepeatFlags >( player.getId() ),
|
makeZonePacket< FFXIVIpcDailyQuests >( player.getId() ),
|
||||||
makeZonePacket< FFXIVIpcDailyQuests >( player.getId() )
|
makeZonePacket< FFXIVIpcQuestRepeatFlags >( player.getId() )
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
auto &questMgr = Common::Service< World::Manager::QuestMgr >::ref();
|
||||||
|
questMgr.sendQuestsInfo( player );
|
||||||
|
onGcUpdate( player );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( player.getPartyId() != 0 )
|
if( player.getPartyId() != 0 )
|
||||||
|
|
|
@ -370,12 +370,6 @@ void Sapphire::Network::GameConnection::syncHandler( const Packets::FFXIVARR_PAC
|
||||||
void Sapphire::Network::GameConnection::setLanguageHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
|
void Sapphire::Network::GameConnection::setLanguageHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref();
|
auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref();
|
||||||
if( player.isLogin() )
|
|
||||||
{
|
|
||||||
auto &questMgr = Common::Service< World::Manager::QuestMgr >::ref();
|
|
||||||
questMgr.sendQuestsInfo( player );
|
|
||||||
playerMgr.onGcUpdate( player );
|
|
||||||
}
|
|
||||||
|
|
||||||
auto& teriMgr = Common::Service< TerritoryMgr >::ref();
|
auto& teriMgr = Common::Service< TerritoryMgr >::ref();
|
||||||
auto pCurrentZone = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
|
auto pCurrentZone = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
|
||||||
|
|
Loading…
Add table
Reference in a new issue