I am working on updating the opcodes for SoD, and this is what I have so far (anything marked with C or U is done already otherwise I haven't gotten that far yet):
patch_SoF.conf
Code:
# ShowEQ Import Notes:
# ZERO THE FILE first
# perl -pi -e 's/0x[0-9a-fA-F]{4}/0x0000/g' opcodes.conf
# Unknown Mapping:
# OP_Action2 -> OP_Damage
# OP_EnvDamage -> OP_Damage ---> might have been a one time mistake
# Name Differences:
# OP_CancelInvite -> OP_GroupCancelInvite
# OP_GMFind -> OP_FindPersonRequest
# OP_CommonMessage -> OP_ChannelMessage
OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
OP_SendLoginInfo=0x0ff4 # U
OP_ApproveWorld=0x701f # C
OP_LogServer=0x4762 # C
OP_SendCharInfo=0x0f14 # C
OP_ExpansionInfo=0x7519 # C
OP_GuildsList=0x5b0b # C
OP_EnterWorld=0x1c20 # U
OP_PostEnterWorld=0x7c94 # U
OP_World_Client_CRC1=0x0ca5 # C
OP_World_Client_CRC2=0x1cb3 # C
OP_SendSpellChecksum=0x5d24 # U
OP_SendSkillCapsChecksum=0x3278 # U
# Character Select Related:
OP_DeleteCharacter=0x0254 # C
OP_CharacterCreateRequest=0x4e4e # U
OP_CharacterCreate=0x1513 # C
OP_RandomNameGenerator=0x3604 # U
OP_ApproveName=0x413f # C
OP_MOTD=0x192e # C
OP_SetChatServer=0x7f2b # U
OP_SetChatServer2=0x5a6f # U
OP_ZoneServerInfo=0x5da4 # U
OP_WorldComplete=0x698a # U
OP_WorldUnknown001=0x3dd2 # U
OP_FloatListThing=0x0f48 # U
# Reasons for Disconnect:
OP_ZoneUnavail=0x7930 # U
OP_WorldClientReady=0x1a84 # U
OP_CharacterStillInZone=0x0000 #
OP_WorldChecksumFailure=0x0000 #
OP_WorldLoginFailed=0x0000 #
OP_WorldLogout=0x0000 #
OP_WorldLevelTooHigh=0x0000 #
OP_CharInacessable=0x0000 #
OP_UserCompInfo=0x0000 #
# OP_SendExeChecksum=0x0000 #
# OP_SendBaseDataChecksum=0x0000 #
# Zone in opcodes
OP_AckPacket=0x3594 # C
OP_ZoneEntry=0x5a6b # U
OP_ReqNewZone=0x43ac # C
OP_NewZone=0x5ca5 # C
OP_ZoneSpawns=0x72f8 # C
OP_PlayerProfile=0x6022 # C
OP_TimeOfDay=0x6015 # C
OP_LevelUpdate=0x6a99 # C
OP_Stamina=0x3e50 # C
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_RequestClientZoneChange=0x4885 # C
OP_ZoneChange=0x051b # C
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x10b7 # C
OP_TributeUpdate=0x416b # U
OP_TributeTimer=0x2daa # U
OP_TaskDescription=0x7b77 # C
OP_TaskActivity=0x0525 # C
OP_CompletedTasks=0x29d7 # U
OP_Weather=0x2641 # C
OP_SendAATable=0x3683 # U
OP_UpdateAA=0x1b26 # U
OP_RespondAA=0x0142 # C
OP_ReqClientSpawn=0x1436 # C
OP_SpawnDoor=0x102f # U
OP_GroundSpawn=0x33e5 # C
OP_SendZonepoints=0x5821 # U
OP_SendAAStats=0x5db5 # U
OP_WorldObjectsSent=0x7b73 # C
OP_BlockedBuffs=0x064d # U
OP_SendExpZonein=0x69cd # C
OP_SendTributes=0x4cc6 # U
OP_TributeInfo=0x38b0 # U
OP_SendGuildTributes=0x1ff1 # U
OP_AAExpUpdate=0x3088 # C
OP_ExpUpdate=0x0e98 # C
OP_HPUpdate=0x02d6 # U
OP_ManaChange=0x50c2 # C
OP_TGB=0x2d74 # C
OP_SpecialMesg=0x074f # C
OP_GuildMemberList=0x51bc # C
OP_GuildMOTD=0xd677 # C
OP_CharInventory=0x709d # U
OP_WearChange=0x231f # C
OP_ClientUpdate=0x7062 # C
OP_ClientReady=0x6759 # C
OP_SetServerFilter=0x7312 # C
# Guild Opcodes
OP_GetGuildMOTD=0x189e # U
OP_GetGuildMOTDReply=0x7a16 # U
OP_GuildMemberUpdate=0x41c0 # U
OP_GuildInvite=0x4843 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_GuildRemove=0x2b9d # C
OP_GuildPeace=0x3f21 # C
OP_SetGuildMOTD=0x481f # C
OP_GuildList=0x5b0b # C
OP_GuildWar=0x7bfb # C
OP_GuildLeader=0x1055 # C
OP_GuildDelete=0x75d0 # C
OP_GuildInviteAccept=0x5f25 # C
OP_ZoneGuildList=0x0000 #
OP_GuildDemote=0x15b2 # U
OP_GetGuildsList=0x0000 #
OP_GuildPublicNote=0x2dbd # C
OP_GuildManageBanker=0x7e23 # U
OP_GuildBank=0x1c36 # U
OP_SetGuildRank=0x4ffe # C
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x6989 # C
OP_GMBecomeNPC=0x56e7 # C
OP_GMZoneRequest=0x4578 # C
OP_GMZoneRequest2=0x1912 # U
OP_GMGoto=0x0402 # C
OP_GMSearchCorpse=0x7872 # C
OP_GMHideMe=0x34a1 # C
OP_GMDelCorpse=0x0dda # C
OP_GMApproval=0x72fa # C
OP_GMToggle=0x7566 # C
OP_GMSummon=0x596d # U
OP_GMEmoteZone=0x3e7c # U
OP_GMEmoteWorld=0x3e7c # U
OP_GMFind=0x6e27 # C
OP_GMKick=0x799c # C
OP_GMKill=0x6685 # C
OP_GMNameChange=0x4b1e # U
OP_GMLastName=0x3563 # C
OP_InspectAnswer=0x4938 # U
OP_Action2=0x7e4d # C OP_Damage?
OP_BeginCast=0x0d5a # C
OP_BuffFadeMsg=0x569a # C
OP_ConsentResponse=0x6e47 # U
OP_MemorizeSpell=0x8543 # C
OP_SwapSpell=0x3fd2 # C
OP_CastSpell=0x3582 # C
OP_Consider=0x6024 # C
OP_FormattedMessage=0x1318 # C
OP_SimpleMessage=0x5448 # C
OP_Buff=0x7ea8 # C
OP_Illusion=0x48f9 # C
OP_MoneyOnCorpse=0x6546 # C
OP_RandomReply=0x6cdc # C
OP_DenyResponse=0x7ce7 # U
OP_SkillUpdate=0x7f01 # C
OP_GMTrainSkillConfirm=0x23a1 # U
OP_RandomReq=0x777c # C
OP_Death=0x1b85 # C
OP_Bind_Wound=0x3969 # C
OP_GMTraining=0x7b64 # C
OP_GMEndTraining=0x3c02 # C
OP_GMTrainSkill=0x7686 # C
OP_Animation=0x47d3 # C
OP_Begging=0x6d37 # C
OP_Consent=0x6bb9 # C
OP_ConsentDeny=0x01e3 # U
OP_AutoFire=0x466c # U
OP_PetCommands=0x3ad6 # C
OP_DeleteSpell=0x0736 # C
OP_Surname=0x7547 # C
OP_ClearSurname=0x6840 # U
OP_FaceChange=0x5658 # C
OP_SenseHeading=0x3887 # C
OP_Action=0x2c27 # C
OP_ConsiderCorpse=0x37a7 # C
OP_Bug=0x02b # U 0x002b or 0x02b0?
OP_Feedback=0x0d1d # C
OP_Report=0x6884 # C
OP_Damage=0x7e4d # C or OP_Action2?
OP_ChannelMessage=0x2e79 # C
OP_Assist=0x2b59 # C
OP_AssistGroup=0x601b # U
OP_MoveCoin=0x1fcd # C
OP_ZonePlayerToBind=0x7530 # U
OP_KeyRing=0x0a18 # C
OP_WhoAllRequest=0x177a # C
OP_WhoAllResponse=0x31f3 # C
OP_FriendsWho=0x6a90 # C
OP_ConfirmDelete=0x3d00 # C
OP_Logout=0x66e0 # C
OP_Rewind=0x2a58 # U
OP_TargetCommand=0x17f7 # C
OP_InspectRequest=0x4892 # U
OP_Hide=0x1d22 # C
OP_Jump=0x6c16 # C
OP_Camp=0x3eec # C
OP_Emote=0x7434 # C
OP_SetRunMode=0x07fb # C
OP_BankerChange=0x4c14 # U
OP_TargetMouse=0x7bbb # C
OP_MobHealth=0x6c5f # U
OP_InitialMobHealth=0x3676 # U
OP_TargetHoTT=0x3ec7 # C
OP_DeleteSpawn=0x3164 # C
OP_MobUpdate=0x4656 # C
OP_AutoAttack=0x3d86 # C
OP_AutoAttack2=0x4ca1 # C
OP_Consume=0x7ce4 # C
OP_MoveItem=0x7f56 # C
OP_DeleteItem=0x36f8 # C
OP_DeleteCharge=0x1df9 # C
OP_ItemPacket=0x34f8 # U
OP_ItemLinkResponse=0x2bad # C
OP_ItemLinkClick=0x3c66 # C
OP_NewSpawn=0x5c29 # C
OP_Track=0x4817 # U
OP_TrackTarget=0x7337 # U
OP_TrackUnknown=0x7b56 # C
OP_ClickDoor=0x1516 # C
OP_MoveDoor=0x6e97 # C
OP_EnvDamage=0x5ac4 # C
OP_BoardBoat=0x5cd3 # C
OP_Forage=0x7b05 # C
OP_LeaveBoat=0x7554 # C
OP_ControlBoat=0x5bd9 # C
OP_SafeFallSuccess=0x6ad2 # C
OP_RezzComplete=0x42d0 # C
OP_RezzRequest=0x0976 # C
OP_RezzAnswer=0x6e1c # C
OP_Shielding=0x2f6a # C
OP_RequestDuel=0x79e0 # U
OP_MobRename=0x0a1d # C
OP_AugmentItem=0x0370 # U
OP_WeaponEquip1=0x17d5 # U
OP_WeaponEquip2=0x7b6e # U
OP_WeaponUnequip2=0x19a8 # U
OP_ApplyPoison=0x405b # C
OP_Save=0x5c85 # C
OP_TestBuff=0x5fc7 # U
OP_CustomTitles=0x1524 # U
OP_Split=0x53f9 # C
OP_YellForHelp=0x6f79 # C
OP_LoadSpellSet=0x7113 # U
OP_Bandolier=0x675c # U
OP_PotionBelt=0x7bf6 # U
OP_DuelResponse=0x1ebb # C
OP_SaveOnZoneReq=0x6eff # C
OP_ReadBook=0x2444 # U
OP_Dye=0x3672 # C
OP_InterruptCast=0x072f # C
OP_AAAction=0x50d0 # C
OP_LeadershipExpToggle=0x34c5 # C
OP_LeadershipExpUpdate=0x69d0 # C
OP_PurchaseLeadershipAA=0x07b3 # C
OP_UpdateLeadershipAA=0x6948 # C
OP_MarkNPC=0x0d4b # C
OP_ClearNPCMarks=0x5033 # C
OP_DoGroupLeadershipAbility=0x540b # C
OP_DelegateAbility=0x0322 # C
OP_SetGroupTarget=0x521c # C
OP_DuelResponse2=0x52b5 # C
OP_Charm=0x7108 # C
OP_Stun=0x2a6d # C
OP_FindPersonRequest=0x3168 # U
OP_FindPersonReply=0x1ac8 # U
OP_Sound=0x303e # C
OP_PetBuffWindow=0x3df8 # U
OP_LevelAppearance=0x2cd4 # U
OP_Translocate=0x2042 # C
OP_Sacrifice=0x5805 # C
OP_PopupResponse=0x15c4 # U
OP_OnLevelMessage=0x1875 # U
OP_AugmentInfo=0x5e79 # U
OP_Petition=0x31d1 # C
OP_SomeItemPacketMaybe=0x54e8 # C
OP_PVPStats=0x1e7b # U
OP_PVPLeaderBoardRequest=0x5156 # U
OP_PVPLeaderBoardReply=0x300a # U
OP_PVPLeaderBoardDetailsRequest=0x24cb # U
OP_PVPLeaderBoardDetailsReply=0x6ac2 # U
OP_RestState=0x0f3e # U
OP_RespawnWindow=0x268c # U
OP_DisciplineTimer=0x0b89 # U
OP_LDoNButton=0x41b5 # U
OP_SetStartCity=0x6a7e # U
OP_VoiceMacroIn=0x7880 # U
OP_VoiceMacroOut=0x37db # U
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
# Looting
OP_LootRequest=0x36E3 #
OP_EndLootRequest=0x6599 #
OP_LootItem=0x3760 #
OP_LootComplete=0x48F3 #
# bazaar trader stuff stuff:
OP_BazaarSearch=0x14F2 #
OP_TraderDelItem=0x068D #
OP_BecomeTrader=0x32B7 #
OP_TraderShop=0x1ACF #
OP_TraderItemUpdate=0x0000 #
OP_Trader=0x6b41 #
OP_ShopItem=0x0000 #
OP_TraderBuy=0x7569 #
OP_Barter=0x51bf #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
# pc/npc trading
OP_TradeRequest=0x180D #
OP_TradeAcceptClick=0x1D07 #
OP_TradeRequestAck=0x1255 #
OP_TradeCoins=0x08CA #
OP_FinishTrade=0x30B7 #
OP_CancelTrade=0x7A43 #
OP_TradeMoneyUpdate=0x69E7 #
OP_MoneyUpdate=0x305A #
# Sent after canceling trade or after closing tradeskill object
OP_FinishWindow=0x4919 #
OP_FinishWindow2=0x1758 #
# Sent on Live for what seems to be item existance verification
# Ex. Before Right Click Effect happens from items
OP_ItemVerifyRequest=0x0cc2 #
OP_ItemVerifyReply=0x41ee #
# merchant crap
OP_ShopPlayerSell=0x5A58 #
OP_ShopRequest=0x5FB7 #
OP_ShopEnd=0x0BD9 #
OP_ShopEndConfirm=0x475F #
OP_ShopPlayerBuy=0x09C4 #
OP_ShopDelItem=0x068D #
# tradeskill stuff:
OP_ClickObject=0x21B3 #
OP_ClickObjectAction=0x67C0 #
OP_ClearObject=0x0e66 #
OP_RecipeDetails=0x0706 #
OP_RecipesFavorite=0x2E2C #
OP_RecipesSearch=0x41A2 #
OP_RecipeReply=0x67f5 #
OP_RecipeAutoCombine=0x0427 #
OP_TradeSkillCombine=0x163C #
# Tribute Packets:
OP_OpenGuildTributeMaster=0x3223 #
OP_OpenTributeMaster=0x5027 #
OP_OpenTributeReply=0x0000 #
OP_SelectTribute=0x1D8C #
OP_TributeItem=0x16D6 #
OP_TributeMoney=0x65BC #
OP_TributeNPC=0x0000 #
OP_TributeToggle=0xE59F #
OP_TributePointUpdate=0x656C #
OP_GuildTributeInfo=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x1342 #
OP_AdventureFinish=0x0974 #
OP_AdventureInfoRequest=0x6e84 #
OP_AdventureInfo=0x526d #
OP_AdventureRequest=0x4f4c #
OP_AdventureDetails=0x7f4d #
OP_AdventureData=0x10b9 #
OP_AdventureUpdate=0x53c2 #
OP_AdventureMerchantRequest=0x71b2 #
OP_AdventureMerchantResponse=0x40d6 #
OP_AdventureMerchantPurchase=0x5488 #
OP_AdventureMerchantSell=0x1c26 #
OP_AdventurePointsUpdate=0x6583 #
OP_AdventureStatsRequest=0x70B2 #
OP_AdventureStatsReply=0x5A3A #
OP_AdventureLeaderboardRequest=0x2A28 #
OP_AdventureLeaderboardReply=0x6555 #
# Group Opcodes
OP_GroupDisband=0x4B26 #
OP_GroupInvite=0x6321 #
OP_GroupFollow=0x1A12 #
OP_GroupUpdate=0x2E5C #
OP_GroupCancelInvite=0x596C #
OP_GroupAcknowledge=0x1306 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x596C #
OP_GroupFollow2=0x59D4 #
OP_GroupInvite2=0x07F6 #
# LFG/LFP Opcodes
OP_LFGCommand=0x5D81 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGGetMatchesRequest=0x21E0 #
OP_LFGGetMatchesResponse=0x6dca #
OP_LFPGetMatchesRequest=0x601A #
OP_LFPGetMatchesResponse=0x2274 #
OP_LFPCommand=0x1F00 #
# Raid Opcodes
OP_RaidJoin=0x0000 #
OP_RaidInvite=0x0E11 #
OP_RaidUpdate=0x237E #
# Button-push commands
OP_Taunt=0x094D #
OP_CombatAbility=0x045D #
OP_SenseTraps=0x7466 #
OP_PickPocket=0x768A #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x19B6 #
OP_Sneak=0x17C4 #
OP_Fishing=0x73AB #
OP_InstillDoubt=0x6865 #
OP_FeignDeath=0x1C68 #
OP_Mend=0x7767 #
OP_LDoNOpen=0x4b92 #
# Task packets
OP_TaskActivityComplete=0x7338 #
OP_TaskMemberList=0x0ad6 #
OP_OpenNewTasksWindow=0x17C3 #
OP_AvaliableTask=0x5d1d #
OP_AcceptNewTask=0x66A8 #
OP_TaskHistoryRequest=0x3035 #
OP_TaskHistoryReply=0x3A60 #
OP_CancelTask=0x4db6 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x179c #
OP_RequestTitles=0x3445 #
OP_SendTitleList=0x3754 #
OP_SetTitle=0x54fe #
OP_SetTitleReply=0x690b #
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
# # # # # # # # # # # Below this point should not be needed # # # # # # # # # # #
# This section are all unknown in Titanium
OP_ForceFindPerson=0x0000 #
OP_LocInfo=0x0000 #
OP_ReloadUI=0x0000 #
OP_ItemName=0x0000 #
OP_ItemLinkText=0x0000 #
OP_MultiLineMsg=0x0000 #
OP_MendHPUpdate=0x0000 #
OP_TargetReject=0x0000 #
OP_SafePoint=0x0000 #
OP_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
# discovered opcodes not yet used:
OP_PickLockSuccess=0x0000 #
OP_VetRewardsAvaliable=0x044b #
OP_VetClaimRequest=0x7503 #
OP_VetClaimReply=0x01e1 #
OP_PlayMP3=0x0000 #
OP_ReclaimCrystals=0x0000 #
OP_CrystalCountUpdate=0x64C1 #
OP_DynamicWall=0x0000 #
OP_OpenDiscordMerchant=0x0000 #
OP_DiscordMerchantInventory=0x0000 #
OP_GiveMoney=0x0000 #
OP_RequestKnowledgeBase=0x0000 #
OP_KnowledgeBase=0x0000 #
OP_SlashAdventure=0x0000 # /adventure
OP_BecomePVPPrompt=0x0000 #
OP_MoveLogRequest=0x0000 # gone I think
OP_MoveLogDisregard=0x0000 # gone I think
# named unknowns, to make looking for real unknown easier
OP_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
OP_LoginUnknown1=0x22cf
OP_LoginUnknown2=0x43ba
OP_ItemViewUnknown=0x4db4
# Petition Opcodes
OP_PetitionSearch=0x0000 # search term for petition
OP_PetitionSearchResults=0x0000 # (list of?) matches from search
OP_PetitionSearchText=0x0000 # text results of search
OP_PetitionUpdate=0x0000 #
OP_PetitionCheckout=0x0000 #
OP_PetitionCheckIn=0x0000 #
OP_PetitionQue=0x0000 #
OP_PetitionUnCheckout=0x0000 #
OP_PetitionDelete=0x0000 #
OP_DeletePetition=0x0000 #
OP_PetitionResolve=0x0000 #
OP_PDeletePetition=0x0000 #
OP_PetitionBug=0x0000 #
OP_PetitionRefresh=0x0000 #
OP_PetitionCheckout2=0x0000 #
OP_PetitionViewPetition=0x0000 #
# Login opcodes
OP_SessionReady=0x0001 #
OP_Login=0x0002 #
OP_ServerListRequest=0x0004 #
OP_PlayEverquestRequest=0x000d #
OP_PlayEverquestResponse=0x0021 #
OP_ChatMessage=0x0016 #
OP_LoginAccepted=0x0017 #
OP_ServerListResponse=0x0018 #
OP_Poll=0x0029 #
OP_EnterChat=0x000f #
OP_PollResponse=0x0011 #
# raw opcodes
OP_RAWSessionRequest=0x0000 #
OP_RAWSessionResponse=0x0000 #
OP_RAWCombined=0x0000 #
OP_RAWSessionDisconnect=0x0000 #
OP_RAWKeepAlive=0x0000 #
OP_RAWSessionStatRequest=0x0000 #
OP_RAWSessionStatResponse=0x0000 #
OP_RAWPacket=0x0000 #
OP_RAWFragment=0x0000 #
OP_RAWOutOfOrderAck=0x0000 #
OP_RAWAck=0x0000 #
OP_RAWAppCombined=0x0000 #
OP_RAWOutOfSession=0x0000 #
# we need to document the differences between these packets to make identifying them easier
OP_Some3ByteHPUpdate=0x0000 # initial HP update for mobs
OP_InitialHPUpdate=0x0000 #