1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-29 07:37: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 ?? LinkshellEventHandler1 = 0x1151, // updated 4.1 ??
LandRenameHandler = 0x0171, // updated 4.4 LandRenameHandler = 0x0171, // updated 4.4
LandChangeEstateMessageHandler = 0x0172, // updated 4.4
SetSharedEstateSettings = 0x0177, // updated 4.4 SetSharedEstateSettings = 0x0177, // updated 4.4

View file

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

View file

@ -365,28 +365,30 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
} }
case ClientTriggerType::RequestEstateRename: case ClientTriggerType::RequestEstateRename:
{ {
// removed temporarly, there is no such thing as a LandName uint16_t territoryTypeId = param11 & 0xFFFF;
auto landRenamePacket = makeZonePacket< Server::FFXIVIpcLandRename >( player.getId() ); uint16_t worldId = param11 >> 16;
uint8_t ward = ( param12 & 0xFF00 ) >> 8; uint8_t ward = ( param12 & 0xFF00 ) >> 8;
uint8_t plot = ( param12 & 0xFF ); 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 ); auto land = hZone->getLand( plot );
if( !land )
{
auto pHousingMgr = g_fw.get< HousingMgr >();
land = pHousingMgr->getLandByOwnerId( player.getId() );
}
auto house = land->getHouse(); auto house = land->getHouse();
if( !house ) if( !house )
break; break;
auto landRenamePacket = makeZonePacket< Server::FFXIVIpcLandRename >( player.getId() );
landRenamePacket->data().landIdent.landId = land->getLandId(); landRenamePacket->data().landIdent.landId = land->getLandId();
landRenamePacket->data().landIdent.wardNum = land->getWardNum(); landRenamePacket->data().landIdent.wardNum = land->getWardNum();
landRenamePacket->data().landIdent.worldId = 67; landRenamePacket->data().landIdent.worldId = 67;
@ -397,6 +399,44 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
break; 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: case ClientTriggerType::RequestHousingItemUI:
{ {
uint8_t ward = ( param12 & 0xFF00 ) >> 8; uint8_t ward = ( param12 & 0xFF00 ) >> 8;