From 411702daea80a4a264c7f1ca964d867bd04b5afc Mon Sep 17 00:00:00 2001 From: Rey Date: Fri, 6 May 2022 23:13:38 -0500 Subject: [PATCH] 6.11 Working when loading in and going into instances. Wedding has not been tested yet but can go in and talk to NPCs to change the decorations. --- src/common/Network/PacketDef/Ipcs.h | 108 ++++++++---------- .../Network/PacketDef/Zone/ServerZoneDef.h | 15 +-- .../PacketWrappers/PlayerSetupPacket.h | 2 +- 3 files changed, 59 insertions(+), 66 deletions(-) diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 7b5ea615..d859acd1 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -53,7 +53,7 @@ namespace Sapphire::Network::Packets ///////////////////////////////////////////////// - Ping = 0x10F4, // updated 6.11 + Ping = 0x01F4, // updated 6.11 Init = 0x0104, // updated 6.11 InitZone = 0x01F5, // Updated 6.11 @@ -89,7 +89,7 @@ namespace Sapphire::Network::Packets SomeDirectorUnk16 = 0x028C, // updated 5.18 DirectorPopUp = 0x03DF, // updated 5.58 hotfix DirectorPopUp4 = 0x019B, // updated 5.58 hotfix - DirectorPopUp8 = 0x0271, // updated 5.58 hotfix + DirectorPopUp8 = 0xF271, // updated 5.58 hotfix ///////// These last 3 are 0x0093, 0x00DA and 0x01CB, but don't know which is which /////////////////////////////////////////////////// @@ -97,7 +97,7 @@ namespace Sapphire::Network::Packets PlayerSetup = 0x0312, // Updated 6.11 PlayerStats = 0x0370, // Updated 6.11 PlayerSpawn = 0x018F, // Updated 6.11 - PlayerClassInfo = 0x025A, // updated 6.11 + PlayerClassInfo = 0x0271, // updated 6.11 UpdateHpMpTp = 0x028B, // Updated 6.11 @@ -261,70 +261,62 @@ namespace Sapphire::Network::Packets ResultDialog = 0x0361, // Updated 6.11 DesynthResult = 0x035A, // Updated 6.11 - LandSetInitialize = 0x03E5, // updated 6.11 - LandUpdate = 0x00D3, // updated 6.11 - YardObjectSpawn = 0x014B, // updated 6.11 - HousingIndoorInitialize = 0x00E6, // updated 6.11 - LandPriceUpdate = 0x00FD, // updated 6.11 - LandInfoSign = 0x0281, // updated 6.11 - LandRename = 0x0343, // updated 6.11 - HousingEstateGreeting = 0x01FE, // updated 6.11 - HousingUpdateLandFlagsSlot = 0x006B, // updated 6.11 - HousingLandFlags = 0x0293, // updated 6.11 - HousingShowEstateGuestAccess = 0x025E, // updated 6.11 + LandSetInitialize = 0x03E5, // updated 6.11 + LandUpdate = 0x00D3, // updated 6.11 + YardObjectSpawn = 0x014B, // updated 6.11 + HousingIndoorInitialize = 0x00E6, // updated 6.11 + LandPriceUpdate = 0x00FD, // updated 6.11 + LandInfoSign = 0x0281, // updated 6.11 + LandRename = 0x0343, // updated 6.11 + HousingEstateGreeting = 0x01FE, // updated 6.11 + HousingUpdateLandFlagsSlot = 0x006B, // updated 6.11 + HousingLandFlags = 0x0293, // updated 6.11 + HousingShowEstateGuestAccess = 0x025E, // updated 6.11 - HousingObjectInitialize = 0x01B5, // updated 6.11 - HousingInternalObjectSpawn = 0x006E, // updated 6.11 + HousingObjectInitialize = 0x01B5, // updated 6.11 + HousingInternalObjectSpawn = 0x006E, // updated 6.11 - HousingWardInfo = 0x0343, // updated 6.11 - HousingObjectMove = 0x02C4, // updated 6.11 + HousingWardInfo = 0x0343, // updated 6.11 + HousingObjectMove = 0x02C4, // updated 6.11 - SharedEstateSettingsResponse = 0x006B, // updated 6.11 + SharedEstateSettingsResponse = 0x006B, // updated 6.11 - LandUpdateHouseName = 0x0240, // updated 6.11 + LandUpdateHouseName = 0x0240, // updated 6.11 - LandSetMap = 0x03E4, // updated 6.11 + LandSetMap = 0x03E4, // updated 6.11 - CeremonySetActorAppearance = 0x0241, // updated 6.11 + CeremonySetActorAppearance = 0x0241, // updated 6.11 - ////////////////////////////////////////////////// + ////////////////////////////////////////////////// - DuelChallenge = 0xF277, // 4.2; this is responsible for opening the ui - PerformNote = 0x03AA, // updated 6.11 + DuelChallenge = 0xF277, // 4.2; this is responsible for opening the ui + PerformNote = 0x03AA, // updated 6.11 - DutyGauge = 0x008B, // updated 6.08 - this opcode seems to be wrong, LandSetMap duplicate + DutyGauge = 0x008B, // updated 6.08 - this opcode seems to be wrong, LandSetMap duplicate - MapUpdate = 0x01FD, // updated 6.11 - MapUpdate4 = 0x0248, // updated 6.11 - MapUpdate8 = 0x01F2, // updated 6.11 - MapUpdate16 = 0x02F6, // updated 6.11 - MapUpdate32 = 0x03C3, // updated 6.11 - MapUpdate64 = 0x0162, // updated 6.11 - MapUpdate128 = 0x0153, // updated 6.11 + MapUpdate = 0x01FD, // updated 6.11 + MapUpdate4 = 0x0248, // updated 6.11 + MapUpdate8 = 0x01F2, // updated 6.11 + MapUpdate16 = 0x02F6, // updated 6.11 + MapUpdate32 = 0x03C3, // updated 6.11 + MapUpdate64 = 0x0162, // updated 6.11 + MapUpdate128 = 0x0153, // updated 6.11 + + /// Doman Mahjong ////////////////////////////////////// + MahjongOpenGui = 0x02A4, // only available in mahjong instance + MahjongNextRound = 0x02BD, // initial hands(baipai), # of riichi(wat), winds, honba, score and stuff + MahjongPlayerAction = 0x02BE, // tsumo(as in drawing a tile) called chi/pon/kan/riichi + MahjongEndRoundTsumo = 0x02BF, // called tsumo + MahjongEndRoundRon = 0x2C0, // called ron or double ron (waiting for action must be flagged from discard packet to call) + MahjongTileDiscard = 0x02C1, // giri (discarding a tile.) chi(1)/pon(2)/kan(4)/ron(8) flags etc.. + MahjongPlayersInfo = 0xF2C2, // actor id, name, rating and stuff.. + // 2C3 and 2C4 are currently unknown + MahjongEndRoundDraw = 0x02C5, // self explanatory + MahjongEndGame = 0x9999, // finished oorasu(all-last) round; shows a result screen. Changed to 9999 since a 6.11 packet uses the opcode value in 6.08 - /// Doman Mahjong ////////////////////////////////////// - MahjongOpenGui = 0x02A4, // only available in mahjong instance - MahjongNextRound = 0x02BD, // initial hands(baipai), # of riichi(wat), winds, honba, score and stuff - MahjongPlayerAction = 0x02BE, // tsumo(as in drawing a tile) called chi/pon/kan/riichi - MahjongEndRoundTsumo = 0x02BF, // called tsumo - MahjongEndRoundRon = 0x2C0, // called ron or double ron (waiting for action must be flagged from discard packet to call) - MahjongTileDiscard = 0x02C1, // giri (discarding a tile.) chi(1)/pon(2)/kan(4)/ron(8) flags etc.. - MahjongPlayersInfo = 0xF2C2, // actor id, name, rating and stuff.. - // 2C3 and 2C4 are currently unknown - MahjongEndRoundDraw = 0x02C5, // self explanatory - MahjongEndGame = 0x9999, // finished oorasu(all-last) round; shows a result screen. Changed to 9999 since a 6.11 packet uses the opcode value in 6.08 - /// Airship & Submarine ////////////////////////////////////// - AirshipExplorationResult = 0x0328, // Updated 6.11 - AirshipStatus = 0x011B, // Updated 6.11 - AirshipStatusList = 0x01B4, // Updated 6.11 - AirshipTimers = 0x024B, // Updated 6.11 - SubmarineExplorationResult = 0x00B9, // Updated 6.11 - SubmarineProgressionStatus = 0x00C7, // Updated 6.11 - SubmarineStatusList = 0x0236, // Updated 6.11 - SubmarineTimers = 0x0254, // Updated 6.11 }; /** @@ -401,7 +393,7 @@ namespace Sapphire::Network::Packets GMCommand2 = 0x0203, // updated 6.08 - SkillHandler = 0x008E, // updated 6.08 + SkillHandler = 0x02EB, // updated 6.11 AoESkillHandler = 0x0152, // updated 5.58 hotfix @@ -411,15 +403,15 @@ namespace Sapphire::Network::Packets ReqPlaceHousingItem = 0x0192, // updated 6.08 BuildPresetHandler = 0x0223, // updated 5.58 hotfix - TalkEventHandler = 0x036B, // updated 6.08 + TalkEventHandler = 0x00A8, // updated 6.11 EmoteEventHandler = 0x00B0, // updated 5.58 hotfix WithinRangeEventHandler = 0x02B6, // updated 5.58 hotfix OutOfRangeEventHandler = 0x03C5, // updated 5.58 hotfix - EnterTeriEventHandler = 0x03AB, // updated 6.08 + EnterTeriEventHandler = 0x02E0, // updated 6.11 ShopEventHandler = 0x0384, // updated 5.58 hotfix - ReturnEventHandler = 0x008D, // updated 6.08 - TradeReturnEventHandler = 0x0116, // updated 6.08 + ReturnEventHandler = 0x028B, // updated 6.11 + TradeReturnEventHandler = 0x0398, // updated 6.11 TradeReturnEventHandler2 = 0x0388, // updated 6.08 EventYield2Handler = 0x021D, // updated 5.58 hotfix diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 208f6783..76bb558f 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -456,23 +456,24 @@ namespace Sapphire::Network::Packets::Server struct FFXIVIpcEffectResult : FFXIVIpcBasePacket< EffectResult > { uint32_t globalSequence; + uint32_t unknown1; uint32_t actor_id; uint32_t current_hp; uint32_t max_hp; uint16_t current_mp; - uint8_t unknown1; + uint8_t unknown2; uint8_t classId; uint8_t shieldPercentage; uint8_t entryCount; - uint16_t unknown2; + uint16_t unknown3; struct StatusEntry { uint8_t index; // which position do i display this - uint8_t unknown3; + uint8_t unknown4; uint16_t id; uint16_t param; - uint16_t unknown4; // Sort this out (old right half of power/param property) + uint16_t unknown5; // Sort this out (old right half of power/param property) float duration; uint32_t sourceActorId; } statusEntries[4]; @@ -572,7 +573,7 @@ namespace Sapphire::Network::Packets::Server uint16_t padding_22[3]; - uint8_t effects[8*8]; + uint8_t effects[65]; uint16_t padding_6A[3]; @@ -970,6 +971,7 @@ namespace Sapphire::Network::Packets::Server uint32_t unknown4C; uint16_t unknown50; uint16_t unknownPvp52[4]; + uint16_t pvpSeriesExp; uint16_t playerCommendations; uint16_t unknown5C; uint16_t unknown5E; @@ -1064,8 +1066,7 @@ namespace Sapphire::Network::Packets::Server uint8_t unknownPvp6BD[3]; uint8_t beastRank[15]; uint8_t unknownPvp6CE[12]; - uint8_t pose; - uint8_t pose2[6]; + uint8_t pose[7]; uint8_t unknown6DF[3]; uint8_t challengeLogComplete[13]; uint8_t secretRecipeBookMask[10]; diff --git a/src/world/Network/PacketWrappers/PlayerSetupPacket.h b/src/world/Network/PacketWrappers/PlayerSetupPacket.h index cbe1fdc4..b42f7769 100644 --- a/src/world/Network/PacketWrappers/PlayerSetupPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSetupPacket.h @@ -45,7 +45,7 @@ namespace Sapphire::Network::Packets::Server //m_data.gcRank = GCRank::None; m_data.homepoint = player.getHomepoint(); - m_data.pose = player.getPose(); + 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() );