From b93dbbbaca6b858aadb18b3fa82c4723824cde5d Mon Sep 17 00:00:00 2001 From: collett Date: Wed, 1 Jan 2020 22:05:49 +0900 Subject: [PATCH] Update 5.18 opcodes and packets. --- src/common/Network/PacketDef/Ipcs.h | 202 +++++++++--------- .../Network/PacketDef/Zone/ServerZoneDef.h | 32 ++- src/world/Actor/Chara.cpp | 6 +- 3 files changed, 128 insertions(+), 112 deletions(-) diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index c49b0a5a..57de2993 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -45,27 +45,27 @@ namespace Sapphire::Network::Packets { // static opcode ( the ones that rarely, if ever, change ) - Ping = 0x0065, - Init = 0x0066, + Ping = 0x0200, // updated 5.18 + Init = 0x018E, - ActorFreeSpawn = 0x0249, // updated 5.11 - InitZone = 0x01D8, // updated 5.11 + ActorFreeSpawn = 0x009B, // updated 5.18 + InitZone = 0x007C, // updated 5.18 - EffectResult = 0x00B9, // updated 5.11 - ActorControl = 0x008D, // updated 5.11 - ActorControlSelf = 0x00EB, // updated 5.11 - ActorControlTarget = 0x01F5, // updated 5.11 + EffectResult = 0x0267, // updated 5.18 + ActorControl = 0x03BE, // updated 5.18 + ActorControlSelf = 0x00E3, // updated 5.18 + ActorControlTarget = 0x24d, // updated 5.18 /*! * @brief Used when resting */ - UpdateHpMpTp = 0x012D, // updated 5.11 + UpdateHpMpTp = 0x0125, // updated 5.18 /////////////////////////////////////////////////// ChatBanned = 0x006B, - Playtime = 0x01DB, // updated 5.1 - Logout = 0x011D, // updated 5.1 + Playtime = 0x00E7, // updated 5.18 + Logout = 0x142, // updated 5.18 CFNotify = 0x0078, CFMemberStatus = 0x0079, CFDutyInfo = 0x007A, @@ -79,29 +79,29 @@ namespace Sapphire::Network::Packets LogMessage = 0x00D0, - Chat = 0x02DC, // updated 5.1 + Chat = 0x02A3, // updated 5.18 WorldVisitList = 0x00FE, // added 4.5 - SocialList = 0x007A, // updated 5.1 + SocialList = 0x01F1, // updated 5.18 - ExamineSearchInfo = 0x03D7, // updated 5.1 - UpdateSearchInfo = 0x0358, // updated 5.1 - InitSearchInfo = 0x03A1, // updated 5.1 + ExamineSearchInfo = 0x012B, // updated 5.18 + UpdateSearchInfo = 0x01E5, // updated 5.18 + InitSearchInfo = 0x01D0, // updated 5.18 ExamineSearchComment = 0x0102, // updated 4.1 ServerNoticeShort = 0x0115, // updated 5.0 - ServerNotice = 0x0116, // updated 5.0 + ServerNotice = 0x0088, // updated 5.18 SetOnlineStatus = 0x015E, // updated 5.1 CountdownInitiate = 0x0309, // updated 5.11 - CountdownCancel = 0x013C, // updated 5.11 + CountdownCancel = 0x00D9, // updated 5.18 PlayerAddedToBlacklist = 0x033F, // updated 5.1 PlayerRemovedFromBlacklist = 0x0385, // updated 5.1 - BlackList = 0x031F, // updated 5.1 + BlackList = 0x0253, // updated 5.18 - LinkshellList = 0x012A, // updated 5.0 + LinkshellList = 0x00AC, // updated 5.18 MailDeleteRequest = 0x012B, // updated 5.0 @@ -110,12 +110,12 @@ namespace Sapphire::Network::Packets ReqMoogleMailLetter = 0x0139, // updated 5.0 MailLetterNotification = 0x013A, // updated 5.0 - MarketTaxRates = 0x039F, // updated 5.11 + MarketTaxRates = 0x025E, // updated 5.18 - MarketBoardItemListingCount = 0x00F2, // updated 5.11 - MarketBoardItemListing = 0x01E2, // updated 5.11 - MarketBoardItemListingHistory = 0x0123, // updated 5.11 - MarketBoardSearchResult = 0x00B7, // updated 5.11 + MarketBoardItemListingCount = 0x0328, // updated 5.18 + MarketBoardItemListing = 0x015F, // updated 5.18 + MarketBoardItemListingHistory = 0x0113, // updated 5.18 + MarketBoardSearchResult = 0x01EA, // updated 5.18 CharaFreeCompanyTag = 0x013B, // updated 4.5 FreeCompanyBoardMsg = 0x013C, // updated 4.5 @@ -124,83 +124,86 @@ namespace Sapphire::Network::Packets FreeCompanyUpdateShortMessage = 0x0157, // added 5.0 - StatusEffectList = 0x0399, // updated 5.11 - EurekaStatusEffectList = 0x01C2, // updated 5.11 - BossStatusEffectList = 0x00E6, // added 5.1 - Effect = 0x0165, // updated 5.11 - AoeEffect8 = 0x00E9, // updated 5.11 - AoeEffect16 = 0x007F, // updated 5.11 - AoeEffect24 = 0x0299, // updated 5.11 - AoeEffect32 = 0x01DF, // updated 5.11 - PersistantEffect = 0x0165, // updated 5.0 + StatusEffectList = 0x0183, // updated 5.18 + EurekaStatusEffectList = 0x0167, // updated 5.18 + BossStatusEffectList = 0x0312, // added 5.1 + Effect = 0x026B, // updated 5.18 + AoeEffect8 = 0x033E, // updated 5.18 + AoeEffect16 = 0x0305, // updated 5.18 + AoeEffect24 = 0x023F, // updated 5.18 + AoeEffect32 = 0x0352, // updated 5.18 + PersistantEffect = 0x019C, // updated 5.18 GCAffiliation = 0x016F, // updated 5.0 - PlayerSpawn = 0x0243, // updated 5.11 - NpcSpawn = 0x021B, // updated 5.11 - NpcSpawn2 = 0x0137, // ( Bigger statuseffectlist? ) updated 5.11 - ActorMove = 0x00DD, // updated 5.11 + PlayerSpawn = 0x0262, // updated 5.18 + NpcSpawn = 0x0186, // updated 5.18 + NpcSpawn2 = 0x010C, // ( Bigger statuseffectlist? ) updated 5.18 + ActorMove = 0x021B, // updated 5.18 - ActorSetPos = 0x0092, // updated 5.11 + ActorSetPos = 0x0068, // updated 5.18 - ActorCast = 0x028E, // updated 5.11 - SomeCustomiseChangePacketProbably = 0x0187, // added 5.0 + ActorCast = 0x03B1, // updated 5.18 + SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18 - PartyList = 0x022B, // updated 5.11 - HateRank = 0x00B8, // updated 5.11 - HateList = 0x03C5, // updated 5.11 - ObjectSpawn = 0x02A0, // updated 5.11 - ObjectDespawn = 0x036B, // updated 5.11 - UpdateClassInfo = 0x00FC, // updated 5.11 + PartyList = 0x0287, // updated 5.18 + HateRank = 0x0226, // updated 5.18 + HateList = 0x0361, // updated 5.18 + ObjectSpawn = 0x027F, // updated 5.18 + ObjectDespawn = 0x034B, // updated 5.18 + UpdateClassInfo = 0x0362, // updated 5.18 SilentSetClassJob = 0x018E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything - PlayerSetup = 0x01A1, // updated 5.11 - PlayerStats = 0x0324, // updated 5.11 + PlayerSetup = 0x0295, // updated 5.18 + PlayerStats = 0x017A, // updated 5.18 ActorOwner = 0x0322, // updated 5.11 - PlayerStateFlags = 0x019F, // updated 5.1 - PlayerClassInfo = 0x02D4, // updated 5.1 + PlayerStateFlags = 0x02C6, // updated 5.18 + PlayerClassInfo = 0x01B0, // updated 5.18 ModelEquip = 0x0170, // updated 5.11 - Examine = 0x00EA, // updated 5.1 - CharaNameReq = 0x006C, // updated 5.11 + Examine = 0x0366, // updated 5.18 + CharaNameReq = 0x0116, // updated 5.18 // nb: see #565 on github UpdateRetainerItemSalePrice = 0x019F, // updated 5.0 SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore - ItemInfo = 0x01D4, // updated 5.11 - ContainerInfo = 0x0145, // updated 5.1 + ItemInfo = 0x00F2, // updated 5.18 + ContainerInfo = 0x01F2, // updated 5.18 InventoryTransactionFinish = 0x01AB, // updated 5.1 InventoryTransaction = 0x023E, // updated 5.1 - CurrencyCrystalInfo = 0x02CA, // updated 5.11 + CurrencyCrystalInfo = 0x02BF, // updated 5.18 InventoryActionAck = 0x0084, // updated 5.1 - UpdateInventorySlot = 0x0112, // updated 5.11 + UpdateInventorySlot = 0x0370, // updated 5.18 HuntingLogEntry = 0x01B3, // updated 5.0 - EventPlay = 0x0386, // updated 5.11 + EventPlay = 0x0279, // updated 5.18 DirectorPlayScene = 0x01B9, // updated 5.0 - EventOpenGilShop = 0x01BC, // updated 5.0 + EventOpenGilShop = 0x01B1, // updated 5.18 - EventStart = 0x00C9, // updated 5.11 - EventFinish = 0x0387, // updated 5.11 + EventStart = 0x0230, // updated 5.18 + EventFinish = 0x01E4, // updated 5.18 + EventUnk0 = 0x02F7, // updated 5.18 + EventUnk1 = 0x0100, // updated 5.18 + UseMooch = 0x0233, // updated 5.18 EventLinkshell = 0x1169, - QuestActiveList = 0x01D2, // updated 5.0 - QuestUpdate = 0x01D3, // updated 5.0 - QuestCompleteList = 0x01D4, // updated 5.0 + QuestActiveList = 0x031E, // updated 5.18 + QuestUpdate = 0x0066, // updated 5.18 + QuestCompleteList = 0x025D, // updated 5.18 - QuestFinish = 0x01D5, // updated 5.0 + QuestFinish = 0x013A, // updated 5.18 MSQTrackerComplete = 0x01D6, // updated 5.0 MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474 - QuestMessage = 0x01DE, // updated 5.0 + QuestMessage = 0x00BF, // updated 5.18 - QuestTracker = 0x01E3, // updated 5.0 + QuestTracker = 0x0289, // updated 5.18 - Mount = 0x01F3, // updated 5.0 + Mount = 0x02F0, // updated 5.18 DirectorVars = 0x01F5, // updated 5.0 DirectorPopUp = 0x0200, // updated 5.0 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown @@ -209,11 +212,11 @@ namespace Sapphire::Network::Packets WeatherChange = 0x02FB, // updated 5.11 PlayerTitleList = 0x037D, // updated 5.1 - Discovery = 0x0094, // updated 5.1 + Discovery = 0x02E7, // updated 5.18 EorzeaTimeOffset = 0x03B8, // updated 5.1 - EquipDisplayFlags = 0x011D, // updated 5.11 + EquipDisplayFlags = 0x00FF, // updated 5.18 /// Housing ////////////////////////////////////// @@ -226,7 +229,7 @@ namespace Sapphire::Network::Packets LandRename = 0x023A, // updated 5.0 HousingEstateGreeting = 0x023B, // updated 5.0 HousingUpdateLandFlagsSlot = 0x023C, // updated 5.0 - HousingLandFlags = 0x023D, // updated 5.0 + HousingLandFlags = 0x01F3, // updated 5.18 HousingShowEstateGuestAccess = 0x023E, // updated 5.0 HousingObjectInitialize = 0x0240, // updated 5.0 @@ -247,11 +250,11 @@ namespace Sapphire::Network::Packets PerformNote = 0x0286, // updated 4.3 PrepareZoning = 0x02A4, // updated 5.0 - ActorGauge = 0x0292, // updated 4.3 + ActorGauge = 0x016D, // updated 5.18 // daily quest info -> without them sent, login will take longer... - DailyQuests = 0x02B6, // updated 5.1 - DailyQuestRepeatFlags = 0x0124, // updated 5.1 + DailyQuests = 0x02D8, // updated 5.18 + DailyQuestRepeatFlags = 0x03A3, // updated 5.18 /// Doman Mahjong ////////////////////////////////////// MahjongOpenGui = 0x02A4, // only available in mahjong instance @@ -272,10 +275,10 @@ namespace Sapphire::Network::Packets enum ClientZoneIpcType : uint16_t { - PingHandler = 0x0065, // unchanged 5.0 - InitHandler = 0x03D2, // updated 5.1 + PingHandler = 0x0200, // updated 5.18 + InitHandler = 0x018E, // updated 5.18 - FinishLoadingHandler = 0x01DC, // updated 5.1 + FinishLoadingHandler = 0x01F5, // updated 5.18 CFCommenceHandler = 0x006F, @@ -283,7 +286,7 @@ namespace Sapphire::Network::Packets CFRegisterDuty = 0x0071, CFRegisterRoulette = 0x0072, PlayTimeHandler = 0x0276, // updated 5.1 - LogoutHandler = 0x02D6, // updated 5.1 + LogoutHandler = 0x015D, // updated 5.18 CancelLogout = 0x008F, // updated 5.1 CFDutyInfoHandler = 0x0078, // updated 4.2 @@ -291,18 +294,18 @@ namespace Sapphire::Network::Packets SocialReqSendHandler = 0x00AE, // updated 4.1 CreateCrossWorldLS = 0x00AF, // updated 4.3 - ChatHandler = 0x02FF, // updated 5.1 + ChatHandler = 0x0130, // updated 5.18 - SocialListHandler = 0x01F6, // updated 5.1 - SetSearchInfoHandler = 0x00E4, // updated 5.0 - ReqSearchInfoHandler = 0x024D, // updated 5.1 + SocialListHandler = 0x0090, // updated 5.18 + SetSearchInfoHandler = 0x0320, // updated 5.18 + ReqSearchInfoHandler = 0x0374, // updated 5.18 ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0 ReqRemovePlayerFromBlacklist = 0x00F1, // updated 5.0 - BlackListHandler = 0x0167, // updated 5.1 + BlackListHandler = 0x01EB, // updated 5.18 PlayerSearchHandler = 0x00F4, // updated 5.0 - LinkshellListHandler = 0x00D3, // updated 5.1 + LinkshellListHandler = 0x014A, // updated 5.18 MarketBoardRequestItemListingInfo = 0x0102, // updated 4.5 MarketBoardRequestItemListings = 0x0103, // updated 4.5 @@ -321,40 +324,39 @@ namespace Sapphire::Network::Packets ReqCountdownInitiate = 0x0135, // updated 5.0 ReqCountdownCancel = 0x0136, // updated 5.0 - ZoneLineHandler = 0x02E0, // updated 5.1 - ClientTrigger = 0x01F2, // updated 5.11 - DiscoveryHandler = 0x0177, // updated 5.1 + ZoneLineHandler = 0x0174, // updated 5.18 + ClientTrigger = 0x03C0, // updated 5.18 + DiscoveryHandler = 0x017B, // updated 5.18 PlaceFieldMarker = 0x013C, // updated 5.0 - - SkillHandler = 0x013D, // updated 5.0 + SkillHandler = 0x01BE, // updated 5.18 GMCommand1 = 0x00A4, // updated 5.1 GMCommand2 = 0x013F, // updated 5.0 AoESkillHandler = 0x140, // updated 5.0 - UpdatePositionHandler = 0x01BF, // updated 5.11 + UpdatePositionHandler = 0x0318, // updated 5.18 - InventoryModifyHandler = 0x029B, // updated 5.11 + InventoryModifyHandler = 0x03C5, // updated 5.18 InventoryEquipRecommendedItems = 0x0149, // updated 5.0 ReqPlaceHousingItem = 0x014B, // updated 5.0 BuildPresetHandler = 0x014F, // updated 5.0 - TalkEventHandler = 0x0151, // updated 5.0 - EmoteEventHandler = 0x0152, // updated 5.0 - WithinRangeEventHandler = 0x0165, // updated 5.11 - OutOfRangeEventHandler = 0x0154, // updated 5.0 - EnterTeriEventHandler = 0x0155, // updated 5.0 + TalkEventHandler = 0x02FD, // updated 5.18 + EmoteEventHandler = 0x0183, // updated 5.18 + WithinRangeEventHandler = 0x0167, // updated 5.18 + OutOfRangeEventHandler = 0x02B5, // updated 5.18 + EnterTeriEventHandler = 0x0267, // updated 5.18 ShopEventHandler = 0x0156, // updated 5.0 - ReturnEventHandler = 0x015A, // updated 5.0? - TradeReturnEventHandler = 0x015B, // updated 5.0? + ReturnEventHandler = 0x026B, // updated 5.18 + TradeReturnEventHandler = 0x02DD, // updated 5.18 LinkshellEventHandler = 0x016B, // updated 4.5 LinkshellEventHandler1 = 0x016C, // updated 4.5 - ReqEquipDisplayFlagsChange = 0x0175, // updated 5.0 + ReqEquipDisplayFlagsChange = 0x01FE, // updated 5.18 LandRenameHandler = 0xF177, // updated 5.0 HousingUpdateHouseGreeting = 0x0178, // updated 5.0 @@ -366,8 +368,6 @@ namespace Sapphire::Network::Packets PerformNoteHandler = 0x029B, // updated 4.3 - - }; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 9dc959b9..33915278 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -244,6 +244,7 @@ namespace Sapphire::Network::Packets::Server uint8_t rank; uint16_t padding; uint8_t lsName[20]; + uint8_t unk[16]; } entry[8]; }; @@ -440,15 +441,25 @@ namespace Sapphire::Network::Packets::Server { uint32_t unknown; uint32_t actor_id; - uint8_t unknown1; - uint8_t unknown2; - uint16_t padding1; + //uint8_t unknown1; + //uint8_t unknown2; + //uint16_t padding1; + //uint32_t current_hp; + //uint16_t current_mp; + //uint16_t current_tp; + //uint32_t max_hp; + //uint16_t max_mp; + //uint16_t max_something; uint32_t current_hp; - uint16_t current_mp; - uint16_t current_tp; uint32_t max_hp; + uint16_t current_mp; + uint16_t unknown1; uint16_t max_mp; - uint16_t max_something; + uint8_t unknown2; + uint8_t classId; + uint8_t unknown4; + uint8_t unkFlag; + uint16_t unknown6; struct StatusEntry { @@ -461,7 +472,7 @@ namespace Sapphire::Network::Packets::Server uint32_t sourceActorId; } statusEntries[4]; - uint32_t unknown4; + uint32_t unknown7; }; /** @@ -930,8 +941,10 @@ namespace Sapphire::Network::Packets::Server uint32_t unknown10; uint32_t unknown11; uint32_t unknown12[4]; + uint32_t unknown13[3]; Common::FFXIVARR_POSITION3 pos; - uint32_t unknown13; + uint32_t unknown14[3]; + uint32_t unknown15; }; @@ -1028,6 +1041,7 @@ namespace Sapphire::Network::Packets::Server unsigned char companionHealRank; unsigned char u19[2]; unsigned char mountGuideMask[19]; + uint8_t unk1[9]; char name[32]; unsigned char unknownOword[16]; unsigned char unknownOw; @@ -1496,7 +1510,7 @@ namespace Sapphire::Network::Packets::Server struct FFXIVIpcQuestCompleteList : FFXIVIpcBasePacket< QuestCompleteList > { uint8_t questCompleteMask[480]; - uint8_t unknownCompleteMask[32]; + uint8_t unknownCompleteMask[80]; }; /** diff --git a/src/world/Actor/Chara.cpp b/src/world/Actor/Chara.cpp index 70656675..7cbc3dde 100644 --- a/src/world/Actor/Chara.cpp +++ b/src/world/Actor/Chara.cpp @@ -523,11 +523,13 @@ void Sapphire::Entity::Chara::addStatusEffect( StatusEffect::StatusEffectPtr pEf statusEffectAdd->data().actor_id = pEffect->getTargetActorId(); statusEffectAdd->data().current_hp = getHp(); statusEffectAdd->data().current_mp = getMp(); - statusEffectAdd->data().current_tp = getTp(); + //statusEffectAdd->data().current_tp = getTp(); statusEffectAdd->data().max_hp = getMaxHp(); statusEffectAdd->data().max_mp = getMaxMp(); - statusEffectAdd->data().max_something = 1; + //statusEffectAdd->data().max_something = 1; //statusEffectAdd->data().unknown2 = 28; + statusEffectAdd->data().classId = static_cast< uint8_t >(getClass()); + statusEffectAdd->data().unkFlag = 1; auto& status = statusEffectAdd->data().statusEntries[0];