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:
parent
3357054208
commit
9df185a7c5
6 changed files with 57 additions and 41 deletions
|
@ -66,7 +66,7 @@ namespace Sapphire::Network::Packets
|
||||||
Logout = 0x02AD, // updated 5.35 hotfix
|
Logout = 0x02AD, // updated 5.35 hotfix
|
||||||
CFNotify = 0x02C4, // updated 5.35 hotfix
|
CFNotify = 0x02C4, // updated 5.35 hotfix
|
||||||
CFMemberStatus = 0x0079,
|
CFMemberStatus = 0x0079,
|
||||||
CFDutyInfo = 0x007A,
|
CFDutyInfo = 0x0193, // updated 5.35 hotfix
|
||||||
CFPlayerInNeed = 0xF07F,
|
CFPlayerInNeed = 0xF07F,
|
||||||
CFPreferredRole = 0x0196, // updated 5.35 hotfix
|
CFPreferredRole = 0x0196, // updated 5.35 hotfix
|
||||||
CFCancel = 0x00EC, // updated 5.35 hotfix
|
CFCancel = 0x00EC, // updated 5.35 hotfix
|
||||||
|
@ -92,7 +92,7 @@ namespace Sapphire::Network::Packets
|
||||||
InitSearchInfo = 0x036F, // updated 5.35 hotfix
|
InitSearchInfo = 0x036F, // updated 5.35 hotfix
|
||||||
ExamineSearchComment = 0x0102, // updated 4.1
|
ExamineSearchComment = 0x0102, // updated 4.1
|
||||||
|
|
||||||
ServerNoticeShort = 0x0115, // updated 5.0
|
ServerNoticeShort = 0x017A, // updated 5.35 hotfix
|
||||||
ServerNotice = 0x02F8, // updated 5.35 hotfix
|
ServerNotice = 0x02F8, // updated 5.35 hotfix
|
||||||
SetOnlineStatus = 0x03D7, // updated 5.35 hotfix
|
SetOnlineStatus = 0x03D7, // updated 5.35 hotfix
|
||||||
|
|
||||||
|
@ -131,12 +131,12 @@ namespace Sapphire::Network::Packets
|
||||||
BossStatusEffectList = 0x0312, // added 5.1
|
BossStatusEffectList = 0x0312, // added 5.1
|
||||||
Effect = 0x0192, // updated 5.35 hotfix
|
Effect = 0x0192, // updated 5.35 hotfix
|
||||||
AoeEffect8 = 0x012C, // updated 5.35 hotfix
|
AoeEffect8 = 0x012C, // updated 5.35 hotfix
|
||||||
AoeEffect16 = 0x03BF, // updated 5.3
|
AoeEffect16 = 0x01B9, // updated 5.35 hotfix
|
||||||
AoeEffect24 = 0x027E, // updated 5.3
|
AoeEffect24 = 0x02B4, // updated 5.35 hotfix
|
||||||
AoeEffect32 = 0x017E, // updated 5.3
|
AoeEffect32 = 0x00A4, // updated 5.35 hotfix
|
||||||
PersistantEffect = 0x0317, // 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
|
PlayerSpawn = 0x0179, // updated 5.35 hotfix
|
||||||
NpcSpawn = 0x03A8, // updated 5.35 hotfix
|
NpcSpawn = 0x03A8, // updated 5.35 hotfix
|
||||||
|
@ -153,7 +153,7 @@ namespace Sapphire::Network::Packets
|
||||||
HateRank = 0x02CC, // updated 5.35 hotfix
|
HateRank = 0x02CC, // updated 5.35 hotfix
|
||||||
HateList = 0x0198, // updated 5.35 hotfix
|
HateList = 0x0198, // updated 5.35 hotfix
|
||||||
ObjectSpawn = 0x02B8, // 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
|
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
|
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
|
PlayerSetup = 0x0290, // updated 5.35 hotfix
|
||||||
|
@ -213,7 +213,7 @@ namespace Sapphire::Network::Packets
|
||||||
|
|
||||||
Mount = 0x01B5, // updated 5.35 hotfix
|
Mount = 0x01B5, // updated 5.35 hotfix
|
||||||
|
|
||||||
DirectorVars = 0x00E6, // updated 5.18
|
DirectorVars = 0x011D, // updated 5.35 hotfix
|
||||||
SomeDirectorUnk1 = 0x0084, // updated 5.18
|
SomeDirectorUnk1 = 0x0084, // updated 5.18
|
||||||
SomeDirectorUnk2 = 0xF0C1, // updated 5.18
|
SomeDirectorUnk2 = 0xF0C1, // updated 5.18
|
||||||
SomeDirectorUnk4 = 0x0202, // updated 5.35 hotfix
|
SomeDirectorUnk4 = 0x0202, // updated 5.35 hotfix
|
||||||
|
@ -226,10 +226,10 @@ namespace Sapphire::Network::Packets
|
||||||
CFAvailableContents = 0xF1FD, // updated 4.2
|
CFAvailableContents = 0xF1FD, // updated 4.2
|
||||||
|
|
||||||
WeatherChange = 0x027B, // updated 5.35 hotfix
|
WeatherChange = 0x027B, // updated 5.35 hotfix
|
||||||
PlayerTitleList = 0x037D, // updated 5.1
|
PlayerTitleList = 0x0251, // updated 5.35 hotfix
|
||||||
Discovery = 0x031B, // 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
|
EquipDisplayFlags = 0x00BE, // updated 5.35 hotfix
|
||||||
|
|
||||||
|
@ -239,29 +239,29 @@ namespace Sapphire::Network::Packets
|
||||||
|
|
||||||
/// Housing //////////////////////////////////////
|
/// Housing //////////////////////////////////////
|
||||||
|
|
||||||
LandSetInitialize = 0x0234, // updated 5.0
|
LandSetInitialize = 0x0095, // updated 5.35 hotfix
|
||||||
LandUpdate = 0x0235, // updated 5.0
|
LandUpdate = 0x00BF, // updated 5.35 hotfix
|
||||||
YardObjectSpawn = 0xF236, // updated 5.0
|
YardObjectSpawn = 0x01CA, // updated 5.35 hotfix
|
||||||
HousingIndoorInitialize = 0x0237, // updated 5.0
|
HousingIndoorInitialize = 0x01FF, // updated 5.35 hotfix
|
||||||
LandPriceUpdate = 0x0238, // updated 5.0
|
LandPriceUpdate = 0x0380, // updated 5.35 hotfix
|
||||||
LandInfoSign = 0x023D, // updated 5.35 hotfix
|
LandInfoSign = 0x023D, // updated 5.35 hotfix
|
||||||
LandRename = 0x023A, // updated 5.0
|
LandRename = 0x0140, // updated 5.35 hotfix
|
||||||
HousingEstateGreeting = 0x023B, // updated 5.0
|
HousingEstateGreeting = 0x00C7, // updated 5.35 hotfix
|
||||||
HousingUpdateLandFlagsSlot = 0x023C, // updated 5.0
|
HousingUpdateLandFlagsSlot = 0x027E, // updated 5.35 hotfix
|
||||||
HousingLandFlags = 0x022F, // 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
|
HousingObjectInitialize = 0x01AA, // updated 5.35 hotfix
|
||||||
HousingInternalObjectSpawn = 0xF241, // updated 5.0
|
HousingInternalObjectSpawn = 0x0234, // updated 5.35 hotfix
|
||||||
|
|
||||||
HousingWardInfo = 0x02FD, // 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
|
ReqJoinNoviceNetwork = 0x0129, // updated 4.2
|
||||||
|
|
||||||
ReqCountdownInitiate = 0x009A, // updated 5.25
|
ReqCountdownInitiate = 0x025F, // updated 5.35 hotfix
|
||||||
ReqCountdownCancel = 0x0244, // updated 5.25
|
ReqCountdownCancel = 0x0244, // updated 5.25
|
||||||
|
|
||||||
ZoneLineHandler = 0x0279, // updated 5.35 hotfix
|
ZoneLineHandler = 0x0279, // updated 5.35 hotfix
|
||||||
|
@ -363,17 +363,17 @@ namespace Sapphire::Network::Packets
|
||||||
|
|
||||||
InventoryModifyHandler = 0x0135, // updated 5.35 hotfix
|
InventoryModifyHandler = 0x0135, // updated 5.35 hotfix
|
||||||
|
|
||||||
InventoryEquipRecommendedItems = 0x0149, // updated 5.0
|
InventoryEquipRecommendedItems = 0x0116, // updated 5.35 hotfix
|
||||||
|
|
||||||
ReqPlaceHousingItem = 0x014B, // updated 5.0
|
ReqPlaceHousingItem = 0x02AE, // updated 5.35 hotfix
|
||||||
BuildPresetHandler = 0x0150, // updated 5.0
|
BuildPresetHandler = 0x01C2, // updated 5.35 hotfix
|
||||||
|
|
||||||
TalkEventHandler = 0x02A4, // updated 5.35 hotfix
|
TalkEventHandler = 0x02A4, // updated 5.35 hotfix
|
||||||
EmoteEventHandler = 0x02C8, // updated 5.35 hotfix
|
EmoteEventHandler = 0x02C8, // updated 5.35 hotfix
|
||||||
WithinRangeEventHandler = 0x0209, // updated 5.35 hotfix
|
WithinRangeEventHandler = 0x0209, // updated 5.35 hotfix
|
||||||
OutOfRangeEventHandler = 0x0319, // updated 5.35 hotfix
|
OutOfRangeEventHandler = 0x0319, // updated 5.35 hotfix
|
||||||
EnterTeriEventHandler = 0x0192, // 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
|
ReturnEventHandler = 0x02B4, // updated 5.35 hotfix
|
||||||
TradeReturnEventHandler = 0x00A4, // updated 5.35 hotfix
|
TradeReturnEventHandler = 0x00A4, // updated 5.35 hotfix
|
||||||
|
@ -384,9 +384,9 @@ namespace Sapphire::Network::Packets
|
||||||
|
|
||||||
ReqEquipDisplayFlagsChange = 0x02F6, // updated 5.35 hotfix
|
ReqEquipDisplayFlagsChange = 0x02F6, // updated 5.35 hotfix
|
||||||
|
|
||||||
LandRenameHandler = 0xF177, // updated 5.0
|
LandRenameHandler = 0x0155, // updated 5.35 hotfix
|
||||||
HousingUpdateHouseGreeting = 0x0178, // updated 5.0
|
HousingUpdateHouseGreeting = 0x02EA, // updated 5.35 hotfix
|
||||||
HousingUpdateObjectPosition = 0x0159, // updated 5.25
|
HousingUpdateObjectPosition = 0x00D5, // updated 5.35 hotfix
|
||||||
|
|
||||||
SetSharedEstateSettings = 0x017B, // updated 5.0
|
SetSharedEstateSettings = 0x017B, // updated 5.0
|
||||||
|
|
||||||
|
@ -406,6 +406,7 @@ namespace Sapphire::Network::Packets
|
||||||
enum ServerChatIpcType : uint16_t
|
enum ServerChatIpcType : uint16_t
|
||||||
{
|
{
|
||||||
Tell = 0x0064, // updated for sb
|
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,
|
TellErrNotFound = 0x0066,
|
||||||
|
|
||||||
FreeCompanyEvent = 0x012C, // added 5.0
|
FreeCompanyEvent = 0x012C, // added 5.0
|
||||||
|
@ -417,6 +418,7 @@ namespace Sapphire::Network::Packets
|
||||||
enum ClientChatIpcType : uint16_t
|
enum ClientChatIpcType : uint16_t
|
||||||
{
|
{
|
||||||
TellReq = 0x0064,
|
TellReq = 0x0064,
|
||||||
|
PublicContentTellReq = 0x0326, // updated 5.35 hotfix, this is used when sending a /tell in PublicContent instances such as Eureka or Bozja
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,8 @@ public:
|
||||||
{
|
{
|
||||||
player.playScene( eventId, 0, HIDE_HOTBAR | NO_DEFAULT_CAMERA, [this, eventId]( Entity::Player& player, const Event::SceneResult& result )
|
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() );
|
auto housingZone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() );
|
||||||
if( !housingZone )
|
if( !housingZone )
|
||||||
|
@ -40,7 +41,8 @@ public:
|
||||||
// moving a player inside an event will crash the game so we end it here
|
// moving a player inside an event will crash the game so we end it here
|
||||||
player.eventFinish( eventId, 1 );
|
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() );
|
playerMgr.movePlayerToLandDestination( player, pHousingAethernet->level, housingZone->getWardNum() );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,8 @@ public:
|
||||||
if( result.param2 != 1 )
|
if( result.param2 != 1 )
|
||||||
return;
|
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() );
|
auto zone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() );
|
||||||
if( !zone )
|
if( !zone )
|
||||||
|
|
|
@ -636,6 +636,8 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play
|
||||||
|
|
||||||
auto pItem = invMgr.createItem( player, static_cast< uint32_t >( item.second ) );
|
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 );
|
container->setItem( static_cast< uint8_t >( item.first ), pItem );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 )
|
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
|
// 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;
|
Sapphire::TerritoryPtr destinationZone;
|
||||||
|
|
||||||
|
|
|
@ -628,14 +628,22 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( TerritoryPtr pZone, Sap
|
||||||
// mark character as zoning in progress
|
// mark character as zoning in progress
|
||||||
pPlayer->setLoadingComplete( false );
|
pPlayer->setLoadingComplete( false );
|
||||||
|
|
||||||
|
bool zoneChanged = true;
|
||||||
if( pPlayer->getLastPing() != 0 && pPlayer->getCurrentTerritory() )
|
if( pPlayer->getLastPing() != 0 && pPlayer->getCurrentTerritory() )
|
||||||
|
{
|
||||||
|
zoneChanged = pPlayer->getCurrentTerritory()->getGuId() != pZone->getGuId();
|
||||||
|
if( zoneChanged )
|
||||||
pPlayer->getCurrentTerritory()->removeActor( pPlayer );
|
pPlayer->getCurrentTerritory()->removeActor( pPlayer );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( zoneChanged )
|
||||||
|
{
|
||||||
pPlayer->setCurrentZone( pZone );
|
pPlayer->setCurrentZone( pZone );
|
||||||
pZone->pushActor( pPlayer );
|
pZone->pushActor( pPlayer );
|
||||||
|
|
||||||
// map player to instanceId so it can be tracked.
|
// map player to instanceId so it can be tracked.
|
||||||
m_playerIdToInstanceMap[ pPlayer->getId() ] = pZone->getGuId();
|
m_playerIdToInstanceMap[ pPlayer->getId() ] = pZone->getGuId();
|
||||||
|
}
|
||||||
|
|
||||||
pPlayer->sendZonePackets();
|
pPlayer->sendZonePackets();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue