From 76aca82da76110c5d5490cecc4e9bee1fa81b5fe Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 22 Jan 2023 21:53:27 +0100 Subject: [PATCH] GC fixed. --- src/common/Network/PacketDef/ServerIpcs.h | 2 ++ src/common/Network/PacketDef/Zone/ServerZoneDef.h | 14 ++++++++------ src/world/Manager/PlayerMgr.cpp | 10 +++++----- src/world/Network/Handlers/PacketHandlers.cpp | 4 +++- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/common/Network/PacketDef/ServerIpcs.h b/src/common/Network/PacketDef/ServerIpcs.h index 256bfe4f..abd4835b 100644 --- a/src/common/Network/PacketDef/ServerIpcs.h +++ b/src/common/Network/PacketDef/ServerIpcs.h @@ -141,6 +141,8 @@ namespace Sapphire::Network::Packets PartyPos = 0x14C, AlliancePos = 0x14D, + GrandCompany = 0x14F, + Create = 0x0190, Delete = 0x0191, ActorMove = 0x0192, diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index c7ac2761..76318858 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -520,12 +520,6 @@ namespace Sapphire::Network::Packets::WorldPackets::Server char shortMessage[104]; }; - struct FFXIVGCAffiliation : FFXIVIpcBasePacket< GCAffiliation > - { - uint8_t gcId; - uint8_t gcRank[3]; - }; - /** * Structural representation of the packet sent by the server * add a status effect @@ -2340,4 +2334,12 @@ struct FFXIVIpcEorzeaTimeOffset : FFXIVIpcBasePacket< TimeOffset > { ZoneProtoDownMemberPos Member[8]; }; + + struct FFXIVIpcGrandCompany : FFXIVIpcBasePacket< GrandCompany > + { + uint8_t ActiveCompanyId; + uint8_t MaelstromRank; + uint8_t TwinAdderRank; + uint8_t ImmortalFlamesRank; + }; } diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index 1651e302..16439b7b 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -215,11 +215,11 @@ void PlayerMgr::onChangeGear( Entity::Player& player ) void PlayerMgr::onGcUpdate( Entity::Player& player ) { auto& server = Common::Service< World::WorldServer >::ref(); - auto gcAffPacket = makeZonePacket< FFXIVGCAffiliation >( player.getId() ); - gcAffPacket->data().gcId = player.getGc(); - gcAffPacket->data().gcRank[ 0 ] = player.getGcRankArray()[ 0 ]; - gcAffPacket->data().gcRank[ 1 ] = player.getGcRankArray()[ 1 ]; - gcAffPacket->data().gcRank[ 2 ] = player.getGcRankArray()[ 2 ]; + auto gcAffPacket = makeZonePacket< FFXIVIpcGrandCompany >( player.getId() ); + gcAffPacket->data().ActiveCompanyId = player.getGc(); + gcAffPacket->data().MaelstromRank = player.getGcRankArray()[ 0 ]; + gcAffPacket->data().TwinAdderRank = player.getGcRankArray()[ 1 ]; + gcAffPacket->data().ImmortalFlamesRank = player.getGcRankArray()[ 2 ]; server.queueForPlayer( player.getCharacterId(), gcAffPacket ); } diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index ddb9f7de..ce616d74 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -391,16 +391,18 @@ void Sapphire::Network::GameConnection::syncHandler( const Packets::FFXIVARR_PAC void Sapphire::Network::GameConnection::setLanguageHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { + 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 pCurrentZone = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); - auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref(); + /* // TODO: load and save this data instead of hardcoding auto gcPacket = makeZonePacket< FFXIVGCAffiliation >( player.getId() );