From e22669876c03de706d3d81e86559aad13d4fc4af Mon Sep 17 00:00:00 2001 From: collett Date: Thu, 13 Jun 2024 22:57:52 +0900 Subject: [PATCH] update MapUpdate2/128 opcode, fix discovery and clean up custom PlayerSetup unlocks --- src/common/Network/PacketDef/Ipcs.h | 8 +++---- src/world/Actor/Player.cpp | 4 ++-- .../PacketWrappers/PlayerSetupPacket.h | 23 ++++++++----------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 6bd71174..589d5d06 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -163,7 +163,7 @@ enum ServerZoneIpcType : SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18 PartyList = 0x164, // updated 6.58 hotfix 2 - PartyUpdate = 0x2D8, // updated 6.58 hotfix 2 + PartyUpdate = 0x2D8, // updated 6.58 hotfix 2? HateRank = 0x2A7, // updated 6.58 hotfix 2 HateList = 0x26B, // updated 6.58 hotfix 2 ObjectSpawn = 0x03B8, // updated 6.58 hotfix 2 @@ -242,7 +242,7 @@ enum ServerZoneIpcType : WeatherChange = 0x021D, // updated 6.58 hotfix 2 PlayerTitleList = 0x1FF, // updated 6.58 hotfix 2? - Discovery = 0x11E, // updated 6.58 hotfix 2? + Discovery = 0x11E, // updated 6.58 hotfix 2 EorzeaTimeOffset = 0x398, // updated 6.58 hotfix 2? @@ -294,13 +294,13 @@ enum ServerZoneIpcType : DailyQuests = 0x2EF, // updated 6.58 hotfix 2 DailyQuestRepeatFlags = 0x134, // updated 6.58 hotfix 2 - MapUpdate = 0xF0A3, // updated 6.48 + MapUpdate = 0x0FF, // updated 6.58 hotfix 2 MapUpdate4 = 0x345, // updated 6.58 hotfix 2 MapUpdate8 = 0x114, // updated 6.58 hotfix 2 MapUpdate16 = 0x2CE, // updated 6.58 hotfix 2 MapUpdate32 = 0x205, // updated 6.58 hotfix 2 MapUpdate64 = 0x1FC, // updated 6.58 hotfix 2 - MapUpdate128 = 0xF09c, // updated 6.48 + MapUpdate128 = 0x158, // updated 6.58 hotfix 2 /// Doman Mahjong ////////////////////////////////////// MahjongOpenGui = 0x02A4, // only available in mahjong instance diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 050cf525..e104c28a 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -690,9 +690,9 @@ void Sapphire::Entity::Player::discover( int16_t map_id, int16_t sub_id ) } if( info->discoveryArrayByte ) - offset = 5 + 2 * info->discoveryIndex; + offset = 2 * info->discoveryIndex; else - offset = 325 + 4 * info->discoveryIndex; + offset = 320 + 4 * info->discoveryIndex; int32_t index = offset + sub_id / 8; uint8_t bitIndex = sub_id % 8; diff --git a/src/world/Network/PacketWrappers/PlayerSetupPacket.h b/src/world/Network/PacketWrappers/PlayerSetupPacket.h index 52b52dba..17ddcddb 100644 --- a/src/world/Network/PacketWrappers/PlayerSetupPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSetupPacket.h @@ -45,7 +45,6 @@ namespace Sapphire::Network::Packets::Server //m_data.gcRank = GCRank::None; m_data.homepoint = player.getHomepoint(); - m_data.pose[0] = player.getPose(); memset( &m_data.name[ 0 ], 0, sizeof( m_data.name ) ); strcpy( &m_data.name[ 0 ], player.getName().c_str() ); @@ -69,29 +68,27 @@ namespace Sapphire::Network::Packets::Server memcpy( m_data.howto, player.getHowToArray(), sizeof( m_data.howto ) ); - // possibly max level or current level m_data.maxLevel = Common::MAX_PLAYER_LEVEL; m_data.expansion = Common::CURRENT_EXPANSION_ID; - // df stuff - // todo: actually do this properly - // m_data.unknown70[4] = 1; // enable df + // unlock mounts + memset( m_data.mountGuideMask, 0xFF, sizeof( m_data.mountGuideMask ) ); - // enable all raids/guildhests/dungeons + // uncomment to unlock everything or choose options below + //memset( &m_data.unknown293[ 0 ], 0xFF, reinterpret_cast< uint64_t >( &m_data.unknown85E[ 40 ] ) - reinterpret_cast< uint64_t >( &m_data.unknown293[ 0 ] ) + 1 ); + + m_data.pose[0] = player.getPose(); + memset( &m_data.pose[ 1 ], 0, sizeof( m_data.pose ) - 1 ); + + // custom unlock options memset( m_data.unlockedDungeons, 0xFF, sizeof( m_data.unlockedDungeons ) ); memset( m_data.unlockedGuildhests, 0xFF, sizeof( m_data.unlockedGuildhests ) ); memset( m_data.unlockedPvp, 0xFF, sizeof( m_data.unlockedPvp ) ); memset( m_data.unlockedRaids, 0xFF, sizeof( m_data.unlockedRaids ) ); memset( m_data.unlockedTrials, 0xFF, sizeof( m_data.unlockedTrials ) ); - - // uncomment to enable custom unlocks - - // everything - //memset( &m_data.unknownOword[ 0 ], 0xFF, reinterpret_cast< uint64_t >( &m_data.unknown5_55c ) - reinterpret_cast< uint64_t >( &m_data.unknownOword[ 0 ] ) ); - // or select options below //memset( m_data.unlockBitmask, 0xFF, sizeof( m_data.unlockBitmask ) ); - //memset( m_data.mountGuideMask, 0xFF, sizeof( m_data.mountGuideMask ) ); //memset( m_data.minions, 0xFF, sizeof( m_data.minions ) ); + //memset( m_data.discovery, 0xFF, sizeof( m_data.discovery ) ); }; };