EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=590)
-   -   Veil of Alaris (https://www.eqemulator.org/forums/showthread.php?t=34613)

trevius 04-06-2012 03:22 AM

I spent a day working on VoA just to have something prepared in case Steam gets a new VoA client sometime soon.

I wrote a couple of scripts that make updating our patch_<expansion>.conf files a bit easier based on some other opcode info we have. It still requires some manual work to get all of the opcodes, but not nearly as much work as before.

Here is the March 21 2012 client .conf file I made using these new scripts with a few adjustments I made manually while working on the client:

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=0x4d5c                                        #
OP_ApproveWorld=0x655c                                        #
OP_LogServer=0x1497                                                #
OP_SendCharInfo=0x7f9e                                        #
OP_ExpansionInfo=0x7e4d                                        #
OP_GuildsList=0x5b0b                                        #
OP_EnterWorld=0x710e                                        #
OP_PostEnterWorld=0x7930                                #
OP_World_Client_CRC1=0x7ce4                                #
OP_World_Client_CRC2=0x7705                                #
OP_SendSpellChecksum=0x0000                                #
OP_SendSkillCapsChecksum=0x0000                        #

# haracter Select Related:
OP_DeleteCharacter=0x5ca5                                #
OP_CharacterCreateRequest=0x4eba                #
OP_CharacterCreate=0x3237                                #
OP_RandomNameGenerator=0x26aa                        #
OP_ApproveName=0x3154                                        #

OP_MOTD=0x0b80                                                        #
OP_SetChatServer=0x2c38                                        #
OP_SetChatServer2=0x441c                                #
OP_ZoneServerInfo=0x16f5                                #
OP_WorldComplete=0x6c63                                        #
OP_WorldUnknown001=0x4274                                #
OP_FloatListThing=0x1910                                #

# Reasons for Disconnect:
OP_ZoneUnavail=0x20bc                                        #
OP_WorldClientReady=0x0b89                                # Testing VoA 0x3f24
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                                                #
OP_ZoneEntry=0x5821                                                # Testing VoA 0x5821
OP_ReqNewZone=0x4118                                        #
OP_NewZone=0x43ac                                                #
OP_ZoneSpawns=0x5f5e                                        #
OP_PlayerProfile=0x6afd                                        # Testing VoA 0x6022
OP_TimeOfDay=0x6015                                                #
OP_LevelUpdate=0x6a99                                        #
OP_Stamina=0x7686                                                #
OP_RequestClientZoneChange=0x224f                #
OP_ZoneChange=0x0976                                        #

OP_LockoutTimerInfo=0x0000                                #
OP_ZoneServerReady=0x0000                                #
OP_ZoneInUnknown=0x0000                                        #
OP_LogoutReply=0x0000                                        #
OP_PreLogoutReply=0x0000                                #

# Required to fully log in
OP_SpawnAppearance=0x3f55                                #
OP_ChangeSize=0x0000                                        #
OP_TributeUpdate=0x0000                                        #
OP_TributeTimer=0x1525                                        # Testing VoA 0x1525
OP_TaskDescription=0x2e4f                                #
OP_TaskActivity=0x512b                                        #
OP_CompletedTasks=0x3141                                #
OP_Weather=0x3e50                                                #
OP_SendAATable=0x6a7e                                        # Testing VoA 0x6a7e
OP_UpdateAA=0x5363                                                # Testing VoA 0x5363
OP_RespondAA=0x0643                                                # Testing VoA 0x0643 or maybe 0x7bf6
OP_ReqClientSpawn=0x2c27                                #
OP_SpawnDoor=0x7113                                                #
OP_GroundSpawn=0x33e5                                        #
OP_SendZonepoints=0x399f                                #
OP_SendAAStats=0x4e22                                        # 
OP_WorldObjectsSent=0x7b73                                #
OP_BlockedBuffs=0x1681                                        #
OP_RemoveBlockedBuffs=0x6a86                        #
OP_ClearBlockedBuffs=0x7ae1                                #
OP_SendExpZonein=0x0f14                                        #
OP_SendTributes=0x010d                                        #
OP_TributeInfo=0x047c                                        #
OP_SendGuildTributes=0x0000                                #
OP_AAExpUpdate=0x1318                                        #
OP_ExpUpdate=0x0000                                                # Testing VoA 0x0555
OP_HPUpdate=0x2369                                                #
OP_ManaChange=0x569a                                        #
OP_TGB=0x3672                                                        #
OP_SpecialMesg=0x039d                                        #
OP_GuildMemberList=0x51bc                                #
OP_GuildMOTD=0x0000                                                # Testing VoA 0x0a1d
OP_CharInventory=0x0000                                        # Testing VoA 0x6cfe
OP_WearChange=0x1a58                                        #
OP_ClientUpdate=0x7062                                        #
OP_ClientReady=0x6cdc                                        #
OP_SetServerFilter=0x053a                                #

# Guild Opcodes
OP_GetGuildMOTD=0x3415                                        #
OP_GetGuildMOTDReply=0x709d                                #
OP_GuildMemberUpdate=0x589f                                #
OP_GuildInvite=0x5488                                        #
OP_GuildRemove=0x47d3                                        #
OP_GuildPeace=0x2bff                                        #
OP_SetGuildMOTD=0x5f85                                        #
OP_GuildList=0x0000                                                #
OP_GuildWar=0x5408                                                #
OP_GuildLeader=0x0598                                        #
OP_GuildDelete=0x230e                                        #
OP_GuildInviteAccept=0x2b5a                                #
OP_GuildDemote=0x1899                                        #
OP_GuildPublicNote=0x2dbd                                #
OP_GuildManageBanker=0x0000                                #
OP_GuildBank=0x0000                                                #
OP_SetGuildRank=0x4ffe                                        #
OP_GuildUpdateURLAndChannel=0x03d1                #
OP_GuildMemberLevelUpdate=0x0000                #
OP_ZoneGuildList=0x0000                                        #
OP_GetGuildsList=0x0000                                        #
OP_GuildStatus=0x4cf2                                        #
OP_GuildCreate=0x0000                                        #
# OP_GuildManageRemove=0x0000                        #
# OP_GuildManageAdd=0x0000                                #
# OP_GuildManageStatus=0x0000                        #

# GM/guide opcodes
OP_GMServers=0x6989                                                #
OP_GMBecomeNPC=0x56e7                                        #
OP_GMZoneRequest=0x701f                                        #
OP_GMZoneRequest2=0x01                                        #
OP_GMGoto=0x15a1                                                #
OP_GMSearchCorpse=0x5a81                                #
OP_GMHideMe=0x28ef                                                #
OP_GMDelCorpse=0x072f                                        #
OP_GMApproval=0x481f                                        #
OP_GMToggle=0x2042                                                # 
OP_GMSummon=0x6e47                                                #
OP_GMEmoteZone=0x307d                                        #
OP_GMEmoteWorld=0x0c2d                                        #
OP_GMFind=0x6e27                                                #
OP_GMKick=0x5a56                                                #
OP_GMKill=0x51fe                                                #
OP_GMNameChange=0x0000                                        #
OP_GMLastName=0x7bfb                                        #

OP_InspectAnswer=0x0c54                                        #
OP_BeginCast=0x0d5a                                                #
OP_BuffFadeMsg=0x71bf                                        #
OP_ConsentResponse=0x35c6                                #
OP_MemorizeSpell=0x3887                                        #
OP_SwapSpell=0x28a7                                                #
OP_CastSpell=0x50c2                                                #
OP_Consider=0x70c6                                                #
OP_FormattedMessage=0x4675                                #
OP_SimpleMessage=0x0698                                        # 
OP_Buff=0x3a18                                                        #
OP_Illusion=0x10b7                                                #
OP_MoneyOnCorpse=0x4074                                        #
OP_RandomReply=0x6d5d                                        #
OP_DenyResponse=0x0370                                        #
OP_SkillUpdate=0x7f01                                        #
OP_GMTrainSkillConfirm=0x0000                        #
OP_RandomReq=0x303e                                                #
OP_Death=0x6685                                                        #
OP_Bind_Wound=0x7b64                                        #
OP_GMTraining=0x5960                                        #
OP_GMEndTraining=0x4a61                                        #
OP_GMTrainSkill=0x4885                                        #
OP_Animation=0x5bd9                                                #
OP_Begging=0x32af                                                #
OP_Consent=0x6bb9                                                #
OP_ConsentDeny=0x6b7f                                        #
OP_AutoFire=0x23fc                                                #
OP_PetCommands=0x7312                                        #
OP_DeleteSpell=0x0142                                        #
OP_Surname=0x777c                                                #
OP_ClearSurname=0x0000                                        #
OP_FaceChange=0x0507                                        #
OP_SenseHeading=0x1b8a                                        #
OP_Action=0x1b85                                                #
OP_ConsiderCorpse=0x0e94                                #
OP_HideCorpse=0x0000                                        # 
OP_CorpseDrag=0x0000                                        #
OP_CorpseDrop=0x0000                                        #
OP_Bug=0x3365                                                        #
OP_Feedback=0x52b5                                                #
OP_Report=0x211a                                                #
OP_Damage=0x631a                                                #  or OP_Action2?
OP_ChannelMessage=0x2e79                                #
OP_Assist=0x5658                                                #
OP_AssistGroup=0x43bc                                        #
OP_MoveCoin=0x2963                                                #
OP_ZonePlayerToBind=0x2480                                #
OP_KeyRing=0x3b85                                                #
OP_WhoAllRequest=0x177a                                        #
OP_WhoAllResponse=0x15de                                #
OP_FriendsWho=0x73d6                                        #
OP_ConfirmDelete=0x604d                                        #
OP_Logout=0x6275                                                #
OP_Rewind=0x09e3                                                #
OP_TargetCommand=0x3088                                        # 
OP_InspectRequest=0x2683                                #
OP_Hide=0x3497                                                        #
OP_Jump=0x083b                                                        #
OP_Camp=0x3cd6                                                        #
OP_Emote=0x0000                                                        #
OP_SetRunMode=0x3d06                                        #
OP_BankerChange=0x0000                                        #
OP_TargetMouse=0x3edc                                        # 
OP_MobHealth=0x5cb0                                                #
OP_InitialMobHealth=0x0000                                #
OP_TargetHoTT=0x460e                                        #
OP_TargetBuffs=0x7c24                                        #
OP_BuffCreate=0x0c98                        #
OP_BuffRemoveRequest=0x3567                                #
OP_DeleteSpawn=0x3164                                        #
OP_AutoAttack=0x2257                                        #
OP_AutoAttack2=0x0000                                        #
OP_Consume=0x2ee2                                                #
OP_MoveItem=0x1cb3                                                #
OP_DeleteItem=0x7547                                        #
OP_DeleteCharge=0x6a90                                        #
OP_ItemPacket=0x2dd3                                        #
OP_ItemLinkResponse=0x6948                                #
OP_ItemLinkClick=0x3c66                                        #
OP_NewSpawn=0x016c                                                #
OP_Track=0x2444                                                        #
OP_TrackTarget=0x538f                                        #
OP_TrackUnknown=0x03e7                                        #
OP_ClickDoor=0x48f9                                                #
OP_MoveDoor=0x231f                                                #
OP_RemoveAllDoors=0x24a3                                #
OP_EnvDamage=0x2730                                                #
OP_BoardBoat=0x7554                                                #
OP_Forage=0x3c02                                                #
OP_LeaveBoat=0x7286                                                #
OP_ControlBoat=0x0ca5                                        #
OP_SafeFallSuccess=0x6df7                                #
OP_RezzComplete=0x7108                                        #
OP_RezzRequest=0x6024                                        #
OP_RezzAnswer=0x2d41                                        #
OP_Shielding=0x7598                                                #
OP_RequestDuel=0x0e71                                        #
OP_MobRename=0x6884                                                #
OP_AugmentItem=0x4cc6                                        #
OP_WeaponEquip1=0x11bc                                        #
OP_WeaponEquip2=0x3f24                                        # Testing VoA 0x2121
OP_WeaponUnequip2=0x7b87                                #
OP_ApplyPoison=0x5cd3                                        #
OP_Save=0x47e7                                                        #
OP_TestBuff=0x712b                                                #
OP_CustomTitles=0x6ade                                        #
OP_Split=0x0ed5                                                        #
OP_YellForHelp=0x1f87                                        #
OP_LoadSpellSet=0x440f                                        #
OP_Bandolier=0x3ad1                                                #
OP_PotionBelt=0x7b7f                                        #
OP_DuelResponse=0x1df9                                        #
OP_DuelResponse2=0x36f8                                        #
OP_SaveOnZoneReq=0x2913                                        #
OP_ReadBook=0x41b5                                                #
OP_Dye=0x32c6                                                        #
OP_InterruptCast=0x7706                                        #
OP_AAAction=0x55dd                                                #
OP_LeadershipExpToggle=0x69d0                        #
OP_LeadershipExpUpdate=0x3703                        #
OP_PurchaseLeadershipAA=0x6e58                        #
OP_UpdateLeadershipAA=0x0297                        #
OP_MarkNPC=0x6b9e                                                #
OP_ClearNPCMarks=0x074f                                        #
OP_DoGroupLeadershipAbility=0x0000                #
OP_GroupLeadershipAAUpdate=0x0000                #
OP_DelegateAbility=0x105b                                #
OP_SetGroupTarget=0x42c7                                #
OP_Charm=0x17f7                                                        #
OP_Stun=0x41a6                                                        #
OP_SendFindableNPCs=0x3015                                #
OP_FindPersonRequest=0x19a8                                #
OP_FindPersonReply=0x7e45                                #
OP_Sound=0x2d1d                                                        #
OP_PetBuffWindow=0x4895                                        #
OP_LevelAppearance=0x78b9                                #
OP_Translocate=0x42ef                                        #
OP_Sacrifice=0x2dc6                                                #
OP_PopupResponse=0x0000                                        #
OP_OnLevelMessage=0x0000                                #
OP_AugmentInfo=0x0000                                        #
OP_Petition=0x31d1                                                #
OP_SomeItemPacketMaybe=0x1513                        #
OP_PVPStats=0x0000                                                #
OP_PVPLeaderBoardRequest=0x0000                        #
OP_PVPLeaderBoardReply=0x0000                        #
OP_PVPLeaderBoardDetailsRequest=0x0000        #
OP_PVPLeaderBoardDetailsReply=0x0000        #
OP_RestState=0x0000                                                #
OP_RespawnWindow=0x435b                                        #
OP_DisciplineTimer=0x74ca                                #
OP_LDoNButton=0x597d                                        #
OP_SetStartCity=0x179d                                        #
OP_VoiceMacroIn=0x0fce                                        #
OP_VoiceMacroOut=0x1c36                                        #
OP_ItemViewUnknown=0x0000                                #
OP_VetRewardsAvaliable=0x3637                        #  Mispelled?
OP_VetClaimRequest=0x032b                                #
OP_VetClaimReply=0x7b6e                                        #
OP_CrystalCountUpdate=0x0000                        #
OP_DisciplineUpdate=0x0d8d                                #
OP_BecomeCorpse=0x0000                                        #
OP_Action2=0x0000                                                # OP_Damage?
OP_MobUpdate=0x4656                                                # Same as OP_SpawnPositionUpdate
OP_NPCMoveUpdate=0x2339                                        #
OP_CameraEffect=0x6812                                        #
OP_SpellEffect=0x0989                                        #
OP_RemoveNimbusEffect=0x0000                        #
OP_AltCurrency=0x2536
OP_AltCurrencyMerchantRequest=0x5aac
OP_AltCurrencyMerchantReply=0x17c7
OP_AltCurrencyPurchase=0x6efe
OP_AltCurrencySell=0x32d9
OP_AltCurrencySellSelection=0x7eac
OP_AltCurrencyReclaim=0x1560
OP_CrystalReclaim=0x0000
OP_CrystalCreate=0x0000
OP_Untargetable=0x101e
OP_IncreaseStats=0x4acf

OP_DzQuit=0x0000
OP_DzListTimers=0x0000
OP_DzAddPlayer=0x0000
OP_DzRemovePlayer=0x0000
OP_DzSwapPlayer=0x0000
OP_DzMakeLeader=0x0000
OP_DzPlayerList=0x0000
OP_DzJoinExpeditionConfirm=0x0000
OP_DzJoinExpeditionReply=0x0000
OP_DzExpeditionInfo=0x0000
OP_DzMemberStatus=0x0000
OP_DzLeaderStatus=0x0000
OP_DzExpeditionEndsWarning=0x0000
OP_DzExpeditionList=0x0000
OP_DzMemberList=0x0000
OP_DzCompass=0x0000
OP_DzChooseZone=0x0000

# New Opcodes
OP_SpawnPositionUpdate=0x0000                        #
OP_ManaUpdate=0x7c94                                        #
OP_EnduranceUpdate=0x5851                                #
OP_MobManaUpdate=0x4d27                                        #
OP_MobEnduranceUpdate=0x190c                        #
     
# Looting
OP_LootRequest=0x1d85                                        #
OP_EndLootRequest=0x0bc                                        #
OP_LootItem=0x6d37                                                #
OP_LootComplete=0x4ca1                                        #

# bazaar trader stuff stuff:
OP_BazaarSearch=0x2881                                        #
OP_TraderDelItem=0x0000                                        #
OP_BecomeTrader=0x358a                                        #
OP_TraderShop=0x49f4                                        #
OP_Trader=0x058c                                                #
OP_TraderBuy=0x783c                                                #
OP_Barter=0x766f                                                #
OP_ShopItem=0x0000                                                #
OP_BazaarInspect=0x0000                                        #
OP_Bazaar=0x0000                                                #
OP_TraderItemUpdate=0x0000                                #

# pc/npc trading
OP_TradeRequest=0x0c24                                        #
OP_TradeAcceptClick=0x064a                                #
OP_TradeRequestAck=0x606a                                #
OP_TradeCoins=0x0149                                        #
OP_FinishTrade=0x3ff6                                        #
OP_CancelTrade=0x527e                                        #
OP_TradeMoneyUpdate=0x1ebb                                #
OP_MoneyUpdate=0x528f                                        #
OP_TradeBusy=0x2c03                                                #

# Sent after canceling trade or after closing tradeskill object
OP_FinishWindow=0x3c27                                        #
OP_FinishWindow2=0x6759                                        #

# Sent on Live for what seems to be item existance verification
# Ex. Before Right Click Effect happens from items
OP_ItemVerifyRequest=0x0000                                #
OP_ItemVerifyReply=0x0000                                #

# merchant crap       
OP_ShopPlayerSell=0x0b27                                #
OP_ShopRequest=0x4194                                        #
OP_ShopEnd=0x3753                                                #
OP_ShopEndConfirm=0x4762                                #
OP_ShopPlayerBuy=0x436a                                        #
OP_ShopDelItem=0x63c8                                        #

# tradeskill stuff:       
OP_ClickObject=0x5f0d                                        #
OP_ClickObjectAction=0x29df                                #
OP_ClearObject=0x38d1                                        #
OP_RecipeDetails=0x068                                        #
OP_RecipesFavorite=0x0000                                #
OP_RecipesSearch=0x0239                                        #
OP_RecipeReply=0x1ecf                                        #
OP_RecipeAutoCombine=0x66bf                                #
OP_TradeSkillCombine=0x4212                                #

# Tribute Packets:
OP_OpenGuildTributeMaster=0x0000                #
OP_OpenTributeMaster=0x3ba3                                #
OP_SelectTribute=0x314f                                        #
OP_TributeItem=0x0000                                        #
OP_TributeMoney=0x1772                                        #
OP_TributeToggle=0x0000                                        #
OP_TributePointUpdate=0x0000                        #
OP_TributeNPC=0x0000                                        #
OP_GuildTributeInfo=0x0000                                #
OP_OpenTributeReply=0x0000                                #
# OP_GuildTributeStatus=0x0000                        #

# Adventure packets:
OP_LeaveAdventure=0x771f                                #
OP_AdventureFinish=0x3168                                #
OP_AdventureInfoRequest=0x05d8                        #
OP_AdventureInfo=0x164b                                        #
OP_AdventureRequest=0x3a75                                #
OP_AdventureDetails=0x05                                #
OP_AdventureData=0x21df                                        #
OP_AdventureUpdate=0x6129                                #
OP_AdventureMerchantRequest=0x0000                #
OP_AdventureMerchantResponse=0x0000                #
OP_AdventureMerchantPurchase=0x0000                #
OP_AdventureMerchantSell=0x0000                        #
OP_AdventurePointsUpdate=0x7d05                        #
OP_AdventureStatsRequest=0x684c                        #
OP_AdventureStatsReply=0x15a7                        #
OP_AdventureLeaderboardRequest=0x0b89        #
OP_AdventureLeaderboardReply=0x6bfb                #

# Group Opcodes
OP_GroupDisband=0x4200                                        #
OP_GroupInvite=0x3288                                        #
OP_GroupFollow=0x1190                                        #
OP_GroupUpdate=0x0000                                        # 
OP_GroupUpdateB=0x0000                                        # 
OP_GroupCancelInvite=0x0000                                #  - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000                                #
OP_GroupDelete=0x0000                                        #
OP_CancelInvite=0x2736                                        #
OP_GroupFollow2=0x6c16                                        #
OP_GroupInvite2=0x5251                                        #
OP_GroupDisbandYou=0x0000                                #
OP_GroupDisbandOther=0x0000                                #
OP_GroupLeaderChange=0x0000                                #
OP_GroupRoles=0x0000                                        #
OP_GroupMakeLeader=0x13da

# LFG/LFP Opcodes
OP_LFGCommand=0x457d                                        #
OP_LFGGetMatchesRequest=0x49e7                        #
OP_LFGGetMatchesResponse=0x4817                        #
OP_LFPGetMatchesRequest=0x5fc7                        #
OP_LFPGetMatchesResponse=0x3d0c                        #
OP_LFPCommand=0x20c6                                        #
OP_LFGAppearance=0x0000                                        #
OP_LFGResponse=0x0000                                        #

# Raid Opcodes
OP_RaidInvite=0x550f                                        #
OP_RaidUpdate=0x0000                                        # Testing VoA 0x0c08
OP_RaidJoin=0x0000                                                #

# Button-push commands
OP_Taunt=0x732c                                                        #
OP_CombatAbility=0x16a5                                        #
OP_SenseTraps=0x416b                                        #
OP_PickPocket=0x13bd                                        #
OP_DisarmTraps=0x0000                                        #
OP_Disarm=0x6def                                                #
OP_Sneak=0x1d22                                                        #
OP_Fishing=0x7093                                                #
OP_InstillDoubt=0x221a                                        #
OP_FeignDeath=0x6145                                        #
OP_Mend=0x10a6                                                        #
OP_LDoNOpen=0x7c87                                                #

# Task packets
OP_TaskActivityComplete=0x0000                        #
OP_TaskMemberList=0x0000                                #
OP_OpenNewTasksWindow=0x0000                        #
OP_AvaliableTask=0x0000                                        #  Mispelled?
OP_AcceptNewTask=0x0000                                        #
OP_TaskHistoryRequest=0x6d1f                        #
OP_TaskHistoryReply=0x189b                                #
OP_CancelTask=0x47ea                                        #
OP_DeclineAllTasks=0x0000                                #

# Title opcodes
OP_NewTitlesAvailable=0x6d95                        #
OP_RequestTitles=0x0000                                        #
OP_SendTitleList=0x0000                                        #
OP_SetTitle=0x725b                                                #
OP_SetTitleReply=0x38e8                                        #

# 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_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_PlayMP3=0x0000                                                #
OP_ReclaimCrystals=0x0000                                #
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=0x46d3                                # U OP_SendSpellChecksum
#OP_LoginUnknown2=0x040b                                # U OP_SendSkillCapsChecksum

# 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=0x0000                                        #
OP_Login=0x0000                                                        #
OP_ServerListRequest=0x0000                                #
OP_PlayEverquestRequest=0x0000                        #
OP_PlayEverquestResponse=0x0000                        #
OP_ChatMessage=0x0000                                        #
OP_LoginAccepted=0x0000                                        #
OP_ServerListResponse=0x0000                        #
OP_Poll=0x0000                                                        #
OP_EnterChat=0x0000                                                #
OP_PollResponse=0x0000                                        #

# 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                                #

Here is the PP struct, which should be almost perfect for the current March 21 2012 client. I did have to add 20 bytes in near the end, which is probably because I miscalculated the struct somewhere and had 20 bytes missing. Either way, this struct is functional:
Code:

struct PlayerProfile_Struct
{
/*00000*/ uint32  checksum;                                //
//BEGIN SUB-STRUCT used for shrouding stuff...
/*00004*/ uint32  gender;                                // Player Gender - 0 Male, 1 Female
/*00008*/ uint32  race;                                        // Player race
/*00012*/ uint32  class_;                                // Player class
/*00016*/ uint8  unknown00016[40];                // #### uint32  unknown00016;  in Titanium ####uint8[40]
/*00056*/ uint8  level;                                // Level of player
/*00057*/ uint8  level1;                                // Level of player (again?)
/*00058*/ uint8  unknown00058[2];                // ***Placeholder
/*00060*/ BindStruct binds[5];                        // Bind points (primary is first)
/*00160*/ uint32  deity;                                // deity
/*00164*/ uint32  intoxication;                        // Alcohol level (in ticks till sober?)
/*00168*/ uint32  spellSlotRefresh[MAX_PP_MEMSPELL]; // Refresh time (millis) - 4 Octets Each
/*00216*/ uint8  unknown00208[6];                // Seen 00 00 00 00 00 00 00 00 00 00 00 00 02 01
/*00222*/ uint32  abilitySlotRefresh;
/*00226*/ uint8  haircolor;                        // Player hair color
/*00227*/ uint8  beardcolor;                        // Player beard color
/*00228*/ uint8  eyecolor1;                        // Player left eye color
/*00229*/ uint8  eyecolor2;                        // Player right eye color
/*00230*/ uint8  hairstyle;                        // Player hair style
/*00231*/ uint8  beard;                                // Player beard type
/*00232*/ uint8          unknown00232[4];                // was 14 288
/*00236*/ union
        {
                struct
                {
                /*236*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
                /*252*/ EquipStruct equip_chest; // Equiptment: Chest visual
                /*268*/ EquipStruct equip_arms; // Equiptment: Arms visual
                /*284*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
                /*300*/ EquipStruct equip_hands; // Equiptment: Hands visual
                /*316*/ EquipStruct equip_legs; // Equiptment: Legs visual
                /*332*/ EquipStruct equip_feet; // Equiptment: Boots visual
                /*348*/ EquipStruct equip_primary; // Equiptment: Main visual
                /*364*/ EquipStruct equip_secondary; // Equiptment: Off visual
                } equip;
                /*00236*/ EquipStruct equipment[9]; //Live Shows [108] for this part
        };
/*00344*/ uint8 unknown00344[36];                // EquipStruct is now 16 bytes instead of 12
/*00380*/ uint8 unknown00380[220];                // Live Shows [160]
/*00600*/ Color_Struct item_tint[9];        // RR GG BB 00
/*00636*/ AA_Array  aa_array[MAX_PP_AA_ARRAY];        // [3600] AAs 12 bytes each
/*04236*/ uint32  points;                                // Unspent Practice points - RELOCATED???
/*04240*/ uint32  mana;                                        // Current mana
/*04244*/ uint32  cur_hp;                                // Current HP without +HP equipment
/*04248*/ uint32  STR;                                        // Strength - 6e 00 00 00 - 110
/*04252*/ uint32  STA;                                        // Stamina - 73 00 00 00 - 115
/*04256*/ uint32  CHA;                                        // Charisma - 37 00 00 00 - 55
/*04260*/ uint32  DEX;                                        // Dexterity - 50 00 00 00 - 80
/*04264*/ uint32  INT;                                        // Intelligence - 3c 00 00 00 - 60
/*04268*/ uint32  AGI;                                        // Agility - 5f 00 00 00 - 95
/*04272*/ uint32  WIS;                                        // Wisdom - 46 00 00 00 - 70
/*04276*/ uint8  unknown04188[28];                //
/*04304*/ uint8  face;                                        // Player face - Actually int32?
/*04305*/ uint8  unknown04217[147];        // was [175]
/*04452*/ uint8  unknown04452[36];                // Spell related new to VoA March 21 2012
/*04488*/ int32  spell_book[MAX_PP_SPELLBOOK];        // List of the Spells in spellbook 720 = 90 pages [2880] was [1920]
/*06408*/ uint8  unknown06284[960];                        // Spacer for the end of the book for now (pages 60 to 90)
/*07368*/ int32  mem_spells[MAX_PP_MEMSPELL];        // [48] List of spells memorized
/*07416*/ uint8  unknown07284[20];                //#### uint8 unknown04396[32]; in Titanium ####[28]
/*07436*/ uint32  platinum;                                // Platinum Pieces on player
/*07440*/ uint32  gold;                                        // Gold Pieces on player
/*07444*/ uint32  silver;                                // Silver Pieces on player
/*07448*/ uint32  copper;                                // Copper Pieces on player
/*07452*/ uint32  platinum_cursor;                // Platinum Pieces on cursor
/*07456*/ uint32  gold_cursor;                        // Gold Pieces on cursor
/*07460*/ uint32  silver_cursor;                // Silver Pieces on cursor
/*07464*/ uint32  copper_cursor;                // Copper Pieces on cursor
/*07468*/ uint32  skills[MAX_PP_SKILL];        // [300] List of skills
                  //uint32  innateSkills[25];        // -72
/*07768*/ uint8  unknown07644[236]; // -272 - 16 = -256 + 236 = -20
/*08004*/ uint32  toxicity;                                // Potion Toxicity (15=too toxic, each potion adds 3)
/*08008*/ uint32  thirst_level;                        // Drink (ticks till next drink)
/*08012*/ uint32  hunger_level;                        // Food (ticks till next eat)
/*08016*/ SpellBuff_Struct buffs[BUFF_COUNT];        // [2200] Buffs currently on the player (30 Max) - (Each Size 88)
/*10216*/ SpellBuff_Struct MoreBuffs[5];        // 440 -1064 (-116 to go)
/*10656*/ uint8  unknown08492[1056];                // End of Buffs - was [360] - Added 360 for Feb 8 2011, not sure exactly where these extra bytes go, but know they go before zone_id.
/*11712*/ Disciplines_Struct  disciplines;        // [400] Known disciplines
/*12112*/ uint8  unknown11252[400];                // Discs?
/*12512*/ uint32  recastTimers[MAX_RECAST_TYPES]; // [80] Timers (UNIX Time of last use)
/*12912*/ uint8  unknown11732[480];                // Some type of Timers was 160
/*13072*/ uint32  endurance;                        // Current endurance
/*13076*/ uint8  unknown13076[20];                //
/*13096*/ uint32  aapoints_spent;                // Number of spent AA points
/*13100*/ uint32  aapoints;                                // Unspent AA points
/*13104*/ uint8 unknown11924[4];
/*13108*/ Bandolier_Struct bandoliers[MAX_PLAYER_BANDOLIER]; // [6400] bandolier contents
/*19508*/ PotionBelt_Struct  potionbelt;        // [360] potion belt 72 extra octets by adding 1 more belt slot
/*19868*/ uint8 unknown18688[8];
/*19876*/ uint32 available_slots;
/*19880*/ uint8 unknown18700[80];                //
//END SUB-STRUCT used for shrouding.
/*19960*/ char    name[64];                                // Name of player - 19960 for Live 1180 difference
/*20024*/ char    last_name[32];                // Last name of player
/*20056*/ uint8  unknown18876[12];                //#### Not In Titanium #### new to SoF[12]
/*20068*/ int32  guild_id;                                // guildid
/*20072*/ uint32  birthday;                                // character birthday
/*20076*/ uint32  account_startdate;        // Date the Account was started
/*20080*/ uint32  lastlogin;                        // character last save time
/*20084*/ uint32  timePlayedMin;                // time character played
/*20088*/ uint8  pvp;                                        // 1=pvp, 0=not pvp
/*20089*/ uint8  anon;                                        // 2=roleplay, 1=anon, 0=not anon
/*20090*/ uint8  gm;                                        // 0=no, 1=yes (guessing!)
/*20091*/ int8    guildrank;                        // 0=member, 1=officer, 2=guildleader -1=no guild
/*20092*/ uint32  guildbanker;
/*20096*/ uint8 unknown18912[12];                // was 4
/*20108*/ uint32  exp;                                        // Current Experience
/*20112*/ uint8 unknown18920[8];
/*20120*/ uint32  timeentitledonaccount;
/*20124*/ uint8  languages[MAX_PP_LANGUAGE]; // List of languages
/*20149*/ uint8  unknown18957[7];    //#### uint8  unknown13109[4]; in Titanium ####[7]
/*20156*/ float    y;                  // Players y position (NOT positive about this switch)
/*20160*/ float    x;                  // Players x position
/*20164*/ float    z;                  // Players z position
/*20168*/ float    heading;            // Players heading
/*20172*/ uint8  unknown18980[4];                // ***Placeholder
/*20176*/ uint32  platinum_bank;                // Platinum Pieces in Bank
/*20180*/ uint32  gold_bank;                        // Gold Pieces in Bank
/*20184*/ uint32  silver_bank;                        // Silver Pieces in Bank
/*20188*/ uint32  copper_bank;                        // Copper Pieces in Bank
/*20192*/ uint32  platinum_shared;                // Shared platinum pieces
/*20196*/ uint32  unknown20196[3];                //
/*20208*/ uint8 unknown19004[2112];                //
/*22320*/ uint32  expansions;                        // Bitmask for expansions ff 7f 00 00 - SoD
/*22324*/ uint8 unknown21132[12];
/*22336*/ uint32  autosplit;                        // 0 = off, 1 = on
/*22340*/ uint8 unknown21148[16];
/*22356*/ uint16  zone_id;                                // see zones.h
/*22358*/ uint16  zoneInstance;                        // Instance id
/*22360*/ char      groupMembers[MAX_GROUP_MEMBERS][64];// 384 all the members in group, including self
/*22744*/ char      groupLeader[64];        // Leader of the group ?
/*22808*/ uint8 unknown21616[540];                // was [604]
/*23348*/ uint32  entityid;
/*23352*/ uint32  leadAAActive;                        // 0 = leader AA off, 1 = leader AA on
/*23356*/ uint8 unknown22228[4];
/*23360*/ sint32  ldon_points_guk;                // Earned GUK points
/*23364*/ sint32  ldon_points_mir;                // Earned MIR points
/*23368*/ sint32  ldon_points_mmc;                // Earned MMC points
/*23372*/ sint32  ldon_points_ruj;                // Earned RUJ points
/*23376*/ sint32  ldon_points_tak;                // Earned TAK points
/*23380*/ sint32  ldon_points_available;// Available LDON points
/*23384*/ uint8 unknown22256[136];                // was [144]
/*23520*/ uint8 unknown23520[8];                //
/*23528*/ float  tribute_time_remaining;// Time remaining on tribute (millisecs)
/*23532*/ uint32  career_tribute_points;// Total favor points for this char
/*23536*/ uint32  unknown22332;                        // *** Placeholder
/*23540*/ uint32  tribute_points;                // Current tribute points
/*23544*/ uint32  unknown22340;                        // *** Placeholder
/*23548*/ uint32  tribute_active;                // 0 = off, 1=on
/*23552*/ Tribute_Struct tributes[MAX_PLAYER_TRIBUTES]; // [60] Current tribute loadout
/*23612*/ uint8 unknown22348[64];                //
/*23676*/ double group_leadership_exp;        // Current group lead exp points
/*23684*/ double raid_leadership_exp;        // Current raid lead AA exp points
/*23692*/ uint32  group_leadership_points; // Unspent group lead AA points
/*23696*/ uint32  raid_leadership_points;  // Unspent raid lead AA points
/*23700*/ LeadershipAA_Struct leader_abilities; // [128]Leader AA ranks 19332
/*23828*/ uint8 unknown22632[128];                // was [132]
/*23956*/ uint32  air_remaining;                // Air supply (seconds)
/*23960*/ uint32  PVPKills;
/*23964*/ uint32  PVPDeaths;
/*23968*/ uint32  PVPCurrentPoints;
/*23972*/ uint32  PVPCareerPoints;
/*23976*/ uint32  PVPBestKillStreak;
/*23980*/ uint32  PVPWorstDeathStreak;
/*23984*/ uint32  PVPCurrentKillStreak;
/*23988*/ PVPStatsEntry_Struct PVPLastKill;                // size 88
/*24076*/ PVPStatsEntry_Struct PVPLastDeath;        // size 88
/*24164*/ uint32  PVPNumberOfKillsInLast24Hours;
/*24168*/ PVPStatsEntry_Struct PVPRecentKills[50];        // size 4400 - 88 each
/*28568*/ uint32 expAA;                                        // Exp earned in current AA point
/*28572*/ uint8  unknown27380[40];
/*28612*/ uint32 currentRadCrystals;        // Current count of radiant crystals
/*28616*/ uint32 careerRadCrystals;                // Total count of radiant crystals ever
/*28620*/ uint32 currentEbonCrystals;        // Current count of ebon crystals
/*28624*/ uint32 careerEbonCrystals;        // Total count of ebon crystals ever
/*28628*/ uint8  groupAutoconsent;                // 0=off, 1=on
/*28629*/ uint8  raidAutoconsent;                // 0=off, 1=on
/*28630*/ uint8  guildAutoconsent;                // 0=off, 1=on
/*28631*/ uint8  unknown27439;                        // ***Placeholder (6/29/2005)
/*28632*/ uint32 level3;                                // SoF looks at the level here to determine how many leadership AA you can bank.
/*28636*/ uint32 showhelm;                                // 0=no, 1=yes
/*28640*/ uint32 RestTimer;
/*28644*/ uint8  unknown27452[1036];        // ***Placeholder (2/13/2007) was[1028]or[940]or[1380] - END of Struct
/*29680*/ uint8  unknown29680[28];                // was 8 (added 20 to the end to get the right packet size)
/*29688*/
};

Note that for this PP to work, you have to change the following field to be 12 instead of 10:

Code:

static const uint32 MAX_PP_MEMSPELL                = 12;
Otherwise, you can add 8 bytes after the 2 fields that use that value and leave it as 10.

Also, here are the character select struct changes that are required to see characters properly:

Code:

struct CharacterSelectEntry_Struct {
/*0000*/        uint8 level;                                //
/*0000*/        uint8 hairstyle;                        //
/*0002*/        uint8 gender;                                //
/*0003*/        char name[1];                                //variable length, edi+0
/*0000*/        uint8 beard;                                //
/*0000*/        uint8 haircolor;                        //
/*0000*/        uint8 face;                                        //
/*0000*/        CharSelectEquip        equip[9];
/*0000*/        uint32 primary;                                //
/*0000*/        uint32 secondary;                        //
/*0000*/        uint8 u15;                                        // 0xff
/*0000*/        uint32 deity;                                //
/*0000*/        uint16 zone;                                //
/*0000*/        uint16 instance;
/*0000*/        uint8 gohome;                                //
/*0000*/        uint8 u19;                                        // 0xff
/*0000*/        uint32 race;                                //
/*0000*/        uint8 tutorial;                                //
/*0000*/        uint8 class_;                                //
/*0000*/        uint8 eyecolor1;                        //
/*0000*/        uint8 beardcolor;                        //
/*0000*/        uint8 eyecolor2;                        //
/*0000*/        uint32 drakkin_heritage;        // Drakkin Heritage
/*0000*/        uint32 drakkin_tattoo;                // Drakkin Tattoo
/*0000*/        uint32 drakkin_details;                // Drakkin Details (Facial Spikes)
/*0000*/        uint8 unknown;                                // New field to Live
/*0000*/        uint8 char_enabled;                        // 0 for disabled character, 1 for enabled
/*0000*/        uint32 LastLogin;                        // Unix timestamp of last login - 1212696584
/*0000*/        uint8 unknown2;                                //
/*0000*/        uint8 unknown3;                                //
/*0000*/        uint32 unknown4;                        // Seen 01 00 00 00

};

There are a few unknowns there which I am not sure about. Also, I assume there is a new separate packet that sets the character creation limit (0/0 characters). So, until that is figured out, you can only use accounts that have existing characters on them.

Other than that, I think the only other thing I had to do was add 37 bytes to the spawn struct and I was able to get all of the way in-game. Unfortunately, the game closes immediately after you completely zone in. I found a few other struct size changes that were required, but still haven't figured out what is causing the client to close. My best guess is that it is due to me setting the inventory opcode to 0x0000 to prevent the packet from crashing the client completely. Maybe if I can figure out the item struct changes it will work, but that is probably the biggest change required for Live clients to work and I don't think it will be easy due to how slots were changed around.

I may work on it a bit more if I get time, but figured I would share the info I have so far in case anyone else wants to work on it.

If Steam doesn't release a functional client that we can use for EQEmu, we will need some way for the community to get a compatible client legally. Maybe there is a way we can do an update every 6 months or so to work with Live clients, but that still leaves out anyone that tries to join between those times after a new patch is in place that breaks compatibility. I just don't want to have to do this type of thing every month as it takes quite a bit of time. At least with the new scripts I made, it should make filling in 90% of the opcodes much quicker.

There may be a chance that Steam isn't getting a new client just because SOE knows that is where we have been getting our clients. If they were smart, they would just put a good VoA client on Steam and not a F2P HoT client or maybe the HoT client would be a different download to get just the patcher, since it still costs money to buy VoA (only up to HoT is free). Then, at least they would still make money off of EQEmu players vs forcing us to try to use Live patched clients which are free to everyone. If they want to stop EQEmu, there are much easier ways to do it, though I don't want to give them any ideas lol. I imagine they don't really care as much as you might think they would. So, hopefully EQ1 isn't on Steam right now just because Steam is always slow to get EQ client updates put up on their site.

Noport 04-06-2012 03:53 AM

(Built Mar 21 2012 14:32:08)
Now have 0/10 characters
you need too swap opcode like this OP_LogServer=0x5b0b with OP_GuildsList=0x1497
trevius Feel free take over
Code:



OP_MOTD=0x1a7b                              # V 0x1a7b 04/03/12
OP_SetChatServer=0x2c38                    # V 0x2c38 04/03/12
OP_SetChatServer2=0x441c                    # V 0x441c 04/03/12
OP_ZoneServerInfo=0x16f5                # V 0x16f5 04/03/12
OP_WorldComplete=0x3aef                # V 0x3aef 04/03/12
OP_FloatListThing=0x45d7                # V 0x45d7 04/03/12

# Reasons for Disconnect:
OP_ZoneUnavail=0x66e4                        # This is not the right opcode. Produces a 'Your character is inaccessible' message.
OP_WorldClientReady=0x3f24              # V 0x3f24 04/03/12
OP_CharacterStillInZone=0x0000                #
OP_WorldChecksumFailure=0x0000                #
OP_WorldLoginFailed=0x0000                #
OP_WorldLogout=0x0000                        #
OP_WorldLevelTooHigh=0x0000                #
OP_CharInacessable=0x0000                #
OP_UserCompInfo=0x7e2f                        # V 0x7e2f 04/03/12
# OP_SendExeChecksum=0x0000                #
# OP_SendBaseDataChecksum=0x0000        #

# Zone in opcodes                     
OP_AckPacket=0x3594                        # V 0x3594 04/03/12
OP_ZoneEntry=0x5821                        # V 0x5821 04/03/12
OP_ReqNewZone=0x5417                        # V 0x5417 04/03/12
OP_NewZone=0x43ac                        # V 0x43ac 04/03/12
OP_ZoneSpawns=0x0000                        #
OP_PlayerProfile=0x6afd                # V 0x6afd 04/03/12
OP_TimeOfDay=0x6015                        # V 0x6015 04/03/12
OP_LevelUpdate=0x6e1c                        # V 0x6e1c 04/03/12
OP_Stamina=0x7686                        # V 0x7686 04/03/12
OP_RequestClientZoneChange=0x18ea        # V 0x18ea 04/03/12
OP_ZoneChange=0x0000                        #
OP_LockoutTimerInfo=0x0000                #
OP_ZoneServerReady=0x0000                #
OP_ZoneInUnknown=0x0000                        #
OP_LogoutReply=0x0000                        #
OP_PreLogoutReply=0x0000                #

# Required to fully log in             
OP_SpawnAppearance=0x3f55                # V 0x3f55 04/03/12
OP_TributeUpdate=0x047c                        # V 0x047c 04/03/12
OP_TributeTimer=0x0000                        #
OP_TaskDescription=0x2e4f                # V 0x2e4f 04/03/12
OP_TaskActivity=0x512B                        # V 0x512B 04/03/12
OP_CompletedTasks=0x3141                # V 0x3141 04/03/12
OP_Weather=0x4658                        # V 0x4658 04/03/12
OP_SendAATable=0x6a7e                        # V 0x6a7e 04/03/12
OP_UpdateAA=0x2ac1                        # V 0x2ac1 04/03/12
OP_RespondAA=0x7bf6                        # V 0x7bf6 04/03/12
OP_ReqClientSpawn=0x47e7                # V 0x47e7 04/03/12
OP_SpawnDoor=0x7113                        # V 0x7113 04/03/12
OP_GroundSpawn=0x33e5                        # V 0x33e5 04/03/12
OP_SendZonepoints=0x399f                  # V 0x399f 04/03/12
OP_SendAAStats=0x5832                        # V 0x5832 04/03/12
OP_WorldObjectsSent=0x7b73                # V 0x7b73 04/03/12
OP_BlockedBuffs=0x664a                        # V 0x664a 04/03/12
OP_SendExpZonein=0x54e8                        # V 0x54e8 04/03/12
OP_SendTributes=0x0000                        #
OP_TributeInfo=0x4775                        # V 0x4775 04/03/12
OP_SendGuildTributes=0x0000                #
OP_AAExpUpdate=0x1318                        # V 0x1318 04/03/12
OP_ExpUpdate=0x0000                          # V 0x0000 04/03/12
OP_HPUpdate=0x2369                        # V 0x2369 04/03/12
OP_ManaChange=0x8543                        # V 0x8543 04/03/12
OP_TGB=0x3672                                # V 0x3672 04/03/12
OP_SpecialMesg=0x039d                        # V 0x039d 04/03/12
OP_GuildMemberList=0x51bc                # V 0x51bc 04/03/12
OP_GuildMOTD=0x0a1d                          # V 0x0a1d 04/03/12
OP_CharInventory=0x6cfe                    # V 0x6cfe 04/03/12
OP_WearChange=0x1a58                        # V 0x1a58 04/03/12
OP_ClientUpdate=0x7062                        # V 0x7062 04/03/12
OP_ClientReady=0x6cdc                        # V 0x6cdc 04/03/12
OP_SetServerFilter=0x053a                # V 0x053a 04/03/12
OP_LeaderExpUpdate=0x3703              # V 0x3703 04/03/12
OP_Lockouts=0x488b                      # V 0x488b 04/03/12

# Guild Opcodes
OP_GetGuildMOTD=0x709d                        # V 0x709d 04/03/12
OP_GetGuildMOTDReply=0x0000                #
OP_GuildMemberUpdate=0x589f                # V 0x589f 04/03/12
OP_GuildInvite=0x0000                        #
OP_GuildRemove=0x0000                        #
OP_GuildPeace=0x0000                        #
OP_SetGuildMOTD=0x0000                        #
#OP_GuildList=0x5b0b                        #
OP_GuildWar=0x0000                        #
OP_GuildLeader=0x0000                        #
OP_GuildDelete=0x0000                        #
OP_GuildInviteAccept=0x0000                #
OP_GuildDemote=0x0000                        #
OP_GuildPublicNote=0x17a2                # V 0x17a2 04/03/12
OP_GuildManageBanker=0x0000                #
OP_GuildBank=0x7b22                        # V 0x7b22 04/03/12
OP_SetGuildRank=0x0000                        #
OP_GuildUpdateURLAndChannel=0x0000        #
OP_GuildMemberLevelUpdate=0x0000        #
OP_ZoneGuildList=0x0000                        #
OP_GetGuildsList=0x0000                        #
# OP_GuildManageRemove=0x0000                #
# OP_GuildManageAdd=0x0000                #
# OP_GuildManageStatus=0x0000                #

# GM/guide opcodes
OP_GMServers=0x0000                        #
OP_GMBecomeNPC=0x0000                        #
OP_GMZoneRequest=0x6f79                        # V 0x6f79 04/03/12
OP_GMZoneRequest2=0x02d6                # V 0x02d6 04/03/12
OP_GMGoto=0x0000                        #
OP_GMSearchCorpse=0x0000                #
OP_GMHideMe=0x0000                        #
OP_GMDelCorpse=0x0000                        #
OP_GMApproval=0x0000                        #
OP_GMToggle=0x0000                        #
OP_GMSummon=0x0000                        #
OP_GMEmoteZone=0x0000                        #
OP_GMEmoteWorld=0x0000                        #
OP_GMFind=0x0000                        #
OP_GMKick=0x6980                        # V 0x6980 04/03/12
OP_GMKill=0x0000                        #
OP_GMNameChange=0x0000                        #
OP_GMLastName=0x23a1                        # V 0x23a1 04/03/12

OP_InspectAnswer=0x0c54                        # V 0x0c54 04/03/12
OP_BeginCast=0x0d5a                        # V 0x0d5a 04/03/12
OP_BuffFadeMsg=0x3887                        # V 0x3887 04/03/12
OP_ConsentResponse=0x35c6                # V 0x35c6 04/03/12
OP_MemorizeSpell=0x2917                        # V 0x2917 04/03/12
OP_SwapSpell=0x28A7                        # V 0x28A7 04/03/12
OP_CastSpell=0x71bf                            # V 0x71bf 04/03/12
OP_Consider=0x70c6                        # V 0x70c6 04/03/12
OP_FormattedMessage=0x4675                # V 0x4675 04/03/12
OP_SimpleMessage=0x0698                        # V 0x0698 04/03/12
OP_Buff=0x0000                                #
OP_Illusion=0x10b7                        # V 0x10b7 04/03/12
OP_MoneyOnCorpse=0x4074                        # V 0x4074 04/03/12
OP_RandomReply=0x07fb                        # V 0x07fb 04/03/12
OP_DenyResponse=0x0370                        # V 0x0370 04/03/12
OP_SkillUpdate=0x7f01                        # V 0x7f01 04/03/12
OP_GMTrainSkillConfirm=0x0000                #
OP_RandomReq=0x303E                        # V 0x303E 04/03/12
OP_Death=0x6685                          # V 0x6685 04/03/12         
OP_Bind_Wound=0x0000                        #
OP_GMTraining=0x0000                        #
OP_GMEndTraining=0x0000                        #
OP_GMTrainSkill=0x0000                        #
OP_Animation=0x0b93                        # V 0x0b93 04/03/12
OP_Begging=0x13e7                        # V 0x13e7 04/03/12
OP_Consent=0x6bb9                        # V 0x6bb9 04/03/12
OP_ConsentDeny=0x6b7f                        # V 0x6b7f 04/03/12
OP_AutoFire=0x0000                        #
OP_PetCommands=0x10a1                        # V 0x10a1 04/03/12
OP_DeleteSpell=0x0000                        #
OP_Surname=0x4668                        # V 0x4668 04/03/12
OP_ClearSurname=0x0000                        #
OP_FaceChange=0x0000                        #
OP_SenseHeading=0x05ac                        # V 0x05ac 04/03/12
OP_Action=0x1b85                        # V 0x1b85 04/03/12
OP_ConsiderCorpse=0x00dd                # V 0x00dd 04/03/12
OP_HideCorpse=0x0000                        #
OP_Bug=0x7ac3                                # V 0x7ac3 04/03/12
OP_Feedback=0x52b5                        # V 0x52b5 04/03/12
OP_Report=0x0375                        # V 0x0375 04/03/12
OP_Damage=0x7519                        # V 0x7519 04/03/12
OP_ChannelMessage=0x2e79                # V 0x2e79 04/03/12
OP_Assist=0x0000                        #
OP_AssistGroup=0x0000                        #
OP_MoveCoin=0x0000                        #
OP_ZonePlayerToBind=0x0000                #
OP_KeyRing=0x0000                        #
OP_WhoAllRequest=0x117a                        # V 0x117a 04/03/12
OP_WhoAllResponse=0x15de                # V 0x15de 04/03/12
OP_FriendsWho=0x0000                        #
OP_ConfirmDelete=0x3838                        # V 0x3838 04/03/12
OP_Logout=0x3401                        # V 0x3401 04/03/12
OP_Rewind=0x0000                        #
OP_TargetCommand=0x40b6                        # V 0x40b6 04/03/12
OP_InspectRequest=0x2683                # V 0x2683 04/03/12
OP_Hide=0x6f64                                # V 0x6f64 04/03/12
OP_Jump=0x08b3                                # V 0x08b3 04/03/12
OP_Camp=0x2eeb                                # V 0x2eeb 04/03/12
OP_Emote=0x7434                                # V 0x7434 04/03/12
OP_SetRunMode=0x4ed9                        # V 0x4ed9 04/03/12
OP_BankerChange=0x0000                        #
OP_TargetMouse=0x3edc                        # V 0x3edc 04/03/12
OP_MobHealth=0x5cb0                        # V 0x5cb0 04/03/12
OP_InitialMobHealth=0x010d                # V 0x010d 04/03/12
OP_TargetHoTT=0x0000                        #
OP_TargetBuffs=0x0000                        #
OP_BuffCreate=0x0000
OP_DeleteSpawn=0x28c7                        # V 0x28c7 04/03/12
OP_AutoAttack=0x1df9                        # V 0x1df9 04/03/12
OP_AutoAttack2=0x701f                        # V 0x701f 04/03/12
OP_Consume=0x31c2                        # V 0x31c2 04/03/12
OP_MoveItem=0x2963                        # V 0x2963 04/03/12
OP_DeleteItem=0x0000                        #
OP_DeleteCharge=0x0000                        #
OP_ItemPacket=0x2dd3                        # V 0x2dd3 04/03/12
OP_ItemLinkResponse=0x24C9                # V 0x24C9 04/03/12
OP_ItemLinkClick=0x6948                        # V 0x6948 04/03/12
OP_NewSpawn=0x0000                        #
OP_Track=0x79e0                                # V 0x79e0 04/03/12         
OP_TrackTarget=0x0000                        #
OP_TrackUnknown=0x0000                        #
OP_ClickDoor=0x48f9                        # V 0x48f9 04/03/12
OP_MoveDoor=0x231F                        # V 0x231F 04/03/12
OP_EnvDamage=0x2730                        # V 0x2730 04/03/12
OP_BoardBoat=0x4298                        # V 0x4298 04/03/12
OP_Forage=0x7c33                        # V 0x7c33 04/03/12
OP_LeaveBoat=0x67c9                        # V 0x67c9 04/03/12
OP_ControlBoat=0x0000                        #
OP_SafeFallSuccess=0x0000                #
OP_RezzComplete=0x0000                        #
OP_RezzRequest=0x0000                        #
OP_RezzAnswer=0x0000                        #
OP_Shielding=0x0000                        #
OP_RequestDuel=0x0000                        #
OP_MobRename=0x0000                        #
OP_AugmentItem=0x0000                        #
OP_WeaponEquip1=0x7404                        # V 0x7404 04/03/12 //looks like 1 & 2 use same opcode- 2nd uint32 specifies weapon 1 or 2
OP_WeaponEquip2=0x0000                        #
OP_WeaponUnequip2=0x0000                #
OP_ApplyPoison=0x0000                        #
OP_Save=0x1436                                # V 0x1436 04/03/12
OP_TestBuff=0x0000                        #
OP_CustomTitles=0x6ade                        # V 0x6ade 04/03/12
OP_Split=0x10a6                                # V 0x10a6 04/03/12
OP_YellForHelp=0x61ef                        # V 0x61ef 04/03/12
OP_LoadSpellSet=0x61ac                        # V 0x61ac 04/03/12
OP_Bandolier=0x0000                        #
OP_PotionBelt=0x0000                        #
OP_DuelResponse=0x0000                        #
OP_DuelResponse2=0x0000                        #
OP_SaveOnZoneReq=0x2913                        # V 0x2913 04/03/12
OP_ReadBook=0x0000                        #
OP_Dye=0x0000                                #
OP_InterruptCast=0x0000                        #
OP_AAAction=0x0a4f                        # V 0x0a4f 04/03/12
OP_LeadershipExpToggle=0x0000                #
OP_LeadershipExpUpdate=0x0000                #
OP_PurchaseLeadershipAA=0x0000                #
OP_UpdateLeadershipAA=0x0000                #
OP_MarkNPC=0x0000                        #
OP_ClearNPCMarks=0x0000                        #
OP_DoGroupLeadershipAbility=0x0000        #
OP_GroupLeadershipAAUpdate=0x1aae        # V 0x1aae 04/03/12
OP_DelegateAbility=0x0000                #
OP_SetGroupTarget=0x0000                #
OP_Charm=0x0000                                #
OP_Stun=0x0000                                #
OP_SendFindableNPCs=0x3015                # V 0x3015 04/03/12
OP_FindPersonRequest=0x1089                # V 0x1089 04/03/12
OP_FindPersonReply=0x0000                #
OP_Sound=0x0000                                #
OP_PetBuffWindow=0x0000                        #
OP_LevelAppearance=0x0000                #
OP_Translocate=0x0000                        #
OP_Sacrifice=0x0000                        #
OP_PopupResponse=0x0000                        #
OP_OnLevelMessage=0x0000                #
OP_AugmentInfo=0x0000                        #
OP_Petition=0x0000                        #
OP_SomeItemPacketMaybe=0x4200                # V 0x420 04/03/12
OP_SomeItemPacketMaybe=0x0000                #
OP_PVPStats=0x0000                        #
OP_PVPLeaderBoardRequest=0x0000                #
OP_PVPLeaderBoardReply=0x0000                #
OP_PVPLeaderBoardDetailsRequest=0x0000        #
OP_PVPLeaderBoardDetailsReply=0x0000        #
OP_RestState=0x0000                        #
OP_RespawnWindow=0x063b                        # V 0x063b 04/03/12
OP_DisciplineTimer=0x0000                #
OP_LDoNButton=0x0000                        #
OP_SetStartCity=0x0000                        #
OP_VoiceMacroIn=0x0000                        #
OP_VoiceMacroOut=0x0000                        #
OP_ItemViewUnknown=0x0000                #
OP_VetRewardsAvaliable=0x0000                #
OP_VetClaimRequest=0x0000                #
OP_VetClaimReply=0x0000                        #
OP_CrystalCountUpdate=0x0000                #
OP_DisciplineUpdate=0x0000                #
OP_BecomeCorpse=0x0000                        #
OP_Action2=0x631a                        # V 0x631a 04/03/12
OP_MobUpdate=0x4656                        # V 0x4656 04/03/12
OP_NPCMoveUpdate=0x2339                        # V 0x2339 04/03/12
OP_CameraEffect=0x0000                        #
OP_SpellEffect=0x0000                        #

OP_DzQuit=0x1539
OP_DzListTimers=0x21e9
OP_DzAddPlayer=0x3657
OP_DzRemovePlayer=0x054e
OP_DzSwapPlayer=0x4661
OP_DzMakeLeader=0x226f
OP_DzPlayerList=0x74e4
OP_DzJoinExpeditionConfirm=0x3c5e
OP_DzJoinExpeditionReply=0x1154
OP_DzExpeditionInfo=0x1150
OP_DzMemberStatus=0x2d17
OP_DzLeaderStatus=0x2caf
OP_DzExpeditionEndsWarning=0x6ac2
OP_DzExpeditionList=0x70d8
OP_DzMemberList=0x15c4
OP_DzCompass=0x01cb
OP_DzChooseZone=0x0000

# New Opcodes
OP_SpawnPositionUpdate=0x0000              #
OP_ManaUpdate=0x7c94                      # V 0x7c94 04/03/12
OP_EnduranceUpdate=0x5851              # V 0x5851 04/03/12
OP_MobManaUpdate=0x190c                      # V 0x190c 04/03/12
OP_MobEnduranceUpdate=0x4d27              # V 0x4d27 04/03/12
OP_MovementHistory=0x1910              # V 0x1910 04/03/12
OP_Shroud=0x1d51                      # V 0x1d51 04/03/12
OP_GroupLeader=0x5fe3                  # V 0x5fe3 04/03/12
OP_DzSwitchInfo=0x28ce                # V 0x28ce 04/03/12
OP_DzInfo=0x6c75                      # V 0x6c75 04/03/12
OP_EndUpdate=0x5851                    # V 0x5851 04/03/12
OP_SpawnRename=0x0598                  # V 0x1055 04/03/12
OP_GroupInvited=0x3288                # V 0x3288 04/03/12 
OP_RemoveSpawn=0x3164                  # V 0x3164 04/03/12
OP_CorpseLocResponse=0x2222            # V 0x2222 04/03/12
OP_CommonMessage=0x2e79                # V 0x2e79 04/03/12
OP_Marketplace=0x7c11                  # V 0x7c11 04/03/12 
OP_WelcomeScreenTitle=0x097f          # V 0x097f 04/03/12
OP_VeteranRewards=0x5d0f              # V 0x5d0f 04/03/12
OP_WelcomeScreenURL=0x3ef9            # V 0x3ef9 04/03/12
OP_Claims=0x3637                      # V 0x3637 04/03/12
OP_PollQuestions=0x47b3                # V 0x47b3 04/03/12
OP_PollResponses=0xa1e6                # V 0xa1e6 04/03/12
OP_ShroudProgression=0x064d            # V 0x064d 04/03/12
OP_Fellowship=0x01e5                  # V 0x01e5 04/03/12
OP_ExpandedGuildInfo=0x03d1            # V 0x03d1 04/03/12
OP_OpenTradeskillContainer=0x29df      # V 0x29df 04/03/12
OP_TradeskillRecipes=0x1ecf            # V 0x1ecf 04/03/12
OP_ItemPlayerPacket=0x6cfe            # V 0x6cfe 04/03/12
OP_GuildExtendedInfo=0x7161            # V 0x7161 04/03/12
OP_RequestZoneChange=0x24d8            # V 0x24d8 04/03/12
OP_DeltaCheck=0x16c1                  # V 0x16c1 04/03/12
OP_FindResponse=0x71b1                # V 0x71b1 04/03/12
OP_NPCMoveUpdate=0x2339                # V 0x2339 04/03/12
OP_Marketplace=0x0c32                  # V 0x0c32 04/03/12
OP_DzMembers=0x012f                    # V 0x012f 04/03/12
OP_Campfire=0x4292                    # V 0x4292 04/03/12
OP_VoiceChat=0x0fd3                    # V 0x0fd3 04/03/12
OP_TradeDeny=0x2c03                    # V 0x2c03 04/03/12

# Looting                         
OP_LootRequest=0x1d85                      # V 0x1d85 04/03/12
OP_EndLootRequest=0x00bc              # V 0x00bc 04/03/12
OP_LootItem=0x5bd9                      # V 0x5bd9 04/03/12
OP_LootComplete=0x528f                      # V 0x528f 04/03/12

# bazaar trader stuff stuff:       
OP_BazaarSearch=0x2881                      # V 0x2881 04/03/12
OP_TraderDelItem=0x0000                      #
OP_BecomeTrader=0x0000                      #
OP_TraderShop=0x0681                      # V 0x0681 04/03/12
OP_Trader=0x358a                      # V 0x358a 04/03/12
OP_TraderBuy=0x783c                      # V 0x783c 04/03/12
OP_Barter=0x0000                      #
OP_ShopItem=0x0000                      #
OP_BazaarInspect=0x0000                      #
OP_Bazaar=0x0000                      #
OP_TraderItemUpdate=0x0000              #

# pc/npc trading
OP_TradeRequest=0x0c24                      # V 0x0c24 04/03/12
OP_TradeAcceptClick=0x064a              # V 0x064a 04/03/12
OP_TradeRequestAck=0x606a              # V 0x606a 04/03/12
OP_TradeCoins=0x1418                      # V 0x1418 04/03/12
OP_FinishTrade=0x1ebb                      # V 0x1ebb 04/03/12
OP_CancelTrade=0x527e                      # V 0x527e 04/03/12
OP_TradeMoneyUpdate=0x0000              #
OP_MoneyUpdate=0x0000                      #
OP_TradeBusy=0x0000                      #

# Sent after canceling trade or after closing tradeskill object
OP_FinishWindow=0x0000                      #
OP_FinishWindow2=0x0000                      #

# Sent on Live for what seems to be item existance verification
# Ex. Before Right Click Effect happens from items
OP_ItemVerifyRequest=0x0000              #
OP_ItemVerifyReply=0x0000              #

# merchant crap
OP_ShopPlayerSell=0xfe13              # V 0xfe13 04/03/12
OP_ShopRequest=0x45f9                      # V 0x45f9 04/03/12
OP_ShopEnd=0x7e03                      # V 0x7e03 04/03/12
OP_ShopEndConfirm=0x0000              #
OP_ShopPlayerBuy=0x0af6                      # V 0x0af6 04/03/12
OP_ShopDelItem=0x0000                      #

# tradeskill stuff:
OP_ClickObject=0x5f0d                      # V 0x5f0d 04/03/12
OP_ClickObjectAction=0x0000              #
OP_ClearObject=0x0000                      #
OP_RecipeDetails=0x0000                      #
OP_RecipesFavorite=0x0000              #
OP_RecipesSearch=0x0000                      #
OP_RecipeReply=0x0000                      #
OP_RecipeAutoCombine=0x0000              #
OP_TradeSkillCombine=0x0840              # V 0x0840 04/03/12

# Tribute Packets:
OP_OpenGuildTributeMaster=0x0000      #
OP_OpenTributeMaster=0x0000              #
OP_SelectTribute=0x0000                      #
OP_TributeItem=0x0000                      #
OP_TributeMoney=0x0000                      #
OP_TributeToggle=0x0000                      #
OP_TributePointUpdate=0x0000              #
OP_TributeNPC=0x0000                      #
OP_GuildTributeInfo=0x28c1              # V 0x28c1 04/03/12
OP_OpenTributeReply=0x0000              #
# OP_GuildTributeStatus=0x6774              # V 0x6774 04/03/12

# Adventure packets:
OP_LeaveAdventure=0x0000              #       
OP_AdventureFinish=0x0000              #
OP_AdventureInfoRequest=0x0000              #       
OP_AdventureInfo=0x0000                      #
OP_AdventureRequest=0x0000              #
OP_AdventureDetails=0x0000              #
OP_AdventureData=0x0000                      #
OP_AdventureUpdate=0x0000              #
OP_AdventureMerchantRequest=0x0000    #
OP_AdventureMerchantResponse=0x0000    #
OP_AdventureMerchantPurchase=0x0000    #
OP_AdventureMerchantSell=0x0000              #
OP_AdventurePointsUpdate=0x0000              #
OP_AdventureStatsRequest=0x0000              #
OP_AdventureStatsReply=0x0000              #
OP_AdventureLeaderboardRequest=0x0000  #
OP_AdventureLeaderboardReply=0x0000    #

# Group Opcodes
OP_GroupInvite=0x3288                      # V 0x3288 04/03/12
OP_GroupFollow=0x74e9                      # V 0x74e9 04/03/12
OP_GroupUpdate=0x367f                      # V 0x367f 04/03/12
OP_GroupUpdate2=0x4b82                      # V 0x4b82 04/03/12
OP_GroupCancelInvite=0x2736              # V 0x2736 04/03/12
OP_GroupAcknowledge=0x0000              #
OP_GroupDelete=0x0000                      #
OP_CancelInvite=0x0000                      #
OP_GroupFollow2=0x44c2                      # V 0x44c2 04/03/12
OP_GroupInvite2=0x5251                      # V 0x5251 04/03/12
OP_GroupDisband=0x367b                      # V 0x367b 04/03/12
OP_GroupDisband2=0x4b82                      # V 0x4b82 04/03/12
OP_GroupLeaderChange=0x0000              #
OP_GroupRoles=0x6364                      # V 0x6364 04/03/12

# LFG/LFP Opcodes
OP_LFGCommand=0x68ac                      # V 0x68ac 04/03/12
OP_LFGGetMatchesRequest=0x20c6              # V 0x20c6 04/03/12
OP_LFGGetMatchesResponse=0x3d0c              # V 0x3d0c 04/03/12
OP_LFPGetMatchesRequest=0x35a6              # V 0x35a6 04/03/12
OP_LFPCommand=0x6f82                      # V 0x6f82 04/03/12
OP_LFGAppearance=0x0000                      #
OP_LFGResponse=0x0000                      #

# Raid Opcodes
OP_RaidInvite=0x0c08                      # V 0x0c08 04/03/12
OP_RaidUpdate=0x0000                      # 
OP_RaidJoin=0x550f                      # V 0x550f 04/03/12

# Button-push commands
OP_Taunt=0x0000                              #
OP_CombatAbility=0x0000                      #
OP_SenseTraps=0x5666                      # V 0x5666 04/03/12
OP_PickPocket=0x0000                      #
OP_DisarmTraps=0x34e8                      # V 0x34e8 04/03/12
OP_Disarm=0x0000                      #
OP_Sneak=0x4312                              # V 0x4312 04/03/12
OP_Fishing=0x0000                      #
OP_InstillDoubt=0x0000                      #
OP_FeignDeath=0x0000                      #
OP_Mend=0x14ef                              # V 0x14ef 04/03/12
OP_LDoNOpen=0x0000                      #

# Task packets
OP_TaskActivityComplete=0x0000              #
OP_TaskMemberList=0x0000              #
OP_OpenNewTasksWindow=0x0000              #
OP_AvaliableTask=0x0000                      #
OP_AcceptNewTask=0x0000                      #
OP_TaskHistoryRequest=0x0000              #
OP_TaskHistoryReply=0x0000              #
OP_CancelTask=0x0000                      #
OP_DeclineAllTasks=0x0000              #

# Title opcodes
OP_NewTitlesAvailable=0x0000              #
OP_RequestTitles=0x0000                      #
OP_SendTitleList=0x0000                      #
OP_SetTitle=0x0000                      #
OP_SetTitleReply=0x0000                      #

# 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=0x1ffa                      # V 0x1ffa 04/03/12
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_PlayMP3=0x0000                      #
OP_ReclaimCrystals=0x0000              #
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=0x0000              # U OP_SendSpellChecksum
#OP_LoginUnknown2=0x0000              # U OP_SendSkillCapsChecksum

# 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=0x0000
OP_Login=0x0000
OP_ServerListRequest=0x0000
OP_PlayEverquestRequest=0x0000
OP_PlayEverquestResponse=0x0000
OP_ChatMessage=0x0000
OP_LoginAccepted=0x0000
OP_ServerListResponse=0x0000
OP_Poll=0x0000
OP_EnterChat=0x0000
OP_PollResponse=0x0000

# 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=0x6537              # V 0x6537 04/03/12 initial HP update for mobs merc
OP_InitialHPUpdate=0x0000              #
OP_MercenaryDataRequest=0x33b8        # V 0x33b8 04/03/12
OP_MercenaryDataResponse=0x0327        # V 0x0327 04/03/12
OP_MercenaryHire=0x0000                #
OP_MercenaryAssign=0x0000              #
OP_MercenaryTimer=0x0000              #
OP_MercenaryDismiss=0x2ef8            # V 0x2ef8 04/03/12
OP_Mercenarysuspend=0x1a79            # V 0x1a79 04/03/12


Noport 04-06-2012 05:29 AM

VoA and HoT are using the same opcodes same client we can make opcode changes and have the latest client VoA. I have access to both HoT and VoA on sony

trevius 04-07-2012 03:48 AM

Noport, that is because HoT and VoA are the same client on Live. No matter what expansions you own or do not own, there is no difference in clients when you are fully patched to Live. If you are referring to the clients that are compatible with EQEmu, then HoT and VoA are 2 different build dates and use different opcodes and packet structures.

Anyway, I got the issue with it crashing out fixed. Now, the Live/VoA client can log in and quite a bit is functional, but there is still quite a bit that needs to be done to make it even playable. I will probably try to get what I have done up on the SVN soon and just comment out the patch registration for VoA until it is more finalized. That way, people can work on it or test it out in the meantime.

Noport 04-07-2012 04:44 AM

Thank you trevius that sounds like a great plan

trevius 04-07-2012 05:25 AM

OK, I got it committed if anyone wants to play around with it or maybe work on some stuff. See the changelog for a few notes on how to enable VoA and also what not to do (like test in a zone empty of NPCs and don't have items in your bank).

Here is a quick list of some priorities that need to be fixed:

1. Non-Player Race Spawns
2. Item Slots
3. AAs (I think they might just be missing an opcode now because the client excepts the AA tables and they match what I see on Live).
4. Casting

I am sure there are many more, but until spawns are working, we are limited in what can be done/tested. I know Derision is the spawn struct master, so maybe he has something worked out for them already somewhere.

I may not have much time to work on this over the rest of the weekend, but I plan to figure out the item slot stuff first if I can and have time.

Derision 04-07-2012 10:21 AM

I've updated the spawn encode based on what ShowEQ uses. I went to several zones and none-player races seemed to spawn OK now.

Something appears to be not quite right, as players and NPCs seem smaller than they should be.

I added an extra uint32 to the EquipStruct and removed the corresponding number of bytes from the PlayerProfile.

I also fixed zoning while I was at it.

EDIT: I found I was crashing when zoning into PoK, which I narrowed down to the struct for OP_TaskActivity having changed (looks like an extra 4 bytes added).

Since the TaskActivity struct is a variable sized one and it wasn't trivial to write an encode for it in a couple of minutes, I just commented out OP_TaskDescription and OP_TaskActivity in my local copy of patch_VoA.conf.

gibroni 04-07-2012 02:36 PM

so if i wanted to mess with this at all, i need to purchase VoA or just use the f2p live client?

Derision 04-07-2012 02:47 PM

Quote:

Originally Posted by gibroni (Post 208698)
so if i wanted to mess with this at all, i need to purchase VoA or just use the f2p live client?

The current f2p live client.

trevius 04-07-2012 06:24 PM

Thanks Derision, that all looks really good.

I got normal item slots figured out and a function made for VoA conversion to Titanium. I still need to make the one for the other way around. I also need to add the new conversion to all encodes and decodes that need it. Though it still won't work for the new larger than 10 slot bags or the 2 new inventory slots. For those to work, it is going to take quite a few adjustments all over the source. I figure we will just need to handle all slots like live and then convert all older clients to the new system.

I will commit the slot stuff later when more of it is in place.

Irreverent 04-17-2012 09:33 AM

I'm going to enable this on my server, as my wonderful testers are great at finding things and coming back with objective observations.

To make sure we're both apples(or oranges) What compiler, OS, and perl version are you using?

Currently Server'03, Express'08, and Perl 5.10

Obviously, I will have to update to 2010 to use queryserv which is being used by LFGu function.

trevius 04-17-2012 11:00 AM

Quote:

Originally Posted by Irreverent (Post 208937)
To make sure we're both apples(or oranges) What compiler, OS, and perl version are you using?

Currently Server'03, Express'08, and Perl 5.10

Obviously, I will have to update to 2010 to use queryserv which is being used by LFGu function.

I run Linux, so that stuff isn't really relevant for me.

If you were able to compile the source in the past, you should have no trouble doing it the same way now. Though, I don't know much about what is required for queryserv other than maybe VS2010 like you mentioned. Using queryserv is optional though, if you are having troubles compiling it.

sorvani 04-17-2012 11:06 AM

Queryserv compiles in 2008 with perl 5.12. I never tried to do it with 5.10

blackdragonsdg 04-17-2012 03:58 PM

Queryserv compiles fine with perl 5.10 in VS2008.


All times are GMT -4. The time now is 01:00 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.