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

Import housing opcodes from @JeidoUran and fix some crashes.

This commit is contained in:
collett 2021-01-25 17:17:22 +09:00
parent 3357054208
commit 9df185a7c5
6 changed files with 57 additions and 41 deletions

View file

@ -66,7 +66,7 @@ namespace Sapphire::Network::Packets
Logout = 0x02AD, // updated 5.35 hotfix
CFNotify = 0x02C4, // updated 5.35 hotfix
CFMemberStatus = 0x0079,
CFDutyInfo = 0x007A,
CFDutyInfo = 0x0193, // updated 5.35 hotfix
CFPlayerInNeed = 0xF07F,
CFPreferredRole = 0x0196, // updated 5.35 hotfix
CFCancel = 0x00EC, // updated 5.35 hotfix
@ -92,7 +92,7 @@ namespace Sapphire::Network::Packets
InitSearchInfo = 0x036F, // updated 5.35 hotfix
ExamineSearchComment = 0x0102, // updated 4.1
ServerNoticeShort = 0x0115, // updated 5.0
ServerNoticeShort = 0x017A, // updated 5.35 hotfix
ServerNotice = 0x02F8, // updated 5.35 hotfix
SetOnlineStatus = 0x03D7, // updated 5.35 hotfix
@ -131,12 +131,12 @@ namespace Sapphire::Network::Packets
BossStatusEffectList = 0x0312, // added 5.1
Effect = 0x0192, // updated 5.35 hotfix
AoeEffect8 = 0x012C, // updated 5.35 hotfix
AoeEffect16 = 0x03BF, // updated 5.3
AoeEffect24 = 0x027E, // updated 5.3
AoeEffect32 = 0x017E, // updated 5.3
AoeEffect16 = 0x01B9, // updated 5.35 hotfix
AoeEffect24 = 0x02B4, // updated 5.35 hotfix
AoeEffect32 = 0x00A4, // updated 5.35 hotfix
PersistantEffect = 0x0317, // updated 5.35 hotfix
GCAffiliation = 0xF16F, // updated 5.0
GCAffiliation = 0x0105, // updated 5.35 hotfix
PlayerSpawn = 0x0179, // updated 5.35 hotfix
NpcSpawn = 0x03A8, // updated 5.35 hotfix
@ -153,7 +153,7 @@ namespace Sapphire::Network::Packets
HateRank = 0x02CC, // updated 5.35 hotfix
HateList = 0x0198, // updated 5.35 hotfix
ObjectSpawn = 0x02B8, // updated 5.35 hotfix
ObjectDespawn = 0xF34B, // updated 5.18
ObjectDespawn = 0x00C0, // updated 5.35 hotfix
UpdateClassInfo = 0x0235, // updated 5.35 hotfix
SilentSetClassJob = 0x018E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything
PlayerSetup = 0x0290, // updated 5.35 hotfix
@ -213,7 +213,7 @@ namespace Sapphire::Network::Packets
Mount = 0x01B5, // updated 5.35 hotfix
DirectorVars = 0x00E6, // updated 5.18
DirectorVars = 0x011D, // updated 5.35 hotfix
SomeDirectorUnk1 = 0x0084, // updated 5.18
SomeDirectorUnk2 = 0xF0C1, // updated 5.18
SomeDirectorUnk4 = 0x0202, // updated 5.35 hotfix
@ -226,10 +226,10 @@ namespace Sapphire::Network::Packets
CFAvailableContents = 0xF1FD, // updated 4.2
WeatherChange = 0x027B, // updated 5.35 hotfix
PlayerTitleList = 0x037D, // updated 5.1
PlayerTitleList = 0x0251, // updated 5.35 hotfix
Discovery = 0x031B, // updated 5.35 hotfix
EorzeaTimeOffset = 0xF3B8, // updated 5.1
EorzeaTimeOffset = 0x01D4, // updated 5.35 hotfix
EquipDisplayFlags = 0x00BE, // updated 5.35 hotfix
@ -239,29 +239,29 @@ namespace Sapphire::Network::Packets
/// Housing //////////////////////////////////////
LandSetInitialize = 0x0234, // updated 5.0
LandUpdate = 0x0235, // updated 5.0
YardObjectSpawn = 0xF236, // updated 5.0
HousingIndoorInitialize = 0x0237, // updated 5.0
LandPriceUpdate = 0x0238, // updated 5.0
LandSetInitialize = 0x0095, // updated 5.35 hotfix
LandUpdate = 0x00BF, // updated 5.35 hotfix
YardObjectSpawn = 0x01CA, // updated 5.35 hotfix
HousingIndoorInitialize = 0x01FF, // updated 5.35 hotfix
LandPriceUpdate = 0x0380, // updated 5.35 hotfix
LandInfoSign = 0x023D, // updated 5.35 hotfix
LandRename = 0x023A, // updated 5.0
HousingEstateGreeting = 0x023B, // updated 5.0
HousingUpdateLandFlagsSlot = 0x023C, // updated 5.0
LandRename = 0x0140, // updated 5.35 hotfix
HousingEstateGreeting = 0x00C7, // updated 5.35 hotfix
HousingUpdateLandFlagsSlot = 0x027E, // updated 5.35 hotfix
HousingLandFlags = 0x022F, // updated 5.35 hotfix
HousingShowEstateGuestAccess = 0x023E, // updated 5.0
HousingShowEstateGuestAccess = 0x03B5, // updated 5.35 hotfix
HousingObjectInitialize = 0x01AA, // updated 5.35 hotfix
HousingInternalObjectSpawn = 0xF241, // updated 5.0
HousingInternalObjectSpawn = 0x0234, // updated 5.35 hotfix
HousingWardInfo = 0x02FD, // updated 5.35 hotfix
HousingObjectMove = 0xF244, // updated 5.0
HousingObjectMove = 0x022C, // updated 5.35 hotfix
SharedEstateSettingsResponse = 0x0245, // updated 4.5
SharedEstateSettingsResponse = 0x006A, // updated 5.35 hotfix
LandUpdateHouseName = 0x0257, // updated 4.5
LandUpdateHouseName = 0x00B1, // updated 5.35 hotfix
LandSetMap = 0x025B, // updated 4.5
LandSetMap = 0x0149, // updated 5.35 hotfix
//////////////////////////////////////////////////
@ -345,7 +345,7 @@ namespace Sapphire::Network::Packets
ReqJoinNoviceNetwork = 0x0129, // updated 4.2
ReqCountdownInitiate = 0x009A, // updated 5.25
ReqCountdownInitiate = 0x025F, // updated 5.35 hotfix
ReqCountdownCancel = 0x0244, // updated 5.25
ZoneLineHandler = 0x0279, // updated 5.35 hotfix
@ -363,17 +363,17 @@ namespace Sapphire::Network::Packets
InventoryModifyHandler = 0x0135, // updated 5.35 hotfix
InventoryEquipRecommendedItems = 0x0149, // updated 5.0
InventoryEquipRecommendedItems = 0x0116, // updated 5.35 hotfix
ReqPlaceHousingItem = 0x014B, // updated 5.0
BuildPresetHandler = 0x0150, // updated 5.0
ReqPlaceHousingItem = 0x02AE, // updated 5.35 hotfix
BuildPresetHandler = 0x01C2, // updated 5.35 hotfix
TalkEventHandler = 0x02A4, // updated 5.35 hotfix
EmoteEventHandler = 0x02C8, // updated 5.35 hotfix
WithinRangeEventHandler = 0x0209, // updated 5.35 hotfix
OutOfRangeEventHandler = 0x0319, // updated 5.35 hotfix
EnterTeriEventHandler = 0x0192, // updated 5.35 hotfix
ShopEventHandler = 0x0156, // updated 5.0
ShopEventHandler = 0x01F6, // updated 5.35 hotfix
ReturnEventHandler = 0x02B4, // updated 5.35 hotfix
TradeReturnEventHandler = 0x00A4, // updated 5.35 hotfix
@ -384,9 +384,9 @@ namespace Sapphire::Network::Packets
ReqEquipDisplayFlagsChange = 0x02F6, // updated 5.35 hotfix
LandRenameHandler = 0xF177, // updated 5.0
HousingUpdateHouseGreeting = 0x0178, // updated 5.0
HousingUpdateObjectPosition = 0x0159, // updated 5.25
LandRenameHandler = 0x0155, // updated 5.35 hotfix
HousingUpdateHouseGreeting = 0x02EA, // updated 5.35 hotfix
HousingUpdateObjectPosition = 0x00D5, // updated 5.35 hotfix
SetSharedEstateSettings = 0x017B, // updated 5.0
@ -406,6 +406,7 @@ namespace Sapphire::Network::Packets
enum ServerChatIpcType : uint16_t
{
Tell = 0x0064, // updated for sb
PublicContentTell = 0x00FB, // added 4.5, this is used when receiving a /tell in PublicContent instances such as Eureka or Bozja
TellErrNotFound = 0x0066,
FreeCompanyEvent = 0x012C, // added 5.0
@ -417,6 +418,7 @@ namespace Sapphire::Network::Packets
enum ClientChatIpcType : uint16_t
{
TellReq = 0x0064,
PublicContentTellReq = 0x0326, // updated 5.35 hotfix, this is used when sending a /tell in PublicContent instances such as Eureka or Bozja
};

View file

@ -21,7 +21,8 @@ public:
{
player.playScene( eventId, 0, HIDE_HOTBAR | NO_DEFAULT_CAMERA, [this, eventId]( Entity::Player& player, const Event::SceneResult& result )
{
auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref();
//auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref();
auto& exdData = *reinterpret_cast< Sapphire::Data::ExdDataGenerated* >( player.getExdData() );
auto housingZone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() );
if( !housingZone )
@ -40,7 +41,8 @@ public:
// moving a player inside an event will crash the game so we end it here
player.eventFinish( eventId, 1 );
auto& playerMgr = Common::Service< Sapphire::World::Manager::PlayerMgr >::ref();
//auto& playerMgr = Common::Service< Sapphire::World::Manager::PlayerMgr >::ref();
auto& playerMgr = *reinterpret_cast< Sapphire::World::Manager::PlayerMgr* >( player.getPlayerMgr() );
playerMgr.movePlayerToLandDestination( player, pHousingAethernet->level, housingZone->getWardNum() );
} );
}

