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

Fixed various small offset issues / packet sizes

This commit is contained in:
Mordred 2018-11-06 23:25:37 +01:00
parent bd0cf1718a
commit 1f1b524d6f
5 changed files with 72 additions and 14 deletions

View file

@ -393,6 +393,7 @@ namespace Core::Common
c.UI8E = 0;
c.UI8F = 0;
c.padding = 0;
c.padding1 = 0;
}
@ -760,10 +761,10 @@ namespace Core::Common
struct HousePermissionSet
{
uint16_t landSetId; //00
uint16_t wardNum; //02
uint16_t zoneId; //04
uint16_t worldId; //06
int16_t landSetId; //00
int16_t wardNum; //02
int16_t zoneId; //04
int16_t worldId; //06
uint32_t permissionMask; //08
uint32_t unkown1; //12
};

View file

@ -193,7 +193,7 @@ namespace Core::Network::Packets
LandPermission = 0x0229, // updated 4.4
LandSetYardInitialize = 0x022C, // updated 4.4
YardObjectMove = 0x0230, // updated 4.4
LandSetExtending = 0x0251, // updated 4.4
LandSetMap = 0x0251, // updated 4.4
SharedEstateSettingsResponse = 0x023C, // updated 4.4

View file

@ -750,7 +750,8 @@ struct FFXIVIpcInitZone : FFXIVIpcBasePacket< InitZone >
uint32_t unknown3;
uint32_t unknown4;
uint8_t weatherId;
uint16_t bitmask;
uint8_t bitmask;
uint8_t bitmask1;
uint8_t unknown5;
uint16_t festivalId;
uint16_t additionalFestivalId;
@ -1339,7 +1340,7 @@ struct FFXIVIpcQuestUpdate :
struct FFXIVIpcQuestCompleteList :
FFXIVIpcBasePacket< QuestCompleteList >
{
uint8_t questCompleteMask[396];
uint8_t questCompleteMask[480];
uint8_t unknownCompleteMask[32];
};
@ -1604,15 +1605,18 @@ struct FFXIVIpcLandPriceUpdate : FFXIVIpcBasePacket< LandPriceUpdate >
uint32_t timeLeft;
};
struct FFXIVIpcLandSetExtend : FFXIVIpcBasePacket< LandSetExtending >
struct FFXIVIpcLandSetMap : FFXIVIpcBasePacket< LandSetMap >
{
uint8_t u1;
uint8_t subdivision;
uint8_t u3;
struct
{
uint8_t houseSize;
uint8_t houseState;
uint8_t iconColor;
uint8_t iconIconAdd;
} landset[30];
uint8_t status;
uint8_t size;
uint8_t isPrivate;
} landInfo[ 30 ];
uint8_t padding[ 3 ];
};
struct FFXIVIpcLandSetInitialize : FFXIVIpcBasePacket< LandSetInitialize >

View file

@ -1568,10 +1568,53 @@ void Core::Entity::Player::sendZonePackets()
sendItemLevel();
}
struct HousePermissionSet
{
int16_t landSetId; //00
int16_t wardNum; //02
int16_t zoneId; //04
int16_t worldId; //06
uint32_t permissionMask; //08
uint32_t unkown1; //12
};
auto landPermissions = makeZonePacket< FFXIVIpcLandPermission >( getId() );
landPermissions->data().freeCompanyHouse.landSetId = -1;
landPermissions->data().freeCompanyHouse.wardNum = -1;
landPermissions->data().freeCompanyHouse.zoneId = -1;
landPermissions->data().freeCompanyHouse.worldId = -1;
landPermissions->data().unkown1 = 0;
landPermissions->data().privateHouse.landSetId = -1;
landPermissions->data().privateHouse.wardNum = -1;
landPermissions->data().privateHouse.zoneId = -1;
landPermissions->data().privateHouse.worldId = -1;
landPermissions->data().unkown2 = 0;
landPermissions->data().apartment.landSetId = -1;
landPermissions->data().apartment.wardNum = -1;
landPermissions->data().apartment.zoneId = -1;
landPermissions->data().apartment.worldId = -1;
landPermissions->data().unkown3 = 0;
landPermissions->data().sharedHouse[0].landSetId = -1;
landPermissions->data().sharedHouse[0].wardNum = -1;
landPermissions->data().sharedHouse[0].zoneId = -1;
landPermissions->data().sharedHouse[0].worldId = -1;
landPermissions->data().sharedHouse[1].landSetId = -1;
landPermissions->data().sharedHouse[1].wardNum = -1;
landPermissions->data().sharedHouse[1].zoneId = -1;
landPermissions->data().sharedHouse[1].worldId = -1;
landPermissions->data().unkown4 = 0;
landPermissions->data().unkownHouse.landSetId = -1;
landPermissions->data().unkownHouse.wardNum = -1;
landPermissions->data().unkownHouse.zoneId = -1;
landPermissions->data().unkownHouse.worldId = -1;
landPermissions->data().unkown5 = 2;
queuePacket( landPermissions );
auto initZonePacket = makeZonePacket< FFXIVIpcInitZone >( getId() );
initZonePacket->data().zoneId = getCurrentZone()->getTerritoryTypeId();
initZonePacket->data().weatherId = static_cast< uint8_t >( getCurrentZone()->getCurrentWeather() );
initZonePacket->data().bitmask = 0x1; //Setting this to 16 (deciaml) makes it so you can fly in the area (more research needed!)
initZonePacket->data().bitmask = 0x1; //Setting this to 16 (decimal) makes it so you can fly in the area (more research needed!)
initZonePacket->data().unknown5 = 0x2A;
initZonePacket->data().festivalId = getCurrentZone()->getCurrentFestival().first;
initZonePacket->data().additionalFestivalId = getCurrentZone()->getCurrentFestival().second;

View file

@ -99,6 +99,16 @@ void Core::HousingZone::onPlayerZoneIn( Entity::Player& player )
player.queuePacket( landsetYardInitializePacket );
}
auto landSetMap = makeZonePacket< FFXIVIpcLandSetMap >( player.getId() );
landSetMap->data().subdivision = isPlayerSubInstance( player ) == false ? 1 : 2;
uint8_t startIndex = isPlayerSubInstance( player ) == false ? 0 : 30;
for( uint8_t i = startIndex, count = 0; i < ( startIndex + 30 ); i++, count++ )
{
landSetMap->data().landInfo[ count ].status = 1;
//memcpy( , &getLand( i )->getLand(), sizeof( Common::LandStruct ) );
}
player.queuePacket( landSetMap );
}
void Core::HousingZone::sendLandSet( Entity::Player& player )