1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 22:37:45 +00:00

WiP Land purchase does now directly update and building somewhat works. Still needs work.

This commit is contained in:
Mordred 2023-01-25 12:07:23 +01:00
parent 94929caf96
commit 0cfde3d9e8
7 changed files with 28 additions and 16 deletions

View file

@ -1593,7 +1593,7 @@ namespace Sapphire::Common
uint8_t status;
uint8_t flags;
uint8_t __padding1;
uint8_t unknown1[4];
uint32_t fcId;
uint32_t fcCrestId;
uint32_t fcCrestId1;
uint8_t patternIds[8];

View file

@ -160,6 +160,7 @@ namespace Sapphire::Network::Packets
TreasureCheckCommand = 0x1B4,
SelectLootAction = 0x1B5,
OpenTreasureWithKey = 0x1B6,
BuildPresetHandler = 0x1B7,
StartTalkEvent = 0x01C2,
StartEmoteEvent = 0x01C3,

View file

@ -546,6 +546,13 @@ struct FFXIVIpcHousingHouseName : FFXIVIpcBasePacket< HousingHouseName >
char houseName[20];
};
struct FFXIVIpcBuildPresetHandler : FFXIVIpcBasePacket< BuildPresetHandler >
{
/* 0000 */ uint32_t itemId;
/* 0004 */ uint8_t plotNum;
/* 0005 */ char stateString[27];
};
struct FFXIVIpcHousingGreeting : FFXIVIpcBasePacket< HousingGreeting >
{
Common::LandIdent landId;

View file

@ -1977,10 +1977,10 @@ struct FFXIVIpcEorzeaTimeOffset : FFXIVIpcBasePacket< TimeOffset >
struct FFXIVIpcHouse : FFXIVIpcBasePacket< House >
{
uint8_t Block;
uint8_t __padding1;
uint8_t __padding2;
uint8_t __padding3;
uint16_t Block;
uint16_t __padding1;
uint16_t __padding2;
uint16_t __padding3;
Common::House House;
};
@ -2045,19 +2045,19 @@ struct FFXIVIpcEorzeaTimeOffset : FFXIVIpcBasePacket< TimeOffset >
struct FFXIVIpcCharaHousingLandData : FFXIVIpcBasePacket< CharaHousingLandData >
{
uint8_t IsFcOwner;
uint8_t Index;
uint8_t __padding1;
uint8_t __padding2;
Common::LandIdent LandId;
uint8_t Flags;
uint32_t unknown;
Common::CharaLandData LandData;
};
struct FFXIVIpcCharaHousing : FFXIVIpcBasePacket< CharaHousing >
{
Common::CharaLandData FcLands;
uint64_t padding;
Common::CharaLandData CharaLands;
uint64_t padding1;
Common::CharaLandData apartment;
uint64_t padding2;
Common::CharaLandData sharedHouse[2];
};

View file

@ -1791,8 +1791,9 @@ void Player::sendLandFlagsSlot( Common::LandFlagsSlot slot )
return;
}
landFlags->data().Flags = static_cast< uint32_t >( type );
landFlags->data().LandId = m_charaLandData[ slot ].landId;
landFlags->data().Index = static_cast< uint32_t >( type );
landFlags->data().LandData.landId = m_charaLandData[ slot ].landId;
landFlags->data().LandData.landFlags = m_charaLandData[ slot ].landFlags;
queuePacket( landFlags );
}

View file

@ -89,7 +89,7 @@ Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pH
setZoneHandler( ClientItemOperation, "ItemOperation", &GameConnection::itemOperation );
//setZoneHandler( BuildPresetHandler, "BuildPresetHandler", &GameConnection::buildPresetHandler );
setZoneHandler( BuildPresetHandler, "BuildPresetHandler", &GameConnection::buildPresetHandler );
setZoneHandler( ClientZoneIpcType::HousingHouseName, "HousingHouseName", &GameConnection::landRenameHandler );
setZoneHandler( ClientZoneIpcType::HousingGreeting, "HousingUpdateHouseGreeting", &GameConnection::housingUpdateGreetingHandler );
setZoneHandler( HousingPlaceYardItem, "HousingPlaceYardItem", &GameConnection::reqPlaceHousingItem );

View file

@ -73,10 +73,13 @@ void Sapphire::Network::GameConnection::landRenameHandler( const Packets::FFXIVA
void Sapphire::Network::GameConnection::buildPresetHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
//const auto packet = ZoneChannelPacket< Client::FFXIVIpcBuildPresetHandler >( inPacket );
const auto packet = ZoneChannelPacket< Client::FFXIVIpcBuildPresetHandler >( inPacket );
//auto& housingMgr = Common::Service< HousingMgr >::ref();
//housingMgr.buildPresetEstate( player, packet.data().plotNum, packet.data().itemId );
auto& housingMgr = Common::Service< HousingMgr >::ref();
auto& teriMgr = Common::Service< TerritoryMgr >::ref();
auto pTeri = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri );
housingMgr.buildPresetEstate( player, *hZone, packet.data().plotNum, packet.data().itemId );
}
void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,