1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 23:27:45 +00:00

correctly show edit estate name/greeting windows

This commit is contained in:
NotAdam 2018-11-28 00:36:45 +11:00
parent fee7ed381e
commit 4e4097c1c8
3 changed files with 52 additions and 14 deletions

View file

@ -304,6 +304,7 @@ namespace Core::Network::Packets
LinkshellEventHandler1 = 0x1151, // updated 4.1 ??
LandRenameHandler = 0x0171, // updated 4.4
LandChangeEstateMessageHandler = 0x0172, // updated 4.4
SetSharedEstateSettings = 0x0177, // updated 4.4

View file

@ -1730,10 +1730,7 @@ struct FFXIVIpcHousingWardInfo : FFXIVIpcBasePacket< HousingWardInfo >
struct FFXIVIpcHousingEstateGreeting : FFXIVIpcBasePacket< HousingEstateGreeting >
{
uint8_t plotId;
uint8_t pad[3]; // unsure
uint16_t territoryTypeId;
uint16_t unk;
Common::LandIdent landIdent;
char message[200];
};

View file

@ -365,28 +365,30 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
}
case ClientTriggerType::RequestEstateRename:
{
// removed temporarly, there is no such thing as a LandName
auto landRenamePacket = makeZonePacket< Server::FFXIVIpcLandRename >( player.getId() );
uint16_t territoryTypeId = param11 & 0xFFFF;
uint16_t worldId = param11 >> 16;
uint8_t ward = ( param12 & 0xFF00 ) >> 8;
uint8_t plot = ( param12 & 0xFF );
auto zone = player.getCurrentZone();
auto pHousingMgr = g_fw.get< HousingMgr >();
if( !pHousingMgr )
break;
auto hZone = std::dynamic_pointer_cast< HousingZone >( zone );
auto landSetId = pHousingMgr->toLandSetId( territoryTypeId, ward );
auto hZone = pHousingMgr->getHousingZoneByLandSetId( landSetId );
if( !hZone )
break;
auto land = hZone->getLand( plot );
if( !land )
{
auto pHousingMgr = g_fw.get< HousingMgr >();
land = pHousingMgr->getLandByOwnerId( player.getId() );
}
auto house = land->getHouse();
if( !house )
break;
auto landRenamePacket = makeZonePacket< Server::FFXIVIpcLandRename >( player.getId() );
landRenamePacket->data().landIdent.landId = land->getLandId();
landRenamePacket->data().landIdent.wardNum = land->getWardNum();
landRenamePacket->data().landIdent.worldId = 67;
@ -397,6 +399,44 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
break;
}
case ClientTriggerType::RequestEstateEditGreeting:
{
uint16_t territoryTypeId = param11 & 0xFFFF;
uint16_t worldId = param11 >> 16;
uint8_t ward = ( param12 & 0xFF00 ) >> 8;
uint8_t plot = ( param12 & 0xFF );
auto pHousingMgr = g_fw.get< HousingMgr >();
if( !pHousingMgr )
break;
auto landSetId = pHousingMgr->toLandSetId( territoryTypeId, ward );
auto hZone = pHousingMgr->getHousingZoneByLandSetId( landSetId );
if( !hZone )
break;
auto land = hZone->getLand( plot );
if( !land )
break;
auto house = land->getHouse();
if( !house )
break;
auto estateGreetingPacket = makeZonePacket< Server::FFXIVIpcHousingEstateGreeting >( player.getId() );
estateGreetingPacket->data().landIdent.landId = land->getLandId();
estateGreetingPacket->data().landIdent.wardNum = land->getWardNum();
estateGreetingPacket->data().landIdent.worldId = 67;
estateGreetingPacket->data().landIdent.territoryTypeId = land->getTerritoryTypeId();
memcpy( &estateGreetingPacket->data().message, house->getHouseGreeting().c_str(), sizeof( estateGreetingPacket->data().message ) );
player.queuePacket( estateGreetingPacket );
break;
}
case ClientTriggerType::RequestHousingItemUI:
{
uint8_t ward = ( param12 & 0xFF00 ) >> 8;