mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-20 05:28:22 +00:00
Change from obr to tob dir, added a status doc
This commit is contained in:
+636
@@ -0,0 +1,636 @@
|
||||
### Status
|
||||
Below is a status list for the 450 opcodes we currently use on the server for the TOB client. Currently uses 3 status levels (let me know if we should do more):
|
||||
- 🔴 Not-Set (Opcode not set in the patch file)
|
||||
- 🟡 Unverified (Opcode set but structure hasn't been verified as completely working)
|
||||
- 🟢 Verified (Opcode set and structure is working)
|
||||
|
||||
### World/Zone Opcode Implementation Status
|
||||
|
||||
| Opcode | Status | Notes | Working On |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| `OP_AAAction` | 🔴 Not-Set | | |
|
||||
| `OP_AAExpUpdate` | 🟡 Unverified | | |
|
||||
| `OP_AcceptNewTask` | 🔴 Not-Set | | |
|
||||
| `OP_AckPacket` | 🟡 Unverified | | |
|
||||
| `OP_Action` | 🔴 Not-Set | | |
|
||||
| `OP_Action2` | 🔴 Not-Set | | |
|
||||
| `OP_AddNimbusEffect` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureData` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureDetails` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureFinish` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureInfo` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureInfoRequest` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureLeaderboardReply` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureLeaderboardRequest` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureMerchantPurchase` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureMerchantRequest` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureMerchantResponse` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureMerchantSell` | 🔴 Not-Set | | |
|
||||
| `OP_AdventurePointsUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureRequest` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureStatsReply` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureStatsRequest` | 🔴 Not-Set | | |
|
||||
| `OP_AdventureUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_AggroMeterLockTarget` | 🔴 Not-Set | | |
|
||||
| `OP_AggroMeterTargetInfo` | 🔴 Not-Set | | |
|
||||
| `OP_AggroMeterUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrency` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrencyMerchantReply` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrencyMerchantRequest` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrencyPurchase` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrencyReclaim` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrencySell` | 🔴 Not-Set | | |
|
||||
| `OP_AltCurrencySellSelection` | 🔴 Not-Set | | |
|
||||
| `OP_Animation` | 🔴 Not-Set | | |
|
||||
| `OP_AnnoyingZoneUnknown` | 🔴 Not-Set | | |
|
||||
| `OP_ApplyPoison` | 🔴 Not-Set | | |
|
||||
| `OP_ApproveName` | 🟡 Unverified | | |
|
||||
| `OP_ApproveWorld` | 🔴 Not-Set | | |
|
||||
| `OP_ApproveZone` | 🔴 Not-Set | | |
|
||||
| `OP_Assist` | 🔴 Not-Set | | |
|
||||
| `OP_AssistGroup` | 🔴 Not-Set | | |
|
||||
| `OP_AugmentInfo` | 🔴 Not-Set | | |
|
||||
| `OP_AugmentItem` | 🔴 Not-Set | | |
|
||||
| `OP_AutoAttack` | 🔴 Not-Set | | |
|
||||
| `OP_AutoAttack2` | 🔴 Not-Set | | |
|
||||
| `OP_AutoFire` | 🔴 Not-Set | | |
|
||||
| `OP_Bandolier` | 🔴 Not-Set | | |
|
||||
| `OP_BankerChange` | 🔴 Not-Set | | |
|
||||
| `OP_Barter` | 🔴 Not-Set | | |
|
||||
| `OP_Bazaar` | 🔴 Not-Set | | |
|
||||
| `OP_BazaarInspect` | 🔴 Not-Set | | |
|
||||
| `OP_BazaarSearch` | 🔴 Not-Set | | |
|
||||
| `OP_BecomeCorpse` | 🔴 Not-Set | | |
|
||||
| `OP_BecomeTrader` | 🔴 Not-Set | | |
|
||||
| `OP_Begging` | 🔴 Not-Set | | |
|
||||
| `OP_BeginCast` | 🔴 Not-Set | | |
|
||||
| `OP_Bind_Wound` | 🔴 Not-Set | | |
|
||||
| `OP_BlockedBuffs` | 🟡 Unverified | | |
|
||||
| `OP_BoardBoat` | 🔴 Not-Set | | |
|
||||
| `OP_BookButton` | 🔴 Not-Set | | |
|
||||
| `OP_Buff` | 🔴 Not-Set | | |
|
||||
| `OP_BuffCreate` | 🔴 Not-Set | | |
|
||||
| `OP_BuffRemoveRequest` | 🔴 Not-Set | | |
|
||||
| `OP_Bug` | 🔴 Not-Set | | |
|
||||
| `OP_BuyerItems` | 🔴 Not-Set | | |
|
||||
| `OP_CameraEffect` | 🔴 Not-Set | | |
|
||||
| `OP_Camp` | 🔴 Not-Set | | |
|
||||
| `OP_CancelSneakHide` | 🔴 Not-Set | | |
|
||||
| `OP_CancelTask` | 🔴 Not-Set | | |
|
||||
| `OP_CancelTrade` | 🔴 Not-Set | | |
|
||||
| `OP_CashReward` | 🔴 Not-Set | | |
|
||||
| `OP_CastSpell` | 🔴 Not-Set | | |
|
||||
| `OP_ChangeSize` | 🟡 Unverified | | |
|
||||
| `OP_ChannelMessage` | 🔴 Not-Set | | |
|
||||
| `OP_ChangePetName` | 🔴 Not-Set | | |
|
||||
| `OP_CharacterCreate` | 🟡 Unverified | Wasn't sure on the status of this | |
|
||||
| `OP_CharacterCreateRequest` | 🟡 Unverified | Wasn't sure on status of this | |
|
||||
| `OP_CharInventory` | 🟡 Unverified | | |
|
||||
| `OP_Charm` | 🔴 Not-Set | | |
|
||||
| `OP_ChatMessage` | 🔴 Not-Set | | |
|
||||
| `OP_ClearAA` | 🟡 Unverified | | |
|
||||
| `OP_ClearBlockedBuffs` | 🟡 Unverified | | |
|
||||
| `OP_ClearLeadershipAbilities` | 🔴 Not-Set | | |
|
||||
| `OP_ClearNPCMarks` | 🔴 Not-Set | | |
|
||||
| `OP_ClearObject` | 🔴 Not-Set | | |
|
||||
| `OP_ClearSurname` | 🔴 Not-Set | | |
|
||||
| `OP_ClickDoor` | 🔴 Not-Set | | |
|
||||
| `OP_ClickObject` | 🔴 Not-Set | | |
|
||||
| `OP_ClickObjectAction` | 🔴 Not-Set | | |
|
||||
| `OP_ClientError` | 🔴 Not-Set | | |
|
||||
| `OP_ClientReady` | 🟡 Unverified | | |
|
||||
| `OP_ClientTimeStamp` | 🔴 Not-Set | | |
|
||||
| `OP_ClientUpdate` | 🟡 Unverified | | |
|
||||
| `OP_CloseContainer` | 🔴 Not-Set | | |
|
||||
| `OP_CloseTributeMaster` | 🔴 Not-Set | | |
|
||||
| `OP_ColoredText` | 🔴 Not-Set | | |
|
||||
| `OP_CombatAbility` | 🔴 Not-Set | | |
|
||||
| `OP_Command` | 🔴 Not-Set | | |
|
||||
| `OP_CompletedTasks` | 🔴 Not-Set | | |
|
||||
| `OP_ConfirmDelete` | 🔴 Not-Set | | |
|
||||
| `OP_Consent` | 🔴 Not-Set | | |
|
||||
| `OP_ConsentDeny` | 🔴 Not-Set | | |
|
||||
| `OP_ConsentResponse` | 🔴 Not-Set | | |
|
||||
| `OP_Consider` | 🔴 Not-Set | | |
|
||||
| `OP_ConsiderCorpse` | 🔴 Not-Set | | |
|
||||
| `OP_Consume` | 🔴 Not-Set | | |
|
||||
| `OP_ControlBoat` | 🔴 Not-Set | | |
|
||||
| `OP_CorpseDrag` | 🔴 Not-Set | | |
|
||||
| `OP_CorpseDrop` | 🔴 Not-Set | | |
|
||||
| `OP_CrashDump` | 🔴 Not-Set | | |
|
||||
| `OP_CrystalCountUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_CrystalCreate` | 🔴 Not-Set | | |
|
||||
| `OP_CrystalReclaim` | 🔴 Not-Set | | |
|
||||
| `OP_CustomTitles` | 🔴 Not-Set | | |
|
||||
| `OP_Damage` | 🔴 Not-Set | | |
|
||||
| `OP_Death` | 🔴 Not-Set | | |
|
||||
| `OP_DelegateAbility` | 🔴 Not-Set | | |
|
||||
| `OP_DeleteCharacter` | 🟡 Unverified | | |
|
||||
| `OP_DeleteCharge` | 🔴 Not-Set | | |
|
||||
| `OP_DeleteItem` | 🔴 Not-Set | | |
|
||||
| `OP_DeletePetition` | 🔴 Not-Set | | |
|
||||
| `OP_DeleteSpawn` | 🔴 Not-Set | | |
|
||||
| `OP_DeleteSpell` | 🔴 Not-Set | | |
|
||||
| `OP_DenyResponse` | 🔴 Not-Set | | |
|
||||
| `OP_Disarm` | 🔴 Not-Set | | |
|
||||
| `OP_DisarmTraps` | 🔴 Not-Set | | |
|
||||
| `OP_DisciplineTimer` | 🔴 Not-Set | | |
|
||||
| `OP_DisciplineUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_DiscordMerchantInventory` | 🔴 Not-Set | | |
|
||||
| `OP_DoGroupLeadershipAbility` | 🔴 Not-Set | | |
|
||||
| `OP_DuelDecline` | 🔴 Not-Set | | |
|
||||
| `OP_DuelAccept` | 🔴 Not-Set | | |
|
||||
| `OP_DumpName` | 🔴 Not-Set | | |
|
||||
| `OP_Dye` | 🔴 Not-Set | | |
|
||||
| `OP_DynamicWall` | 🔴 Not-Set | | |
|
||||
| `OP_DzAddPlayer` | 🔴 Not-Set | | |
|
||||
| `OP_DzChooseZone` | 🔴 Not-Set | | |
|
||||
| `OP_DzChooseZoneReply` | 🔴 Not-Set | | |
|
||||
| `OP_DzCompass` | 🔴 Not-Set | | |
|
||||
| `OP_DzExpeditionEndsWarning` | 🔴 Not-Set | | |
|
||||
| `OP_DzExpeditionInfo` | 🔴 Not-Set | | |
|
||||
| `OP_DzExpeditionInvite` | 🔴 Not-Set | | |
|
||||
| `OP_DzExpeditionInviteResponse` | 🔴 Not-Set | | |
|
||||
| `OP_DzExpeditionLockoutTimers` | 🔴 Not-Set | | |
|
||||
| `OP_DzListTimers` | 🔴 Not-Set | | |
|
||||
| `OP_DzMakeLeader` | 🔴 Not-Set | | |
|
||||
| `OP_DzMemberList` | 🔴 Not-Set | | |
|
||||
| `OP_DzMemberListName` | 🔴 Not-Set | | |
|
||||
| `OP_DzMemberListStatus` | 🔴 Not-Set | | |
|
||||
| `OP_DzPlayerList` | 🔴 Not-Set | | |
|
||||
| `OP_DzQuit` | 🔴 Not-Set | | |
|
||||
| `OP_DzRemovePlayer` | 🔴 Not-Set | | |
|
||||
| `OP_DzSetLeaderName` | 🔴 Not-Set | | |
|
||||
| `OP_DzSwapPlayer` | 🔴 Not-Set | | |
|
||||
| `OP_Emote` | 🔴 Not-Set | | |
|
||||
| `OP_EndLootRequest` | 🔴 Not-Set | | |
|
||||
| `OP_EnduranceUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_EnterChat` | 🔴 Not-Set | | |
|
||||
| `OP_EnterWorld` | 🟢 Verified | Seems to largely work | |
|
||||
| `OP_EnvDamage` | 🔴 Not-Set | | |
|
||||
| `OP_EvolveItem` | 🔴 Not-Set | | |
|
||||
| `OP_ExpansionInfo` | 🟢 Verified | Updated from u32 to u64 and works now | |
|
||||
| `OP_ExpUpdate` | 🟡 Unverified | | |
|
||||
| `OP_FaceChange` | 🔴 Not-Set | | |
|
||||
| `OP_Feedback` | 🔴 Not-Set | | |
|
||||
| `OP_FeignDeath` | 🔴 Not-Set | | |
|
||||
| `OP_FellowshipUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_FindPersonReply` | 🔴 Not-Set | | |
|
||||
| `OP_FindPersonRequest` | 🔴 Not-Set | | |
|
||||
| `OP_FinishTrade` | 🔴 Not-Set | | |
|
||||
| `OP_FinishWindow` | 🔴 Not-Set | | |
|
||||
| `OP_FinishWindow2` | 🔴 Not-Set | | |
|
||||
| `OP_Fishing` | 🔴 Not-Set | | |
|
||||
| `OP_Fling` | 🔴 Not-Set | | |
|
||||
| `OP_FloatListThing` | 🟡 Unverified | | |
|
||||
| `OP_Forage` | 🔴 Not-Set | | |
|
||||
| `OP_ForceFindPerson` | 🔴 Not-Set | | |
|
||||
| `OP_FormattedMessage` | 🔴 Not-Set | | |
|
||||
| `OP_FriendsWho` | 🔴 Not-Set | | |
|
||||
| `OP_GetGuildMOTD` | 🔴 Not-Set | | |
|
||||
| `OP_GetGuildMOTDReply` | 🔴 Not-Set | | |
|
||||
| `OP_GetGuildsList` | 🔴 Not-Set | | |
|
||||
| `OP_GiveMoney` | 🔴 Not-Set | | |
|
||||
| `OP_GMApproval` | 🔴 Not-Set | | |
|
||||
| `OP_GMBecomeNPC` | 🔴 Not-Set | | |
|
||||
| `OP_GMDelCorpse` | 🔴 Not-Set | | |
|
||||
| `OP_GMEmoteZone` | 🔴 Not-Set | | |
|
||||
| `OP_GMEndTraining` | 🔴 Not-Set | | |
|
||||
| `OP_GMEndTrainingResponse` | 🔴 Not-Set | | |
|
||||
| `OP_GMFind` | 🔴 Not-Set | | |
|
||||
| `OP_GMGoto` | 🔴 Not-Set | | |
|
||||
| `OP_GMHideMe` | 🔴 Not-Set | | |
|
||||
| `OP_GMKick` | 🔴 Not-Set | | |
|
||||
| `OP_GMKill` | 🔴 Not-Set | | |
|
||||
| `OP_GMLastName` | 🔴 Not-Set | | |
|
||||
| `OP_GMNameChange` | 🔴 Not-Set | | |
|
||||
| `OP_GMSearchCorpse` | 🔴 Not-Set | | |
|
||||
| `OP_GMServers` | 🔴 Not-Set | | |
|
||||
| `OP_GMSummon` | 🔴 Not-Set | | |
|
||||
| `OP_GMToggle` | 🔴 Not-Set | | |
|
||||
| `OP_GMTraining` | 🔴 Not-Set | | |
|
||||
| `OP_GMTrainSkill` | 🔴 Not-Set | | |
|
||||
| `OP_GMTrainSkillConfirm` | 🔴 Not-Set | | |
|
||||
| `OP_GMZoneRequest` | 🔴 Not-Set | | |
|
||||
| `OP_GMZoneRequest2` | 🔴 Not-Set | | |
|
||||
| `OP_GroundSpawn` | 🟡 Unverified | | |
|
||||
| `OP_GroupAcknowledge` | 🔴 Not-Set | | |
|
||||
| `OP_GroupCancelInvite` | 🔴 Not-Set | | |
|
||||
| `OP_GroupDelete` | 🔴 Not-Set | | |
|
||||
| `OP_GroupDisband` | 🔴 Not-Set | | |
|
||||
| `OP_GroupDisbandOther` | 🔴 Not-Set | | |
|
||||
| `OP_GroupDisbandYou` | 🔴 Not-Set | | |
|
||||
| `OP_GroupFollow` | 🔴 Not-Set | | |
|
||||
| `OP_GroupFollow2` | 🔴 Not-Set | | |
|
||||
| `OP_GroupInvite` | 🔴 Not-Set | | |
|
||||
| `OP_GroupInvite2` | 🔴 Not-Set | | |
|
||||
| `OP_GroupLeaderChange` | 🔴 Not-Set | | |
|
||||
| `OP_GroupLeadershipAAUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_GroupMakeLeader` | 🔴 Not-Set | | |
|
||||
| `OP_GroupMentor` | 🔴 Not-Set | | |
|
||||
| `OP_GroupRoles` | 🔴 Not-Set | | |
|
||||
| `OP_GroupUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_GroupUpdateB` | 🔴 Not-Set | | |
|
||||
| `OP_GroupUpdateLeaderAA` | 🔴 Not-Set | | |
|
||||
| `OP_GuildBank` | 🔴 Not-Set | | |
|
||||
| `OP_GuildBankItemList` | 🔴 Not-Set | | |
|
||||
| `OP_GuildCreate` | 🔴 Not-Set | | |
|
||||
| `OP_GuildDelete` | 🔴 Not-Set | | |
|
||||
| `OP_GuildDeleteGuild` | 🔴 Not-Set | | |
|
||||
| `OP_GuildDemote` | 🔴 Not-Set | | |
|
||||
| `OP_GuildInvite` | 🔴 Not-Set | | |
|
||||
| `OP_GuildInviteAccept` | 🔴 Not-Set | | |
|
||||
| `OP_GuildLeader` | 🔴 Not-Set | | |
|
||||
| `OP_GuildManageAdd` | 🔴 Not-Set | | |
|
||||
| `OP_GuildManageBanker` | 🔴 Not-Set | | |
|
||||
| `OP_GuildManageRemove` | 🔴 Not-Set | | |
|
||||
| `OP_GuildManageStatus` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberLevelUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberList` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberLevel` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberRankAltBanker` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberPublicNote` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberAdd` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberRename` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberDelete` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMemberDetails` | 🔴 Not-Set | | |
|
||||
| `OP_GuildRenameGuild` | 🔴 Not-Set | | |
|
||||
| `OP_GuildMOTD` | 🔴 Not-Set | | |
|
||||
| `OP_GuildPeace` | 🔴 Not-Set | | |
|
||||
| `OP_GuildPromote` | 🔴 Not-Set | | |
|
||||
| `OP_GuildPublicNote` | 🔴 Not-Set | | |
|
||||
| `OP_GuildRemove` | 🔴 Not-Set | | |
|
||||
| `OP_GuildSelectTribute` | 🔴 Not-Set | | |
|
||||
| `OP_GuildModifyBenefits` | 🔴 Not-Set | | |
|
||||
| `OP_GuildTributeToggleReq` | 🔴 Not-Set | | |
|
||||
| `OP_GuildTributeToggleReply` | 🔴 Not-Set | | |
|
||||
| `OP_GuildOptInOut` | 🔴 Not-Set | | |
|
||||
| `OP_GuildSaveActiveTributes` | 🔴 Not-Set | | |
|
||||
| `OP_GuildSendActiveTributes` | 🔴 Not-Set | | |
|
||||
| `OP_GuildTributeFavorAndTimer` | 🔴 Not-Set | | |
|
||||
| `OP_GuildsList` | 🔴 Not-Set | | |
|
||||
| `OP_GuildStatus` | 🔴 Not-Set | | |
|
||||
| `OP_GuildTributeInfo` | 🔴 Not-Set | | |
|
||||
| `OP_GuildUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_GuildTributeDonateItem` | 🔴 Not-Set | | |
|
||||
| `OP_GuildTributeDonatePlat` | 🔴 Not-Set | | |
|
||||
| `OP_GuildWar` | 🔴 Not-Set | | |
|
||||
| `OP_Heartbeat` | 🔴 Not-Set | | |
|
||||
| `OP_Hide` | 🔴 Not-Set | | |
|
||||
| `OP_HideCorpse` | 🔴 Not-Set | | |
|
||||
| `OP_HPUpdate` | 🟡 Unverified | | |
|
||||
| `OP_Illusion` | 🔴 Not-Set | | |
|
||||
| `OP_IncreaseStats` | 🔴 Not-Set | | |
|
||||
| `OP_InitialHPUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_InitialMobHealth` | 🔴 Not-Set | | |
|
||||
| `OP_InspectAnswer` | 🔴 Not-Set | | |
|
||||
| `OP_InspectBuffs` | 🔴 Not-Set | | |
|
||||
| `OP_InspectMessageUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_InspectRequest` | 🔴 Not-Set | | |
|
||||
| `OP_InstillDoubt` | 🔴 Not-Set | | |
|
||||
| `OP_InterruptCast` | 🔴 Not-Set | | |
|
||||
| `OP_InvokeChangePetName` | 🔴 Not-Set | | |
|
||||
| `OP_InvokeChangePetNameImmediate` | 🔴 Not-Set | | |
|
||||
| `OP_InvokeNameChangeImmediate` | 🔴 Not-Set | | |
|
||||
| `OP_InvokeNameChangeLazy` | 🔴 Not-Set | | |
|
||||
| `OP_ItemLinkClick` | 🔴 Not-Set | | |
|
||||
| `OP_ItemLinkResponse` | 🔴 Not-Set | | |
|
||||
| `OP_ItemLinkText` | 🔴 Not-Set | | |
|
||||
| `OP_ItemName` | 🔴 Not-Set | | |
|
||||
| `OP_ItemPacket` | 🔴 Not-Set | | |
|
||||
| `OP_ItemPreview` | 🔴 Not-Set | | |
|
||||
| `OP_ItemPreviewRequest` | 🔴 Not-Set | | |
|
||||
| `OP_ItemRecastDelay` | 🔴 Not-Set | | |
|
||||
| `OP_ItemVerifyReply` | 🔴 Not-Set | | |
|
||||
| `OP_ItemVerifyRequest` | 🔴 Not-Set | | |
|
||||
| `OP_ItemViewUnknown` | 🔴 Not-Set | | |
|
||||
| `OP_Jump` | 🔴 Not-Set | | |
|
||||
| `OP_KeyRing` | 🔴 Not-Set | | |
|
||||
| `OP_KickPlayers` | 🔴 Not-Set | | |
|
||||
| `OP_KnowledgeBase` | 🔴 Not-Set | | |
|
||||
| `OP_LDoNButton` | 🔴 Not-Set | | |
|
||||
| `OP_LDoNDisarmTraps` | 🔴 Not-Set | | |
|
||||
| `OP_LDoNInspect` | 🔴 Not-Set | | |
|
||||
| `OP_LDoNOpen` | 🔴 Not-Set | | |
|
||||
| `OP_LDoNPickLock` | 🔴 Not-Set | | |
|
||||
| `OP_LDoNSenseTraps` | 🔴 Not-Set | | |
|
||||
| `OP_LeadershipExpToggle` | 🔴 Not-Set | | |
|
||||
| `OP_LeadershipExpUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_LeaveAdventure` | 🔴 Not-Set | | |
|
||||
| `OP_LeaveBoat` | 🔴 Not-Set | | |
|
||||
| `OP_LevelAppearance` | 🔴 Not-Set | | |
|
||||
| `OP_LevelUpdate` | 🟡 Unverified | | |
|
||||
| `OP_LFGAppearance` | 🔴 Not-Set | | |
|
||||
| `OP_LFGCommand` | 🔴 Not-Set | | |
|
||||
| `OP_LFGGetMatchesRequest` | 🔴 Not-Set | | |
|
||||
| `OP_LFGGetMatchesResponse` | 🔴 Not-Set | | |
|
||||
| `OP_LFGResponse` | 🔴 Not-Set | | |
|
||||
| `OP_LFGuild` | 🔴 Not-Set | | |
|
||||
| `OP_LFPCommand` | 🔴 Not-Set | | |
|
||||
| `OP_LFPGetMatchesRequest` | 🔴 Not-Set | | |
|
||||
| `OP_LFPGetMatchesResponse` | 🔴 Not-Set | | |
|
||||
| `OP_LinkedReuse` | 🔴 Not-Set | | |
|
||||
| `OP_LoadSpellSet` | 🔴 Not-Set | | |
|
||||
| `OP_LocInfo` | 🔴 Not-Set | | |
|
||||
| `OP_LockoutTimerInfo` | 🔴 Not-Set | | |
|
||||
| `OP_Login` | 🔴 Not-Set | | |
|
||||
| `OP_LoginAccepted` | 🔴 Not-Set | | |
|
||||
| `OP_LoginComplete` | 🔴 Not-Set | | |
|
||||
| `OP_LoginExpansionPacketData` | 🔴 Not-Set | | |
|
||||
| `OP_LoginUnknown1` | 🔴 Not-Set | | |
|
||||
| `OP_LoginUnknown2` | 🔴 Not-Set | | |
|
||||
| `OP_Logout` | 🔴 Not-Set | | |
|
||||
| `OP_LogoutReply` | 🔴 Not-Set | | |
|
||||
| `OP_LogServer` | 🟡 Unverified | Set via disassembly, lots of unknowns still | |
|
||||
| `OP_LootComplete` | 🔴 Not-Set | | |
|
||||
| `OP_LootItem` | 🔴 Not-Set | | |
|
||||
| `OP_LootRequest` | 🔴 Not-Set | | |
|
||||
| `OP_ManaChange` | 🟡 Unverified | | |
|
||||
| `OP_ManaUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MarkNPC` | 🔴 Not-Set | | |
|
||||
| `OP_MarkRaidNPC` | 🔴 Not-Set | | |
|
||||
| `OP_Marquee` | 🔴 Not-Set | | |
|
||||
| `OP_MemorizeSpell` | 🔴 Not-Set | | |
|
||||
| `OP_Mend` | 🔴 Not-Set | | |
|
||||
| `OP_MendHPUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryAssign` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryCommand` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryDataRequest` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryDataResponse` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryDataUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryDataUpdateRequest` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryDismiss` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryHire` | 🔴 Not-Set | | |
|
||||
| `OP_MercenarySuspendRequest` | 🔴 Not-Set | | |
|
||||
| `OP_MercenarySuspendResponse` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryTimer` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryTimerRequest` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryUnknown1` | 🔴 Not-Set | | |
|
||||
| `OP_MercenaryUnsuspendResponse` | 🔴 Not-Set | | |
|
||||
| `OP_MerchantBulkItems` | 🔴 Not-Set | | |
|
||||
| `OP_MobEnduranceUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MobHealth` | 🔴 Not-Set | | |
|
||||
| `OP_MobManaUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MobRename` | 🔴 Not-Set | | |
|
||||
| `OP_MobUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MoneyOnCorpse` | 🔴 Not-Set | | |
|
||||
| `OP_MoneyUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_MOTD` | 🟡 Unverified | | |
|
||||
| `OP_MoveCoin` | 🔴 Not-Set | | |
|
||||
| `OP_MoveDoor` | 🔴 Not-Set | | |
|
||||
| `OP_MoveItem` | 🔴 Not-Set | | |
|
||||
| `OP_MoveMultipleItems` | 🔴 Not-Set | | |
|
||||
| `OP_MoveLogDisregard` | 🔴 Not-Set | | |
|
||||
| `OP_MoveLogRequest` | 🔴 Not-Set | | |
|
||||
| `OP_MultiLineMsg` | 🔴 Not-Set | | |
|
||||
| `OP_NewSpawn` | 🔴 Not-Set | | |
|
||||
| `OP_NewTitlesAvailable` | 🔴 Not-Set | | |
|
||||
| `OP_NewZone` | 🟢 Verified | | |
|
||||
| `OP_NPCMoveUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_OnLevelMessage` | 🔴 Not-Set | | |
|
||||
| `OP_OpenContainer` | 🔴 Not-Set | | |
|
||||
| `OP_OpenDiscordMerchant` | 🔴 Not-Set | | |
|
||||
| `OP_OpenGuildTributeMaster` | 🔴 Not-Set | | |
|
||||
| `OP_OpenInventory` | 🔴 Not-Set | | |
|
||||
| `OP_OpenTributeMaster` | 🔴 Not-Set | | |
|
||||
| `OP_PDeletePetition` | 🔴 Not-Set | | |
|
||||
| `OP_PetBuffWindow` | 🔴 Not-Set | | |
|
||||
| `OP_PetCommands` | 🔴 Not-Set | | |
|
||||
| `OP_PetCommandState` | 🔴 Not-Set | | |
|
||||
| `OP_PetHoTT` | 🔴 Not-Set | | |
|
||||
| `OP_Petition` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionBug` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionCheckIn` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionCheckout` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionCheckout2` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionDelete` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionQue` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionRefresh` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionResolve` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionSearch` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionSearchResults` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionSearchText` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionUnCheckout` | 🔴 Not-Set | | |
|
||||
| `OP_PetitionUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_PickPocket` | 🔴 Not-Set | | |
|
||||
| `OP_PickZone` | 🔴 Not-Set | | |
|
||||
| `OP_PickZoneWindow` | 🔴 Not-Set | | |
|
||||
| `OP_PlayerProfile` | 🟢 Verified | | |
|
||||
| `OP_PlayerStateAdd` | 🔴 Not-Set | | |
|
||||
| `OP_PlayerStateRemove` | 🔴 Not-Set | | |
|
||||
| `OP_PlayEverquestRequest` | 🔴 Not-Set | | |
|
||||
| `OP_PlayEverquestResponse` | 🔴 Not-Set | | |
|
||||
| `OP_PlayMP3` | 🔴 Not-Set | | |
|
||||
| `OP_Poll` | 🔴 Not-Set | | |
|
||||
| `OP_PollResponse` | 🔴 Not-Set | | |
|
||||
| `OP_PopupResponse` | 🔴 Not-Set | | |
|
||||
| `OP_PostEnterWorld` | 🟢 Verified | | |
|
||||
| `OP_PotionBelt` | 🔴 Not-Set | | |
|
||||
| `OP_PreLogoutReply` | 🔴 Not-Set | | |
|
||||
| `OP_PurchaseLeadershipAA` | 🔴 Not-Set | | |
|
||||
| `OP_PVPLeaderBoardDetailsReply` | 🔴 Not-Set | | |
|
||||
| `OP_PVPLeaderBoardDetailsRequest` | 🔴 Not-Set | | |
|
||||
| `OP_PVPLeaderBoardReply` | 🔴 Not-Set | | |
|
||||
| `OP_PVPLeaderBoardRequest` | 🔴 Not-Set | | |
|
||||
| `OP_PVPStats` | 🔴 Not-Set | | |
|
||||
| `OP_QueryResponseThing` | 🔴 Not-Set | | |
|
||||
| `OP_QueryUCSServerStatus` | 🔴 Not-Set | | |
|
||||
| `OP_RaidDelegateAbility` | 🔴 Not-Set | | |
|
||||
| `OP_RaidClearNPCMarks` | 🔴 Not-Set | | |
|
||||
| `OP_RaidInvite` | 🔴 Not-Set | | |
|
||||
| `OP_RaidJoin` | 🔴 Not-Set | | |
|
||||
| `OP_RaidUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_RandomNameGenerator` | 🟡 Unverified | | |
|
||||
| `OP_RandomReply` | 🔴 Not-Set | | |
|
||||
| `OP_RandomReq` | 🔴 Not-Set | | |
|
||||
| `OP_ReadBook` | 🔴 Not-Set | | |
|
||||
| `OP_RecipeAutoCombine` | 🔴 Not-Set | | |
|
||||
| `OP_RecipeDetails` | 🔴 Not-Set | | |
|
||||
| `OP_RecipeReply` | 🔴 Not-Set | | |
|
||||
| `OP_RecipesFavorite` | 🔴 Not-Set | | |
|
||||
| `OP_RecipesSearch` | 🔴 Not-Set | | |
|
||||
| `OP_ReclaimCrystals` | 🔴 Not-Set | | |
|
||||
| `OP_ReloadUI` | 🔴 Not-Set | | |
|
||||
| `OP_RemoveAllDoors` | 🔴 Not-Set | | |
|
||||
| `OP_RemoveBlockedBuffs` | 🟡 Unverified | | |
|
||||
| `OP_RemoveNimbusEffect` | 🔴 Not-Set | | |
|
||||
| `OP_RemoveTrap` | 🔴 Not-Set | | |
|
||||
| `OP_Report` | 🔴 Not-Set | | |
|
||||
| `OP_ReqClientSpawn` | 🟢 Verified | | |
|
||||
| `OP_ReqNewZone` | 🟢 Verified | | |
|
||||
| `OP_RequestClientZoneChange` | 🟡 Unverified | | |
|
||||
| `OP_RequestDuel` | 🔴 Not-Set | | |
|
||||
| `OP_RequestGuildTributes` | 🔴 Not-Set | | |
|
||||
| `OP_RequestKnowledgeBase` | 🔴 Not-Set | | |
|
||||
| `OP_RequestTitles` | 🔴 Not-Set | | |
|
||||
| `OP_RespawnWindow` | 🔴 Not-Set | | |
|
||||
| `OP_RespondAA` | 🟡 Unverified | | |
|
||||
| `OP_RestState` | 🔴 Not-Set | | |
|
||||
| `OP_Rewind` | 🔴 Not-Set | | |
|
||||
| `OP_RezzAnswer` | 🔴 Not-Set | | |
|
||||
| `OP_RezzComplete` | 🔴 Not-Set | | |
|
||||
| `OP_RezzRequest` | 🔴 Not-Set | | |
|
||||
| `OP_Sacrifice` | 🔴 Not-Set | | |
|
||||
| `OP_SafeFallSuccess` | 🔴 Not-Set | | |
|
||||
| `OP_SafePoint` | 🔴 Not-Set | | |
|
||||
| `OP_Save` | 🔴 Not-Set | | |
|
||||
| `OP_SaveOnZoneReq` | 🔴 Not-Set | | |
|
||||
| `OP_SelectTribute` | 🔴 Not-Set | | |
|
||||
| `OP_SendAAStats` | 🟡 Unverified | | |
|
||||
| `OP_SendAATable` | 🟡 Unverified | | |
|
||||
| `OP_SendCharInfo` | 🟢 Verified | Seems to largely work correctly | |
|
||||
| `OP_SendExpZonein` | 🟡 Unverified | | |
|
||||
| `OP_SendFindableNPCs` | 🔴 Not-Set | | |
|
||||
| `OP_SendGuildTributes` | 🔴 Not-Set | | |
|
||||
| `OP_SendLoginInfo` | 🟢 Verified | | |
|
||||
| `OP_SendMaxCharacters` | 🟢 Verified | | |
|
||||
| `OP_SendMembership` | 🟡 Unverified | Seems right but may be new stuff we need to figure out | |
|
||||
| `OP_SendMembershipDetails` | 🟡 Unverified | Seems right but may be new stuff we need to figure out | |
|
||||
| `OP_SendSystemStats` | 🔴 Not-Set | | |
|
||||
| `OP_SendTitleList` | 🔴 Not-Set | | |
|
||||
| `OP_SendTributes` | 🔴 Not-Set | | |
|
||||
| `OP_SendZonepoints` | 🟡 Unverified | | |
|
||||
| `OP_SenseHeading` | 🔴 Not-Set | | |
|
||||
| `OP_SenseTraps` | 🔴 Not-Set | | |
|
||||
| `OP_ServerListRequest` | 🔴 Not-Set | | |
|
||||
| `OP_ServerListResponse` | 🔴 Not-Set | | |
|
||||
| `OP_SessionReady` | 🔴 Not-Set | | |
|
||||
| `OP_SetChatServer` | 🔴 Not-Set | | |
|
||||
| `OP_SetChatServer2` | 🟡 Unverified | | |
|
||||
| `OP_SetFace` | 🔴 Not-Set | | |
|
||||
| `OP_SetGroupTarget` | 🔴 Not-Set | | |
|
||||
| `OP_SetGuildMOTD` | 🔴 Not-Set | | |
|
||||
| `OP_SetGuildRank` | 🔴 Not-Set | | |
|
||||
| `OP_SetRunMode` | 🔴 Not-Set | | |
|
||||
| `OP_SetServerFilter` | 🟡 Unverified | | |
|
||||
| `OP_SetStartCity` | 🔴 Not-Set | | |
|
||||
| `OP_SetTitle` | 🔴 Not-Set | | |
|
||||
| `OP_SetTitleReply` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskMemberList` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskAddPlayer` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskRemovePlayer` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskMakeLeader` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskMemberInvite` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskInvite` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskInviteResponse` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskAcceptNew` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskMemberChange` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskPlayerList` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskSelectWindow` | 🔴 Not-Set | | |
|
||||
| `OP_SharedTaskQuit` | 🔴 Not-Set | | |
|
||||
| `OP_TaskTimers` | 🔴 Not-Set | | |
|
||||
| `OP_Shielding` | 🔴 Not-Set | | |
|
||||
| `OP_ShopDelItem` | 🔴 Not-Set | | |
|
||||
| `OP_ShopEnd` | 🔴 Not-Set | | |
|
||||
| `OP_ShopEndConfirm` | 🔴 Not-Set | | |
|
||||
| `OP_ShopItem` | 🔴 Not-Set | | |
|
||||
| `OP_ShopPlayerBuy` | 🔴 Not-Set | | |
|
||||
| `OP_ShopPlayerSell` | 🔴 Not-Set | | |
|
||||
| `OP_ShopSendParcel` | 🔴 Not-Set | | |
|
||||
| `OP_ShopDeleteParcel` | 🔴 Not-Set | | |
|
||||
| `OP_ShopRespondParcel` | 🔴 Not-Set | | |
|
||||
| `OP_ShopRetrieveParcel` | 🔴 Not-Set | | |
|
||||
| `OP_ShopParcelIcon` | 🔴 Not-Set | | |
|
||||
| `OP_ShopRequest` | 🔴 Not-Set | | |
|
||||
| `OP_SimpleMessage` | 🔴 Not-Set | | |
|
||||
| `OP_SkillUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_Sneak` | 🔴 Not-Set | | |
|
||||
| `OP_Some3ByteHPUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_Some6ByteHPUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_SomeItemPacketMaybe` | 🔴 Not-Set | | |
|
||||
| `OP_Sound` | 🔴 Not-Set | | |
|
||||
| `OP_SpawnAppearance` | 🟡 Unverified | | |
|
||||
| `OP_SpawnDoor` | 🟡 Unverified | | |
|
||||
| `OP_SpawnPositionUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_SpecialMesg` | 🟡 Unverified | | |
|
||||
| `OP_SpellEffect` | 🔴 Not-Set | | |
|
||||
| `OP_Split` | 🔴 Not-Set | | |
|
||||
| `OP_Stamina` | 🟡 Unverified | | |
|
||||
| `OP_Stun` | 🔴 Not-Set | | |
|
||||
| `OP_Surname` | 🔴 Not-Set | | |
|
||||
| `OP_SwapSpell` | 🔴 Not-Set | | |
|
||||
| `OP_SystemFingerprint` | 🔴 Not-Set | | |
|
||||
| `OP_TargetBuffs` | 🔴 Not-Set | | |
|
||||
| `OP_TargetCommand` | 🔴 Not-Set | | |
|
||||
| `OP_TargetHoTT` | 🔴 Not-Set | | |
|
||||
| `OP_TargetMouse` | 🔴 Not-Set | | |
|
||||
| `OP_TargetReject` | 🔴 Not-Set | | |
|
||||
| `OP_TaskActivity` | 🔴 Not-Set | | |
|
||||
| `OP_TaskActivityComplete` | 🔴 Not-Set | | |
|
||||
| `OP_TaskDescription` | 🔴 Not-Set | | |
|
||||
| `OP_TaskHistoryReply` | 🔴 Not-Set | | |
|
||||
| `OP_TaskHistoryRequest` | 🔴 Not-Set | | |
|
||||
| `OP_TaskRequestTimer` | 🔴 Not-Set | | |
|
||||
| `OP_TaskSelectWindow` | 🔴 Not-Set | | |
|
||||
| `OP_Taunt` | 🔴 Not-Set | | |
|
||||
| `OP_TestBuff` | 🔴 Not-Set | | |
|
||||
| `OP_TGB` | 🔴 Not-Set | | |
|
||||
| `OP_TimeOfDay` | 🟡 Unverified | | |
|
||||
| `OP_Track` | 🔴 Not-Set | | |
|
||||
| `OP_TrackTarget` | 🔴 Not-Set | | |
|
||||
| `OP_TrackUnknown` | 🔴 Not-Set | | |
|
||||
| `OP_TradeAcceptClick` | 🔴 Not-Set | | |
|
||||
| `OP_TradeBusy` | 🔴 Not-Set | | |
|
||||
| `OP_TradeCoins` | 🔴 Not-Set | | |
|
||||
| `OP_TradeMoneyUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_Trader` | 🔴 Not-Set | | |
|
||||
| `OP_TraderBulkSend` | 🔴 Not-Set | | |
|
||||
| `OP_TraderBuy` | 🔴 Not-Set | | |
|
||||
| `OP_TraderDelItem` | 🔴 Not-Set | | |
|
||||
| `OP_TradeRequest` | 🔴 Not-Set | | |
|
||||
| `OP_TradeRequestAck` | 🔴 Not-Set | | |
|
||||
| `OP_TraderItemUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_TraderShop` | 🔴 Not-Set | | |
|
||||
| `OP_TradeSkillCombine` | 🔴 Not-Set | | |
|
||||
| `OP_TradeSkillRecipeInspect` | 🔴 Not-Set | | |
|
||||
| `OP_Translocate` | 🔴 Not-Set | | |
|
||||
| `OP_TributeInfo` | 🔴 Not-Set | | |
|
||||
| `OP_TributeItem` | 🔴 Not-Set | | |
|
||||
| `OP_TributeMoney` | 🔴 Not-Set | | |
|
||||
| `OP_TributeNPC` | 🔴 Not-Set | | |
|
||||
| `OP_TributePointUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_TributeTimer` | 🔴 Not-Set | | |
|
||||
| `OP_TributeToggle` | 🔴 Not-Set | | |
|
||||
| `OP_TributeUpdate` | 🔴 Not-Set | | |
|
||||
| `OP_Untargetable` | 🔴 Not-Set | | |
|
||||
| `OP_UpdateAA` | 🟡 Unverified | | |
|
||||
| `OP_UpdateAura` | 🔴 Not-Set | | |
|
||||
| `OP_UpdateLeadershipAA` | 🔴 Not-Set | | |
|
||||
| `OP_VetClaimReply` | 🔴 Not-Set | | |
|
||||
| `OP_VetClaimRequest` | 🔴 Not-Set | | |
|
||||
| `OP_VetRewardsAvaliable` | 🔴 Not-Set | | |
|
||||
| `OP_VoiceMacroIn` | 🔴 Not-Set | | |
|
||||
| `OP_VoiceMacroOut` | 🔴 Not-Set | | |
|
||||
| `OP_WeaponEquip1` | 🔴 Not-Set | | |
|
||||
| `OP_WearChange` | 🟡 Unverified | | |
|
||||
| `OP_Weather` | 🟡 Unverified | | |
|
||||
| `OP_Weblink` | 🔴 Not-Set | | |
|
||||
| `OP_WhoAllRequest` | 🔴 Not-Set | | |
|
||||
| `OP_WhoAllResponse` | 🔴 Not-Set | | |
|
||||
| `OP_World_Client_CRC1` | 🟡 Unverified | | |
|
||||
| `OP_World_Client_CRC2` | 🟡 Unverified | | |
|
||||
| `OP_World_Client_CRC3` | 🟡 Unverified | | |
|
||||
| `OP_WorldClientReady` | 🟡 Unverified | | |
|
||||
| `OP_WorldComplete` | 🟡 Unverified | | |
|
||||
| `OP_WorldLogout` | 🔴 Not-Set | | |
|
||||
| `OP_WorldObjectsSent` | 🟡 Unverified | | |
|
||||
| `OP_WorldUnknown001` | 🟡 Unverified | | |
|
||||
| `OP_XTargetAutoAddHaters` | 🔴 Not-Set | | |
|
||||
| `OP_XTargetOpen` | 🔴 Not-Set | | |
|
||||
| `OP_XTargetOpenResponse` | 🔴 Not-Set | | |
|
||||
| `OP_XTargetRequest` | 🔴 Not-Set | | |
|
||||
| `OP_XTargetResponse` | 🔴 Not-Set | | |
|
||||
| `OP_YellForHelp` | 🔴 Not-Set | | |
|
||||
| `OP_ZoneChange` | 🟡 Unverified | | |
|
||||
| `OP_ZoneComplete` | 🔴 Not-Set | | |
|
||||
| `OP_ZoneEntry` | 🟢 Verified | | |
|
||||
| `OP_ZoneGuildList` | 🔴 Not-Set | | |
|
||||
| `OP_ZoneInUnknown` | 🔴 Not-Set | | |
|
||||
| `OP_ZonePlayerToBind` | 🔴 Not-Set | | |
|
||||
| `OP_ZoneServerInfo` | 🟢 Verified | | |
|
||||
| `OP_ZoneServerReady` | 🔴 Not-Set | | |
|
||||
| `OP_ZoneSpawns` | 🟢 Verified | | |
|
||||
| `OP_ZoneUnavail` | 🟡 Unverified | | |
|
||||
| `OP_ResetAA` | 🔴 Not-Set | | |
|
||||
| `OP_UnderWorld` | 🔴 Not-Set | | |
|
||||
@@ -0,0 +1 @@
|
||||
This is a bunch of ImHex patterns for viewing various Outer Brood packets
|
||||
@@ -0,0 +1,23 @@
|
||||
struct BaseResponse
|
||||
{
|
||||
u8 success;
|
||||
u32 error_str_id;
|
||||
char error_str[];
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
BaseResponse base;
|
||||
s8 unk1; //I think this is just padding
|
||||
s8 unk2; //I think this is just padding
|
||||
u32 lsid;
|
||||
char key[];
|
||||
s32 failed_attempts;
|
||||
u8 show_player_count;
|
||||
s32 unk3; // 0
|
||||
s32 unk4; // 0
|
||||
char username[];
|
||||
char password[]; //I'm not sure this is correct, it feels like this might be some internal refresh token
|
||||
char paddingEnd[2];
|
||||
};
|
||||
|
||||
Packet p @ 0x00;
|
||||
@@ -0,0 +1,19 @@
|
||||
// 0x01
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
u8 success;
|
||||
s32 error_str_id;
|
||||
char error_msg[];
|
||||
char other_msg[];
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,22 @@
|
||||
// 0x31
|
||||
|
||||
struct Expansion
|
||||
{
|
||||
u32 index;
|
||||
u8 owned;
|
||||
s32 expansion_name_string_id;
|
||||
s32 order_string_id;
|
||||
s32 unknown_string_id;
|
||||
u32 unknown17;
|
||||
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
u32 unknown00;
|
||||
u32 unknown04;
|
||||
u16 unknown08;
|
||||
u32 expansion_count;
|
||||
Expansion expansions[expansion_count];
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,18 @@
|
||||
// 0x02
|
||||
|
||||
#include <std/mem.pat>
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
u8 payload[std::mem::size() - $];
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,18 @@
|
||||
// 0x19
|
||||
|
||||
#include <std/mem.pat>
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
u8 payload[std::mem::size() - $];
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,20 @@
|
||||
// 0xd
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
u32 server_id;
|
||||
char fingerprint[];
|
||||
u32 unknown1;
|
||||
u8 unknown2;
|
||||
u32 unknown3;
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,19 @@
|
||||
// 0x23
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
u8 success;
|
||||
u32 login_server_string_id;
|
||||
char login_server_string;
|
||||
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,15 @@
|
||||
// 0x04
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,44 @@
|
||||
// 0x1a
|
||||
// work in progress
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Realm
|
||||
{
|
||||
char address[];
|
||||
u32 port;
|
||||
u32 server_category;
|
||||
//not sure yet, seen 289 on a lot of classic servers
|
||||
//41 fangbreaker, teek, oakwynd, tormax
|
||||
//31 yelniak
|
||||
//33 vaniki, mischief
|
||||
u32 status_code;
|
||||
u32 server_id;
|
||||
char name[];
|
||||
char language[];
|
||||
char region[];
|
||||
char server_type_desc[];
|
||||
char server_desc[];
|
||||
u32 server_flags;
|
||||
u32 players_online;
|
||||
u32 expansion; //I think
|
||||
u32 truebox_max_clients;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
|
||||
u8 success;
|
||||
u32 login_server_string_id;
|
||||
char login_server_string[];
|
||||
u32 realm_count;
|
||||
Realm realms[realm_count];
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,16 @@
|
||||
// 0x01
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
u16 unknown0a;
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,10 @@
|
||||
// 0x16
|
||||
|
||||
struct Packet {
|
||||
u32 sequence_id;
|
||||
u32 unknown04;
|
||||
u16 unknown08;
|
||||
char fingerprint_data[];
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,17 @@
|
||||
// 0x03
|
||||
// I'm not sure what this packet is, it sends right after play everquest response it sent client->server
|
||||
|
||||
struct LoginBase
|
||||
{
|
||||
u32 sequence_id;
|
||||
u8 compressed;
|
||||
u8 encrypt_type;
|
||||
u32 unknown08;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
LoginBase base;
|
||||
|
||||
};
|
||||
|
||||
Packet packet @0x00;
|
||||
@@ -0,0 +1,27 @@
|
||||
import argparse
|
||||
from Crypto.Cipher import DES
|
||||
|
||||
def decrypt_hex_string(hex_data):
|
||||
raw_hex = "".join(hex_data).replace(" ", "")
|
||||
|
||||
try:
|
||||
encrypted_bytes = bytes.fromhex(raw_hex)
|
||||
except ValueError:
|
||||
return "Error: Input is not valid hexadecimal."
|
||||
|
||||
key = b'\x00' * 8
|
||||
iv = b'\x00' * 8
|
||||
|
||||
cipher = DES.new(key, DES.MODE_CBC, iv)
|
||||
decrypted_bytes = cipher.decrypt(encrypted_bytes)
|
||||
|
||||
return decrypted_bytes
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Decrypt EQ Default Encryption.")
|
||||
parser.add_argument("data", nargs="+", help="The data hex string to decrypt")
|
||||
args = parser.parse_args()
|
||||
result = decrypt_hex_string(args.data)
|
||||
|
||||
print("--- Decrypted Data ---")
|
||||
print(f"Data: {result.hex(' ').upper()}")
|
||||
@@ -0,0 +1,26 @@
|
||||
struct CharacterCreateAllocation
|
||||
{
|
||||
u32 index;
|
||||
u32 base_stats[7];
|
||||
u32 default_allocations[7];
|
||||
};
|
||||
|
||||
struct RaceClassCombo
|
||||
{
|
||||
u64 expansion_req;
|
||||
u32 race;
|
||||
u32 class;
|
||||
u32 deity;
|
||||
u32 allocation_index;
|
||||
u32 zone;
|
||||
};
|
||||
|
||||
struct Packet {
|
||||
u8 padding1;
|
||||
u32 allocation_count;
|
||||
CharacterCreateAllocation allocations[allocation_count];
|
||||
u32 race_class_combo_count;
|
||||
RaceClassCombo race_class_combos[race_class_combo_count];
|
||||
};
|
||||
|
||||
Packet p @ 0x00;
|
||||
@@ -0,0 +1,26 @@
|
||||
struct MembershipEntry
|
||||
{
|
||||
u32 purchase_id;
|
||||
u32 bitwise_entry;
|
||||
};
|
||||
|
||||
struct MembershipSetting
|
||||
{
|
||||
s8 setting_index;
|
||||
s32 setting_id; // 0 to 23 actually seen but the OP_Membership packet has up to 32
|
||||
s32 setting_value;
|
||||
};
|
||||
|
||||
struct Membership
|
||||
{
|
||||
u32 membership_setting_count;
|
||||
MembershipSetting membership_settings[membership_setting_count];
|
||||
u32 race_entry_count;
|
||||
MembershipEntry membership_races[race_entry_count];
|
||||
u32 class_entry_count;
|
||||
MembershipEntry membership_classes[class_entry_count];
|
||||
u32 exit_url_length;
|
||||
char exit_url[exit_url_length];
|
||||
};
|
||||
|
||||
Membership m @ 0x00;
|
||||
@@ -0,0 +1,434 @@
|
||||
struct Bind {
|
||||
u32 zoneid;
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float heading;
|
||||
};
|
||||
|
||||
struct ArmorProperty
|
||||
{
|
||||
s32 type;
|
||||
s32 variation;
|
||||
s32 material;
|
||||
s32 newArmorId;
|
||||
s32 newArmorType;
|
||||
};
|
||||
|
||||
struct AA
|
||||
{
|
||||
s32 index;
|
||||
s32 points_spent;
|
||||
s32 charges_spent;
|
||||
};
|
||||
|
||||
struct EQGuid
|
||||
{
|
||||
u32 entity_id;
|
||||
u32 realm_id;
|
||||
};
|
||||
|
||||
struct SlotData
|
||||
{
|
||||
s32 slot_id;
|
||||
s64 value;
|
||||
};
|
||||
|
||||
struct EQAffect
|
||||
{
|
||||
float modifier;
|
||||
EQGuid caster_id;
|
||||
u32 duration;
|
||||
u32 max_duration;
|
||||
u8 level;
|
||||
s32 spell_id;
|
||||
s32 hitcount;
|
||||
u32 flags;
|
||||
u32 viral_timer;
|
||||
u8 type;
|
||||
SlotData slots[6];
|
||||
};
|
||||
|
||||
struct Coin
|
||||
{
|
||||
u32 platinum;
|
||||
u32 gold;
|
||||
u32 silver;
|
||||
u32 copper;
|
||||
};
|
||||
|
||||
struct BandolierItemInfo {
|
||||
char name[];
|
||||
s32 item_id;
|
||||
s32 icon;
|
||||
};
|
||||
|
||||
struct BandolierSet
|
||||
{
|
||||
char name[];
|
||||
BandolierItemInfo items[4];
|
||||
};
|
||||
|
||||
struct ItemIndex
|
||||
{
|
||||
s16 slot1;
|
||||
s16 slot2;
|
||||
s16 slot3;
|
||||
};
|
||||
|
||||
struct Claim
|
||||
{
|
||||
s32 feature_id;
|
||||
s32 count;
|
||||
};
|
||||
|
||||
struct Tribute {
|
||||
u32 BenefitTimer;
|
||||
s32 unknown1;
|
||||
s32 current_favor;
|
||||
s32 unknown2;
|
||||
s32 all_time_favor;
|
||||
s32 unknown3; //some of these are probably the bools on the pcclient;
|
||||
u16 unknown4;
|
||||
};
|
||||
|
||||
struct TributeBenefit
|
||||
{
|
||||
s32 benefit_id;
|
||||
s32 benefit_tier;
|
||||
};
|
||||
|
||||
struct RaidData
|
||||
{
|
||||
u32 main_assist1;
|
||||
u32 main_assist2;
|
||||
u32 main_assist3;
|
||||
char main_assist_name1[];
|
||||
char main_assist_name2[];
|
||||
char main_assist_name3[];
|
||||
u32 main_marker1;
|
||||
u32 main_marker2;
|
||||
u32 main_marker3;
|
||||
u32 master_looter;
|
||||
};
|
||||
|
||||
struct LdonData
|
||||
{
|
||||
u32 count;
|
||||
u32 ldon_categories[count];
|
||||
u32 ldon_points_available;
|
||||
};
|
||||
|
||||
struct PvPData
|
||||
{
|
||||
u32 kills;
|
||||
u32 deaths;
|
||||
u32 current_points;
|
||||
u32 career_points;
|
||||
u32 best_kill_streak;
|
||||
u32 worst_death_streak;
|
||||
u32 current_kill_streak;
|
||||
};
|
||||
|
||||
struct PvPKill
|
||||
{
|
||||
char name[];
|
||||
u32 level;
|
||||
u32 unknown1; //not sure
|
||||
u32 unknown2; //not sure
|
||||
u32 race;
|
||||
u32 class;
|
||||
u32 zone;
|
||||
u32 time;
|
||||
u32 points;
|
||||
};
|
||||
|
||||
struct PvPDeath
|
||||
{
|
||||
char name[];
|
||||
u32 level;
|
||||
u32 race;
|
||||
u32 class;
|
||||
u32 zone;
|
||||
u32 time;
|
||||
u32 points;
|
||||
};
|
||||
|
||||
struct AltCurrency
|
||||
{
|
||||
u32 alt_currency_str_length;
|
||||
u32 unknown1;
|
||||
char alt_currency_string[alt_currency_str_length];
|
||||
};
|
||||
|
||||
struct AchivementSubComponentData
|
||||
{
|
||||
s32 achievement_id;
|
||||
s32 component_id;
|
||||
s32 requirement_id;
|
||||
s32 requirement_type;
|
||||
s32 count;
|
||||
};
|
||||
|
||||
struct AlchemyBonusSkillData
|
||||
{
|
||||
s32 skill_id;
|
||||
s32 bonus;
|
||||
};
|
||||
|
||||
struct PersonaItemSlot
|
||||
{
|
||||
u32 item_id;
|
||||
u32 slot_id;
|
||||
};
|
||||
|
||||
struct PersonaEquipment
|
||||
{
|
||||
PersonaItemSlot item;
|
||||
u32 augment_count;
|
||||
PersonaItemSlot augments[augment_count];
|
||||
};
|
||||
|
||||
struct PersonaEquipmentSet
|
||||
{
|
||||
u32 class_id;
|
||||
u32 equipment_count;
|
||||
PersonaEquipment equipment[equipment_count];
|
||||
};
|
||||
|
||||
struct PcProfile
|
||||
{
|
||||
u32 profile_type;
|
||||
u32 profile_id;
|
||||
u32 shroud_template_id;
|
||||
u8 gender;
|
||||
u32 race;
|
||||
u32 class;
|
||||
u8 level;
|
||||
u8 level1;
|
||||
u32 bind_count;
|
||||
Bind binds[bind_count];
|
||||
u32 deity;
|
||||
u32 intoxication;
|
||||
u32 property_count;
|
||||
u32 properties[property_count];
|
||||
u32 armor_prop_count;
|
||||
ArmorProperty armor_props[armor_prop_count];
|
||||
u32 base_armor_prop_count;
|
||||
ArmorProperty base_armor_props[base_armor_prop_count];
|
||||
u32 body_tint_count;
|
||||
u32 body_tints[body_tint_count];
|
||||
u32 equip_tint_count;
|
||||
u32 equip_tints[equip_tint_count];
|
||||
u8 hair_color;
|
||||
u8 facial_hair_color;
|
||||
u32 npc_tint_index;
|
||||
u8 eye_color1;
|
||||
u8 eye_color2;
|
||||
u8 hair_style;
|
||||
u8 facial_hair;
|
||||
u8 face;
|
||||
u8 old_face;
|
||||
u32 heritage;
|
||||
u32 tattoo;
|
||||
u32 details;
|
||||
u8 texture_type;
|
||||
u8 material;
|
||||
u8 variation;
|
||||
float height;
|
||||
float width;
|
||||
float length;
|
||||
float view_height;
|
||||
u32 primary;
|
||||
u32 secondary;
|
||||
u32 practices;
|
||||
u32 base_mana;
|
||||
u32 base_hp;
|
||||
u32 base_str;
|
||||
u32 base_sta;
|
||||
u32 base_cha;
|
||||
u32 base_dex;
|
||||
u32 base_int;
|
||||
u32 base_agi;
|
||||
u32 base_wis;
|
||||
u32 base_heroic_str;
|
||||
u32 base_heroic_sta;
|
||||
u32 base_heroic_cha;
|
||||
u32 base_heroic_dex;
|
||||
u32 base_heroic_int;
|
||||
u32 base_heroic_agi;
|
||||
u32 base_heroic_wis;
|
||||
u32 aa_count;
|
||||
AA aas[aa_count];
|
||||
u32 skill_count;
|
||||
s32 skills[skill_count];
|
||||
u32 innate_skill_count;
|
||||
s32 innate_skills[innate_skill_count];
|
||||
u32 combat_ability_count;
|
||||
s32 combat_abilities[combat_ability_count];
|
||||
u32 combat_ability_timer_count;
|
||||
s32 combat_ability_timers[combat_ability_timer_count];
|
||||
u32 unk_ability_count;
|
||||
u32 linked_spell_timer_count;
|
||||
s32 linked_spell_timers[linked_spell_timer_count];
|
||||
u32 item_recast_timer_count;
|
||||
s32 item_recast_timers[item_recast_timer_count];
|
||||
u32 spell_book_slot_count;
|
||||
s32 spell_book_slots[spell_book_slot_count];
|
||||
u32 spell_gem_count;
|
||||
s32 spell_gems[spell_gem_count];
|
||||
u32 spell_recast_timer_count;
|
||||
s32 spell_recast_timers[spell_recast_timer_count];
|
||||
u8 max_allowed_spell_slots;
|
||||
u32 buff_count;
|
||||
EQAffect buffs[buff_count];
|
||||
Coin coin;
|
||||
Coin cursor_coin;
|
||||
u32 disc_timer;
|
||||
u32 mend_timer;
|
||||
u32 forage_timer;
|
||||
u32 thirst;
|
||||
u32 hunger;
|
||||
u32 aa_spent;
|
||||
u32 aa_window_count;
|
||||
u32 aa_window_stats[aa_window_count];
|
||||
u32 aa_points_unspent;
|
||||
u8 sneak;
|
||||
u8 hide;
|
||||
u32 bandolier_count;
|
||||
BandolierSet bandolier_sets[bandolier_count];
|
||||
u32 invslot_bitmask;
|
||||
u32 basedata_hp;
|
||||
u32 basedata_mana;
|
||||
u32 basedata_endur;
|
||||
u32 basedata_mr;
|
||||
u32 basedata_fr;
|
||||
u32 basedata_cr;
|
||||
u32 basedata_pr;
|
||||
u32 basedata_dr;
|
||||
u32 basedata_corrupt;
|
||||
u32 basedata_phr;
|
||||
float basedata_walkspeed;
|
||||
float basedata_runspeed;
|
||||
u32 basedata_hpregen;
|
||||
u32 basedata_manaregen;
|
||||
u32 basedata_mountmanaregen;
|
||||
u32 basedata_endurregen;
|
||||
u32 basedata_ac;
|
||||
u32 basedata_atk;
|
||||
u32 basedata_dmg;
|
||||
u32 basedata_delay;
|
||||
u32 endurance;
|
||||
u32 heroic_type;
|
||||
ItemIndex keyring_item_index[5];
|
||||
u64 exp;
|
||||
u64 aa_exp; //this is a guess, used to be 32 upped to 64
|
||||
u16 unknown1;
|
||||
EQGuid character_id;
|
||||
u32 name_length;
|
||||
char name[name_length];
|
||||
u32 last_name_length;
|
||||
char last_name[last_name_length];
|
||||
u32 creation_time;
|
||||
u32 account_creation_time;
|
||||
u32 last_played_time;
|
||||
u32 played_minutes;
|
||||
u32 entitled_days;
|
||||
u32 expansion_flags;
|
||||
u32 unknown2; //new field from laurion to obrood
|
||||
u32 language_count;
|
||||
u8 languages[language_count];
|
||||
u32 current_zone;
|
||||
float current_x;
|
||||
float current_y;
|
||||
float current_z;
|
||||
float current_heading;
|
||||
u8 animation;
|
||||
u8 pvp;
|
||||
u8 anon;
|
||||
u8 gm;
|
||||
u64 guild_id;
|
||||
u8 guild_show_sprite;
|
||||
u8 status;
|
||||
Coin coin2;
|
||||
Coin bank2;
|
||||
u32 bank_shared_plat;
|
||||
u32 claim_count;
|
||||
Claim claims[claim_count];
|
||||
Tribute tribute;
|
||||
u32 tribute_benefit_count;
|
||||
TributeBenefit tribute_benefits[tribute_benefit_count];
|
||||
u32 trophy_tribute_benefit_count;
|
||||
TributeBenefit trophy_tribute_benefit[trophy_tribute_benefit_count];
|
||||
u8 tasks[137]; //honestly not sure what this is, was just a guess
|
||||
u32 good_points_available;
|
||||
u32 good_points_earned;
|
||||
u32 bad_points_available;
|
||||
u32 bad_points_earned;
|
||||
u32 momentum_balance;
|
||||
u32 loyalty_reward_balance;
|
||||
u32 parcel_status;
|
||||
u32 vehicle_name_length;
|
||||
char vehicle_name[vehicle_name_length];
|
||||
u8 super_pkill;
|
||||
u8 unclone;
|
||||
u8 dead;
|
||||
u32 ld_timer;
|
||||
u32 spell_interrupt_count;
|
||||
u8 autosplit;
|
||||
u8 tells_off;
|
||||
u8 gm_invis;
|
||||
u32 kill_me;
|
||||
u8 cheater_ld_flag;
|
||||
u8 norent;
|
||||
u8 corpse;
|
||||
u8 client_gm_flag_set;
|
||||
u32 mentor_pct;
|
||||
RaidData raid;
|
||||
u32 unique_player_id;
|
||||
LdonData ldon_data;
|
||||
u32 air_supply;
|
||||
PvPData pvp_data;
|
||||
PvPKill last_kill;
|
||||
PvPDeath last_death;
|
||||
u32 kills_in_past_24_hours;
|
||||
u32 kill_list_count;
|
||||
PvPKill kill_list[kill_list_count];
|
||||
u32 pvp_infamy_level;
|
||||
u32 pvp_vitality;
|
||||
u32 cursor_krono;
|
||||
u32 krono;
|
||||
u8 autoconsent_group;
|
||||
u8 autoconsent_raid;
|
||||
u8 autoconsent_guild;
|
||||
u8 autoconsent_fellowship;
|
||||
u8 private_for_eq_players;
|
||||
u32 main_level;
|
||||
u8 show_helm;
|
||||
u32 downtime;
|
||||
AltCurrency alt_currency;
|
||||
u32 completed_event_subcomponent_count;
|
||||
AchivementSubComponentData completed_event_subcomponents[completed_event_subcomponent_count];
|
||||
u32 inprogress_event_subcomponent_count;
|
||||
AchivementSubComponentData inprogress_event_subcomponents[inprogress_event_subcomponent_count];
|
||||
u64 merc_aa_exp;
|
||||
u32 merc_aa_points;
|
||||
u32 merc_aa_spent;
|
||||
u32 starting_city_zone_id;
|
||||
u8 use_advanced_looting;
|
||||
u8 is_master_loot_candidate;
|
||||
u32 alchemy_bonus_list_count;
|
||||
AlchemyBonusSkillData alchemy_bonus_list[alchemy_bonus_list_count];
|
||||
u32 persona_count;
|
||||
PersonaEquipmentSet persona_equipment_set[persona_count];
|
||||
u8 term;
|
||||
};
|
||||
|
||||
struct Packet
|
||||
{
|
||||
u32 crc;
|
||||
u32 length;
|
||||
PcProfile profile;
|
||||
};
|
||||
|
||||
Packet p @ 0x00;
|
||||
@@ -0,0 +1,28 @@
|
||||
def patch_template(template_path, opcodes_path, output_path):
|
||||
try:
|
||||
with open(opcodes_path, 'r') as f:
|
||||
opcodes = [line.strip() for line in f if line.strip()]
|
||||
|
||||
with open(template_path, 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
for index, value in enumerate(opcodes):
|
||||
placeholder = f"{{{{{index}}}}}"
|
||||
content = content.replace(placeholder, value)
|
||||
|
||||
with open(output_path, 'w') as f:
|
||||
f.write(content)
|
||||
|
||||
print(f"Successfully transformed: {output_path}")
|
||||
|
||||
except FileNotFoundError as e:
|
||||
print(f"Error: File Not Found - {e}")
|
||||
except Exception as e:
|
||||
print(f"Error: Exception - {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
patch_template(
|
||||
template_path='opcode.template',
|
||||
opcodes_path='opcodes.csv',
|
||||
output_path='patch_TOB.conf'
|
||||
)
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user