1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 05:57:45 +00:00

WiP reenable housing zones.

This commit is contained in:
Mordred 2023-01-23 14:28:00 +01:00
parent 7ea6d4f44d
commit 597c0e9bd2
3 changed files with 14 additions and 6 deletions

View file

@ -1592,8 +1592,8 @@ namespace Sapphire::Common
uint8_t flags; uint8_t flags;
uint8_t __padding1; uint8_t __padding1;
uint64_t fcCrestId; uint64_t fcCrestId;
uint8_t patternIds[8]; uint8_t patternIds[9];
uint8_t colors[8]; uint8_t colors[9];
}; };
struct Furniture struct Furniture

View file

@ -1700,7 +1700,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
struct FFXIVIpcQuestCompleteList : FFXIVIpcBasePacket< QuestCompleteFlags > struct FFXIVIpcQuestCompleteList : FFXIVIpcBasePacket< QuestCompleteFlags >
{ {
uint8_t questCompleteMask[310]; uint8_t questCompleteMask[310];
uint8_t unknownCompleteMask[40]; uint8_t unknownCompleteMask[32];
}; };
/** /**

View file

@ -147,25 +147,33 @@ bool Sapphire::HousingZone::init()
return true; return true;
} }
bool Sapphire::HousingZone::isPlayerSubInstance( Entity::Player& player )
{
return player.getPos().x < -15000.0f; //ToDo: get correct pos
}
void Sapphire::HousingZone::onPlayerZoneIn( Entity::Player& player ) void Sapphire::HousingZone::onPlayerZoneIn( Entity::Player& player )
{ {
auto& server = Common::Service< World::WorldServer >::ref(); auto& server = Common::Service< World::WorldServer >::ref();
Logger::debug( "HousingZone::onPlayerZoneIn: Territory#{0}|{1}, Entity#{2}", Logger::debug( "HousingZone::onPlayerZoneIn: Territory#{0}|{1}, Entity#{2}",
getGuId(), getTerritoryTypeId(), player.getId() ); getGuId(), getTerritoryTypeId(), player.getId() );
auto isInSubdivision = isPlayerSubInstance( player );
uint32_t yardPacketNum; uint32_t yardPacketNum;
uint32_t yardPacketTotal = 8;
sendLandSet( player ); sendLandSet( player );
for( yardPacketNum = 1; yardPacketNum > 2; yardPacketNum++ ) for( yardPacketNum = 0; yardPacketNum < yardPacketTotal; yardPacketNum++ )
{ {
auto housingObjectInit = makeZonePacket< FFXIVIpcYardObjectList >( player.getId() ); auto housingObjectInit = makeZonePacket< FFXIVIpcYardObjectList >( player.getId() );
housingObjectInit->data().PacketIndex = yardPacketNum; housingObjectInit->data().PacketIndex = yardPacketNum;
auto yardObjectSize = sizeof( Common::Furniture ); auto yardObjectSize = sizeof( Common::Furniture );
housingObjectInit->data().PacketIndex = yardPacketNum;
housingObjectInit->data().PacketEnd = yardPacketTotal;
auto& objects = m_yardObjects[ 0 ]; auto& objects = m_yardObjects[ isInSubdivision ? 1 : 0 ];
memcpy( &housingObjectInit->data().YardObjects, &objects + ( yardPacketNum * 400 ), yardObjectSize * 400 ); memcpy( &housingObjectInit->data().YardObjects, &objects + ( yardPacketNum * 400 ), yardObjectSize * 400 );