View file

@ -26,7 +26,8 @@ public:
if( result.param2 != 1 )
return;
auto& terriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
//auto& terriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto& terriMgr = *reinterpret_cast< Sapphire::World::Manager::TerritoryMgr* >( player.getTerritoryMgr() );
auto zone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() );
if( !zone )

View file

@ -636,6 +636,8 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play
auto pItem = invMgr.createItem( player, static_cast< uint32_t >( item.second ) );
player.sendDebug( "container: {}, slot: {}, uid: {}", destContainer.first, item.first, pItem->getUId() );
container->setItem( static_cast< uint8_t >( item.first ), pItem );
}

View file

@ -16,7 +16,8 @@ using namespace Sapphire::World::Manager;
void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire::Entity::Player& player, uint32_t landId, uint16_t param )
{
// check if we have one in the db first
auto& terriMgr = Common::Service< TerritoryMgr >::ref();
//auto& terriMgr = Common::Service< TerritoryMgr >::ref();
auto& terriMgr = *reinterpret_cast< Sapphire::World::Manager::TerritoryMgr* >( player.getTerritoryMgr() );
Sapphire::TerritoryPtr destinationZone;

View file

@ -628,14 +628,22 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( TerritoryPtr pZone, Sap
// mark character as zoning in progress
pPlayer->setLoadingComplete( false );
bool zoneChanged = true;
if( pPlayer->getLastPing() != 0 && pPlayer->getCurrentTerritory() )
{
zoneChanged = pPlayer->getCurrentTerritory()->getGuId() != pZone->getGuId();
if( zoneChanged )
pPlayer->getCurrentTerritory()->removeActor( pPlayer );
}
if( zoneChanged )
{
pPlayer->setCurrentZone( pZone );
pZone->pushActor( pPlayer );
// map player to instanceId so it can be tracked.
m_playerIdToInstanceMap[ pPlayer->getId() ] = pZone->getGuId();
}
pPlayer->sendZonePackets();