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

Using LandIdent in packets

This commit is contained in:
Mordred 2018-11-26 23:15:42 +01:00
parent 3bbb343d09
commit 90eb03df95
5 changed files with 32 additions and 42 deletions

View file

@ -774,12 +774,17 @@ namespace Core::Common
Private = 2,
};
struct LandPermissionSet
struct LandIdent
{
int16_t landId; //00
int16_t wardNum; //02
int16_t zoneId; //04
int16_t territoryTypeId; //04
int16_t worldId; //06
};
struct LandPermissionSet
{
LandIdent landIdent;
uint32_t permissionMask; //08
uint32_t unkown1; //12
};

View file

@ -1612,10 +1612,7 @@ struct LandStruct
struct FFXIVIpcLandUpdate : FFXIVIpcBasePacket< LandUpdate >
{
uint16_t landId;
uint16_t unknow0;
uint16_t unknow1;
uint16_t unknow2;
Common::LandIdent landIdent;
LandStruct land;
};
@ -1627,10 +1624,7 @@ struct FFXIVIpcLandPriceUpdate : FFXIVIpcBasePacket< LandPriceUpdate >
struct FFXIVIpcLandInfoSign : FFXIVIpcBasePacket< LandInfoSign >
{
uint16_t landId;
uint16_t wardNum;
uint16_t zoneId;
uint16_t worldId;
Common::LandIdent landIdent;
uint64_t ownerId; // ither contentId or fcId
uint32_t unknow1;
uint8_t houseIconAdd;
@ -1645,10 +1639,7 @@ struct FFXIVIpcLandInfoSign : FFXIVIpcBasePacket< LandInfoSign >
struct FFXIVIpcLandRename : FFXIVIpcBasePacket< LandRename >
{
uint16_t landId;
uint16_t wardNum;
uint16_t zoneId;
uint16_t worldId;
Common::LandIdent landIdent;
char landName[20];
uint32_t padding;
};
@ -1669,10 +1660,7 @@ struct FFXIVIpcLandSetMap : FFXIVIpcBasePacket< LandSetMap >
struct FFXIVIpcLandSetInitialize : FFXIVIpcBasePacket< LandSetInitialize >
{
uint16_t unknown0;
uint16_t landSetId; // set 1 for "Mist, Ward 2"
uint16_t zoneId;
uint16_t worldId;
Common::LandIdent landIdent;
uint8_t unknown1;
uint8_t subInstance; // (default : 1/2)
uint8_t unknown3;
@ -1722,12 +1710,7 @@ struct FFXIVIpcLandSetYardInitialize : FFXIVIpcBasePacket< LandSetYardInitialize
struct FFXIVIpcHousingWardInfo : FFXIVIpcBasePacket< HousingWardInfo >
{
uint16_t unknown1;
uint16_t wardId;
uint16_t territoryTypeId;
uint16_t unknown2;
Common::LandIdent landIdent;
struct HouseInfoEntry
{

View file

@ -1771,11 +1771,11 @@ bool Core::Entity::Player::isOnEnterEventDone() const
void Core::Entity::Player::setLandPermissions( uint8_t permissionSet, uint32_t permissionMask,
int16_t landId, int16_t wardNum, int16_t zoneId )
{
m_landPermission[ permissionSet ].landId = landId;
m_landPermission[ permissionSet ].landIdent.landId = landId;
m_landPermission[ permissionSet ].landIdent.wardNum = wardNum;
m_landPermission[ permissionSet ].landIdent.territoryTypeId = zoneId;
m_landPermission[ permissionSet ].landIdent.worldId = 67;
m_landPermission[ permissionSet ].permissionMask = permissionMask;
m_landPermission[ permissionSet ].wardNum = wardNum;
m_landPermission[ permissionSet ].zoneId = zoneId;
m_landPermission[ permissionSet ].worldId = 67;
m_landPermission[ permissionSet ].unkown1 = 0;
}
@ -1805,10 +1805,10 @@ void Core::Entity::Player::sendLandPermissionSlot( uint8_t slotId, uint8_t landI
auto landPermissions = makeZonePacket< FFXIVIpcLandPermissionSlot >( getId() );
landPermissions->data().type = slotId;
landPermissions->data().permissionSet.landId = landId;
landPermissions->data().permissionSet.wardNum = wardId;
landPermissions->data().permissionSet.zoneId = zoneId;
landPermissions->data().permissionSet.worldId = 67;
landPermissions->data().permissionSet.landIdent.landId = landId;
landPermissions->data().permissionSet.landIdent.wardNum = wardId;
landPermissions->data().permissionSet.landIdent.territoryTypeId = zoneId;
landPermissions->data().permissionSet.landIdent.worldId = 67;
landPermissions->data().permissionSet.permissionMask = 0;
queuePacket( landPermissions );
}

View file

@ -93,12 +93,13 @@ void Core::HousingMgr::sendLandSignOwned( Entity::Player& player, uint8_t wardId
//memcpy( &landInfoSignPacket->data().estateName, land->getLandName().c_str(), land->getLandName().size() );
landInfoSignPacket->data().houseSize = land->getSize();
landInfoSignPacket->data().houseType = static_cast< uint8_t >( land->getLandType() );
landInfoSignPacket->data().landId = land->getLandId();
landInfoSignPacket->data().landIdent.landId = land->getLandId();
landInfoSignPacket->data().landIdent.wardNum = land->getWardNum();
landInfoSignPacket->data().landIdent.worldId = 67;
landInfoSignPacket->data().landIdent.territoryTypeId = land->getTerritoryTypeId();
landInfoSignPacket->data().ownerId = player.getContentId(); // should be real owner contentId, not player.contentId()
memcpy( &landInfoSignPacket->data().ownerName, playerName.c_str(), playerName.size() );
landInfoSignPacket->data().wardNum = land->getWardNum();
landInfoSignPacket->data().worldId = 67;
landInfoSignPacket->data().zoneId = land->getTerritoryTypeId();
player.queuePacket( landInfoSignPacket );
}
@ -230,8 +231,8 @@ void Core::HousingMgr::sendWardLandInfo( Entity::Player& player, uint8_t wardId,
return;
auto wardInfoPacket = makeZonePacket< Server::FFXIVIpcHousingWardInfo >( player.getId() );
wardInfoPacket->data().wardId = wardId;
wardInfoPacket->data().territoryTypeId = territoryTypeId;
wardInfoPacket->data().landIdent.wardNum = wardId;
wardInfoPacket->data().landIdent.territoryTypeId = territoryTypeId;
for( int i = 0; i < 60; i++ )
{

View file

@ -116,10 +116,11 @@ void Core::HousingZone::sendLandSet( Entity::Player& player )
{
auto landsetInitializePacket = makeZonePacket< FFXIVIpcLandSetInitialize >( player.getId() );
landsetInitializePacket->data().landSetId = m_landSetId;
landsetInitializePacket->data().zoneId = m_territoryTypeId;
landsetInitializePacket->data().landIdent.wardNum = m_wardNum;
//landsetInitializePacket->data().landIdent.landSetId = m_landSetId;
landsetInitializePacket->data().landIdent.territoryTypeId = m_territoryTypeId;
//TODO: get current WorldId
landsetInitializePacket->data().worldId = 67;
landsetInitializePacket->data().landIdent.worldId = 67;
landsetInitializePacket->data().subInstance = isPlayerSubInstance( player ) == false ? 1 : 2;
uint8_t startIndex = isPlayerSubInstance( player ) == false ? 0 : 30;
@ -162,7 +163,7 @@ void Core::HousingZone::sendLandUpdate( uint8_t landId )
auto pPlayer = playerIt.second;
auto landUpdatePacket = makeZonePacket< FFXIVIpcLandUpdate >( pPlayer->getId() );
landUpdatePacket->data().landId = landId;
landUpdatePacket->data().landIdent.landId = landId;
auto& landData = landUpdatePacket->data().land;