1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 22:57: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 status;
uint8_t flags; uint8_t flags;
uint8_t __padding1; uint8_t __padding1;
uint8_t unknown1[4]; uint32_t fcId;
uint32_t fcCrestId; uint32_t fcCrestId;
uint32_t fcCrestId1; uint32_t fcCrestId1;
uint8_t patternIds[8]; uint8_t patternIds[8];

View file

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

View file

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

View file

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

View file

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

View file

@ -89,7 +89,7 @@ Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pH
setZoneHandler( ClientItemOperation, "ItemOperation", &GameConnection::itemOperation ); setZoneHandler( ClientItemOperation, "ItemOperation", &GameConnection::itemOperation );
//setZoneHandler( BuildPresetHandler, "BuildPresetHandler", &GameConnection::buildPresetHandler ); setZoneHandler( BuildPresetHandler, "BuildPresetHandler", &GameConnection::buildPresetHandler );
setZoneHandler( ClientZoneIpcType::HousingHouseName, "HousingHouseName", &GameConnection::landRenameHandler ); setZoneHandler( ClientZoneIpcType::HousingHouseName, "HousingHouseName", &GameConnection::landRenameHandler );
setZoneHandler( ClientZoneIpcType::HousingGreeting, "HousingUpdateHouseGreeting", &GameConnection::housingUpdateGreetingHandler ); setZoneHandler( ClientZoneIpcType::HousingGreeting, "HousingUpdateHouseGreeting", &GameConnection::housingUpdateGreetingHandler );
setZoneHandler( HousingPlaceYardItem, "HousingPlaceYardItem", &GameConnection::reqPlaceHousingItem ); 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, void Sapphire::Network::GameConnection::buildPresetHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player ) Entity::Player& player )
{ {
//const auto packet = ZoneChannelPacket< Client::FFXIVIpcBuildPresetHandler >( inPacket ); const auto packet = ZoneChannelPacket< Client::FFXIVIpcBuildPresetHandler >( inPacket );
//auto& housingMgr = Common::Service< HousingMgr >::ref(); auto& housingMgr = Common::Service< HousingMgr >::ref();
//housingMgr.buildPresetEstate( player, packet.data().plotNum, packet.data().itemId ); 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, void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,