1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 05:57:45 +00:00

More stuff

This commit is contained in:
AriAvery 2018-11-07 11:59:59 +01:00
parent e832c078d5
commit e73613f443
6 changed files with 63 additions and 57 deletions

View file

@ -759,7 +759,16 @@ namespace Core::Common
uint8_t color[ 8 ]; // 36
};
struct HousePermissionSet
enum LandPermissionSlot
{
FreeCompany,
Private,
Apartment,
SharedHouse1,
SharedHouse2
};
struct LandPermissionSet
{
int16_t landSetId; //00
int16_t wardNum; //02

View file

@ -1578,21 +1578,21 @@ struct FFXIVIpcPerformNote : FFXIVIpcBasePacket< PerformNote >
//IPCs
struct FFXIVIpcLandPermission : FFXIVIpcBasePacket<LandPermission >
{
Common::HousePermissionSet freeCompanyHouse; // 00
Common::LandPermissionSet freeCompanyHouse; // 00
uint64_t unkown1;
Common::HousePermissionSet privateHouse; // 24
Common::LandPermissionSet privateHouse; // 24
uint64_t unkown2;
Common::HousePermissionSet apartment; // 48
Common::LandPermissionSet apartment; // 48
uint64_t unkown3;
Common::HousePermissionSet sharedHouse[2]; //72
Common::LandPermissionSet sharedHouse[2]; //72
uint64_t unkown4;
Common::HousePermissionSet unkownHouse;
Common::LandPermissionSet unkownHouse;
uint64_t unkown5;
};
struct FFXIVIpcLandUpdate : FFXIVIpcBasePacket< LandUpdate >
{
uint16_t landSetId;
uint16_t landId;
uint16_t unknow0;
uint16_t unknow1;
uint16_t unknow2;

View file

@ -89,6 +89,12 @@ Core::Entity::Player::Player() :
memset( m_classArray, 0, sizeof( m_classArray ) );
memset( m_expArray, 0, sizeof( m_expArray ) );
for ( uint8_t i = 0; i < 5; i++ )
{
memset( &m_housePermission[i], 0xFF, 8 );
memset( &m_housePermission[i].permissionMask, 0, 8 );
}
m_objSpawnIndexAllocator.init( MAX_DISPLAYED_EOBJS );
m_actorSpawnIndexAllocator.init( MAX_DISPLAYED_ACTORS, true );
}
@ -1568,48 +1574,7 @@ 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 );
sendLandPermissions();
auto initZonePacket = makeZonePacket< FFXIVIpcInitZone >( getId() );
initZonePacket->data().zoneId = getCurrentZone()->getTerritoryTypeId();
@ -1786,3 +1751,33 @@ bool Core::Entity::Player::isOnEnterEventDone() const
{
return m_onEnterEventDone;
}
void Core::Entity::Player::setLandPermissions( uint8_t permissionSet, uint32_t permissionMask, int16_t landSetId, int16_t wardNum, int16_t zoneId )
{
m_housePermission[permissionSet].landSetId = landSetId;
m_housePermission[permissionSet].permissionMask = permissionMask;
m_housePermission[permissionSet].wardNum = wardNum;
m_housePermission[permissionSet].worldId = 67;
m_housePermission[permissionSet].unkown1 = 0;
}
void Core::Entity::Player::sendLandPermissions()
{
auto landPermissions = makeZonePacket< FFXIVIpcLandPermission >( getId() );
landPermissions->data().freeCompanyHouse = m_housePermission[Common::LandPermissionSlot::FreeCompany];
landPermissions->data().privateHouse = m_housePermission[Common::LandPermissionSlot::Private];
landPermissions->data().apartment = m_housePermission[Common::LandPermissionSlot::Apartment];
landPermissions->data().sharedHouse[0] = m_housePermission[Common::LandPermissionSlot::SharedHouse1];
landPermissions->data().sharedHouse[1] = m_housePermission[Common::LandPermissionSlot::SharedHouse2];
memset( &landPermissions->data().unkownHouse, 0xFF, 8 );
memset( &landPermissions->data().unkownHouse.permissionMask, 0, 8 );
landPermissions->data().unkownHouse.permissionMask = 2;
landPermissions->data().unkown1 = 0;
landPermissions->data().unkown2 = 0;
landPermissions->data().unkown3 = 0;
landPermissions->data().unkown4 = 0;
landPermissions->data().unkown5 = 0;
queuePacket( landPermissions );
}

View file

@ -761,6 +761,12 @@ namespace Core::Entity
void setDirectorInitialized( bool isInitialized );
// Housing Handling
//////////////////////////////////////////////////////////////////////////////////////////////////////
void setLandPermissions( uint8_t permissionSet, uint32_t permissionMask, int16_t landSetId, int16_t wardNum, int16_t zoneId );
void sendLandPermissions();
// Player Battle Handling
//////////////////////////////////////////////////////////////////////////////////////////////////////
void initHateSlotQueue();
@ -1013,6 +1019,9 @@ namespace Core::Entity
uint8_t m_searchSelectRegion; // regions selected to show up in profile
uint8_t m_searchSelectClass; // class selected to show up in profile
// housing info
Common::LandPermissionSet m_housePermission[5];
// gc info
uint8_t m_gc;
uint8_t m_gcRank[3];

View file

@ -288,13 +288,7 @@ void Core::Land::Update( uint32_t currTime )
m_currentPrice = ( m_currentPrice / 100 ) * 99.58;
}
}
m_devaluationTime = m_nextDrop - currTime;
UpdateDatabase();
}
m_devaluationTime = m_nextDrop - currTime;
onUpdate();
}
void Core::Land::onUpdate()
{
}

View file

@ -52,7 +52,6 @@ namespace Core
void setPreset( uint32_t itemId );
void UpdateDatabase();
void Update( uint32_t currTime );
void onUpdate();
const Common::LandStruct& getLand();
uint32_t getMaxItems();