EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=590)
-   -   Starting Work on SoF Opcodes/Structs (https://www.eqemulator.org/forums/showthread.php?t=26939)

trevius 12-06-2008 06:29 AM

I am starting work on getting EQEmu to work with Secrets of Faydwer, since it appears that it will be the last retail pack that includes all previous expansions that SoE is going to offer. Currently, I am just trying to be able to log in with it, but no luck just yet. I pulled a bunch of opcodes from SEQs nearest release to when SoF came out, and put them into the anniversary opcodes file (since I can't seem to get it to compile when I create SoF patch files). I think I can still pull more opcodes and see if that helps, but at the point it is failing, I think I will need to start trying to find the structures from SEQ and edit them into the EQEmu code.

Just wanted to mention that I am starting on this, in case anyone else is interested :) I figure that if I can get it to at least log into the world, I can start working out the rest of the opcodes and structs from that point on. Once we have enough for basic play, I think it will be ready to update the SVN with it and all can work on it together. I figure that the way Derision used to pull opcodes from 6.2 and find the opcodes in Titanium should work for finding SoF opcodes as well.

Not getting very far yet, but I am determined lol. I figured that with a bit of research and learning a few things, I can make at least some progress. ATM, I think I still need the proper Opcodes to use for SoF. Once I have those, I think I will have to start on Packet Structures. I have found some decent info from the source in SEQ, but it is hard to tell which to trust, EQEmu source, or SEQ source lol.

From my EQ Debug Logs:
Code:

[Sat Dec 06 06:17:26 2008]00035:WorldAuthenticate: Initiating Login.
[Sat Dec 06 06:17:33 2008]00036:WorldAuthenticate.  I got a message of type 0x51bc (20924).
[Sat Dec 06 06:17:33 2008]00037:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE

[Sat Dec 06 06:17:33 2008]00038:WorldAuthenticate.  I got a message of type 0x4762 (18274).
[Sat Dec 06 06:17:33 2008]00039:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE

[Sat Dec 06 06:17:33 2008]00040:WorldAuthenticate.  I got a message of type 0x701f (28703).
[Sat Dec 06 06:17:33 2008]00041:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE

[Sat Dec 06 06:17:33 2008]00042:WorldAuthenticate.  I got a message of type 0x399f (14751).
[Sat Dec 06 06:17:33 2008]00043:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE

[Sat Dec 06 06:17:33 2008]00044:WorldAuthenticate.  I got a message of type 0x52a4 (21156).
[Sat Dec 06 06:17:33 2008]00045:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE

[Sat Dec 06 06:17:33 2008]00046:WorldAuthenticate.  I got a message of type 0x7519 (29977).
[Sat Dec 06 06:17:33 2008]00047:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE

[Sat Dec 06 06:17:33 2008]00048:WorldAuthenticate.  I got a message of type 0xf14 (3860).
[Sat Dec 06 06:17:33 2008]00049:*** ERROR: WorldAuthenticate.  ??? UNKNOWN MESSAGE


trevius 12-07-2008 09:23 AM

So Far, I have the following Opcodes correct for sure:

Code:

OP_SendLoginInfo=0x6c3c        #Trevius 12/07/08 - Verified Correct!
OP_PostEnterWorld=0x1AEE        #Trevius 12/07/08 - Verified Correct!

And, now I need the following to make further progress:

Code:

OP_GuildsList
OP_LogServer
OP_ApproveWorld
OP_EnterWorld
OP_ExpansionInfo
OP_SendCharInfo

I found OP_SendLoginInfo by watching the opcodes coming in by using a tail on the server logs. I am starting to get the hang of reading through the disassembled code and that is how I found the OP_PostEnterWorld opcode. I haven't been able to find any using Derision's method yet, but right now, I am just feeding through the ones that have text in the code that I can reference. I found "WorldAuthenticate. Access granted" in plain text of the disassembled code and by referencing the code from Titanium and the known opcodes, it wasn't hard to find the correct one for SoF. Hopefully, as I become more familiar with the disassembled code, I will get better at finding this stuff.

KLS 12-07-2008 09:56 PM

There's a lot of different things we'll have to deal with with the SoF client too. Death and out of combat regen are a bit different and probably a billion different structures. Good luck, you're braver than I. =p

trevius 12-08-2008 01:31 AM

Ya, I figure if worse comes to worse, at least I am learning something along the way, which is always a good thing :)

My current plan is to find as many opcodes as I can. I think once I get the hang of it, it won't be too bad to find many of them. As long as I can get the important ones going, then I can move onto the next step. The next step will be to see if I can figure out how to collect packet structures from EQLive, and then compare the Titanium structures to the Live structures and see if I can figure out what might work for SoF. I imagine that the structures from SoF are still fairly close to Live in alot of ways. By looking at the added features from each expansion, it might not be too hard to figure out what to add/remove and where. I think then the main issue will be making sure that everything takes up the correct space in the structs, since that will be hard to guess. Once the old and new structures are compared, we can probably narrow it down to a few questionable pieces and try to resolve those. I also think that SEQ source might be of some help. Though, I am not sure how exact their structures are for their releases.

Nothing ever gets done by lack of trying. Gotta start somewhere I guess, lol. I figure that if I can get a good start on this, maybe some people will see the progress and jump on board to help and finish it off quicker.

KLS 12-08-2008 02:57 AM

Also might be worth seeing if showEQ has a patch that matches with SoF client, not sure if you have or not. They usually figure out most of the really big structures and opcodes.

trevius 12-08-2008 05:44 AM

Ya, SoF was released on November 13, 2007 according to it's wiki page, and SEQ has patches for Nov 21, 28, and Dec 17. The Opcode update wasn't until Dec 17.

Here is the list of SEQ releases:
http://sourceforge.net/project/showf...ckage_id=13256

Here is a post about some changes after the expansion:
http://www.showeq.net/forums/showthr...3&page=5&pp=15

And more changes discussion after the patch here:
http://www.showeq.net/forums/showthr...?t=5943&page=4

The Opcodes I could find from the SEQ code don't seem to work. At least the ones I have tried so far. Though, I don't think they change them all with each patch, so maybe some of them will still work.

At least it looks like they have some good struct info, or at least something to work with. It is too bad our 2 projects don't really work together, because we could both share the load in working on stuff like this and EQEmu would have been updated long ago :P

Here are some of their change logs to give a timeframe idea of what they did and when:

Quote:

ieatacid (1/21/08)
----------------
+ Updated version to 5.12.1.0
+ Updated Opcodes
+ Updated structs (thanks ksmith for help with playerSpawnPosStruct bit fields)

BlueAdept (12/16/07)
----------------
+ Updated version to 5.12.0
+ Updated Opcodes (ieatacid)
+ Removed all the obfuscator stuff (ieatacid)

BlueAdept (11/21/07)
----------------
+ Updated version to 5.11.0
+ Updated structs (ieatacid)
+ Updated character level to 80 (ieatacid)

BlueAdept (11/05/07)
----------------
+ Updated version to 5.10.0
+ Added opcode decryption (purple, ieatacid)
+ Updated opcodes to current build
+ Changed version to correct numbering
So, it looks like we should be able to get at least some needed struct stuff from them, and maybe some opcodes, if they didn't all change by the time of the Dec 17th update.

trevius 12-08-2008 06:17 AM

Wow! I found some more good opcodes from the SEQ code that was just mislabelled on the date it was last updated. I finally made it to character select :)

Code:

[Mon Dec 08 04:07:32 2008]00035:WorldAuthenticate: Initiating Login.
[Mon Dec 08 04:07:40 2008]00036:WorldAuthenticate.  I got a message of type 0x4fb (1275).
[Mon Dec 08 04:07:40 2008]00037:WorldAuthenticate.  I got a message of type 0x129a (4762).
[Mon Dec 08 04:07:40 2008]00038:WorldRPServer message: server name stormhaven

[Mon Dec 08 04:07:40 2008]00039:WorldAuthenticate.  I got a message of type 0x7fc0 (32704).
[Mon Dec 08 04:07:40 2008]00040:WorldAuthenticate.  I got a message of type 0x1340 (4928).
[Mon Dec 08 04:07:40 2008]00041:WorldAuthenticate.  I got a message of type 0x1aee (6894).
[Mon Dec 08 04:07:40 2008]00042:WorldAuthenticate.  Access granted.

[Mon Dec 08 04:07:40 2008]00043:WorldAuthenticate.  I got a message of type 0xa1b (2587).

Here are the correct Opcodes so far:
Code:

#Required to reach Char Select:
OP_SendLoginInfo=0x6c3c                #SEQ 12/04/08
OP_ApproveWorld=0x7FC0                #SEQ 12/04/08
OP_LogServer=0x129A                #SEQ 12/04/08
OP_SendCharInfo=0x6040                #SEQ 12/04/08
OP_ExpansionInfo=0x0A1B                #SEQ 12/04/08
OP_GuildsList=0x04FB                #SEQ 12/04/08
OP_EnterWorld=0x1340                #SEQ 12/04/08
OP_PostEnterWorld=0x1AEE                #SEQ 12/04/08
OP_SendSpellChecksum=0x7A9E                #SEQ 12/04/08
OP_World_Client_CRC1=0x3795                #SEQ 12/04/08
OP_World_Client_CRC2=0x45F9                #SEQ 12/04/08

I found them in a file attached to this post:
http://www.showeq.net/forums/showthread.php?t=5975

Here is where it is failing now, from my EQ Log File:
Code:

[Mon Dec 08 04:09:12 2008]00194:THE SERVER IS NOT RESPONDING.
[Mon Dec 08 04:09:12 2008]00195:
end of DisplayScreen

[Mon Dec 08 04:09:14 2008]00196:TIMED OUT WAITING FOR ZONE ADDR

[Mon Dec 08 04:09:14 2008]00197:Networking: Connection Closed [0] with 0 pending bytes.

Not much info from there, but from the tail I am running on my server logs, I found this:
Code:

6825 [12.08. - 01:35:50] [NET__IDENT_TRACE] 192.168.1.101:3874: First opcode matched 0x6c3c and length matched 464
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] [OpCode OP_SendLoginInfo (0x6c3c) Size=464]
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0x4fb (OP_GuildsList) and length 96064
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x00fe
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0x129a (OP_LogServer) and length 264
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x00fd
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0x7fc0 (OP_ApproveWorld) and length 544
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0108
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0x1340 (OP_EnterWorld) and length 1
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0109
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0x1aee (OP_PostEnterWorld) and length 0
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0103
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0xa1b (OP_ExpansionInfo) and length 4
6825 [12.08. - 01:35:50] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0102
6825 [12.08. - 01:35:50] [NET__APP_TRACE] Queueing acked packet with opcode 0x6040 (OP_SendCharInfo) and length 1589
6825 [12.08. - 01:35:58] [WORLD__CLIENT_TRACE] [OpCode OP_ApproveWorld (0x7fc0) Size=272]
6825 [12.08. - 01:36:07] Unable to convert EQ opcode 0x7a9e to an Application opcode.
6825 [12.08. - 01:36:07] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x7a9e) Size=2056]
6825 [12.08. - 01:36:07] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x7a9e) Size=2056]
6825 [12.08. - 01:36:07] [WORLD__CLIENT_TRACE] [OpCode OP_World_Client_CRC1 (0x3795) Size=2056]
6825 [12.08. - 01:36:07] Unable to convert EQ opcode 0x22cf to an Application opcode.
6825 [12.08. - 01:36:07] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x22cf) Size=2056]
6825 [12.08. - 01:36:07] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x22cf) Size=2056]
6825 [12.08. - 01:36:07] Unable to convert EQ opcode 0x43ba to an Application opcode.
6825 [12.08. - 01:36:07] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x43ba) Size=2056]
6825 [12.08. - 01:36:07] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x43ba) Size=2056]
6825 [12.08. - 01:36:33] Unable to convert EQ opcode 0x4d38 to an Application opcode.
6825 [12.08. - 01:36:33] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x4d38) Size=4]
6825 [12.08. - 01:36:33] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x4d38) Size=4]
6825 [12.08. - 01:36:33] Unable to convert EQ opcode 0x2ebd to an Application opcode.
6825 [12.08. - 01:36:33] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x2ebd) Size=0]
6825 [12.08. - 01:36:33] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x2ebd) Size=0]
6825 [12.08. - 01:36:44] [WORLD__CLIENT_TRACE] [OpCode OP_EnterWorld (0x1340) Size=72]
6825 [12.08. - 01:36:44] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x00ff
6825 [12.08. - 01:36:44] [NET__APP_TRACE] Queueing acked packet with opcode 0x192e (OP_MOTD) and length 403
6825 [12.08. - 01:36:44] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010d
6825 [12.08. - 01:36:44] [NET__APP_TRACE] Queueing acked packet with opcode 0x26c4 (OP_SetChatServer) and length 58
6825 [12.08. - 01:36:44] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010e
6825 [12.08. - 01:36:44] [NET__APP_TRACE] Queueing acked packet with opcode 0x1c20 (OP_SetChatServer2) and length 58
[Debug] [ZONE__WORLD_TRACE] Got 0x0031 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0008 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0006 from world:
6825 [12.08. - 01:36:45] [WORLD__CLIENTLIST] ClientList[0x08152540]::FindByAccountID(0x2) iterator.GetData()[0x8173890]
6825 [12.08. - 01:36:45] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010f
6825 [12.08. - 01:36:45] [NET__APP_TRACE] Queueing acked packet with opcode 0x13da (OP_ZoneServerInfo) and length 130


trevius 12-08-2008 09:03 AM

I pulled some more opcodes from the SEQ source. I didn't get them all yet, but from what I can tell, most (or maybe all) of these seem good so far:

Code:

#world packets
#Required to reach Char Select:
OP_SendLoginInfo=0x6c3c                        #SEQ 12/04/08
OP_ApproveWorld=0x7FC0                        #SEQ 12/04/08
OP_LogServer=0x129A                        #SEQ 12/04/08
OP_SendCharInfo=0x6040                        #SEQ 12/04/08
OP_ExpansionInfo=0x0A1B                        #SEQ 12/04/08
OP_GuildsList=0x04FB                        #SEQ 12/04/08
OP_EnterWorld=0x1340                        #SEQ 12/04/08
OP_PostEnterWorld=0x1AEE                #SEQ 12/04/08
OP_SendSpellChecksum=0x7A9E                #SEQ 12/04/08
OP_World_Client_CRC1=0x3795                #SEQ 12/04/08
OP_World_Client_CRC2=0x45F9                #SEQ 12/04/08

#Character Select Related:
OP_DeleteCharacter=0x789F                #SEQ 12/04/08 0x26C9
OP_CharacterCreate=0x7E32                #SEQ 12/04/08 0x6160
OP_RandomNameGenerator=0x23D4                #SEQ 12/04/08 0x4849
OP_ApproveName=0x3EA6                        #SEQ 12/04/08 0x413F

OP_MOTD=0x5711                                #SEQ 12/04/08 0x192E
OP_SetChatServer=0x71B8                        #SEQ 12/04/08 0x26C4
OP_SetChatServer2=0x32CC                #SEQ 12/04/08 0x1C20
OP_ZoneServerInfo=0x18B1                #SEQ 12/04/08 0x13DA
OP_WorldComplete=0x2486                        #SEQ 12/04/08 0x3331

#Reasons for Disconnect:
OP_ZoneUnavail=0x0264                        #SEQ 12/04/08  0x407C
OP_WorldClientReady=0x3854                #SEQ 12/04/08 0x5E99
OP_ObfuscatorInfo=0x7930                #NEW FROM SEQ 12/04/08

OP_UserCompInfo=0x02a5                        #NEW FROM SEQ 12/04/08
#OP_SendExeChecksum=0x1CB3                #SEQ 12/04/08
#OP_SendBaseDataChecksum=0x679D                #SEQ 12/04/08
OP_SendSkillCapsChecksum=0x45F9                #SEQ 12/04/08 0x21C7

#Zone in opcodes
OP_ZoneEntry=0x737E                        #SEQ 12/04/08 0x7213
OP_AckPacket=0x4D38                        #SEQ 12/04/08 0x7752
OP_NewZone=0x5D22                        #SEQ 12/04/08 0x0ADC -- From SEQ Forums after the patch 
OP_ReqClientSpawn=0x45D2                #SEQ 12/04/08 0x0322
OP_ZoneSpawns=0x5AF2                        #SEQ 12/04/08 0x1900
OP_CharInventory=0x08A3                #SEQ 12/04/08 0x5394 -- OP_ItemPlayerPacket
OP_SetServerFilter=0x7038                #SEQ 12/04/08 0x6563
OP_LockoutTimerInfo=0x062c                #SEQ 12/04/08 0x7f63 -- OP_Lockouts
OP_SendZonepoints=0x2992                #SEQ 12/04/08 0x1932
OP_SpawnDoor=0x68C8                        #SEQ 12/04/08 0x1890
OP_ReqNewZone=0x5417                        #SEQ 12/04/08 0x7ac5
OP_PlayerProfile=0x0FEB                #SEQ 12/04/08 0x6022
OP_TimeOfDay=0x7274                        #SEQ 12/04/08 0x0175 -- From SEQ Forums after the patch
OP_LevelUpdate=0x1036                        #SEQ 12/04/08 0x6A99
OP_Stamina=0x45E2                        #SEQ 12/04/08 0x82D7

At this point, it looks like I need to resolve a struct issue with ClientZoneEntry to progress further forward. I have tried variations of structures, but none seem to work yet. I am starting to think that the error I am getting is from the player profile structure being wrong and not the structure for getting the player's first name from ClientZoneEntry. I will go through the player profile structure next and compare them. But, if my logs are correct, it looks like alot of the structs we currently have are already correct. Here are my most recent logs (I marked in RED where I think the current issue is):

Code:

13296 [12.08. - 04:08:47] [WORLD__CLIENT_TRACE] [OpCode OP_AckPacket (0x4d38) Size=4]
13296 [12.08. - 04:08:47] Unable to convert EQ opcode 0x2ebd to an Application opcode.
13296 [12.08. - 04:08:47] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x2ebd) Size=0]
13296 [12.08. - 04:08:47] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x2ebd) Size=0]
13296 [12.08. - 04:08:56] [WORLD__CLIENT_TRACE] [OpCode OP_EnterWorld (0x1340) Size=72]
13296 [12.08. - 04:08:56] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x00ff
13296 [12.08. - 04:08:56] [NET__APP_TRACE] Queueing acked packet with opcode 0x5711 (OP_MOTD) and length 403
13296 [12.08. - 04:08:56] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010d
13296 [12.08. - 04:08:56] [NET__APP_TRACE] Queueing acked packet with opcode 0x71b8 (OP_SetChatServer) and length 58
13296 [12.08. - 04:08:56] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010e
13296 [12.08. - 04:08:56] [NET__APP_TRACE] Queueing acked packet with opcode 0x32cc (OP_SetChatServer2) and length 58
13296 [12.08. - 04:08:56] [WORLD__CLIENTLIST] ClientList[0x08152540]::FindByAccountID(0x2) iterator.GetData()[0x81746d8]13296 [12.08. - 04:08:56] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010f
13296 [12.08. - 04:08:56] [NET__APP_TRACE] Queueing acked packet with opcode 0x18b1 (OP_ZoneServerInfo) and length 130
[ProtoOpCode 0x0015 Size=2]
[ProtoOpCode 0x0009 Size=4]
13296 [12.08. - 04:08:56] [WORLD__CLIENT_TRACE] [OpCode OP_WorldComplete (0x2486) Size=0]
[Debug] [ZONE__WORLD_TRACE] Got 0x0031 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0008 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0006 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0027 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0024 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x200e from world:
[Debug] [NET__NET_TRACE] 192.168.1.101:4185: Sending OP_SessionResponse: session 547790791, maxlen=512, key=0x11223344, compressed? yes, encoded? no
[ProtoOpCode 0x0009 Size=8]
[ProtoOpCode 0x0009 Size=72]
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4185: First opcode 0x4d38 did not match expected 0x2792
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4185: First opcode 0x4d38 did not match expected 0x2ec9
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4185: First opcode 0x4d38 did not match expected 0x4dd0
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4185: First opcode 0x4d38 did not match expected 0x7213
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4185: First opcode 0x4d38 did not match expected 0x6c3c
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4185: First opcode matched 0x737e and length matched 68
[Debug] [CLIENT__NET_IN_TRACE] No name: Dispatch opcode: [OpCode OP_AckPacket (0x4d38) Size=4]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] No name: [OpCode OP_AckPacket (0x4d38) Size=4]
[Debug] [CLIENT__NET_IN_TRACE] No name: Dispatch opcode: [OpCode OP_ZoneEntry (0x737e) Size=68]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] No name: [OpCode OP_ZoneEntry (0x737e) Size=68]

[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0xfeb (OP_PlayerProfile) and length 23431
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x737e (OP_ZoneEntry) and length 900
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x7274 (OP_TimeOfDay) and length 8
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x5639 (OP_TributeUpdate) and length 48
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x4665 (OP_TributeTimer) and length 4
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x8a3 (OP_CharInventory) and length 4
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x5ef7 (OP_TaskDescription) and length 325
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 72
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x76a2 (OP_CompletedTasks) and length 60
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x254d (OP_Weather) and length 12
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x3cdc (OP_LogoutReply) and length 0


trevius 12-08-2008 09:13 AM

Hmm, I guess the section in red in the logs above aren't the issue. That seems to be normal when I compare it to these logs from a Titanium login that works:

Code:

13958 [12.08. - 04:33:25] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0103
13958 [12.08. - 04:33:25] [NET__APP_TRACE] Queueing acked packet with opcode 0x4ec (OP_ExpansionInfo) and length 4
13958 [12.08. - 04:33:25] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0102
13958 [12.08. - 04:33:25] [NET__APP_TRACE] Queueing acked packet with opcode 0x4513 (OP_SendCharInfo) and length 1704
13958 [12.08. - 04:33:32] [WORLD__CLIENT_TRACE] [OpCode OP_ApproveWorld (0x3c25) Size=272]
13958 [12.08. - 04:33:33] [WORLD__CLIENT_TRACE] [OpCode OP_World_Client_CRC1 (0x5072) Size=2056]
13958 [12.08. - 04:33:33] [WORLD__CLIENT_TRACE] [OpCode OP_World_Client_CRC2 (0x5b18) Size=2056]
[ProtoOpCode 0x0009 Size=8]
13958 [12.08. - 04:34:03] [NET__NET_CREATE_HEX] 1969-12-31 18:00:03.000000 [ProtoOpCode 0x0009 Size=4]
13958 [12.08. - 04:34:03] [WORLD__CLIENT_TRACE] [OpCode OP_AckPacket (0x7752) Size=4]
13958 [12.08. - 04:34:03] [WORLD__CLIENT_TRACE] [OpCode OP_WorldClientReady (0x5e99) Size=0]
13958 [12.08. - 04:34:42] [WORLD__CLIENT_TRACE] [OpCode OP_EnterWorld (0x7cba) Size=72]
13958 [12.08. - 04:34:42] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x00ff
13958 [12.08. - 04:34:42] [NET__APP_TRACE] Queueing acked packet with opcode 0x24d (OP_MOTD) and length 403
13958 [12.08. - 04:34:42] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010d
13958 [12.08. - 04:34:42] [NET__APP_TRACE] Queueing acked packet with opcode 0xd7 (OP_SetChatServer) and length 58
13958 [12.08. - 04:34:42] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010e
13958 [12.08. - 04:34:42] [NET__APP_TRACE] Queueing acked packet with opcode 0x6536 (OP_SetChatServer2) and length 58
[Debug] [ZONE__WORLD_TRACE] Got 0x0031 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0008 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0006 from world:
13958 [12.08. - 04:34:42] [WORLD__CLIENTLIST] ClientList[0x08152540]::FindByAccountID(0x2) iterator.GetData()[0x8173900]13958 [12.08. - 04:34:42] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010f
13958 [12.08. - 04:34:42] [NET__APP_TRACE] Queueing acked packet with opcode 0x61b6 (OP_ZoneServerInfo) and length 130
[ProtoOpCode 0x0015 Size=2]
[ProtoOpCode 0x0009 Size=4]
13958 [12.08. - 04:34:43] [WORLD__CLIENT_TRACE] [OpCode OP_WorldComplete (0x509d) Size=0]
[Debug] [ZONE__WORLD_TRACE] Got 0x0027 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x0024 from world:
[Debug] [ZONE__WORLD_TRACE] Got 0x200e from world:
[Debug] [NET__NET_TRACE] 192.168.1.101:4296: Sending OP_SessionResponse: session 767659547, maxlen=512, key=0x11223344, compressed? yes, encoded? no
[Debug] [NET__NET_CREATE_HEX] 1969-12-31 18:04:16.000000 [ProtoOpCode 0x0009 Size=8]
[ProtoOpCode 0x0009 Size=72]
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4296: First opcode 0x7752 did not match expected 0x2792
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4296: First opcode 0x7213 did not match expected 0x2ec9
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4296: First opcode 0x7752 did not match expected 0x4dd0
[Debug] [NET__IDENT_TRACE] 192.168.1.101:4296: First opcode matched 0x7213 and length matched 68
[Debug] [CLIENT__NET_IN_TRACE] No name: Dispatch opcode: [OpCode OP_AckPacket (0x7752) Size=4]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] No name: [OpCode OP_AckPacket (0x7752) Size=4]
[Debug] [CLIENT__NET_IN_TRACE] No name: Dispatch opcode: [OpCode OP_ZoneEntry (0x7213) Size=68]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] No name: [OpCode OP_ZoneEntry (0x7213) Size=68]
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x75df (OP_PlayerProfile) and length 19592
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x7213 (OP_ZoneEntry) and length 385
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x1580 (OP_TimeOfDay) and length 8
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x5639 (OP_TributeUpdate) and length 48
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x4665 (OP_TributeTimer) and length 4
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x5394 (OP_CharInventory) and length 78352
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x5ef7 (OP_TaskDescription) and length 325
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 72
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x682d (OP_TaskActivity) and length 28
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x76a2 (OP_CompletedTasks) and length 60
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x254d (OP_Weather) and length 12
[ProtoOpCode 0x0015 Size=2]
[ProtoOpCode 0x0009 Size=8]
[Debug] [CLIENT__NET_IN_TRACE] Trevazar: Dispatch opcode: [OpCode OP_AckPacket (0x7752) Size=4]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] Trevazar: [OpCode OP_AckPacket (0x7752) Size=4]
[Debug] [CLIENT__NET_IN_TRACE] Trevazar: Dispatch opcode: [OpCode OP_ReqNewZone (0x7ac5) Size=0]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] Trevazar: [OpCode OP_ReqNewZone (0x7ac5) Size=0]
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x920 (OP_NewZone) and length 700
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x2a28 (OP_CustomTitles) and length 4
[ProtoOpCode 0x0015 Size=2]
[ProtoOpCode 0x0009 Size=4]
[ProtoOpCode 0x0009 Size=4]
[Debug] [CLIENT__NET_IN_TRACE] Trevazar: Dispatch opcode: [OpCode OP_SendAATable (0x367d) Size=0]
[Debug] [CLIENT__NET_IN_TRACE] [CLIENT__NET_IN_TRACE] Trevazar: [OpCode OP_SendAATable (0x367d) Size=0]

The previous logs are all grepping on "0x" to catch all opcodes. Here are some more detailed logs of exactly when the failure happens with the SoF client:
Code:

14299 [12.08. - 04:45:48] [WORLD__CLIENTLIST] ClientList[0x08152540]::FindByAccountID(0x2) iterator.GetData()[0x8173520]14299 [12.08. - 04:45:48] [WORLD__CLIENT] trevadmin: Sending client to zone load (184) at 192.168.1.102:7503
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x010f
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] [OpCode OP_ZoneServerInfo Size=130]
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0000: 31 39 32 2e 31 36 38 2e - 31 2e 31 30 32 00 00 00  | 192.168.1.102...
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0016: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0032: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0048: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0064: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0080: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0096: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0112: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] 0128: 4f 1d                  -                          | O.
14299 [12.08. - 04:45:48] [NET__APP_TRACE] Queueing acked packet with opcode 0x18b1 (OP_ZoneServerInfo) and length 130
14299 [12.08. - 04:45:48] [NET__APP_TRACE] 192.168.1.101:4316: Pushing sequenced packet 202 of length 134. Base Seq is 202.
14299 [12.08. - 04:45:48] [NET__NET_COMBINE] 192.168.1.101:4316: Starting combined packet with seq packet 202 of len 13414299 [12.08. - 04:45:48] [NET__NET_COMBINE] 192.168.1.101:4316: Final combined packet not full, len 134
14299 [12.08. - 04:45:48] [NET__NET_CREATE] 192.168.1.101:4316: Extracting combined packet of length 4
14299 [12.08. - 04:45:48] [NET__NET_CREATE_HEX] 2030-10-13 02:40:48.2053207653 [216.66.23.8:0->0.0.0.2:64000]
[ProtoOpCode 0x0015 Size=2]

14299 [12.08. - 04:45:48] [NET__NET_CREATE_HEX] 0000: 00 ca                  -                          | ..
14299 [12.08. - 04:45:48] [NET__NET_ACKS] 192.168.1.101:4316: Received an ack with no window advancement (seq 202).
14299 [12.08. - 04:45:48] [NET__NET_CREATE] 192.168.1.101:4316: Extracting combined packet of length 6
14299 [12.08. - 04:45:48] [NET__NET_CREATE_HEX] 1974-04-21 20:19:36.000000 [216.66.23.8:17720->56.69.172.183:47020]
[ProtoOpCode 0x0009 Size=4]

14299 [12.08. - 04:45:48] [NET__NET_CREATE_HEX] 0000: 00 19 86 24            -                          | ...$
14299 [12.08. - 04:45:48] [NET__NET_ACKS] 192.168.1.101:4316: Set Next Ack To Send to 25
14299 [12.08. - 04:45:48] [NET__APP_CREATE] 192.168.1.101:4316: Creating new application packet, length 2
14299 [12.08. - 04:45:48] [NET__APP_CREATE_HEX] 0000: 86 24                  -                          | .$
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] trevadmin: Recevied EQApplicationPacket
14299 [12.08. - 04:45:48] [WORLD__CLIENT_TRACE] [OpCode OP_WorldComplete (0x2486) Size=0]
14299 [12.08. - 04:45:48] [NET__DEBUG] 192.168.1.101:4316: Stream requested to Close(), but there is pending data, waiting for it.
14299 [12.08. - 04:45:48] [NET__NET_TRACE] 192.168.1.101:4316: Changing state from 0 to 1
14299 [12.08. - 04:45:48] [WORLD__CLIENT] trevadmin: Client disconnected (not active in process)
14299 [12.08. - 04:45:48] [WORLD__CLIENTLIST] Removing client from 192.168.1.101:4316
14299 [12.08. - 04:45:48] [NET__DEBUG] 192.168.1.101:4316: Stream requested to Close(), but there is pending data, waiting for it.

It looks like it happens right after the OP_WorldComplete comes in, so maybe that has something to do with it.

John Adams 12-08-2008 04:09 PM

Wow, nice work trevius. I can't help in the slightest, but I make a decent cheerleader. :)

Go Go T!

trevius 12-13-2008 05:53 AM

I have been working alot on this over the past couple of days, but I am still not able to get in world yet. I am not exactly sure what is killing it yet, but it appears to be related to the structs for the playerprofile not being perfect. Here is the log from my EQ Debug Logs:


Code:

[Sat Dec 13 03:23:44 2008]00593:Zone Connect -- 0 -- Received MSG_ZONE_ADDRESS
[Sat Dec 13 03:23:44 2008]00594:Zone addr [192.168.1.102:20253] received...
[Sat Dec 13 03:23:44 2008]00595:ZONING
[Sat Dec 13 03:23:44 2008]00596:Networking: Connection Closed [0] with 0 pending bytes.
[Sat Dec 13 03:23:44 2008]00597:Networking: using port [4628].
[Sat Dec 13 03:23:44 2008]00598:Networking: Connection Established [1]
[Sat Dec 13 03:23:44 2008]00599:Connected to 192.168.1.102:20253...

[Sat Dec 13 03:23:44 2008]00600:Zone Connect -- 2 -- Sending MSG_EQ_ADDPLAYER
[Sat Dec 13 03:23:47 2008]00601:Zone Connect -- 3 -- Received MSG_SEND_PC
[Sat Dec 13 03:23:47 2008]00602:ERROR: Corrupt PC [2], disconnecting.

[Sat Dec 13 03:23:47 2008]00603:disconnected at C:\p4\EverQuest\live\EverQuest\EverQuest.cpp:17710 (char. select) g_world == NULL

[Sat Dec 13 03:23:47 2008]00604:Character is .

[Sat Dec 13 03:23:50 2008]00605:nError is TRUE at C:\p4\EverQuest\live\EverQuest\EverQuest.cpp:20972

[Sat Dec 13 03:23:50 2008]00606:Exiting normally.

And here are the complete unfiltered logs from the emulator with all logging turned on:
Code:

[Debug] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4240/4194 bytes
[Debug] [NET__NET_ACKS] 192.168.1.101:4755: Received an ack up through sequence 46. Our base is 45.
[Debug] [NET__NET_ACKS] 192.168.1.101:4755: Removing acked packet with sequence 45. Next send is 2 before this.
[Debug] [NET__NET_ACKS] 192.168.1.101:4755: Removing acked packet with sequence 46. Next send is 1 before this.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 47 of len 508
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 508, next seq packet 48 is len 399
[Debug] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4434/4194 bytes
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Received unsolicited OP_SessionDisconnect. Treating like a client-initiated disconnect.
[Debug] [NET__APP_TRACE] 192.168.1.101:4755: Pushing non-sequenced packet of length 4
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Sending OP_SessionDisconnect: session 1980402527
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Changing state from 0 to 3
Client linkdead: Trevazar
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x841 (OP_LogoutReply) and length 0
[Debug] [NET__APP_TRACE] 192.168.1.101:4755: Pushing sequenced packet 61 of length 4. Base Seq is 47.
[Debug] [NET__DEBUG] 192.168.1.101:4755: Stream closing immediate due to Close()
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Changing state from 3 to 2
[Debug] Client 'Trevazar' was destroyed before reaching the connected state:
[Debug] We successfully sent player info and spawns, waiting for client to request new zone.

==> eqemu_debug_zone.log <==
25708 [12.13. - 03:48:28] Client 'Trevazar' was destroyed before reaching the connected state:
25708 [12.13. - 03:48:28] We successfully sent player info and spawns, waiting for client to request new zone.
25708 [12.13. - 03:48:28] [NET__DEBUG] 192.168.1.101:4755: Stream requested to Close(), but there is pending data, waiting for it.
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Changing state from 2 to 1

==> eqemu_debug_world.log <==
25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0000: 02 02 00 00 00 c0 a8 01 - 65 b8 00 00 00 fa 00 02  | ........e.......25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0016: 00 00 00 54 72 65 76 61 - 7a 61 72 00 00 00 00 00  | ...Trevazar.....25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0032: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0048: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0064: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0080: 00 00 00 02 00 00 00 74 - 72 65 76 61 64 6d 69 6e  | .......trevadmin25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0096: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0112: 00 00 00 00 00 fb 8a 01 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0128: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0144: 00 00 00 00 00 00 00 4a - 01 01 4b 00 00 01 00 00  | .......J..K.....25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0160: 00 00 01 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0176: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0192: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0208: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................25686 [12.13. - 03:48:28] [WORLD__ZONE_TRACE] 0224: 00 00 00 00 00 00      -                          | ......

==> eqemu_debug_zone.log <==
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with non-seq packet of len 4
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 4, next seq packet 48 is len 399
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 48 of len 399
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 399, next seq packet 49 is len 12
25708 [12.13. - 03:48:28] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4523/4194 bytes
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 49 of len 12
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 50 of len 52, yeilding 70 combined.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 51 of len 8, yeilding 81 combined.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 52 of len 8, yeilding 92 combined.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 92, next seq packet 53 is len 329
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 53 of len 329
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 329, next seq packet 54 is len 76
25708 [12.13. - 03:48:28] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4316/4194 bytes
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 54 of len 76
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 55 of len 32, yeilding 114 combined.25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 56 of len 32, yeilding 149 combined.25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 57 of len 32, yeilding 184 combined.25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 58 of len 32, yeilding 219 combined.25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 219, next seq packet 59 is len 64
25708 [12.13. - 03:48:28] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4221/4194 bytes
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 59 of len 64
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 60 of len 16, yeilding 86 combined.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 61 of len 4, yeilding 93 combined.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Final combined packet not full, len 93
25708 [12.13. - 03:48:28] [NET__DEBUG] 192.168.1.101:4755: All outgoing data flushed, closing stream.
25708 [12.13. - 03:48:28] [NET__APP_TRACE] 192.168.1.101:4755: Pushing non-sequenced packet of length 4
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Sending OP_SessionDisconnect: session 1980402527
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Changing state from 1 to 2
25708 [12.13. - 03:48:28] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with non-seq packet of len 4
25708 [12.13. - 03:48:28] [NET__NET_COMBINE] 192.168.1.101:4755: Final combined packet not full, len 4

==> eqemu_debug_world.log <==
25686 [12.13. - 03:48:30] [WORLD__ZONE_TRACE] 0000: 00 00 00 00            -                          | ....

==> eqemu_zone.log <==
25708 [12.13. - 03:48:33] Zone Shutdown: load (184)
25708 [12.13. - 03:48:33] Zone shutdown: going to sleep

==> zone-dynamic_01.log <==
[Debug] [NET__DEBUG] 192.168.1.101:4755: Stream requested to Close(), but there is pending data, waiting for it.
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Changing state from 2 to 1
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with non-seq packet of len 4
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 4, next seq packet 48 is len 399
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 48 of len 399
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 399, next seq packet 49 is len 12
[Debug] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4523/4194 bytes
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 49 of len 12
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 50 of len 52, yeilding 70 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 51 of len 8, yeilding 81 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 52 of len 8, yeilding 92 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 92, next seq packet 53 is len 329
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 53 of len 329
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 329, next seq packet 54 is len 76
[Debug] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4316/4194 bytes
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 54 of len 76
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 55 of len 32, yeilding 114 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 56 of len 32, yeilding 149 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 57 of len 32, yeilding 184 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 58 of len 32, yeilding 219 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined packet full at len 219, next seq packet 59 is len 64
[Debug] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4221/4194 bytes
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with seq packet 59 of len 64
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 60 of len 16, yeilding 86 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Combined seq packet 61 of len 4, yeilding 93 combined.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Final combined packet not full, len 93
[Debug] [NET__DEBUG] 192.168.1.101:4755: All outgoing data flushed, closing stream.
[Debug] [NET__APP_TRACE] 192.168.1.101:4755: Pushing non-sequenced packet of length 4
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Sending OP_SessionDisconnect: session 1980402527
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Changing state from 1 to 2
[Debug] [NET__NET_TRACE] 192.168.1.101:4755: Received OP_OutOfSession. Ignoring.
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Starting combined packet with non-seq packet of len 4
[Debug] [NET__NET_COMBINE] 192.168.1.101:4755: Final combined packet not full, len 4
[Status] Zone Shutdown: load (184)
[Normal] Zone shutdown: going to sleep

The log above comes after this happens, which almost makes me think it is an issue with the spawns struct:

Code:

[Debug] [NET__FRAGMENT] 192.168.1.101:4755: Subsequent fragment: len 338, used 23610/23608.
[Debug] [NET__ERROR] Sending zone spawns
[Debug] [NET__ERROR] 0000: 00 00 00 00 00 00 00 00 - 00 d0 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0016: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0032: 00 00 00 00 00 00 00 03 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0048: 00 00 00 03 00 00 00 00 - 00 00 00 00 00 00 00 03  | ................
[Debug] [NET__ERROR] 0064: 00 00 00 00 00 00 00 00 - 00 00 00 13 00 00 00 00  | ................
[Debug] [NET__ERROR] 0080: 00 00 00 00 00 00 00 03 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0096: 00 00 00 03 00 00 00 00 - 00 00 00 00 00 00 00 a4  | ................
[Debug] [NET__ERROR] 0112: 28 00 00 00 00 00 00 00 - 00 00 00 fd 29 00 00 00  | (...........)...
[Debug] [NET__ERROR] 0128: 00 00 00 00 00 00 00 00 - 00 01 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0144: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 ff ff ff  | ................
[Debug] [NET__ERROR] 0160: ff ff ff ff ff 01 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0176: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0192: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0208: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0224: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0240: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0256: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0272: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0288: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0304: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0320: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0336: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0352: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 01  | ................
[Debug] [NET__ERROR] 0368: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0384: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0400: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0416: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0432: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0448: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0464: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0480: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0496: 00 00 00 00 00 00 00 00 - 48 40 00 00 00 00 00 4b  | ........H@.....K
[Debug] [NET__ERROR] 0512: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0528: 00 00 00 00 00 00 00 4a - 01 00 00 00 00 00 00 00  | .......J........
[Debug] [NET__ERROR] 0544: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0560: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0576: 00 00 00 00 6f 66 20 53 - 74 6f 72 6d 20 48 61 76  | ....of Storm Hav
[Debug] [NET__ERROR] 0592: 65 6e 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | en..............
[Debug] [NET__ERROR] 0608: 00 00 00 00 00 01 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0624: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0640: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 01  | ................
[Debug] [NET__ERROR] 0656: 00 00 74 68 65 20 4f 76 - 65 72 6c 6f 72 64 00 00  | ..the Overlord..
[Debug] [NET__ERROR] 0672: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0688: 00 00 00 00 4d 61 73 74 - 65 72 00 00 00 00 00 00  | ....Master......
[Debug] [NET__ERROR] 0704: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0720: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0736: 00 00 00 00 00 00 00 00 - 00 62 7f 00 00 00 00 47  | .........b.....G
[Debug] [NET__ERROR] 0752: 00 00 00 28 00 00 00 00 - 54 11 00 01 00 00 00 00  | ...(....T.......
[Debug] [NET__ERROR] 0768: 00 00 00 00 00 00 00 54 - 72 65 76 61 7a 61 72 00  | .......Trevazar.
[Debug] [NET__ERROR] 0784: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0800: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0816: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................
[Debug] [NET__ERROR] 0832: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 ff  | ................
[Debug] [NET__ERROR] 0848: 19 19 19 ff 19 19 19 ff - 19 19 19 ff 00 00 00 ff  | ................
[Debug] [NET__ERROR] 0864: 19 19 19 ff 19 19 19 ff - 00 00 00 ff 00 00 00 ff  | ................
[Debug] [NET__ERROR] 0880: 00 00 00 00 00 00 00 00 - 00 00 00 33 33 b3 3e 00  | ...........33.>.
[Debug] [NET__ERROR] 0896: 00                      -                          | .
[Debug] [NET__APP_TRACE] Queueing acked packet with opcode 0x737e (OP_ZoneEntry) and length 897

I have been able to get most of the opcodes I need from the SEQ source and some from looking through the IDA assembly code. I am still missing some (like the task stuff and a few others up to the point that I need), but I think the current issue is with the structs. Though, maybe the correct opcodes are needed for the playerprofile to build properly, I don't know for sure. If I can get it working to the point that I can get in game, I will update what I have onto the SVN and just use the files setup for anniversary, since I don't think we ever plan to use that expansion now anyway. And if someone knows what it would take to rename all of those files to SoF, they can do that at any time. I tried, but couldn't get it all working properly when I did.

trevius 12-13-2008 06:29 AM

Also, I am getting what appears to be 2 more CRC checks that don't exist in Titanium as far as I can tell. They come in right after the CRC1 and CRC2 check, and before the Ackpacket and WorldClientReady packets. They are the same size (2056) as the CRC checks, so I assume they are 2 additional CRC checks. These occur when I am connecting to character select, but I am guessing that since the server isn't actually handling them, that it shouldn't really matter anyway. My guess is that they are sent so that the server can disconnect you if they don't match (when playing on live). Since the emu doesn't care if they match or not, it probably isn't coded to disconnect them if they don't match. So, I am guessing that not having the opcodes for them shouldn't really make a difference. But, here are the logs from them anyway:

Code:

25686 [12.13. - 03:47:57] Unable to convert EQ opcode 0x22cf to an Application opcode.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] trevadmin: Recevied EQApplicationPacket
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x22cf) Size=2056]
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0000: 97 42 79 09 4c 40 08 00 - 11 3b 01 00 1d f7 01 00  | .By.L@...;......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0016: fc d1 00 00 b7 ad 01 00 - 3b bd 01 00 7b c6 01 00  | ........;...{...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0032: 12 34 01 00 a9 58 01 00 - 35 dd 00 00 15 13 01 00  | .4...X..5.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0048: 21 fd 00 00 6e 5c 01 00 - 05 ac 00 00 8b 2b 00 00  | !...n\.......+..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0064: 2b b3 00 00 04 e1 00 00 - 57 8a 01 00 48 45 00 00  | +.......W...HE..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0080: b5 a9 01 00 bb 79 01 00 - e5 48 01 00 1a a5 01 00  | .....y...H......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0096: 0d e6 00 00 61 6f 00 00 - 97 1e 00 00 2a cf 00 00  | ....ao......*...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0112: f0 db 00 00 4b 31 00 00 - 99 50 00 00 b1 0d 02 00  | ....K1...P......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0128: 12 49 01 00 e4 53 01 00 - a2 d1 01 00 04 f2 00 00  | .I...S..........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0144: b5 4c 01 00 8a 29 01 00 - 32 2a 00 00 59 fc 00 00  | .L...)..2*..Y...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0160: 64 1e 00 00 b6 00 01 00 - 33 de 01 00 4f d4 00 00  | d.......3...O...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0176: 0c db 01 00 f5 d6 00 00 - 9f b4 00 00 ab 62 01 00  | .............b..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0192: 8e 95 00 00 4d c4 01 00 - db 08 02 00 cd 66 01 00  | ....M........f..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0208: cf bb 01 00 fb 7d 00 00 - b8 ec 00 00 e4 a9 01 00  | .....}..........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0224: cc 5d 01 00 e2 7e 00 00 - ad b8 01 00 01 c4 01 00  | .]...~..........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0240: 8e b3 00 00 b3 d6 00 00 - ad f0 01 00 9f f9 01 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0256: 0d 77 01 00 eb dd 01 00 - 6a aa 00 00 70 d1 01 00  | .w......j...p...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0272: 67 27 01 00 2e 4c 01 00 - 5f a9 00 00 0a df 01 00  | g'...L.._.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0288: c7 3f 01 00 91 3e 01 00 - 10 3e 00 00 6f 00 01 00  | .?...>...>..o...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0304: 78 25 01 00 e1 c6 01 00 - c0 81 00 00 13 49 00 00  | x%...........I..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0320: 62 96 01 00 79 9d 00 00 - c5 77 00 00 12 59 00 00  | b...y....w...Y..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0336: d9 e4 00 00 81 f0 00 00 - 80 b7 01 00 9f 32 01 00  | .............2..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0352: 12 84 00 00 af 68 01 00 - 6e 9c 01 00 46 d7 00 00  | .....h..n...F...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0368: 13 0a 00 00 60 76 01 00 - ec 6e 01 00 6e fd 01 00  | ....`v...n..n...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0384: b2 09 02 00 e6 d5 00 00 - 93 db 00 00 9c 94 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0400: a1 c5 01 00 6d 6b 00 00 - 9f ad 01 00 a2 de 00 00  | ....mk..........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0416: 9c 4a 01 00 75 5f 00 00 - 92 de 01 00 cf 04 00 00  | .J..u_..........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0432: d5 62 01 00 6d a6 01 00 - 52 51 01 00 8d 49 00 00  | .b..m...RQ...I..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0448: f4 02 01 00 4a 11 01 00 - 90 19 01 00 08 54 01 00  | ....J........T..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0464: fa a9 00 00 fb 56 01 00 - 79 58 01 00 9d 2d 01 00  | .....V..yX...-..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0480: 8b d7 01 00 51 80 01 00 - 24 66 00 00 38 85 01 00  | ....Q...$f..8...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0496: bc 01 01 00 cc 14 01 00 - 97 7c 01 00 9d e7 01 00  | .........|......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0512: 4f 42 00 00 ba 66 00 00 - 23 98 00 00 7b f3 00 00  | OB...f..#...{...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0528: a4 19 01 00 1a 18 00 00 - 65 9a 01 00 ef df 01 00  | ........e.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0544: a2 69 01 00 43 52 01 00 - a3 72 01 00 16 02 02 00  | .i..CR...r......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0560: 7c 9a 01 00 9d c7 00 00 - 05 7b 00 00 e3 7a 01 00  | |........{...z..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0576: 28 30 01 00 e1 d5 00 00 - 9f 06 01 00 4b 8f 01 00  | (0..........K...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0592: 0a 68 00 00 a6 73 00 00 - 26 33 01 00 3d e1 01 00  | .h...s..&3..=...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0608: 35 18 01 00 4e 42 01 00 - c0 2c 01 00 3d 72 00 00  | 5...NB...,..=r..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0624: 46 4e 01 00 ee 8e 01 00 - 28 32 00 00 ad e3 00 00  | FN......(2......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0640: 18 c9 01 00 f7 e9 00 00 - a7 40 01 00 0c 1e 01 00  | .........@......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0656: d7 30 01 00 23 e2 01 00 - 93 c4 00 00 c5 6d 00 00  | .0..#........m..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0672: a6 0a 02 00 a6 b8 01 00 - 94 4a 00 00 33 29 00 00  | .........J..3)..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0688: 3a 88 01 00 53 95 01 00 - e4 19 00 00 b5 a8 01 00  | :...S...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0704: a8 51 00 00 73 a8 01 00 - e5 a1 00 00 f9 73 01 00  | .Q..s........s..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0720: 00 53 00 00 a6 c4 00 00 - b3 09 00 00 fc 25 01 00  | .S...........%..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0736: 07 f9 01 00 1b 82 01 00 - 0f 24 00 00 9e 27 00 00  | .........$...'..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0752: 26 12 01 00 a9 35 01 00 - a3 5d 00 00 9c a0 01 00  | &....5...]......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0768: 0b 16 01 00 36 1b 01 00 - 97 3c 00 00 e3 8c 01 00  | ....6....<......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0784: f8 08 00 00 46 00 00 00 - c8 94 01 00 fe 91 00 00  | ....F...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0800: 89 27 01 00 ff 9e 00 00 - 1e 21 00 00 38 a5 01 00  | .'.......!..8...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0816: da 8f 00 00 01 c1 01 00 - f0 ea 01 00 1f 2e 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0832: 42 2b 01 00 c8 9e 00 00 - 4c 96 00 00 18 3f 01 00  | B+......L....?..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0848: 35 5a 00 00 d2 67 01 00 - 51 41 01 00 d5 22 01 00  | 5Z...g..QA..."..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0864: 02 00 02 00 ff 14 00 00 - a4 5a 01 00 a7 ad 00 00  | .........Z......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0880: 1b eb 01 00 0d 8e 00 00 - c1 cb 01 00 c6 55 00 00  | .............U..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0896: 1c d0 00 00 c8 b2 00 00 - 85 13 00 00 93 e6 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0912: 1b 15 00 00 e5 da 01 00 - c7 4c 01 00 c7 7f 00 00  | .........L......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0928: d7 8c 00 00 e2 09 01 00 - 7a d3 01 00 4c 5b 01 00  | ........z...L[..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0944: dc 1e 01 00 b9 3a 01 00 - 3b 57 00 00 c9 0b 01 00  | .....:..;W......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0960: 3f 3b 01 00 0e 39 00 00 - 76 4b 01 00 01 89 01 00  | ?;...9..vK......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0976: b1 10 01 00 b1 eb 00 00 - 4a 5c 01 00 d1 6b 01 00  | ........J\...k..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0992: 87 b4 01 00 5f ef 00 00 - 69 a0 01 00 8b ef 00 00  | ...._...i.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1008: a9 ee 01 00 cf 28 01 00 - f9 a7 01 00 85 70 01 00  | .....(.......p..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1024: 0a f5 00 00 34 f4 00 00 - 33 5e 32 35 5e 35 35 0d  | ....4...3^25^55.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1040: 33 5e 31 36 33 5e 36 36 - 37 5e 32 35 0a 31 34 5e  | 3^163^667^25.14^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1056: 31 30 5e 31 31 31 5e 32 - 0a 37 5e 35 32 30 5e 33  | 10^111^2.7^520^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1072: 39 5e 31 35 30 5e 35 33 - 32 5e 32 35 32 5e 33 33  | 9^150^532^252^33
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1088: 0d 0a 36 5e 37 5e 36 33 - 36 34 5e 35 0a 33 5e 31  | ..6^7^6364^5.3^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1104: 33 5e 36 31 30 34 0d 0a - 35 5e 35 38 5e 35 35 5e  | 3^6104..5^58^55^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1120: 5e 33 30 30 5e 32 39 5e - 32 34 30 0d 32 0d 0a 37  | ^300^29^240.2..7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1136: 0d 0a 37 5e 0a 32 5e 35 - 35 30 0d 0a 37 31 5e 33  | ..7^.2^550..71^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1152: 5e 36 35 5e 0d 0a 31 31 - 39 5e 34 34 37 5e 35 30  | ^65^..119^447^50
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1168: 39 5e 34 32 5e 34 32 5e - 32 5e 32 38 37 5e 31 30  | 9^42^42^2^287^10
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1184: 0a 31 5e 37 5e 36 31 5e - 0a 31 35 5e 37 5e 33 32  | .1^7^61^.15^7^32
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1200: 38 5e 34 31 38 5e 36 39 - 0d 0a 36 5e 33 5e 32 30  | 8^418^69..6^3^20
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1216: 37 35 0d 0a 31 34 5e 35 - 36 5e 36 35 33 30 30 0d  | 75..14^56^65300.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1232: 5e 31 32 33 5e 31 30 5e - 31 37 5e 34 5e 36 33 5e  | ^123^10^17^4^63^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1248: 34 5e 34 31 0d 0a 34 5e - 5e 31 38 5e 5e 32 33 33  | 4^41..4^^18^^233
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1264: 32 38 5e 31 0a 37 5e 33 - 5e 34 30 5e 32 30 5e 35  | 28^1.7^3^40^20^5
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1280: 32 5e 31 38 5e 34 35 5e - 0a 36 5e 32 31 34 5e 36  | 2^18^45^.6^214^6
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1296: 0d 0a 39 5e 36 39 5e 33 - 5e 32 33 32 34 5e 34 39  | ..9^69^3^2324^49
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1312: 31 33 30 0d 5e 34 36 5e - 33 33 37 0d 5e 36 31 5e  | 130.^46^337.^61^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1328: 36 33 5e 31 5e 34 34 5e - 30 0d 0a 34 34 5e 31 32  | 63^1^44^0..44^12
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1344: 5e 33 5e 31 36 5e 32 30 - 35 31 5e 32 32 5e 33 30  | ^3^16^2051^22^30
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1360: 0a 37 5e 36 37 5e 37 33 - 5e 31 34 5e 0a 31 30 5e  | .7^67^73^14^.10^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1376: 5e 34 38 5e 33 30 30 0d - 31 33 5e 33 39 5e 32 31  | ^48^300.13^39^21
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1392: 30 0d 0a 31 31 31 30 0d - 34 35 5e 31 5e 33 38 5e  | 0..1110.45^1^38^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1408: 36 36 5e 36 35 35 5e 32 - 5e 33 31 36 35 5e 32 38  | 66^655^2^3165^28
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1424: 31 34 5e 35 34 5e 32 30 - 36 36 5e 36 0a 37 5e 36  | 14^54^2066^6.7^6
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1440: 5e 31 39 30 32 39 35 0d - 37 35 0d 0a 39 5e 32 33  | ^190295.75..9^23
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1456: 0a 31 31 5e 30 0d 0a 31 - 35 30 0d 0a 33 5e 31 39  | .11^0..150..3^19
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1472: 0d 0a 38 5e 5e 31 37 5e - 0a 39 5e 33 5e 34 38 0d  | ..8^^17^.9^3^48.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1488: 31 33 37 0d 0a 31 31 5e - 38 5e 36 36 5e 32 5e 31  | 137..11^8^66^2^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1504: 33 5e 32 5e 31 32 5e 34 - 31 33 5e 32 32 5e 35 37  | 3^2^12^413^22^57
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1520: 36 32 5e 35 5e 32 38 5e - 37 0d 0a 31 33 5e 31 38  | 62^5^28^7..13^18
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1536: 35 36 0d 0a 5e 37 31 5e - 33 0d 0a 35 0a 38 5e 33  | 56..^71^3..5.8^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1552: 5e 33 36 5e 0a 31 5e 36 - 32 38 5e 32 5e 34 31 5e  | ^36^.1^628^2^41^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1568: 30 30 0d 0a 35 0d 0a 31 - 0a 31 32 5e 32 0d 0a 31  | 00..5..1.12^2..1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1584: 38 5e 33 34 37 5e 30 5e - 5e 37 34 5e 33 31 5e 37  | 8^347^0^^74^31^7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1600: 0d 0a 31 30 0d 0a 37 5e - 5e 36 37 5e 39 5e 35 32  | ..10..7^^67^9^52
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1616: 34 5e 31 35 0a 34 5e 33 - 39 5e 32 38 35 38 5e 32  | 4^15.4^39^2858^2
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1632: 0d 0a 39 5e 30 5e 35 35 - 5e 36 30 0d 0a 34 5e 33  | ..9^0^55^60..4^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1648: 32 5e 34 38 30 30 0d 0a - 33 30 0d 0a 37 5e 36 36  | 2^4800..30..7^66
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1664: 31 34 5e 36 32 31 5e 31 - 31 5e 31 36 33 0d 0a 39  | 14^621^11^163..9
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1680: 30 0d 0a 31 35 5e 33 31 - 0a 36 5e 36 32 34 5e 34  | 0..15^31.6^624^4
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1696: 37 5e 32 5e 0d 0a 31 34 - 5e 32 35 31 5e 32 34 5e  | 7^2^..14^251^24^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1712: 5e 35 33 5e 32 32 30 0d - 31 31 35 0d 30 5e 37 33  | ^53^220.115.0^73
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1728: 30 0d 0a 33 35 34 5e 33 - 5e 33 30 30 5e 36 34 5e  | 0..354^3^300^64^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1744: 39 5e 31 36 39 0d 0a 36 - 5e 32 30 5e 30 0d 0a 39  | 9^169..6^20^0..9
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1760: 32 30 5e 31 30 0d 0a 31 - 0a 32 5e 31 38 35 0d 0a  | 20^10..1.2^185..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1776: 33 35 5e 31 0d 0a 31 30 - 36 33 5e 33 0d 0a 31 33  | 35^1..1063^3..13
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1792: 32 30 30 0d 31 5e 31 37 - 33 5e 30 5e 31 32 5e 36  | 200.1^173^0^12^6
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1808: 36 39 5e 32 5e 32 36 5e - 0a 31 33 5e 38 5e 31 39  | 69^2^26^.13^8^19
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1824: 5e 33 30 5e 36 30 5e 34 - 35 30 5e 32 31 33 5e 35  | ^30^60^450^213^5
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1840: 35 5e 31 36 5e 34 33 5e - 36 30 5e 36 34 5e 35 31  | 5^16^43^60^64^51
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1856: 5e 36 39 5e 30 5e 32 35 - 33 31 5e 35 32 31 0d 0a  | ^69^0^2531^521..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1872: 31 34 5e 37 0d 0a 31 31 - 0d 0a 31 30 5e 32 32 5e  | 14^7..11..10^22^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1888: 34 30 5e 32 31 5e 36 30 - 33 5e 37 34 30 0d 0a 36  | 40^21^603^740..6
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1904: 5e 33 30 30 0a 35 5e 31 - 0d 0a 31 34 30 30 0d 0a  | ^300.5^1..1400..
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1920: 33 5e 35 34 32 35 5e 31 - 35 5e 32 35 30 0d 0a 37  | 3^5425^15^250..7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1936: 0d 0a 31 5e 5e 31 38 5e - 34 37 5e 33 0d 0a 34 5e  | ..1^^18^47^3..4^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1952: 37 0d 0a 35 5e 31 37 30 - 31 39 30 0d 32 0d 0a 31  | 7..5^170190.2..1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1968: 0d 0a 39 5e 5e 33 38 5e - 36 33 5e 31 32 37 37 0d  | ..9^^38^63^1277.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1984: 32 39 38 0d 0a 32 5e 36 - 35 5e 33 30 0d 0a 31 32  | 298..2^65^30..12
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2000: 33 38 0d 0a 31 35 5e 31 - 31 31 5e 34 37 5e 33 36  | 38..15^111^47^36
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2016: 0d 0a 31 34 5e 34 38 5e - 34 5e 35 33 0d 0a 38 5e  | ..14^48^4^53..8^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2032: 35 5e 36 35 34 39 0d 0a - 5e 33 30 30 30 0d 0a 31  | 5^6549..^3000..1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2048: 38 5e 33 36 38 5e 33 35 -                          | 8^368^35
25686 [12.13. - 03:47:57] [WORLD__CLIENT_ERR] trevadmin: Received unknown EQApplicationPacket
25686 [12.13. - 03:47:57] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x22cf) Size=2056]

25686 [12.13. - 03:47:57] [NET__NET_ACKS] 192.168.1.101:4753: Sending ack with sequence 20
25686 [12.13. - 03:47:57] [NET__NET_ACKS] 192.168.1.101:4753: Set Last Ack Sent to 20
25686 [12.13. - 03:47:57] [NET__APP_TRACE] 192.168.1.101:4753: Pushing non-sequenced packet of length 2
25686 [12.13. - 03:47:57] [NET__NET_COMBINE] 192.168.1.101:4753: Starting combined packet with non-seq packet of len 2
25686 [12.13. - 03:47:57] [NET__NET_COMBINE] 192.168.1.101:4753: Final combined packet not full, len 2
25686 [12.13. - 03:47:57] [NET__NET_ACKS] 192.168.1.101:4753: Set Next Ack To Send to 21
25686 [12.13. - 03:47:57] [NET__NET_TRACE] 192.168.1.101:4753: Fragment of oversized of length 42, seq 21: now at 2058/2058
25686 [12.13. - 03:47:57] [NET__APP_CREATE] 192.168.1.101:4753: Creating new application packet, length 2058

.....Removed the Create Hex to reduce log size.....
25686 [12.13. - 03:47:57] [NET__NET_CREATE] 192.168.1.101:4753: seq 21, completed combined oversize packet of length 205625686 [12.13. - 03:47:57] Unable to convert EQ opcode 0x43ba to an Application opcode.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] trevadmin: Recevied EQApplicationPacket
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x43ba) Size=2056]
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0000: 60 36 fb 60 54 75 00 00 - 33 15 00 00 3f 03 00 00  | `6.`Tu..3...?...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0016: ab 0a 00 00 8c 16 00 00 - f7 14 00 00 57 10 00 00  | ............W...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0032: f9 08 00 00 5f 0f 00 00 - 1e 0f 00 00 2d 13 00 00  | ...._.......-...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0048: 25 17 00 00 d7 04 00 00 - 83 02 00 00 07 00 00 00  | %...............
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0064: 04 1b 00 00 6c 0c 00 00 - 96 0b 00 00 95 02 00 00  | ....l...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0080: f5 01 00 00 3a 1b 00 00 - ea 12 00 00 c7 1b 00 00  | ....:...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0096: f5 11 00 00 7b 0a 00 00 - c9 10 00 00 32 19 00 00  | ....{.......2...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0112: 0c 13 00 00 1b 03 00 00 - 44 0b 00 00 2f 10 00 00  | ........D.../...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0128: 5d 0f 00 00 55 10 00 00 - 30 0c 00 00 48 12 00 00  | ]...U...0...H...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0144: c2 15 00 00 3a 0a 00 00 - 26 03 00 00 07 17 00 00  | ....:...&.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0160: 07 1b 00 00 b5 14 00 00 - 7a 1b 00 00 a9 10 00 00  | ........z.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0176: ef 03 00 00 55 01 00 00 - c1 1c 00 00 df 18 00 00  | ....U...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0192: 72 1a 00 00 6c 0f 00 00 - 4c 17 00 00 db 11 00 00  | r...l...L.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0208: d0 15 00 00 24 14 00 00 - 6b 19 00 00 9f 1c 00 00  | ....$...k.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0224: 04 1d 00 00 4a 1d 00 00 - 32 07 00 00 b5 14 00 00  | ....J...2.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0240: bb 06 00 00 dd 01 00 00 - 7d 13 00 00 ac 02 00 00  | ........}.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0256: d4 04 00 00 95 1b 00 00 - 14 09 00 00 79 0a 00 00  | ............y...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0272: c6 08 00 00 ef 18 00 00 - c9 1c 00 00 8f 16 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0288: 4c 01 00 00 03 1b 00 00 - e2 19 00 00 d0 13 00 00  | L...............
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0304: b5 13 00 00 7c 01 00 00 - de 17 00 00 01 09 00 00  | ....|...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0320: ec 01 00 00 be 10 00 00 - 26 18 00 00 2f 02 00 00  | ........&.../...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0336: d7 09 00 00 e3 04 00 00 - 6f 1b 00 00 09 12 00 00  | ........o.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0352: eb 0c 00 00 33 02 00 00 - 1f 13 00 00 fe 17 00 00  | ....3...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0368: c2 0a 00 00 16 1c 00 00 - 7b 16 00 00 03 0c 00 00  | ........{.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0384: 02 16 00 00 eb 10 00 00 - 36 0d 00 00 81 0f 00 00  | ........6.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0400: 0b 15 00 00 e9 00 00 00 - 68 13 00 00 1f 06 00 00  | ........h.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0416: 1b 09 00 00 b5 0a 00 00 - ac 0c 00 00 ff 17 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0432: a6 00 00 00 fa 00 00 00 - b9 1a 00 00 7a 09 00 00  | ............z...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0448: e0 0c 00 00 27 01 00 00 - 80 0a 00 00 65 01 00 00  | ....'.......e...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0464: 61 04 00 00 3f 12 00 00 - 27 19 00 00 d8 10 00 00  | a...?...'.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0480: 43 14 00 00 00 1a 00 00 - 72 0f 00 00 09 10 00 00  | C.......r.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0496: 68 08 00 00 5d 00 00 00 - 64 04 00 00 6b 07 00 00  | h...]...d...k...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0512: e0 1b 00 00 59 1c 00 00 - 3f 18 00 00 60 0e 00 00  | ....Y...?...`...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0528: 23 02 00 00 9a 10 00 00 - 7d 1b 00 00 67 0b 00 00  | #.......}...g...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0544: 60 15 00 00 4e 19 00 00 - af 0c 00 00 fe 02 00 00  | `...N...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0560: 45 09 00 00 59 10 00 00 - 9e 05 00 00 6e 00 00 00  | E...Y.......n...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0576: 38 0e 00 00 ca 0f 00 00 - de 01 00 00 cb 1a 00 00  | 8...............
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0592: 29 07 00 00 d9 16 00 00 - 2a 08 00 00 2f 15 00 00  | ).......*.../...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0608: 76 0f 00 00 fd 03 00 00 - 2d 02 00 00 2d 1b 00 00  | v.......-...-...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0624: 0c 03 00 00 c5 1b 00 00 - 47 04 00 00 44 0c 00 00  | ........G...D...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0640: d8 17 00 00 67 00 00 00 - 70 1c 00 00 a5 03 00 00  | ....g...p.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0656: 02 02 00 00 80 05 00 00 - 19 0f 00 00 10 05 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0672: 5f 0f 00 00 0c 12 00 00 - 5b 18 00 00 d8 01 00 00  | _.......[.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0688: 2a 11 00 00 6d 0a 00 00 - c4 10 00 00 df 03 00 00  | *...m...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0704: e3 03 00 00 70 13 00 00 - 36 12 00 00 40 06 00 00  | ....p...6...@...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0720: 81 18 00 00 ec 17 00 00 - 75 03 00 00 d0 0a 00 00  | ........u.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0736: dc 16 00 00 a7 18 00 00 - 7b 0d 00 00 df 1a 00 00  | ........{.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0752: 5e 0a 00 00 bf 18 00 00 - 42 12 00 00 71 1a 00 00  | ^.......B...q...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0768: 59 0b 00 00 7e 16 00 00 - 59 1b 00 00 e0 02 00 00  | Y...~...Y.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0784: 46 19 00 00 0c 10 00 00 - f5 08 00 00 18 12 00 00  | F...............
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0800: 70 0b 00 00 11 0d 00 00 - 6f 07 00 00 2b 05 00 00  | p.......o...+...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0816: c7 09 00 00 c2 02 00 00 - 66 10 00 00 47 1a 00 00  | ........f...G...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0832: da 1a 00 00 d4 1a 00 00 - 15 03 00 00 ae 15 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0848: cf 08 00 00 c9 14 00 00 - 32 01 00 00 b6 0c 00 00  | ........2.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0864: c0 0b 00 00 99 15 00 00 - aa 01 00 00 e2 04 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0880: 88 16 00 00 d0 01 00 00 - 05 0e 00 00 22 04 00 00  | ............"...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0896: 28 00 00 00 17 08 00 00 - 48 09 00 00 56 16 00 00  | (.......H...V...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0912: 35 14 00 00 86 13 00 00 - 46 14 00 00 ec 15 00 00  | 5.......F.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0928: b7 08 00 00 78 07 00 00 - 18 01 00 00 da 10 00 00  | ....x...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0944: 66 03 00 00 3e 18 00 00 - 02 0c 00 00 3e 06 00 00  | f...>.......>...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0960: 2a 1c 00 00 d7 1a 00 00 - 4c 14 00 00 03 07 00 00  | *.......L.......
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0976: f3 11 00 00 d4 0b 00 00 - e3 02 00 00 7b 0f 00 00  | ............{...
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 0992: a6 16 00 00 1c 06 00 00 - ea 03 00 00 09 0a 00 00  | ................
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1008: ec 06 00 00 7b 1c 00 00 - 09 09 00 00 08 04 00 00  | ....{...........
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1024: c8 15 00 00 e7 0e 00 00 - 31 35 5e 39 39 38 5e 31  | ........15^998^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1040: 33 32 5e 31 36 34 5e 31 - 30 5e 39 30 39 36 30 5e  | 32^164^10^90960^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1056: 5e 34 30 35 37 35 5e 36 - 5e 36 36 30 34 5e 36 36  | ^40575^6^6604^66
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1072: 30 5e 39 39 35 0d 0a 31 - 33 35 5e 31 31 35 5e 32  | 0^995..135^115^2
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1088: 31 31 32 35 0a 33 37 5e - 5e 39 0d 0a 35 5e 32 5e  | 1125.37^^9..5^2^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1104: 30 35 5e 31 36 5e 33 5e - 0a 35 35 5e 31 31 35 35  | 05^16^3^.55^1155
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1120: 31 30 5e 37 30 5e 34 38 - 5e 37 33 35 38 5e 31 34  | 10^70^48^7358^14
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1136: 35 5e 37 5e 5e 33 5e 35 - 35 31 30 5e 5e 37 30 35  | 5^7^^3^5510^^705
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1152: 31 30 5e 36 33 0d 0a 34 - 35 34 30 5e 35 33 5e 38  | 10^63..4540^53^8
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1168: 34 5e 39 33 5e 38 0d 0a - 5e 33 5e 35 39 30 5e 39  | 4^93^8..^3^590^9
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1184: 32 30 0d 0a 38 35 5e 38 - 31 31 34 30 39 5e 32 5e  | 20..85^811409^2^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1200: 39 35 5e 33 0a 35 5e 31 - 38 35 5e 39 39 5e 32 30  | 95^3.5^185^99^20
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1216: 2e 38 30 5e 37 35 5e 36 - 36 36 5e 31 38 30 5e 37  | .80^75^666^180^7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1232: 30 5e 38 5e 30 5e 38 37 - 31 39 31 37 5e 39 5e 32  | 0^8^0^871917^9^2
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1248: 36 30 5e 31 32 30 30 5e - 33 30 5e 33 38 35 5e 38  | 60^1200^30^385^8
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1264: 37 38 5e 33 0d 0a 37 5e - 30 5e 38 34 35 0d 0a 39  | 78^3..7^0^845..9
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1280: 35 5e 32 32 30 35 32 5e - 30 5e 34 32 0a 33 32 5e  | 5^22052^0^42.32^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1296: 30 35 5e 34 38 38 39 5e - 5e 39 5e 32 30 5e 39 36  | 05^4889^^9^20^96
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1312: 35 5e 39 5e 2e 35 30 5e - 5e 31 30 39 33 5e 38 35  | 5^9^.50^^1093^85
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1328: 5e 31 38 0d 5e 31 32 36 - 30 5e 31 30 0a 32 37 5e  | ^18.^1260^10.27^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1344: 32 5e 35 0d 33 35 5e 36 - 30 5e 31 30 31 32 30 5e  | 2^5.35^60^10120^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1360: 35 5e 36 33 36 5e 33 5e - 0d 0a 37 36 38 30 5e 37  | 5^636^3^..7680^7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1376: 30 5e 35 37 5e 31 34 34 - 31 35 0d 0a 30 32 30 5e  | 0^57^14415..020^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1392: 33 32 5e 31 5e 32 30 0d - 31 5e 37 36 33 36 5e 38  | 32^1^20.1^7636^8
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1408: 36 33 5e 37 38 38 5e 37 - 5e 35 38 35 31 36 5e 31  | 63^788^7^58516^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1424: 31 39 0d 0a 30 5e 32 5e - 35 36 5e 38 38 35 5e 32  | 19..0^2^56^885^2
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1440: 34 32 30 5e 5e 35 5e 39 - 5e 31 30 0d 31 30 32 30  | 420^^5^9^10.1020
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1456: 35 5e 36 33 36 30 5e 36 - 31 30 5e 31 5e 34 33 35  | 5^6360^610^1^435
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1472: 30 5e 35 5e 35 5e 31 5e - 36 37 32 5e 30 5e 37 35  | 0^5^5^1^672^0^75
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1488: 0a 31 34 5e 35 5e 37 39 - 30 36 35 5e 31 30 5e 37  | .14^5^79065^10^7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1504: 30 5e 38 37 32 30 0d 0a - 37 35 5e 36 5e 37 5e 38  | 0^8720..75^6^7^8
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1520: 30 5e 34 5e 32 5e 33 30 - 31 30 5e 32 34 35 5e 34  | 0^4^2^3010^245^4
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1536: 37 37 2e 39 31 37 30 5e - 34 5e 31 30 32 5e 31 35  | 77.9170^4^102^15
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1552: 34 5e 31 36 37 32 30 5e - 32 30 0d 0a 31 30 5e 35  | 4^16720^20..10^5
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1568: 36 31 5e 31 32 5e 39 30 - 36 5e 35 37 35 30 5e 33  | 61^12^906^5750^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1584: 31 5e 33 33 37 32 30 5e - 32 37 30 5e 5e 39 5e 33  | 1^33720^270^^9^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1600: 36 5e 36 33 30 5e 36 39 - 37 5e 31 32 37 35 5e 33  | 6^630^697^1275^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1616: 0d 0a 32 32 32 30 0d 0a - 5e 34 5e 37 5e 31 39 0d  | ..2220..^4^7^19.
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1632: 34 30 5e 36 30 5e 31 39 - 38 5e 36 5e 36 33 2e 36  | 40^60^198^6^63.6
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1648: 5e 31 35 5e 31 37 5e 31 - 32 5e 32 31 33 37 5e 33  | ^15^17^12^2137^3
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1664: 31 30 32 30 5e 33 30 5e - 30 0d 0a 37 38 30 5e 31  | 1020^30^0..780^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1680: 0d 0a 37 5e 37 5e 31 35 - 5e 36 36 30 31 5e 31 39  | ..7^7^15^6601^19
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1696: 37 35 5e 36 0a 35 32 5e - 30 33 35 5e 0a 37 5e 36  | 75^6.52^035^.7^6
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1712: 33 0d 0a 35 5e 38 0d 0a - 35 5e 36 5e 5e 33 5e 35  | 3..5^8..5^6^^3^5
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1728: 39 35 5e 31 34 5e 38 34 - 0a 35 33 5e 34 36 30 5e  | 95^14^84.53^460^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1744: 30 33 35 5e 32 30 5e 38 - 33 5e 35 0d 39 35 5e 34  | 035^20^83^5.95^4
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1760: 30 5e 39 37 31 38 39 30 - 38 5e 37 32 5e 36 5e 31  | 0^9718908^72^6^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1776: 5e 33 37 32 30 0d 0a 37 - 35 33 5e 37 31 31 36 31  | ^3720..753^71161
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1792: 34 5e 31 30 30 5e 38 5e - 30 5e 39 5e 30 5e 31 35  | 4^100^8^0^9^0^15
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1808: 31 5e 31 31 30 35 5e 36 - 37 0d 0a 32 0a 35 32 5e  | 1^1105^67..2.52^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1824: 34 5e 31 34 39 5e 36 5e - 5e 33 34 35 35 0d 0a 31  | 4^149^6^^3455..1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1840: 34 35 30 5e 35 0d 0a 31 - 5e 31 33 0d 37 33 5e 31  | 450^5..1^13.73^1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1856: 35 5e 31 31 31 31 32 35 - 35 30 5e 33 36 32 5e 39  | 5^11112550^362^9
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1872: 5e 36 5e 34 5e 31 39 0d - 5e 37 35 5e 5e 35 37 30  | ^6^4^19.^75^^570
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1888: 30 5e 35 32 33 30 5e 39 - 0d 0a 36 5e 35 0d 0a 31  | 0^5230^9..6^5..1
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1904: 38 5e 39 36 30 35 5e 31 - 5e 36 31 35 31 39 35 5e  | 8^9605^1^615195^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1920: 0d 0a 31 5e 32 35 5e 33 - 30 5e 34 5e 0a 36 34 5e  | ..1^25^30^4^.64^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1936: 30 5e 38 37 35 36 5e 31 - 35 38 5e 31 33 38 5e 39  | 0^8756^158^138^9
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1952: 5e 34 5e 37 32 33 5e 39 - 35 0d 0a 34 33 35 5e 37  | ^4^723^95..435^7
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1968: 31 35 5e 31 5e 31 37 39 - 31 30 0d 0a 35 0d 0a 32  | 15^1^17910..5..2
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 1984: 30 0d 0a 37 32 30 0d 0a - 35 38 5e 31 32 5e 34 5e  | 0..720..58^12^4^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2000: 5e 31 35 0d 5e 39 0d 0a - 35 0d 0a 31 31 35 5e 38  | ^15.^9..5..115^8
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2016: 37 35 5e 39 0a 31 39 5e - 5e 33 5e 35 30 5e 31 34  | 75^9.19^^3^50^14
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2032: 0d 0a 32 31 31 38 35 5e - 37 5e 34 30 5e 31 32 5e  | ..21185^7^40^12^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_TRACE] 2048: 34 5e 39 33 34 5e 36 5e -                          | 4^934^6^
25686 [12.13. - 03:47:57] [WORLD__CLIENT_ERR] trevadmin: Received unknown EQApplicationPacket
25686 [12.13. - 03:47:57] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x43ba) Size=2056]

The new Opcodes for them are 0x22CF and 0x43BA.

trevius 12-13-2008 06:33 AM

And right after the AckPacket and WorldClientReady, I get this new opcode 0x58FB, which I am not sure about either:

Code:

25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] [OpCode OP_AckPacket (0x4d38) Size=4]
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] 0000: 00 00 00 00            -                          | ....
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] trevadmin: Recevied EQApplicationPacket
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] [OpCode OP_WorldClientReady (0x2ebd) Size=0]
25686 [12.13. - 03:48:16] Unable to convert EQ opcode 0x58fb to an Application opcode.
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] trevadmin: Recevied EQApplicationPacket
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x58fb) Size=8]
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] 0000: 49 02 00 00 60 9f 4d 00 -                          | I...`.M.
25686 [12.13. - 03:48:16] [WORLD__CLIENT_ERR] trevadmin: Received unknown EQApplicationPacket
25686 [12.13. - 03:48:16] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x58fb) Size=8]
25686 [12.13. - 03:48:16] [WORLD__CLIENT_ERR] 0000: 49 02 00 00 60 9f 4d 00 -                          | I...`.M.
25686 [12.13. - 03:48:16] [NET__NET_ACKS] 192.168.1.101:4753: Sending ack with sequence 24
25686 [12.13. - 03:48:16] [NET__NET_ACKS] 192.168.1.101:4753: Set Last Ack Sent to 24
25686 [12.13. - 03:48:16] [NET__APP_TRACE] 192.168.1.101:4753: Pushing non-sequenced packet of length 2
25686 [12.13. - 03:48:16] [NET__NET_COMBINE] 192.168.1.101:4753: Starting combined packet with non-seq packet of len 2
25686 [12.13. - 03:48:16] [NET__NET_COMBINE] 192.168.1.101:4753: Final combined packet not full, len 2
25686 [12.13. - 03:48:18] [NET__NET_TRACE] 192.168.1.101:4753: Received Stats: 0 packets received, 0 packets sent, Deltas: local 14, (14 <- 22 -> 31) remote 31
25686 [12.13. - 03:48:18] [NET__APP_TRACE] 192.168.1.101:4753: Pushing non-sequenced packet of length 38
25686 [12.13. - 03:48:18] [NET__RATES] 192.168.1.101:4753: Adjusting data rate to thresh 47662, decay 3574 based on avg delta 22
25686 [12.13. - 03:48:18] [NET__NET_COMBINE] 192.168.1.101:4753: Starting combined packet with non-seq packet of len 38
25686 [12.13. - 03:48:18] [NET__NET_COMBINE] 192.168.1.101:4753: Final combined packet not full, len 38
25686 [12.13. - 03:48:24] [NET__NET_ACKS] 192.168.1.101:4753: Set Next Ack To Send to 25
25686 [12.13. - 03:48:24] [NET__APP_CREATE] 192.168.1.101:4753: Creating new application packet, length 10
25686 [12.13. - 03:48:24] [NET__APP_CREATE_HEX] 0000: fb 58 41 01 00 00 60 9f - 4d 00                    | .XA...`.M.
25686 [12.13. - 03:48:24] [NET__NET_ACKS] 192.168.1.101:4753: Sending ack with sequence 25
25686 [12.13. - 03:48:24] [NET__NET_ACKS] 192.168.1.101:4753: Set Last Ack Sent to 25
25686 [12.13. - 03:48:24] [NET__APP_TRACE] 192.168.1.101:4753: Pushing non-sequenced packet of length 2
25686 [12.13. - 03:48:24] [NET__NET_COMBINE] 192.168.1.101:4753: Starting combined packet with non-seq packet of len 2
25686 [12.13. - 03:48:24] [NET__NET_COMBINE] 192.168.1.101:4753: Final combined packet not full, len 2
25686 [12.13. - 03:48:24] Unable to convert EQ opcode 0x58fb to an Application opcode.
25686 [12.13. - 03:48:24] [WORLD__CLIENT_TRACE] trevadmin: Recevied EQApplicationPacket
25686 [12.13. - 03:48:24] [WORLD__CLIENT_TRACE] [OpCode OP_Unknown (0x58fb) Size=8]
25686 [12.13. - 03:48:24] [WORLD__CLIENT_TRACE] 0000: 41 01 00 00 60 9f 4d 00 -                          | A...`.M.
25686 [12.13. - 03:48:24] [WORLD__CLIENT_ERR] trevadmin: Received unknown EQApplicationPacket
25686 [12.13. - 03:48:24] [WORLD__CLIENT_ERR] [OpCode OP_Unknown (0x58fb) Size=8]
25686 [12.13. - 03:48:24] [WORLD__CLIENT_ERR] 0000: 41 01 00 00 60 9f 4d 00 -                          | A...`.M.

Judging by what I see from Titanium clients, this doesn't exist. At least not in the order I have seen them in. It could be that it is an error from not getting anything back from the CRC checks though. Either way, these are all coming in while getting to the char select screen, which loads fine. I don't think they are related to the reason I can't get in game, but worth noting at least.

EDIT: After looking into it a bit more, this 3rd unknown opcode does show up when connecting with Titanium as well, only it uses 0x6A5F, which from what I can tell is the auto-AFK opcode. It is "unknown" in Titanium as well and doesn't cause problems, so it shouldn't be an issue at all for SoF. I am pretty sure we can at least ignore this particular one (0x58FB), since it appears to be AFK related.

trevius 12-15-2008 09:19 AM

I finally made a little more progress. I am 1 step closer to being able to get in game now lol. I have been trying to figure out the size of the playerprofile struct so that I could at least get the EQ Debug log to show me reaching the next step. After trying many other ways, I finally figured it out by looking at the IDA Assembly code and finding the error I was getting and then checking the HEX for that was causing the error to happen. I checked the HEX and it came out to be 5C18, which is 23576. I checked IDA for Titanium and the same code matched the PlayerProfile size for Titanium (19592). I did another compile with the new structure size and now I am getting this:

Code:

[Mon Dec 15 07:06:53 2008]01792:Zone Connect -- 0 -- Received MSG_ZONE_ADDRESS
[Mon Dec 15 07:06:53 2008]01793:Zone addr [192.168.1.102:20253] received...
[Mon Dec 15 07:06:53 2008]01794:ZONING
[Mon Dec 15 07:06:53 2008]01795:Networking: Connection Closed [0] with 0 pending bytes.
[Mon Dec 15 07:06:53 2008]01796:Networking: using port [2629].
[Mon Dec 15 07:06:54 2008]01797:Networking: Connection Established [1]
[Mon Dec 15 07:06:54 2008]01798:Connected to 192.168.1.102:20253...

[Mon Dec 15 07:06:54 2008]01799:Zone Connect -- 2 -- Sending MSG_EQ_ADDPLAYER
[Mon Dec 15 07:06:59 2008]01800:Zone Connect -- 3 -- Received MSG_SEND_PC
[Mon Dec 15 07:06:59 2008]01801:Zone Connect -- 4 -- Received MSG_EQ_ADDPLAYER
[Mon Dec 15 07:06:59 2008]01802:fatal error in main thread Code = c0000005  ADDR=0x004c0aa3

[Mon Dec 15 07:06:59 2008]01803:EAX=0000004b  EBX=0cf3ab0f  ECX=00000088  EDX=f9161180

[Mon Dec 15 07:06:59 2008]01804:ESI=f9161250  EDI=0cf3aa7e  EBP=00000000  ESP=0012a378

[Mon Dec 15 07:06:59 2008]01805:Raw Stack

.....Then a bunch of other error logs

So, there is definitely some issues past that point, but it is a step in the right direction lol. Now to figure out what caused the crash... My first guess is that the problem is related to the items structure, since I know at least the following fields were added at the time of SoF release that weren't in Titanium:
heroic_agi
heroic_cha
heroic_dex
heroic_int
heroic_sta
heroic_str
heroic_wis
I also see these that aren't listed in my Items Table currently, but they may just be newly discovered Uknowns that already exist, but aren't labeled properly:
spelldmg
backstabdmg
clairvoyance
dsmitigation
healamt

I am not sure if that would cause a crash or not, but I guess I will try adding those and see what happens.

Not that it really means much to me, but this seems to be the part where those errors get generated if it isn't equal to whatever check is being done here:
Code:

.text:004C0CD3 loc_4C0CD3:                            ; CODE XREF: sub_4C0A50+5Cj
.text:004C0CD3                                        ; sub_4C0A50+78j ...
.text:004C0CD3                mov    esi, [esp+38h+var_28] ; default
.text:004C0CD7                mov    eax, [esp+38h+var_18]
.text:004C0CDB                add    esi, 10h
.text:004C0CDE                dec    eax
.text:004C0CDF                mov    [esp+38h+var_28], esi
.text:004C0CE3                mov    [esp+38h+var_18], eax
.text:004C0CE7                jnz    loc_4C0AA3
.text:004C0CED                mov    eax, [esp+38h+var_24]
.text:004C0CF1                pop    edi
.text:004C0CF2                pop    esi
.text:004C0CF3                pop    ebp
.text:004C0CF4                pop    ebx
.text:004C0CF5                add    esp, 28h
.text:004C0CF8                retn


trevius 12-15-2008 08:07 PM

According to the script from 13th floor that dumps items, here:

http://eqitems.13th-floor.org/svn/sc...ump/fields.txt

It looks like the current list of item fields is in this order:

Code:

itemclass
name
lore
lorefile
idfile
id
weight
norent
nodrop
size
slots
price
icon
UNK013
UNK014
benefitflag
tradeskills
cr
dr
pr
mr
fr
svcorruption
astr
asta
aagi
adex
acha
aint
awis
hp
mana
endur
ac
classes
races
deity
skillmodvalue
UNK038
skillmodtype
banedmgrace
banedmgbody
banedmgraceamt
banedmgamt
magic
casttime_
reqlevel
reclevel
recskill
bardtype
bardvalue
light
delay
elemdmgtype
elemdmgamt
range
damage
color
itemtype
material
UNK060
UNK061
sellrate
combateffects
shielding
stunresist
strikethrough
extradmgskill
extradmgamt
spellshield
avoidance
accuracy
charmfileid
factionmod1
factionamt1
factionmod2
factionamt2
factionmod3
factionamt3
factionmod4
factionamt4
charmfile
augtype
augrestrict
augdistiller
augslot1type
augslot1visible
augslot1unk2
augslot2type
augslot2visible
augslot2unk2
augslot3type
augslot3visible
augslot3unk2
augslot4type
augslot4visible
augslot4unk2
augslot5type
augslot5visible
augslot5unk2
pointtype
ldontheme
ldonprice
UNK098
ldonsold
bagtype
bagslots
bagsize
bagwr
book
booktype
filename
loregroup
artifactflag
UNK109
favor
guildfavor
fvnodrop
dotshielding
attack
regen
manaregen
enduranceregen
haste
damageshield
UNK120
UNK121
attuneable
nopet
UNK124
potionbelt
potionbeltslots
stacksize
notransfer
UNK129
questitemflag
UNK131
UNK132
clickeffect
clicktype
clicklevel2
clicklevel
maxcharges
casttime
recastdelay
recasttype
clickunk5
clickname
clickunk7
proceffect
proctype
proclevel2
proclevel
procunk1
procunk2
procunk3
procunk4
procrate
procname
procunk7
worneffect
worntype
wornlevel2
wornlevel
wornunk1
wornunk2
wornunk3
wornunk4
wornunk5
wornname
wornunk7
focuseffect
focustype
focuslevel2
focuslevel
focusunk1
focusunk2
focusunk3
focusunk4
focusunk5
focusname
focusunk7
scrolleffect
scrolltype
scrolllevel2
scrolllevel
scrollunk1
scrollunk2
scrollunk3
scrollunk4
scrollunk5
scrollname
scrollunk7
UNK193
purity
dsmitigation
heroic_str
heroic_int
heroic_wis
heroic_agi
heroic_dex
heroic_sta
heroic_cha
healamt
spelldmg
clairvoyance
backstabdmg
evolvinglevel
verified
created

So, I guess all of the extra fields I posted in the previous post were actually new. I know the herioc stuff went in with the SoF release, so I just need to see if I can find in the patch notes when the others after healamt were added. Then, I should just be able to fill in the anniversary (using anniversary files for SoF still) items file either with these new fields, or maybe just set them all to 0 so that the correct number of fields are at least being sent. The heroic stats do sound cool and should add more variety for possible upgraded gear in the emulator. For anyone that doesn't know already, apparently they add more stats that can increase the cap of the particular stat it is adding to, so you can exceed the caps with the stats from them. That shouldn't be hard at all to code if we can get to that point.

trevius 12-16-2008 12:21 AM

I spent most of the day working on this, but this should be the item field list order that is currently used on live according to 13th floor collects:

Code:

/* 000 */        //I(ItemClass) Leave this one off on purpose
/* 001 */        S(Name)
/* 002 */        S(Lore)
/* 003 */        S("")//lorefile - Newly Added - Field is Null
/* 003 */        S(IDFile)
/* 004 */        I(ID)
/* 005 */        I(Weight)
/* 006 */        I(NoRent)
/* 007 */        I(NoDrop)
/* 008 */        I(Size)
/* 009 */        I(Slots)
/* 010 */        I(Price)
/* 011 */        I(Icon)
/* 012 */        I(0)
/* 013 */        I(0)
/* 014 */        I(BenefitFlag)
/* 015 */        I(Tradeskills)
/* 016 */        I(CR)
/* 017 */        I(DR)
/* 018 */        I(PR)
/* 019 */        I(MR)
/* 020 */        I(FR)
/* 020 */        I(0)//svcorruption - Newly Added
/* 021 */        I(AStr)
/* 022 */        I(ASta)
/* 023 */        I(AAgi)
/* 024 */        I(ADex)
/* 025 */        I(ACha)
/* 026 */        I(AInt)
/* 027 */        I(AWis)
/* 028 */        I(HP)
/* 029 */        I(Mana)
/* 111 */        I(Endur) //endur - Relocated
/* 030 */        I(AC)
/* 052 */        I(Classes)//classes - Relocated
/* 053 */        I(Races)//races - Relocated
/* 031 */        I(Deity)
/* 032 */        I(SkillModValue)
/* 033 */        I(0)//UNK038 - Default is 0
/* 034 */        I(SkillModType)
/* 035 */        I(BaneDmgRace)
/* 037 */        I(BaneDmgBody)//banedmgbody - Relocated
/* 103 */        I(BaneDmgRaceAmt)//banedmgraceamt - Relocated
/* 036 */        I(BaneDmgAmt)//banedmgamt - Relocated
/* 038 */        I(Magic)
/* 039 */        I(CastTime_)
/* 040 */        I(ReqLevel)
/* 045 */        I(RecLevel)//reclevel - Relocated
/* 046 */        I(RecSkill)//recskill - Relocated
/* 041 */        I(BardType)
/* 042 */        I(BardValue)
/* 043 */        I(Light)
/* 044 */        I(Delay)
/* 047 */        I(ElemDmgType)
/* 048 */        I(ElemDmgAmt)
/* 049 */        I(Range)
/* 050 */        I(Damage)
/* 051 */        I(Color)
/* 056 */        I(ItemType)
/* 057 */        I(Material)
/* 054 */        I(0)//UNK060 - Default is 0
/* 054 */        I(0)//UNK061 - Default is 0
/* 058 */        F(SellRate)
/* 063 */        I(CombatEffects)
/* 064 */        I(Shielding)
/* 065 */        I(StunResist)
/* 066 */        I(StrikeThrough)
/* 067 */        I(ExtraDmgSkill)
/* 068 */        I(ExtraDmgAmt)
/* 069 */        I(SpellShield)
/* 070 */        I(Avoidance)
/* 071 */        I(Accuracy)
/* 072 */        I(CharmFileID)
/* 073 */        I(FactionMod1)//Swapped these so Faction Amt comes after each Faction Mod
/* 077 */        I(FactionAmt1)//Swapped these so Faction Amt comes after each Faction Mod
/* 074 */        I(FactionMod2)//Swapped these so Faction Amt comes after each Faction Mod
/* 078 */        I(FactionAmt2)//Swapped these so Faction Amt comes after each Faction Mod
/* 075 */        I(FactionMod3)//Swapped these so Faction Amt comes after each Faction Mod
/* 079 */        I(FactionAmt3)//Swapped these so Faction Amt comes after each Faction Mod
/* 076 */        I(FactionMod4)//Swapped these so Faction Amt comes after each Faction Mod
/* 080 */        I(FactionAmt4)//Swapped these so Faction Amt comes after each Faction Mod
/* 081 */        S(CharmFile)
/* 082 */        I(AugType)
/* 104 */        I(AugRestrict)//augrestrict - Relocated
/* 122 */        I(AugDistiller)//augdistiller - Relocated
/* 083 */        I(AugSlotType[0])
/* 084 */        I(AugSlotUnk[0])//augslot1visible - Default 1
/* 084 */        I(0)//augslot1unk2 - Newly Added  - Default 0
/* 085 */        I(AugSlotType[1])
/* 086 */        I(AugSlotUnk[1])
/* 084 */        I(0)//augslot2unk2 - Newly Added
/* 087 */        I(AugSlotType[2])
/* 088 */        I(AugSlotUnk[2])
/* 084 */        I(0)//augslot3unk2 - Newly Added
/* 089 */        I(AugSlotType[3])
/* 090 */        I(AugSlotUnk[3])
/* 084 */        I(0)//augslot4unk2 - Newly Added
/* 091 */        I(AugSlotType[4])
/* 092 */        I(AugSlotUnk[4])
/* 084 */        I(0)//augslot5unk2 - Newly Added
/* 128 */        I(PointType)//pointtype - Relocated
/* 093 */        I(LDoNTheme)
/* 094 */        I(LDoNPrice)
/* 084 */        I(70)//UNK098 - Newly Added - Default 70, but some are set to 0
/* 095 */        I(LDoNSold)
/* 096 */        I(BagType)
/* 097 */        I(BagSlots)
/* 098 */        I(BagSize)
/* 099 */        I(BagWR)
/* 100 */        I(Book)
/* 101 */        I(BookType)
/* 102 */        S(Filename)
/* 105 */        I(LoreGroup)
/* 107 */        I(ArtifactFlag)
/* 106 */        I(PendingLoreFlag)//UNK109 - Default 0, but a few are 1
/* 109 */        I(Favor)
/* 121 */        I(GuildFavor)//guildfavor - Relocated
/* 110 */        I(FVNoDrop)
/* 112 */        I(DotShielding)
/* 113 */        I(Attack)
/* 114 */        I(Regen)
/* 115 */        I(ManaRegen)
/* 116 */        I(EnduranceRegen)
/* 117 */        I(Haste)
/* 118 */        I(DamageShield)
/* 123 */        I(-1) //UNK120 - Default is -1
/* 124 */        I(0) //UNK121 - Default is 0
/* 125 */        I(Attuneable)
/* 126 */        I(NoPet)
/* 127 */        I(0) //UNK124 - Default 0, but a few are 1
/* 129 */        I(PotionBelt)
/* 130 */        I(0) //potionbeltslots - Default 0, but a few are 1
/* 131 */        I(StackSize)
/* 132 */        I(NoTransfer)
/* 133 */        I(Stackable)//UNK129 - Default is 0, but some are much higher
/* 133 */        I(0)//questitemflag - Default is 0 (off), flag on = 1
/* 133 */        I(0)//UNK131 - Default is 0, but there is an item set to 1
/* 133 */        I(0)//UNK132 - Default is 0
/* 134 */        I(Click.Effect)
/* 135 */        I(Click.Type)
/* 136 */        I(Click.Level2)
/* 137 */        I(Click.Level)
/* 055 */        I(MaxCharges)//maxcharges - Relocated
/* 060 */        I(CastTime_)//casttime - Relocated - Note Duplicate Entries for CastTime_ and none for CastTime
/* 119 */        I(RecastDelay)//recastdelay - Relocated
/* 120 */        I(RecastType)//recasttype - Relocated
/* 133 */        I(0)//clickunk5 - Newly Added - Default is 0
/* 138 */        S("")//clickname - Newly Added - Default is Null
/* 133 */        I(-1)//clickunk7 - Newly Added - Default is -1, but some set to 0 and some much higher
/* 139 */        I(Proc.Effect)
/* 140 */        I(Proc.Type)
/* 141 */        I(Proc.Level2)
/* 142 */        I(Proc.Level)
/* 133 */        I(0)//procunk1 - Newly Added - Default is 0, but some set to -1 and 1
/* 133 */        I(0)//procunk2 - Newly Added - Default is 0
/* 133 */        I(0)//procunk3 - Newly Added - Default is 0
/* 133 */        I(0)//procunk4 - Newly Added - Default is 0
/* 062 */        I(ProcRate)procrate - Relocated
/* 138 */        S("")//procname - Newly Added - Default is Null
/* 133 */        I(-1)//procunk7 - Newly Added - Default is -1, but some set to 0
/* 144 */        I(Worn.Effect)
/* 145 */        I(Worn.Type)
/* 146 */        I(Worn.Level2)
/* 147 */        I(Worn.Level)
/* 133 */        I(0)//wornunk1 - Newly Added - Default is 0
/* 133 */        I(0)//wornunk2 - Newly Added - Default is 0
/* 133 */        I(0)//wornunk3 - Newly Added - Default is 0
/* 133 */        I(0)//wornunk4 - Newly Added - Default is 0
/* 133 */        I(0)//wornunk5 - Newly Added - Default is 0
/* 138 */        S("")//wornname - Newly Added - Default is Null
/* 133 */        I(-1)//wornunk7 - Newly Added - Default is -1, but some set to 0
/* 149 */        I(Focus.Effect)
/* 150 */        I(Focus.Type)
/* 151 */        I(Focus.Level2)
/* 152 */        I(Focus.Level)
/* 133 */        I(0)//focusunk1 - Newly Added - Default is 0
/* 133 */        I(0)//focusunk2 - Newly Added - Default is 0
/* 133 */        I(0)//focusunk3 - Newly Added - Default is 0
/* 133 */        I(0)//focusunk4 - Newly Added - Default is 0
/* 133 */        I(0)//focusunk5 - Newly Added - Default is 0
/* 138 */        S("")//focusname - Newly Added - Default is Null
/* 133 */        I(-1)//focusunk7 - Newly Added - Default is -1, but some set to 0
/* 154 */        I(Scroll.Effect)
/* 155 */        I(Scroll.Type)
/* 156 */        I(Scroll.Level2)
/* 157 */        I(Scroll.Level)scrollunk1
/* 133 */        I(0)//scrollunk2 - Newly Added - Default is 0
/* 133 */        I(0)//scrollunk3 - Newly Added - Default is 0
/* 133 */        I(0)//scrollunk4 - Newly Added - Default is 0
/* 133 */        I(0)//scrollunk5 - Newly Added - Default is 0
/* 138 */        S("")//scrollname - Newly Added - Default is Null
/* 133 */        I(-1)//scrollunk7 - Newly Added - Default is -1, but some set to 0
/* 158 */        I(0)//UNK193 - Default is 0
/* 133 */        I(0)//purity - Newly Added - Default is 0, but some go up to 75
/* 133 */        I(0)//dsmitigation - Newly Added - Default is 0, but some are up to 2
/* 133 */        I(0)//heroic_str - Newly Added - Default is 0
/* 133 */        I(0)//heroic_int - Newly Added - Default is 0
/* 133 */        I(0)//heroic_wis - Newly Added - Default is 0
/* 133 */        I(0)//heroic_agi - Newly Added - Default is 0
/* 133 */        I(0)//heroic_dex - Newly Added - Default is 0
/* 133 */        I(0)//heroic_sta - Newly Added - Default is 0
/* 133 */        I(0)//heroic_cha - Newly Added - Default is 0
/* 133 */        I(0)//healamt - Newly Added - Default is 0, but some are up to 9
/* 133 */        I(0)//spelldmg - Newly Added - Default is 0, but some are up to 9
/* 133 */        I(0)//clairvoyance - Newly Added - Default is 0, but some are up to 10
/* 133 */        I(0)//backstabdmg - Newly Added - Default is 0, but some are up to 65
/* 133 */        I(0)//evolvinglevel - Newly Added - Default is 0, but some are up to 7

//This doesn't appear to be used /* 102 */        S(verified)//verified
//This doesn't appear to be used /* 102 */        S(serialized)//created
//Unsure where this goes right now (or if it is even used) /* 108 */        I(SummonedFlag)

#undef I
#undef C
#undef S
#undef F

I will try this as soon as I get home tonight. I am guessing that the following fields were added after SoF, so I will comment them out for now and try adding them 1 at a time until it works (hopefully):
Code:

/* 133 */        I(0)//healamt - Newly Added - Default is 0, but some are up to 9
/* 133 */        I(0)//spelldmg - Newly Added - Default is 0, but some are up to 9
/* 133 */        I(0)//clairvoyance - Newly Added - Default is 0, but some are up to 10
/* 133 */        I(0)//backstabdmg - Newly Added - Default is 0, but some are up to 65
/* 133 */        I(0)//evolvinglevel - Newly Added - Default is 0, but some are up to 7

Note that the item field numbers are not correct, but once I have the list working, I will renumber it all manually.

Also, the only thing I am not quite sure about here is the use of quotes on ints and nulls. Does anyone know if I(0) is the same as I("0"), and if S("") is the same as NULL, or if there is a better way to put NULL there? Maybe something like S(NULL)?

MNWatchdog 12-16-2008 01:17 AM

Have you checked Macroquest sources from around that time? I would assume most of the structs are in there.

trevius 12-16-2008 03:25 AM

I already looked into it a little, but Macroquest reads directly from memory and doesn't do any kind of packet sniffing as far as I can tell. So, it uses offsets and such, which might possibly be useful for figuring out something, but I don't really know what to do with them personally.

MNWatchdog 12-16-2008 04:48 AM

Just thinking that by comparing MQ Titanium/Emus structs to MQs SoF structs would make it far easier to figure out what new fields need to be added to Emus structs that need to be send to the SoF client.

Im thinking that say a items struct is sent to the client in the same formate its readable from memory. I dont know if this is true, but if it is, looking at MQs SoFs structs should help a lot.

Rocker8956 12-16-2008 03:49 PM

Wow, way above my skill level so all I can do is cheer you on.

Just one thought though, perhaps the correct fields could be found by looking at stats on items that were released with SoF.

I think clairvoyance and healamt were on those items but they could have been added later.

trevius 12-16-2008 05:31 PM

Like I said, MQ reads from memory and is written in a completely different way than our packet structures. They use offsets that line up directly with the assembly code from the eqgame.exe, and so their format is completely different. Possibly if I was very familiar with the MQ source, I might have an idea of how it could be useful. Unfortunately I might as well be trying to read in German (which I don't know how to do), because that is about how different the code is from the emu source.

I figured out last night that all of the fields I had listed in my last post were actually in with the SoF release. The only one I am still not 100% certain about is the evolving items part. According to 13th floor, I saw it mentioned that evolving items need their own separate table and have a separate opcode (I think) if the item is able to evolve. Hopefully setting that field to 0 will just disable evolving so we don't need to write anything for it until we are at a point where we can do it at leisure. As far as the item field list for SoF, I think that I now have it 100% (or very close to it) complete. This is good, because it is 1 more step closer to being done, but the bad part is that it didn't fix my current issue.

I looked into it further last night and checked the debug where I am crashing in SoF vs a debug of a successful Titanium connection. I then compared a few things in the Titanium assembly code to the SoF assembly code. I am pretty sure that I have narrowed the current issue down to the Spawn_Structure. Unfortunately, I think that structure is by far the worst and hardest part left of getting SoF to work with the emulator. Out of all structures, the spawn struct gets completely moved around with almost every patch. I was able to find the packet size of 385 (HEX is 181) for the Titanium spawn struct by using the hex calculator here http://www.squarebox.co.uk/hcalc.html (very useful when messing with the assembly code), and then searching for 0x0181 in the assembly code. I found the same section of code in the SoF assembly code, but I was unable to figure out what the struct size was. Since this technique worked perfectly for finding the struct size for the player profile, I think that means that the new spawn struct for SoF is now a variable length struct. I checked the current SEQ source code and it lists it as variable length, even though the SEQ version from when SoF came out shows it as a fixed size.

I don't know anything about variable structure sizes or what to do with them. The spawn struct also seems to use unions, packet padding, signed and unsigned ints, all of which I know absolutely nothing about... All of the other structures are pretty straight forward and I think most of them should already be ready to start working once I get the spawn struct correct. This is probably going to be the biggest hurdle to getting SoF working.

I am still going to do some further testing on Titanium to see if I can duplicate the exact crash I am having on SoF, which should help narrow down the exact cause of the problem. That technique has already helped me multiple times in figuring out what is causing a problem.

I figured this stuff was over my skill level too, but so far, I have learned alot just reading the structures and forums here and SEQ forums. I have been able to do alot of things that I didn't expect to be able to do. So, even though it might sound above your skill level doesn't mean that you wouldn't be able to figure it out if you put some thought into it :)

trevius 12-16-2008 09:05 PM

Here is a link to the post from right before when SoF was released stating that he was able to get the spawn struct from the eqgame.exe and that it should be fully accurate:

http://www.showeq.net/forums/showpos...4&postcount=21

Since that struct didn't change in the update following the SoF release and they said everything in SEQ was still functional, I am wondering if it is safe to assume that it is correct. Ultimately, I wish I knew exactly what he did to pull all of that info from the .exe and if I knew that, this would be simple.

Here is the Spawn_Struct according to SEQ at the time of SoF (and a few patches later as well):

Code:

/*
** Generic Spawn Struct
** Length: 897 Octets
** Used in:
**  dbSpawnStruct
**  petStruct
**  spawnShroudOther
**  spawnShroudSelf
*/

struct spawnStruct
{
/*0000*/ uint8_t  unknown0000[9];
/*0009*/ int16_t  deity;          // Player's Deity
/*0011*/ uint8_t  unknown0011[11];
/*0022*/ uint8_t  gender;        // Gender (0=male, 1=female)
/*0023*/ uint8_t  unknown0023[4];
/*0027*/ union
        {
                struct
                {
                /*0027*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
                /*0039*/ EquipStruct equip_chest; // Equiptment: Chest visual
                /*0051*/ EquipStruct equip_arms; // Equiptment: Arms visual
                /*0063*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
                /*0075*/ EquipStruct equip_hands; // Equiptment: Hands visual
                /*0087*/ EquipStruct equip_legs; // Equiptment: Legs visual
                /*0099*/ EquipStruct equip_feet; // Equiptment: Boots visual
                /*0111*/ EquipStruct equip_primary; // Equiptment: Main visual
                /*0123*/ EquipStruct equip_secondary; // Equiptment: Off visual
                } equip;
                /*0027*/ EquipStruct equipment[9];
        };
/*0135*/ uint8_t  state;          // stand state
/*0136*/ uint8_t  unknown0136;
/*0137*/ uint32_t guildID;        // Current guild
/*0141*/ uint8_t  unknown0141[24];
/*0165*/ uint8_t  class_;        // Player's class
/*0166*/ uint8_t  unknown0166[201];
/*%%% gm right this time? */
/*0367*/ uint8_t  gm;
/*0368*/ uint8_t  unknown0368[134];
/*0502*/ float    runspeed;      // Speed when walking
/*0506*/ uint8_t  light;          // Spawn's lightsource
/*0507*/ uint8_t  unknown0507[4];
/*0511*/ uint8_t  level;          // Spawn Level
/*0512*/ uint8_t  unknown0512[23];
/*0535*/ uint32_t race;          // Spawn race
/*0539*/ uint8_t  unknown0539[41];
/*0580*/ char    suffix[32];    // Player's suffix (of Veeshan, etc.)
/*0612*/ uint8_t  unknown0612;
/*0613*/ uint8_t  bodytype;      // Bodytype
/*0614*/ uint8_t  unknown0614[41];
/*0655*/ uint8_t  curHp;          // Current hp
/*0656*/ uint8_t  unknown0656[2];
/*0658*/ char    lastName[32];  // Player's Lastname
/*0690*/ uint8_t  unknown0690[2];
/*0692*/ char    title[32];      // Title
/*0724*/ uint8_t  unknown0724[6];
/*0730*/ uint8_t  NPC;            // 0=player,1=npc,2=pc corpse,3=npc corpse
/*0731*/ uint8_t  unknown0731[12];
/*0743*/ signed  padding0000:12; // ***Placeholder
        signed  x:19;          // x coord
        signed  padding0002:1; // ***Placeholder
/*0747*/ signed  deltaX:13;      // change in x
        signed  deltaY:13;      // change in y
        signed  padding0006:6;  // ***Placeholder
/*0751*/ signed  z:19;          // z coord
        signed  deltaHeading:10;// change in heading
        signed  padding0014:3;  // ***Placeholder
/*0755*/ signed  y:19;          // y coord
        signed  deltaZ:13;      // change in z
/*0759*/ signed  animation:10;  // animation
        unsigned heading:12;    // heading
        signed  padding0018:10;  // ***Placeholder
/*0763*/ uint32_t spawnId;        // Spawn Id
/*0767*/ uint8_t  unknown0767[8];
/*0775*/ char    name[64];      // Player's Name
/*0839*/ uint32_t petOwnerId;    // If this is a pet, the spawn id of owner
/*0843*/ uint8_t  unknown0843;
/*0844*/ union
        {
                struct
                {
                /*0844*/ Color_Struct color_helmet;    // Color of helmet item
                /*0848*/ Color_Struct color_chest;    // Color of chest item
                /*0852*/ Color_Struct color_arms;      // Color of arms item
                /*0856*/ Color_Struct color_bracers;  // Color of bracers item
                /*0860*/ Color_Struct color_hands;    // Color of hands item
                /*0864*/ Color_Struct color_legs;      // Color of legs item
                /*0868*/ Color_Struct color_feet;      // Color of feet item
                /*0872*/ Color_Struct color_primary;  // Color of primary item
                /*0876*/ Color_Struct color_secondary; // Color of secondary item
                } equipment_colors;
                /*0844*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
        };
/*0880*/ uint8_t  anon;          // 0=normal, 1=anon, 2=roleplay
/*0881*/ uint8_t  unknown0881[10];
/*0891*/ float    walkspeed;      // Speed when running
/*0895*/ uint8_t  unknown896[2];
/*0897*/
};

Part of the problem may be that I had to change this considerably to fit in all of the stuff that EQEmu currently uses for settings on spawns within the same number of bytes. Also, I don't know how to count the signed and padding stuff, so my structure size may be off.

It is still possible that something else could be the cause of my crashes, but at least by fixing everything as much as possible now, it will mean less work later. I am glad that the itemlist stuff is all done now, so it should hopefully work as soon as it is ready to get to that point :D

trevius 12-17-2008 01:14 AM

Well, I guess I was looking too hard for the spawn struct size lol. I simply converted the 897 to HEX, which is 381, and then searched the SoF eqgame.exe code for 381 and found this:

Code:

.text:00481860                mov    eax, [esp+arg_4]
.text:00481864                sub    esp, 80h
.text:0048186A                cmp    eax, 381h
.text:0048186F                push    esi            ; char
.text:00481870                jz      short loc_4818DC
.text:00481872                push    offset aErrorCorruptAd ; "ERROR: Corrupt addplayer, disconnecting"...
.text:00481877                call    sub_645680
.text:0048187C                mov    eax, dword_98AF10
.text:00481881                add    esp, 4
.text:00481884                mov    esi, 1
.text:00481889                mov    [eax+38E98h], esi
.text:0048188F                mov    ecx, dword_98AF10
.text:00481895                push    0FFh
.text:0048189A                call    sub_4BF9E0
.text:0048189F                mov    ecx, dword_98AF10
.text:004818A5                mov    dword_925C8C, 106h
.text:004818AF                mov    [ecx+5C0h], esi
.text:004818B5                mov    ecx, dword_761C6C
.text:004818BB                push    offset dword_907EF0
.text:004818C0                call    sub_43D670
.text:004818C5                push    offset aErrorInReceive ; "ERROR: in receive add player, LEN failu"...
.text:004818CA                call    sub_645680
.text:004818CF                add    esp, 4
.text:004818D2                xor    al, al
.text:004818D4                pop    esi
.text:004818D5                add    esp, 80h
.text:004818DB                retn

And, when I changed the Titanium spawn structure size and logged in, it didn't crash, but it did time out and put out this debug log from the normal EQ debug file:
Code:

2008-12-15 06:08:03        Zone Connect -- 2 -- Sending MSG_EQ_ADDPLAYER
2008-12-15 06:08:06        Zone Connect -- 3 -- Received MSG_SEND_PC
2008-12-15 06:08:06        Zone Connect -- 4 -- Received MSG_EQ_ADDPLAYER
2008-12-15 06:08:07        ERROR: Corrupt addplayer, disconnecting.
2008-12-15 06:08:07       
2008-12-15 06:08:07        Networking: Connection Closed [0] with 0 pending bytes.
2008-12-15 06:08:07        ERROR: in receive add player, LEN failure.
2008-12-15 06:08:07       
2008-12-15 06:08:07        disconnected at C:\EQ\EverQuest\EverQuest.cpp:17233 (char. select) g_world == NULL
2008-12-15 06:08:07       
2008-12-15 06:08:07        Character is Trevazar.
2008-12-15 06:08:07       
2008-12-15 06:08:10        nError is TRUE at C:\EQ\EverQuest\EverQuest.cpp:20261

So, it sounds like those guys at SEQ might be correct with that spawn file after-all. Now, I just need to figure out what is being done on SoF that is causing a crash. Anyone know of a debug program that could be run on Everquest?

OscarGrouch05 12-17-2008 04:40 AM

Anyone know of a debug program
 
Anyone know of a debug program that could be run on Everquest?

Yes i use w32dsm89
will allow you to read it in asm lang plus debug the program all in one.
send email addy and i'll be happy to link ya to them don't want to post
anything againts the rules.
What i'm doing is looking at the code with
w32dsm89
etu-dasm-32/16 bit disassembler v 2.22 alpha
i really think etu-dasm would help you out
more as it will allow you read more info
in english so you'll understnad it better.

i been following up on what your doing.
what i'm intrested in is getting the expanshions
to read 15-15 etc. i noticed your not letting
us know what ver of peqserverpack.. 80) as well i
change the opcode OP_EnterWorld=0x7cba
put in patch_Anniversary.conf and opened
fos got into char slect screen.
i was using the newest ver
ActivePerl-5.10.0.1004-MSWin32-x86-287188
PEQUpdatePack-4.0-1129Rev233
mysql-5.0.51a-win32

trevius 12-17-2008 08:01 PM

When you say you want expansions to display 15 out of 15, do you mean at the server select? I don't think there is anything we can do about that. I am pretty sure we would have to adjust the login server source code to fix that. That isn't an option, because no one has access to it that is active around here these days. Titanium shows the wrong number of expansions, and SoF shows 0 of 0 expansions. Luckily, that has no effect on how the actual server handles your connection, it is just a display thing.

The version of code or database I am running doesn't really matter, but I am using one of the latest revisions from the SVN, R238. My database is about a year old PEQ one that has been updated by me for my custom server. The changes I am making should be able to work on any version once they are all done. If I can get it working, I will submit any needed changes for database tables once we get to that point, but for now, I am doing everything without relying on database changes.

My current status is that I worked all night last night trying to duplicate the same crash on Titanium by throwing off the structure format by increasing or decreasing the size of certain pieces of the playerprofile structure. I couldn't once get it to crash the way that SoF is, and it actually made it in game almost no matter what I changed, but it did make things wrong like plat, levels, etc, because the structure info wasn't aligned properly. I also tried to remove all of the opcodes in Titanium that I don't have correct for SoF yet, and that didn't cause a crash either.

The spawn struct seems like it should be ok, and the player profile looks like it should be very close to correct, so I am still trying to figure out what is causing the crash. I am wondering if something else was added to the playerprofile struct that we don't know anything about. There were 1032 packets added to the end of the structure sometime between the Titanium to Anniversary time period. I have no idea what that 1032 is supposed to be for, but maybe that is the cause of the crash, since we aren't sending anything at all for it.

trevius 12-19-2008 08:11 AM

After spending hours working to get to the next step towards getting in game, I finally made some progress.

Code:

[Fri Dec 19 06:01:40 2008]00131:Zone Connect -- 0 -- Received MSG_ZONE_ADDRESS
[Fri Dec 19 06:01:40 2008]00132:Zone addr [192.168.1.102:19997] received...
[Fri Dec 19 06:01:41 2008]00133:ZONING
[Fri Dec 19 06:01:41 2008]00134:Networking: Connection Closed [0] with 0 pending bytes.
[Fri Dec 19 06:01:41 2008]00135:Networking: using port [1969].
[Fri Dec 19 06:01:41 2008]00136:Networking: Connection Established [1]
[Fri Dec 19 06:01:41 2008]00137:Connected to 192.168.1.102:19997...

[Fri Dec 19 06:01:41 2008]00138:Zone Connect -- 2 -- Sending MSG_EQ_ADDPLAYER
[Fri Dec 19 06:01:43 2008]00139:Zone Connect -- 3 -- Received MSG_SEND_PC
[Fri Dec 19 06:01:43 2008]00140:Zone Connect -- 4 -- Received MSG_EQ_ADDPLAYER
[Fri Dec 19 06:01:43 2008]00141:Received our Player from zone. MSG_EQ_NETPLAYERBUFF is next.
[Fri Dec 19 06:01:43 2008]00142:Player = Trevazar, zone = Loading
[Fri Dec 19 06:01:43 2008]00143:MSG_TIME_STAMP received.

[Fri Dec 19 06:01:43 2008]00144:MSG_TIME_STAMP received. (Items inc).

[Fri Dec 19 06:01:51 2008]00145:fatal error in main thread Code = c0000005  ADDR=0x004e59f9

[Fri Dec 19 06:01:51 2008]00146:EAX=22447600  EBX=22447600  ECX=22447600  EDX=00000001

[Fri Dec 19 06:01:51 2008]00147:ESI=0013a53c  EDI=224476e0  EBP=30347c39  ESP=0013a4f0

[Fri Dec 19 06:01:51 2008]00148:Raw Stack

It turns out that it was the spawn struct causing that after-all. The EQ debug info isn't very helpful (but much better than nothing!), because it appeared to be crashing at the point of getting the player profile. After messing with the player profile, no matter what I did to it, I couldn't duplicate the crash on Titanium.

I think I am probably only a couple smaller structs away from getting in game now. All of the big ones should be ok enough to get in at least, I think. On to solving the next crash point problem :P

trevius 12-20-2008 06:57 AM

Just to test, I made a new level 1 character (on a Titanium Client) and deleted all of his items and attempted to log him in with SoF. So far, I got further than ever :)
Code:

[Sat Dec 20 04:48:12 2008]00129:Initializing character select UI.
[Sat Dec 20 04:48:12 2008]00130:Resetting game UI.
[Sat Dec 20 04:49:01 2008]00131:Zone Connect -- 0 -- Received MSG_ZONE_ADDRESS
[Sat Dec 20 04:49:01 2008]00132:Zone addr [192.168.1.102:20253] received...
[Sat Dec 20 04:49:01 2008]00133:ZONING
[Sat Dec 20 04:49:01 2008]00134:Networking: Connection Closed [0] with 0 pending bytes.
[Sat Dec 20 04:49:01 2008]00135:Networking: using port [1574].
[Sat Dec 20 04:49:01 2008]00136:Networking: Connection Established [1]
[Sat Dec 20 04:49:01 2008]00137:Connected to 192.168.1.102:20253...

[Sat Dec 20 04:49:02 2008]00138:Zone Connect -- 2 -- Sending MSG_EQ_ADDPLAYER
[Sat Dec 20 04:49:12 2008]00139:Zone Connect -- 3 -- Received MSG_SEND_PC
[Sat Dec 20 04:49:12 2008]00140:Zone Connect -- 4 -- Received MSG_EQ_ADDPLAYER
[Sat Dec 20 04:49:12 2008]00141:Received our Player from zone. MSG_EQ_NETPLAYERBUFF is next.
[Sat Dec 20 04:49:12 2008]00142:Player = Ztestius, zone = The Nexus
[Sat Dec 20 04:49:12 2008]00143:MSG_TIME_STAMP received.

[Sat Dec 20 04:49:12 2008]00144:MSG_TIME_STAMP received. (Items inc).

[Sat Dec 20 04:49:12 2008]00145:Item done, MSG_WEATHER_EVENT received.

[Sat Dec 20 04:49:12 2008]00146:Initializing zone.
[Sat Dec 20 04:49:12 2008]00147:Initializing world.
[Sat Dec 20 04:49:12 2008]00148:Verifying world files.
[Sat Dec 20 04:49:12 2008]00149:Attempting to load nexus.EQG.
[Sat Dec 20 04:49:12 2008]00150:Loading zone specific files.
[Sat Dec 20 04:49:12 2008]00151:Loading nexus_obj2
[Sat Dec 20 04:49:12 2008]00152:Loading nexus_obj
[Sat Dec 20 04:49:12 2008]00153:Loading nexus_chr2
[Sat Dec 20 04:49:12 2008]00154:Loading nexus_chr
[Sat Dec 20 04:49:12 2008]00155:Loading nexus
[Sat Dec 20 04:49:13 2008]00156:Loading objects
[Sat Dec 20 04:49:13 2008]00157:Loading lights
[Sat Dec 20 04:49:13 2008]00158:Initializing cameras.
[Sat Dec 20 04:49:13 2008]00159:Initializing lights.
[Sat Dec 20 04:49:13 2008]00160:Initializing visual effects.
[Sat Dec 20 04:49:13 2008]00161:Initializing target indicator.
[Sat Dec 20 04:49:13 2008]00162:Initializing player path.
[Sat Dec 20 04:49:13 2008]00163:Performing post-load operations.
[Sat Dec 20 04:49:13 2008]00164:Initializing precipitation system.
[Sat Dec 20 04:49:13 2008]00165:World initialized: nexus
[Sat Dec 20 04:49:13 2008]00166:Requesting zone data.
[Sat Dec 20 04:49:13 2008]00167:Resetting cameras.
[Sat Dec 20 04:49:13 2008]00168:Resetting vision.
[Sat Dec 20 04:49:13 2008]00169:Resetting overlays.
[Sat Dec 20 04:49:13 2008]00170:Zone initialized.
[Sat Dec 20 04:49:13 2008]00171:Creating INI files.
[Sat Dec 20 04:49:13 2008]00172:Requesting AA data.
[Sat Dec 20 04:49:13 2008]00173:Requesting Skill rank data.
[Sat Dec 20 04:49:13 2008]00174:Loading UI.
[Sat Dec 20 04:49:13 2008]00175:Deactivating previous UI.
[Sat Dec 20 04:49:13 2008]00176:Unloading previous textures.
[Sat Dec 20 04:49:13 2008]00177:Resetting UI.
[Sat Dec 20 04:49:13 2008]00178:Resetting character select UI.
[Sat Dec 20 04:49:13 2008]00179:Resetting game UI.
[Sat Dec 20 04:49:13 2008]00180:UI Reset.
[Sat Dec 20 04:49:13 2008]00181:Initializing UI.
[Sat Dec 20 04:49:13 2008]00182:Initializing UI manager.
[Sat Dec 20 04:49:13 2008]00183:Initializing fonts.
[Sat Dec 20 04:49:13 2008]00184:Parsing UI XML.
[Sat Dec 20 04:49:13 2008]00185:Parsing INI file .\UI_Ztestius_stormhaven.ini
[Sat Dec 20 04:49:13 2008]00186:INI file .\UI_Ztestius_stormhaven.ini loaded.
[Sat Dec 20 04:49:14 2008]00187:Loading default UI resources.
[Sat Dec 20 04:49:14 2008]00188:Initializing game UI.
[Sat Dec 20 04:49:14 2008]00189:Parsing INI file .\Ztestius_stormhaven.ini
[Sat Dec 20 04:49:14 2008]00190:INI file .\Ztestius_stormhaven.ini loaded.
[Sat Dec 20 04:49:15 2008]00191:Loading Icons.
[Sat Dec 20 04:49:16 2008]00192:Resetting viewport.
[Sat Dec 20 04:49:16 2008]00193:Game UI Initialized.
[Sat Dec 20 04:49:16 2008]00194:Entering main loop.
[Sat Dec 20 04:49:16 2008]00195:DoMainLoop - Just after packet processing()
[Sat Dec 20 04:49:16 2008]00196:DoMainLoop - Just after actor creation()
[Sat Dec 20 04:49:16 2008]00197:Loading game sounds.
[Sat Dec 20 04:49:16 2008]00198:Requesting initialization data.
[Sat Dec 20 04:49:16 2008]00199:DoMainLoop: just before first while(!EverQuest.ReceievedWorldObjects).

I think I just need to track down a few more opcodes and I should be able to at least get a naked level 1 in game. Then, I will have to work out if it is AAs or Items or something else causing the crash when I try to log in my GM character that I have done most of the testing with. Still making progress, and getting much better at finding opcodes in the assembly code. I still can't find every one of them using the comparing method, but I can probably find about 50% that way :)

Yeormom 12-20-2008 10:20 PM

Trevius is our hero.

trevius 12-21-2008 05:31 AM

While it is good to know some people are following this post, I think it would be best to keep the clutter down if possible. I am hoping that I can get it working enough that others might be able to start assisting me at some point and it is easier to read if there is less clutter. I do appreciate the cheering on (it is alot of work so far), but this thread isn't really the place for it. Besides, until it is at least somewhat usable, there isn't much to cheer about. There is a good chance that we may never have enough info to get SoF fully functional. I am trying to stay positive about it though lol.

I have already learned a ton over the past couple of weeks just playing with the different sources I have available to me to get them all frankenstiened into something that will at least let us log all of the way in. If I could read the assembly code better, it may eventually be possible to pull everything we need straight from there, but I am still a good ways from being able to understand it enough to do that.

Currently, I am trying to understand the item serialization code. I have the full itemlist for SoF, and I think it should be very close to accurate. But, until I know how to set the serialization up so that it works with my new list, I can't load items. Other than that, I already have a large amount of the bare minimum opcodes needed to log in. There are only a few more I need to have a complete list. Here is what I have so far:

Code:

Opcode Name=Titanium Op - SoF Op
OP_SendLoginInfo=0x4dd0 - 0x6c3c V
OP_GuildsList=0x6957 - 0x04FB V
OP_LogServer=0x0fa6 - 0x129A V
OP_ApproveWorld=0x3c25 - 0x7FC0 V
OP_EnterWorld=0x7cba - 0x1340 V
OP_PostEnterWorld=0x52A4 - 0x1AEE V
OP_ExpansionInfo=0x04ec - 0x0A1B V
OP_SendCharInfo=0x4513 - 0x6040 V
OP_World_Client_CRC1=0x5072 - 0x7a9e V
OP_World_Client_CRC2=0x5b18 - 0x3795 V
 - 0x22cf - size 2056 - Some new CRC from SoF.  This shouldn't be required to use at all.
 - 0x43ba - size 2056 - Some new CRC from SoF.  This shouldn't be required to use at all.
OP_AckPacket=0x7752 - 0x4D38 V
OP_WorldClientReady=0x5e99 - 2EBD V
0x58FB - size 8 - the Auto-AFK opcode - This isn't in Titanium opcodes, but does exist.  Not required though.

Log into a zone:
OP_EnterWorld=0x7cba - 0x1340 V
OP_MOTD=0x024d - 0x5711 V?
OP_SetChatServer=0x00d7 - 0x71B8 V
OP_SetChatServer2=0x6536 - 0x32CC V
OP_ZoneServerInfo=0x61b6 - 0x18B1 V
OP_WorldComplete=0x509d - 0x2486 V
OP_PlayerProfile=0x75DF - 0x0FEB V
OP_ZoneEntry=0x7213 - 0x737E V
OP_TimeOfDay=0x1580 - 0x7274 V
OP_TributeUpdate=0x5639 - 0x71Fb ???
OP_TributeTimer=0x4665 - 0x4775 ???
OP_CharInventory=0x5394 - 0x08A3 V
OP_TaskDescription=0x5ef7 - 0x0Af9 ???
OP_TaskActivity=0x682d - 0x2E60 ???
OP_CompletedTasks=0x76a2 - 0x5855
OP_Weather=0x254d - 0x70A5 V

OP_ReqNewZone=0x7ac5 - 0x3CDC NEW from IDA 0x5417 V
OP_NewZone=0x0920 - 0x5D22 V
OP_CustomTitles=0x2a28 - ???
OP_SendAATable=0x367d - 0x6F05 V
OP_UpdateAA=0x5966 - 0x45D2 V
OP_RespondAA=0x3af4 -
OP_SendTributes=0x067a - 0x28C1??? From Tail 0x6764
OP_TributeInfo=0x152d - 0x4775  From Tail 0x3F33
OP_SendGuildTributes=0x5e3a - 0x6774
OP_SpawnAppearance=0x7c32 - 0x10B7 NEW from IDA 0x50EC V? 0x0000?
OP_ReqClientSpawn=0x0322 - 0x45D2 NEW from IDA 0x014C V
OP_SpawnDoor=0x4c24 - 0x68C8 NEW from IDA 0x3547 V???
OP_GroundSpawn=0x0f47 - 0x33E5 ???
OP_SendZonepoints=0x3eba - 0x2992 ???
OP_PetitionCheckout=0x0000 - Shouldn't be required as we don't have it in Titanium either.
OP_SendAAStats=0x5996 - 0x3518 ??? - I don't know if this is used in Titanium
OP_SendExpZonein=0x0587 - 0x3703 V?
OP_AAExpUpdate=0x5f58 - 0x3518 ???
OP_ExpUpdate=0x5ecd - 0x581A ???
OP_RaidUpdate=0x1f21 - 0x00AF ???
OP_GuildMemberList=0x147d - 0x317C ???
OP_GuildMOTD=0x475a - 0xD677 ???
OP_SetServerFilter=0x6563 - I don't think this is required.
OP_ClientReady=0x5e20 - NEW 0x2854 V
OP_PetitionUpdate=0x0000 - Shouldn't be required as we don't have it in Titanium either.
OP_WearChange=0x7441 - 0x25F0 V?
OP_HPUpdate=0x3bcf - 0x62F6 ???
OP_WeaponEquip2=0x63da - skip this as it is unhandled in Titanium and comes from the client each time you zone
OP_WeaponEquip1=0x6c5e - skip this as it is unhandled in Titanium and comes from the client each time you zone
OP_ManaChange=0x4839 - 0x0659 V?
OP_SpecialMesg=0x2372 - 0x1126 V?
OP_TGB=0x0c11 - 0x0137 V?
OP_ClientUpdate=0x14cb - 0x5Cf3 V?
OP_FloatListThing=0x6a1b - I don't have this yet, but it comes from the client and should be able to get it from the tail once I can get in game with SoF

The V means it has been verified either from the client, or from IDA or both. This is about 95% sure to be accurate. The V? means I verified it from IDA, but the code isn't an exact match, so I am only 50-75% sure it is accurate. The ??? means I was either unable to find it at all in IDA, or that I found it and it doesn't look like a match to me, they are likely to be wrong.

I think if we can get all of those, I may have enough opcodes correct that we can at least log in a naked character all of the way. Once the item serialization is done for SoF, we should be able to login geared characters as well. I think the main opcode I need to be accurate now is the doorspawn opcode. I think that also sends objects in the zone and seems to be where the naked test character is getting hung up at.

Like I said, as soon as I can get any character logged in all of the way, I will submit my changes to the SVN so others can assist with it if they want. What I will probably do is set it so that the Anniversary files (that I am using for getting SoF to work currently), will not be used by default on new builds. It would be disabled by a simple define and could be easily enabled by anyone who wanted to mess with it. I will post how to enable it if I can get to that point. It will just mean a simple 1 line code change to enable it (uncommenting a #define). The reason to leave it disabled is so you don't have players trying to use SoF and crashing zones if there are issues with it that cause crashes.

trevius 12-21-2008 05:36 AM

Here is my new updated itemlist incase anyone knows how to write the item serialization code to use it properly:

Code:

/* 000 */        //I(ItemClass) // Leave this one off on purpose
/* 001 */        S(Name)
/* 002 */        S(Lore)
/* 003 */        C("")//lorefile - Newly Added - Field is Null
/* 004 */        S(IDFile)
/* 005 */        I(ID)
/* 006 */        I(Weight)
/* 007 */        I(NoRent)
/* 008 */        I(NoDrop)
/* 009 */        I(Size)
/* 010 */        I(Slots)
/* 011 */        I(Price)
/* 012 */        I(Icon)
/* 013 */        C("0")//UNK013
/* 014 */        C("0")//UNK014
/* 015 */        I(BenefitFlag)
/* 016 */        I(Tradeskills)
/* 017 */        I(CR)
/* 018 */        I(DR)
/* 019 */        I(PR)
/* 020 */        I(MR)
/* 021 */        I(FR)
/* 022 */        C("0")//svcorruption - Newly Added
/* 023 */        I(AStr)
/* 024 */        I(ASta)
/* 025 */        I(AAgi)
/* 026 */        I(ADex)
/* 027 */        I(ACha)
/* 028 */        I(AInt)
/* 029 */        I(AWis)
/* 030 */        I(HP)
/* 031 */        I(Mana)
/* 032 */        I(Endur) //endur - Relocated
/* 033 */        I(AC)
/* 034 */        I(Classes)//classes - Relocated
/* 035 */        I(Races)//races - Relocated
/* 036 */        I(Deity)
/* 037 */        I(SkillModValue)
/* 038 */        C("0")//UNK038 - Default is 0
/* 039 */        I(SkillModType)
/* 040 */        I(BaneDmgRace)
/* 041 */        I(BaneDmgBody)//banedmgbody - Relocated
/* 042 */        I(BaneDmgRaceAmt)//banedmgraceamt - Relocated
/* 043 */        I(BaneDmgAmt)//banedmgamt - Relocated
/* 044 */        I(Magic)
/* 045 */        I(CastTime_)
/* 046 */        I(ReqLevel)
/* 047 */        I(RecLevel)//reclevel - Relocated
/* 048 */        I(RecSkill)//recskill - Relocated
/* 049 */        I(BardType)
/* 050 */        I(BardValue)
/* 051 */        I(Light)
/* 052 */        I(Delay)
/* 053 */        I(ElemDmgType)
/* 054 */        I(ElemDmgAmt)
/* 055 */        I(Range)
/* 056 */        I(Damage)
/* 057 */        I(Color)
/* 058 */        I(ItemType)
/* 059 */        I(Material)
/* 060 */        C("0")//UNK060 - Default is 0
/* 061 */        C("0")//UNK061 - Default is 0
/* 062 */        F(SellRate)
/* 063 */        I(CombatEffects)
/* 064 */        I(Shielding)
/* 065 */        I(StunResist)
/* 066 */        I(StrikeThrough)
/* 067 */        I(ExtraDmgSkill)
/* 068 */        I(ExtraDmgAmt)
/* 069 */        I(SpellShield)
/* 070 */        I(Avoidance)
/* 071 */        I(Accuracy)
/* 072 */        I(CharmFileID)
/* 073 */        I(FactionMod1)//Swapped these so Faction Amt comes after each Faction Mod
/* 074 */        I(FactionAmt1)//Swapped these so Faction Amt comes after each Faction Mod
/* 075 */        I(FactionMod2)//Swapped these so Faction Amt comes after each Faction Mod
/* 076 */        I(FactionAmt2)//Swapped these so Faction Amt comes after each Faction Mod
/* 077 */        I(FactionMod3)//Swapped these so Faction Amt comes after each Faction Mod
/* 078 */        I(FactionAmt3)//Swapped these so Faction Amt comes after each Faction Mod
/* 079 */        I(FactionMod4)//Swapped these so Faction Amt comes after each Faction Mod
/* 080 */        I(FactionAmt4)//Swapped these so Faction Amt comes after each Faction Mod
/* 081 */        S(CharmFile)
/* 082 */        I(AugType)
/* 083 */        I(AugRestrict)//augrestrict - Relocated
/* 084 */        I(AugDistiller)//augdistiller - Relocated
/* 085 */        I(AugSlotType[0])
/* 086 */        I(AugSlotUnk[0])//augslot1visible - Default 1
/* 087 */        C("0")//augslot1unk2 - Newly Added  - Default 0
/* 088 */        I(AugSlotType[1])
/* 089 */        I(AugSlotUnk[1])
/* 090 */        C("0")//augslot2unk2 - Newly Added
/* 091 */        I(AugSlotType[2])
/* 092 */        I(AugSlotUnk[2])
/* 093 */        C("0")//augslot3unk2 - Newly Added
/* 094 */        I(AugSlotType[3])
/* 095 */        I(AugSlotUnk[3])
/* 096 */        C("0")//augslot4unk2 - Newly Added
/* 097 */        I(AugSlotType[4])
/* 098 */        I(AugSlotUnk[4])
/* 099 */        C("0")//augslot5unk2 - Newly Added
/* 100 */        I(PointType)//pointtype - Relocated
/* 101 */        I(LDoNTheme)
/* 102 */        I(LDoNPrice)
/* 103 */        C("70")//UNK098 - Newly Added - Default 70, but some are set to 0
/* 104 */        I(LDoNSold)
/* 105 */        I(BagType)
/* 106 */        I(BagSlots)
/* 107 */        I(BagSize)
/* 108 */        I(BagWR)
/* 109 */        I(Book)
/* 110 */        I(BookType)
/* 111 */        S(Filename)
/* 112 */        I(LoreGroup)
/* 113 */        I(ArtifactFlag)
/* 114 */        C("0")//I(PendingLoreFlag)?//UNK109 - Default 0, but a few are 1
/* 115 */        I(Favor)
/* 116 */        I(GuildFavor)//guildfavor - Relocated
/* 117 */        I(FVNoDrop)
/* 118 */        I(DotShielding)
/* 119 */        I(Attack)
/* 120 */        I(Regen)
/* 121 */        I(ManaRegen)
/* 122 */        I(EnduranceRegen)
/* 123 */        I(Haste)
/* 124 */        I(DamageShield)
/* 125 */        C("-1") //UNK120 - Default is -1
/* 126 */        C("0") //UNK121 - Default is 0
/* 127 */        I(Attuneable)
/* 128 */        I(NoPet)
/* 129 */        C("0") //UNK124 - Default 0, but a few are 1
/* 130 */        I(PotionBelt)
/* 131 */        C("0") //potionbeltslots - Default 0, but a few are 1
/* 132 */        I(StackSize)
/* 133 */        I(NoTransfer)
/* 134 */        I(Stackable)//UNK129 - Default is 0, but some are much higher
/* 135 */        I(QuestItemFlag)//questitemflag - Default is 0 (off), flag on = 1
/* 136 */        C("0")//UNK131 - Default is 0, but there is an item set to 1
/* 137 */        C("0")//UNK132 - Default is 0? 0000000000000000000?
/* 138 */        I(Click.Effect)
/* 139 */        I(Click.Type)
/* 140 */        I(Click.Level2)
/* 141 */        I(Click.Level)
/* 142 */        I(MaxCharges)//maxcharges - Relocated
/* 143 */        I(CastTime_)//casttime - Relocated - Note Duplicate Entries for CastTime_ and none for CastTime
/* 144 */        I(RecastDelay)//recastdelay - Relocated
/* 145 */        I(RecastType)//recasttype - Relocated
/* 146 */        C("0")//clickunk5 - Newly Added - Default is 0
/* 147 */        C("")//clickname - Newly Added - Default is Null
/* 148 */        C("-1")//clickunk7 - Newly Added - Default is -1, but some set to 0 and some much higher
/* 149 */        I(Proc.Effect)
/* 150 */        I(Proc.Type)
/* 151 */        I(Proc.Level2)
/* 152 */        I(Proc.Level)
/* 153 */        C("0")//procunk1 - Newly Added - Default is 0, but some set to -1 and 1
/* 154 */        C("0")//procunk2 - Newly Added - Default is 0
/* 155 */        C("0")//procunk3 - Newly Added - Default is 0
/* 156 */        C("0")//procunk4 - Newly Added - Default is 0
/* 157 */        I(ProcRate)//procrate - Relocated
/* 158 */        C("")//procname - Newly Added - Default is Null
/* 159 */        C("-1")//procunk7 - Newly Added - Default is -1, but some set to 0
/* 160 */        I(Worn.Effect)
/* 161 */        I(Worn.Type)
/* 162 */        I(Worn.Level2)
/* 163 */        I(Worn.Level)
/* 164 */        C("0")//wornunk1 - Newly Added - Default is 0
/* 165 */        C("0")//wornunk2 - Newly Added - Default is 0
/* 166 */        C("0")//wornunk3 - Newly Added - Default is 0
/* 167 */        C("0")//wornunk4 - Newly Added - Default is 0
/* 168 */        C("0")//wornunk5 - Newly Added - Default is 0
/* 169 */        C("")//wornname - Newly Added - Default is Null
/* 170 */        C("-1")//wornunk7 - Newly Added - Default is -1, but some set to 0
/* 171 */        I(Focus.Effect)
/* 172 */        I(Focus.Type)
/* 173 */        I(Focus.Level2)
/* 174 */        I(Focus.Level)
/* 175 */        C("0")//focusunk1 - Newly Added - Default is 0
/* 176 */        C("0")//focusunk2 - Newly Added - Default is 0
/* 177 */        C("0")//focusunk3 - Newly Added - Default is 0
/* 178 */        C("0")//focusunk4 - Newly Added - Default is 0
/* 179 */        C("0")//focusunk5 - Newly Added - Default is 0
/* 180 */        C("")//focusname - Newly Added - Default is Null
/* 181 */        C("-1")//focusunk7 - Newly Added - Default is -1, but some set to 0
/* 182 */        I(Scroll.Effect)
/* 183 */        I(Scroll.Type)
/* 184 */        I(Scroll.Level2)
/* 185 */        I(Scroll.Level)
/* 186 */        C("0")//scrollunk1 - Renumber this***
/* 187 */        C("0")//scrollunk2 - Newly Added - Default is 0
/* 188 */        C("0")//scrollunk3 - Newly Added - Default is 0
/* 189 */        C("0")//scrollunk4 - Newly Added - Default is 0
/* 190 */        C("0")//scrollunk5 - Newly Added - Default is 0
/* 191 */        C("")//scrollname - Newly Added - Default is Null
/* 192 */        C("-1")//scrollunk7 - Newly Added - Default is -1, but some set to 0
/* 193 */        C("0")//UNK193 - Default is 0
/* 194 */        C("0")//purity - Newly Added - Default is 0, but some go up to 75
/* 195 */        C("0")//dsmitigation - Newly Added - Default is 0, but some are up to 2
/* 196 */        C("0")//heroic_str - Newly Added - Default is 0
/* 197 */        C("0")//heroic_int - Newly Added - Default is 0
/* 198 */        C("0")//heroic_wis - Newly Added - Default is 0
/* 199 */        C("0")//heroic_agi - Newly Added - Default is 0
/* 200 */        C("0")//heroic_dex - Newly Added - Default is 0
/* 201 */        C("0")//heroic_sta - Newly Added - Default is 0
/* 202 */        C("0")//heroic_cha - Newly Added - Default is 0
/* 203 */        C("0")//healamt - Newly Added - Default is 0, but some are up to 9
/* 204 */        C("0")//spelldmg - Newly Added - Default is 0, but some are up to 9
/* 205 */        C("0")//clairvoyance - Newly Added - Default is 0, but some are up to 10
/* 206 */        C("0")//backstabdmg - Newly Added - Default is 0, but some are up to 65
//* 207 */        C("0")//evolvinglevel - Newly Added - Default is 0, but some are up to 7

//This doesn't appear to be used /* 102 */        S(verified)//verified
//This doesn't appear to be used /* 102 */        S(serialized)//created
//Unsure where this goes right now (or if it is even used) /* 108 */        I(SummonedFlag)

Here is a piece of the log from the EQ Debug showing where it is currently failing:
Code:

[Sun Dec 21 07:09:29 2008]00201:Entering main loop.
[Sun Dec 21 07:09:30 2008]00202:DoMainLoop - Just after packet processing()
[Sun Dec 21 07:09:30 2008]00203:DoMainLoop - Just after actor creation()
[Sun Dec 21 07:09:30 2008]00204:Loading game sounds.
[Sun Dec 21 07:09:30 2008]00205:Requesting initialization data.
[Sun Dec 21 07:09:30 2008]00206:DoMainLoop: just before first while(!EverQuest.ReceievedWorldObjects).
[Sun Dec 21 07:11:14 2008]00132:THE SERVER IS NOT RESPONDING.
[Sun Dec 21 07:11:38 2008]00133:
end of DisplayScreen

[Sun Dec 21 07:11:40 2008]00134:TIMED OUT WAITING FOR ZONE ADDR


[Sun Dec 21 07:11:41 2008]00135:Networking: Connection Closed [0] with 0 pending bytes.


AndMetal 12-21-2008 05:08 PM

Quote:

Originally Posted by AndMetal (Post 156384)
Quote:

Originally Posted by AndMetal (Post 152299)
Looking at the source (different files of course) from the same time, we should be able to find out at least some of the structures, if we don't know them already. However, taking a quick peek myself, I wasn't able to find any clear cut "structures" file, so it's probably all spread out through the source.

Found them: showeq/src/everquest.h. Maybe some of the later changes to the structs might provide some insight on what the unknown values may be...

If we're still looking for newer structs (after 2006), we can peek into the SEQ SVN. Specifically, SoF structs should be in Rev 686 (11/5/2007), Rev 688 (11/21/2007), or Rev 690 (11/27/2007). Since, according to Wikipedia, it was released on 11/13/2007, we'll probably want to look at Rev 688.

trevius 12-21-2008 06:33 PM

Ya, I have been using all of those to get as far as I have :P They have been very useful.

Even though SoF was released on 11/13/07, it was actually built on 9/7/07 (according to the EQ Debug Logs). So, anything from 9/7/07 to around the beginning of 2008 is probably useful. They may have patched in some of the SoF stuff to live before it actually came out, so the structures and stuff may have already been there for the most part. The main thing that would have changed alot are the opcodes. Unfortunately, most of the opcodes in SEQ weren't updated until after December, so many of them aren't correct.

I am thinking about trying a current version of SEQ and running a trial live account just to see if I can find 100% accurate structures that can be used to help getting SoF to work. I am betting that the current live structs are probably closer to SoF than the Titanium ones are.

If anyone has packet collects from right around the time that SoF was released (preferrably from SEQ if possible), I would love to get a copy of them. I think that would help alot once I knew what I was looking at. But, I am not holding my breath to get them, because I doubt anyone has still them.

I am not really sure what it is for, but a code obfuscater was added to SEQ around the time that SoF came out. From looking at the comments around the code for it, it appears to be used for pulling opcodes directly from the assembly code of the eqgame.exe. I have no idea how it is actually used though, or if I am just misunderstanding what it does. I have seen comments about it on the SEQ forums that seem to say something about opcodes changing from time to time when you zone or log on other characters/servers. I guess it is some kind of simple encryption or something. But, it seems that the new obfuscate can pull an opcode table from the exe file. If that is true, maybe we can use it on Titanium, and then on SoF and compare the 2 tables and compare the conf files for known opcodes and match them up. Here is a link to the obfuscate getting added to SEQ SVN:

http://seq.svn.sourceforge.net/viewv...85&pathrev=686

trevius 12-23-2008 04:57 PM

I moved this to the development section, because it seems more appropriate.

trevius 12-24-2008 10:03 PM

I figured out where it is currently breaking when it is trying to log in. It seems that the opcode OP_SendExpZonein=0x3703 is where the problem is. This is the last opcode that the client receives before it stops responding. I also verified that by removing this opcode from Titanium it will fail at the exact same point according to the EQ Debug Logs.

Code:

DoMainLoop: just before first while(!EverQuest.ReceievedWorldObjects).
Actually, in Titanium, the log entry is slightly different, but it is the same thing just renamed:

Code:

DoMainLoop: just before first while(!ReadyEnterWorld).
My guess is that this opcode now needs to be encoded like many of the other important ones. And since it isn't being encoded, it isn't recognizing it, so it is failing. I am 99% sure that I have the correct opcode set for it.

Looking at the place where it is failing, here is the Assembly code for it:

Code:

.text:004DCC8F                push    offset aDomainloopJu_1 ; "DoMainLoop: just before first while(!Ev"...
.text:004DCC94                mov    dword_907F60, esi
.text:004DCC9A                call    sub_645680      ; Call Procedure
.text:004DCC9F                mov    al, byte_9262EC
.text:004DCCA4                add    esp, 18h        ; Add
.text:004DCCA7                cmp    al, bl          ; Compare Two Operands
.text:004DCCA9                jnz    short loc_4DCCF8 ; Jump if Not Zero (ZF=0)
.text:004DCCAB                jmp    short loc_4DCCB0 ; Jump
.text:004DCCAB ; ---------------------------------------------------------------------------
.text:004DCCAD                align 10h
.text:004DCCB0
.text:004DCCB0 loc_4DCCB0:                            ; CODE XREF: sub_4DC610+69Bj
.text:004DCCB0                                        ; sub_4DC610+6E6j
.text:004DCCB0                mov    eax, dword_761C6C
.text:004DCCB5                cmp    eax, ebx        ; Compare Two Operands
.text:004DCCB7                jz      short loc_4DCCCA ; Jump if Zero (ZF=1)
.text:004DCCB9                mov    ecx, [eax+4Ch]
.text:004DCCBC                cmp    ecx, ebx        ; Compare Two Operands
.text:004DCCBE                jz      short loc_4DCCCA ; Jump if Zero (ZF=1)
.text:004DCCC0                push    1F4h
.text:004DCCC5                call    sub_60DAD0      ; Call Procedure
.text:004DCCCA
.text:004DCCCA loc_4DCCCA:                            ; CODE XREF: sub_4DC610+6A7j
.text:004DCCCA                                        ; sub_4DC610+6AEj
.text:004DCCCA                mov    ecx, edi
.text:004DCCCC                call    sub_4D9FF0      ; Call Procedure
.text:004DCCD1                push    1
.text:004DCCD3                push    4841h
.text:004DCCD8                push    offset aCP4Everquest_0 ; "C:\\p4\\EverQuest\\live\\EverQuest\\EverQues"...
.text:004DCCDD                mov    ecx, edi
.text:004DCCDF                call    sub_4C1EA0      ; Call Procedure
.text:004DCCE4                test    al, al          ; Logical Compare
.text:004DCCE6                jnz    loc_4DE160      ; Jump if Not Zero (ZF=0)
.text:004DCCEC                push    1
.text:004DCCEE                call    ebp            ; Indirect Call Near Procedure
.text:004DCCF0                cmp    byte_9262EC, bl ; Compare Two Operands
.text:004DCCF6                jz      short loc_4DCCB0 ; Jump if Zero (ZF=1)
.text:004DCCF8
.text:004DCCF8 loc_4DCCF8:                            ; CODE XREF: sub_4DC610+699j
.text:004DCCF8                push    offset aDomainloopComp ; "DoMainLoop: complete after first while("...
.text:004DCCFD                call    sub_645680      ; Call Procedure
.text:004DCD02                add    esp, 4          ; Add
.text:004DCD05                mov    ecx, edi
.text:004DCD07                call    sub_4E3B70      ; Call Procedure
.text:004DCD0C                push    1
.text:004DCD0E                mov    ecx, edi
.text:004DCD10                mov    dword_926EAC, ebx
.text:004DCD16                mov    dword_926EA8, ebx
.text:004DCD1C                call    sub_4C2850      ; Call Procedure
.text:004DCD21                mov    dword ptr [edi+38E94h], 1
.text:004DCD2B                cmp    byte_98452C, bl ; Compare Two Operands
.text:004DCD31                jz      loc_4DCDE6      ; Jump if Zero (ZF=1)
.text:004DCD37                mov    ecx, dword_907F0C
.text:004DCD3D                push    ebx
.text:004DCD3E                push    3043h
.text:004DCD43                mov    byte_98452C, bl
.text:004DCD49                call    sub_6138B0      ; Call Procedure
.text:004DCD4E                push    1              ; char
.text:004DCD50                push    111h            ; int
.text:004DCD55                push    eax            ; char *
.text:004DCD56                mov    ecx, edi
.text:004DCD58                call    sub_4C5160      ; Call Procedure
.text:004DCD5D                mov    eax, dword_907F54
.text:004DCD62                mov    edx, [eax+8]
.text:004DCD65                mov    ecx, [edx+4]
.text:004DCD68                lea    eax, [ecx+eax+8] ; Load Effective Address
.text:004DCD6C                lea    ecx, [eax+4]    ; Load Effective Address
.text:004DCD6F                call    sub_61DF20      ; Call Procedure
.text:004DCD74                cmp    dword ptr [eax+1304h], 0Ah ; Compare Two Operands
.text:004DCD7B                jg      short loc_4DCD96 ; Jump if Greater (ZF=0 & SF=OF)
.text:004DCD7D                mov    ecx, dword_907F0C
.text:004DCD83                push    ebx
.text:004DCD84                push    213Ah
.text:004DCD89                call    sub_6138B0      ; Call Procedure
.text:004DCD8E                push    eax            ; char *
.text:004DCD8F                mov    ecx, edi
.text:004DCD91                call    sub_4C5310      ; Call Procedure
.text:004DCD96
.text:004DCD96 loc_4DCD96:                            ; CODE XREF: sub_4DC610+76Bj
.text:004DCD96                mov    ecx, dword_907F54
.text:004DCD9C                add    ecx, 0EEF8h    ; Add
.text:004DCDA2                xor    esi, esi        ; Logical Exclusive OR
.text:004DCDA4                call    sub_41C4D0      ; Call Procedure
.text:004DCDA9                test    al, al          ; Logical Compare
.text:004DCDAB                jbe    short loc_4DCDE6 ; Jump if Below or Equal (CF=1 | ZF=1)
.text:004DCDAD                db 8Dh,49h,0 ; <BAD>lea    ecx, [ecx+0] ; Load Effective Address
.text:004DCDB0
.text:004DCDB0 loc_4DCDB0:                            ; CODE XREF: sub_4DC610+7D4j
.text:004DCDB0                mov    ecx, dword_907F54
.text:004DCDB6                push    esi
.text:004DCDB7                add    ecx, 0EEF8h    ; Add
.text:004DCDBD                call    sub_41DA40      ; Call Procedure
.text:004DCDC2                cmp    [eax], bl      ; Compare Two Operands
.text:004DCDC4                jz      short loc_4DCDCD ; Jump if Zero (ZF=1)
.text:004DCDC6                mov    byte_925E8C, 1
.text:004DCDCD
.text:004DCDCD loc_4DCDCD:                            ; CODE XREF: sub_4DC610+7B4j
.text:004DCDCD                mov    ecx, dword_907F54
.text:004DCDD3                add    ecx, 0EEF8h    ; Add
.text:004DCDD9                inc    esi            ; Increment by 1
.text:004DCDDA                call    sub_41C4D0      ; Call Procedure
.text:004DCDDF                movzx  edx, al        ; Move with Zero-Extend
.text:004DCDE2                cmp    esi, edx        ; Compare Two Operands
.text:004DCDE4                jl      short loc_4DCDB0 ; Jump if Less (SF!=OF)
.text:004DCDE6
.text:004DCDE6 loc_4DCDE6:                            ; CODE XREF: sub_4DC610+721j
.text:004DCDE6                                        ; sub_4DC610+79Bj
.text:004DCDE6                push    ebx            ; int
.text:004DCDE7                push    ebx            ; int
.text:004DCDE8                push    ebx            ; int
.text:004DCDE9                push    ebx            ; int
.text:004DCDEA                push    ebx            ; int
.text:004DCDEB                push    ebx            ; int
.text:004DCDEC                push    ebx            ; int
.text:004DCDED                push    ebx            ; int
.text:004DCDEE                push    offset byte_925F9C ; int
.text:004DCDF3                lea    eax, [esp+104h] ; Load Effective Address
.text:004DCDFA                push    3045h          ; int
.text:004DCDFF                push    eax            ; char *
.text:004DCE00                call    sub_4A3080      ; Call Procedure
.text:004DCE05                add    esp, 2Ch        ; Add
.text:004DCE08                push    1              ; char
.text:004DCE0A                push    111h            ; int
.text:004DCE0F                lea    ecx, [esp+0E8h] ; Load Effective Address
.text:004DCE16                push    ecx            ; char *
.text:004DCE17                mov    ecx, edi
.text:004DCE19                call    sub_4C5160      ; Call Procedure
.text:004DCE1E                call    sub_4EA590      ; Call Procedure
.text:004DCE23                mov    ecx, eax
.text:004DCE25                call    sub_4EA5C0      ; Call Procedure
.text:004DCE2A                cmp    dword_926328, 4 ; Compare Two Operands
.text:004DCE31                jnz    short loc_4DCE92 ; Jump if Not Zero (ZF=0)
.text:004DCE33                mov    eax, dword_907F54
.text:004DCE38                mov    edx, [eax+8]
.text:004DCE3B                mov    ecx, [edx+4]
.text:004DCE3E                lea    eax, [ecx+eax+8] ; Load Effective Address
.text:004DCE42                lea    ecx, [eax+4]    ; Load Effective Address
.text:004DCE45                call    sub_61DF20      ; Call Procedure
.text:004DCE4A                cmp    dword ptr [eax+1304h], 6 ; Compare Two Operands
.text:004DCE51                jge    short loc_4DCE92 ; Jump if Greater or Equal (SF=OF)
.text:004DCE53                mov    eax, dword_907F54
.text:004DCE58                mov    edx, [eax+8]
.text:004DCE5B                mov    ecx, [edx+4]
.text:004DCE5E                mov    eax, [ecx+eax+108h]
.text:004DCE65                mov    ecx, dword_907F34
.text:004DCE6B                push    eax
.text:004DCE6C                call    sub_62A060      ; Call Procedure
.text:004DCE71                test    al, al          ; Logical Compare
.text:004DCE73                jnz    short loc_4DCE92 ; Jump if Not Zero (ZF=0)
.text:004DCE75                mov    ecx, dword_907F0C
.text:004DCE7B                push    1              ; char
.text:004DCE7D                push    0Dh            ; int
.text:004DCE7F                push    ebx
.text:004DCE80                push    3046h
.text:004DCE85                call    sub_6138B0      ; Call Procedure
.text:004DCE8A                push    eax            ; char *
.text:004DCE8B                mov    ecx, edi
.text:004DCE8D                call    sub_4C5160      ; Call Procedure
.text:004DCE92
.text:004DCE92 loc_4DCE92:                            ; CODE XREF: sub_4DC610+821j
.text:004DCE92                                        ; sub_4DC610+841j ...
.text:004DCE92                mov    al, byte ptr word_92636C
.text:004DCE97                cmp    al, 7Eh        ; Compare Two Operands
.text:004DCE99                jz      short loc_4DCED4 ; Jump if Zero (ZF=1)
.text:004DCE9B                cmp    al, bl          ; Compare Two Operands
.text:004DCE9D                jz      short loc_4DCED4 ; Jump if Zero (ZF=1)
.text:004DCE9F                push    ebx            ; int
.text:004DCEA0                push    ebx            ; int
.text:004DCEA1                push    ebx            ; int
.text:004DCEA2                push    ebx            ; int
.text:004DCEA3                push    ebx            ; int
.text:004DCEA4                push    ebx            ; int
.text:004DCEA5                push    ebx            ; int
.text:004DCEA6                push    ebx            ; int
.text:004DCEA7                push    offset word_92636C ; int
.text:004DCEAC                lea    edx, [esp+104h] ; Load Effective Address
.text:004DCEB3                push    3047h          ; int
.text:004DCEB8                push    edx            ; char *
.text:004DCEB9                call    sub_4A3080      ; Call Procedure
.text:004DCEBE                add    esp, 2Ch        ; Add
.text:004DCEC1                push    1              ; char
.text:004DCEC3                push    0Fh            ; int
.text:004DCEC5                lea    eax, [esp+0E8h] ; Load Effective Address
.text:004DCECC                push    eax            ; char *
.text:004DCECD                mov    ecx, edi
.text:004DCECF                call    sub_4C5160      ; Call Procedure
.text:004DCED4
.text:004DCED4 loc_4DCED4:                            ; CODE XREF: sub_4DC610+889j
.text:004DCED4                                        ; sub_4DC610+88Dj
.text:004DCED4                mov    ecx, offset unk_761D50
.text:004DCED9                mov    byte ptr word_92636C, 7Eh
.text:004DCEE0                call    sub_453C10      ; Call Procedure
.text:004DCEE5                mov    ecx, dword_996AB4
.text:004DCEEB                cmp    ecx, ebx        ; Compare Two Operands
.text:004DCEED                jz      short loc_4DCEF4 ; Jump if Zero (ZF=1)
.text:004DCEEF                call    sub_5E8870      ; Call Procedure
.text:004DCEF4
.text:004DCEF4 loc_4DCEF4:                            ; CODE XREF: sub_4DC610+8DDj
.text:004DCEF4                push    offset aDomainloopJu_2 ; "DoMainLoop: just before second while(!R"...
.text:004DCEF9                call    sub_645680      ; Call Procedure
.text:004DCEFE                add    esp, 4          ; Add
.text:004DCF01                call    sub_4EC1F0      ; Call Procedure
.text:004DCF06                mov    esi, eax
.text:004DCF08                cmp    [esi+20h], bl  ; Compare Two Operands
.text:004DCF0B                jnz    short loc_4DCF14 ; Jump if Not Zero (ZF=0)
.text:004DCF0D                mov    ecx, esi
.text:004DCF0F                call    sub_4EBE60      ; Call Procedure
.text:004DCF14
.text:004DCF14 loc_4DCF14:                            ; CODE XREF: sub_4DC610+8FBj
.text:004DCF14                mov    byte ptr [esi+20h], 1
.text:004DCF18                mov    ecx, dword_9A1CB4
.text:004DCF1E                push    1
.text:004DCF20                dec    ecx            ; Decrement by 1
.text:004DCF21                push    ebx
.text:004DCF22                mov    dword_9A1CB4, ecx
.text:004DCF28                mov    ecx, dword_761C68
.text:004DCF2E                push    3703h
.text:004DCF33                call    sub_637360      ; Call Procedure
.text:004DCF38                push    eax
.text:004DCF39                push    offset dword_907EF0
.text:004DCF3E                push    ebx
.text:004DCF3F                push    ebx            ; char
.text:004DCF40                call    sub_4BB750      ; Call Procedure
.text:004DCF45                dec    dword_907F60    ; Decrement by 1
.text:004DCF4B                call    sub_4A2CF0      ; Call Procedure
.text:004DCF50                push    offset aZoneConnectSen ; "Zone Connect -- Sending out a MSG_READY"...
.text:004DCF55                call    sub_645680      ; Call Procedure
.text:004DCF5A                mov    eax, dword_925C80
.text:004DCF5F                add    esp, 18h        ; Add
.text:004DCF62                cmp    eax, ebx        ; Compare Two Operands
.text:004DCF64                jnz    short loc_4DCFAA ; Jump if Not Zero (ZF=0)

And, from client_packet.cpp, here is the code that handles that opcode:
Code:

void Client::Handle_Connect_OP_SendExpZonein(const EQApplicationPacket *app)
{
        //////////////////////////////////////////////////////
        // Spawn Appearance Packet
        EQApplicationPacket* outapp = new EQApplicationPacket(OP_SpawnAppearance, sizeof(SpawnAppearance_Struct));
        SpawnAppearance_Struct* sa = (SpawnAppearance_Struct*)outapp->pBuffer;
        sa->type = AT_SpawnID;                        // Is 0x10 used to set the player id?
        sa->parameter = GetID();        // Four bytes for this parameter...
        outapp->priority = 6;
        QueuePacket(outapp);
        safe_delete(outapp);

        // Inform the world about the client
        outapp = new EQApplicationPacket();

        CreateSpawnPacket(outapp);
        outapp->priority = 6;
        if (!GetHideMe()) entity_list.QueueClients(this, outapp, true);
        safe_delete(outapp);
        if(GetPVP())        //force a PVP update until we fix the spawn struct
                SendAppearancePacket(AT_PVP, GetPVP(), true, false);

        //Send AA Exp packet:
        if(GetLevel() >= 51)
                SendAAStats();

        // Send exp packets
        outapp = new EQApplicationPacket(OP_ExpUpdate, sizeof(ExpUpdate_Struct));
        ExpUpdate_Struct* eu = (ExpUpdate_Struct*)outapp->pBuffer;
        int32 tmpxp1 = GetEXPForLevel(GetLevel()+1);
        int32 tmpxp2 = GetEXPForLevel(GetLevel());

        // Quag: crash bug fix... Divide by zero when tmpxp1 and 2 equalled each other, most likely the error case from GetEXPForLevel() (invalid class, etc)
        if (tmpxp1 != tmpxp2 && tmpxp1 != 0xFFFFFFFF && tmpxp2 != 0xFFFFFFFF) {
                float tmpxp = (float) ( (float) m_pp.exp-tmpxp2 ) / ( (float) tmpxp1-tmpxp2 );
                eu->exp = (uint32)(330.0f * tmpxp);
                outapp->priority = 6;
                QueuePacket(outapp);
        }
        safe_delete(outapp);

        if(GetLevel() >= 51)
                SendAATimers();

        outapp = new EQApplicationPacket(OP_SendExpZonein, 0);
        QueuePacket(outapp);
        safe_delete(outapp);

        outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(ZoneInSendName_Struct));
        ZoneInSendName_Struct* zonesendname=(ZoneInSendName_Struct*)outapp->pBuffer;
        strcpy(zonesendname->name,m_pp.name);
        strcpy(zonesendname->name2,m_pp.name);
        zonesendname->unknown0=0x0A;
        QueuePacket(outapp);
        safe_delete(outapp);

        /* this is actually the guild MOTD
        outapp = new EQApplicationPacket(OP_ZoneInSendName2, sizeof(ZoneInSendName_Struct2));
        ZoneInSendName_Struct2* zonesendname2=(ZoneInSendName_Struct2*)outapp->pBuffer;
        strcpy(zonesendname2->name,m_pp.name);
        QueuePacket(outapp);
        safe_delete(outapp);*/

        if(IsInAGuild()) {
                SendGuildMembers();
        }

        //No idea why live sends this if even were not in a guild
        SendGuildMOTD();

        return;
}

So, either the opcode needs to be encoded, or this handling code needs to be changed. I am guessing the opcode needs to be encoded, because the jump is looking for anything that isn't 0, so I would think that it is just making sure it got something for it. And, if it isn't encoded and is supposed to be, maybe it shows up as 0. But, if it doesn't need to be encoded, I don't know why it would be 0.

I will mess with it and see if I can figure out how to get that opcode encoded, but I don't really know how that will work, since the only opcodes I see currently getting encoded already have structures tied to them, but I don't see one for SendExpZonein. Unless maybe it is named differently.

At least I know where it is failing now, so I should be able to come up with something to move it to the next step. It should be getting pretty close now. I was able to find and verify more of the required opcodes for logging in over the past couple of days as well. Making some progress at least :)

trevius 12-28-2008 06:08 PM

I am still stuck at this same point, but I am not giving up that easily :P Last night, I started trying to figure out why character creation wasn't working. I have the correct Opcode, but I see that the server is expecting a struct to come in and the client is sending just the opcode with a size of 0. The client just hangs probably waiting for something back that we aren't sending. I am going to try filling in the needed character select stuff on the server side and then have it send the character create opcode back to the client. So, it would be working in reverse of how Titanium does it. If that works, then it means they might have been adjusting the order of server/client communications, maybe to optimize some stuff.

If so, maybe that is the reason that sendexpzonein is failing. It could be waiting for something else that we aren't sending. I will try forcing a few of the packets that normally follow the sendexpzonein and see if that makes any difference. I definitely see it is doing something extra in the assembly code of SoF that wasn't in Titanium, but there is no way to really tell what it is. It could either be waiting for an extra opcode that got added to the sendexpzonein stuff, or it could be waiting for a new structure that we don't have in Titanium. I am hoping it is the former, not the latter.

Other than that, the other big difference I notice is that some of the subs being called in area where the problem is happening have about 1000 set as the variables where Titanium has about 800 set. That makes me think that it is checking the size of a certain packet structure, but I don't know which one. If I am right, I think that one of the structures needed at this point has changed and we need to figure out which one and what it was changed to so it can be adjusted.

My last resort will be to setup the current showeq for Live and setup a trial account to watch the logs from SEQ and see what the current structures really are. I am sure that some of the SEQ structures are correct, but there is alot of info they don't need for SEQ to function so it probably gets ignored. Maybe I can find more details and get them filled in to get it working. Also, it would help to see if anything new is being sent. Unfortunately, I don't have any SEQ logs from when Titanium was running on Live, so I don't have anything to compare with. That will probably make feeding through this stuff considerably harder.

trevius 12-28-2008 10:55 PM

From looking at the MQ2 source, I found a few more item fields that may be needed for SoF to load items properly:

HeroicSvPoison
HeroicSvMagic
HeroicSvFire
HeroicSvDisease
HeroicSvCold
HeroicSvCorruption

MaxPower
Power

I imagine that the Herioc Resists are almost certainly required fields. The Power and MaxPower fields may not be required though, I don't really know much about them.

trevius 12-29-2008 04:21 AM

Maybe the MQ2 source can be useful after-all. After looking at it again, some of the stuff in there is starting to make more sense to me now that I am getting more used to looking at the assembly code from eqgame.exe. I found that MQ2 even has a version for the SoF retail eqgame.exe by looking at the debug from SoF:

Code:

Starting EverQuest (Built Sep  7 2007 09:11:49)
And then at the MQ2 build for that date, it wants this exact version (seen in the MQ2Main\eqgame.h file):

Code:

#define __ClientName                                              "eqgame"
#define __ExpectedVersionDate                                    "Sep  7 2007"
#define __ExpectedVersionTime                                    "09:11:49"

So, that tells me that everything we needed to build EQ for SoF was actually already in place at that time.

This should also mean that SEQ structs and maybe some opcodes from that time might be useful as well. Unfortunately, SEQ wasn't updated between 3/25/2007 and 11/05/2007. It was just not functioning at all for about 6 months in between there. They finally got it working again in November right before the actual retail release of SoF. But, at least this confirms that I should use certain older structures over some that were changed after that.

trevius 12-31-2008 07:07 PM

After being stumped on this a while, I finally decided to take a step that would hopefully help me alot. I paid for my old EQ account so it could play on EQLive again. Then, I got the current version of ShowEQ working and put a hub in my network so I can sniff the packets to/from EQ. This is letting me watch the logs directly from EQLive that show pretty much everything I would need to get EQEmu working with EQLive. I am hoping that EQLive runs pretty close to how SoF did, and it should since there haven't been nearly as many changes to Live since SoF as there was from Titanium to SoF.

Already, I have found that the order of packets when logging in is pretty different from Titanium. I think I found the place that is stopping me from logging in all of the way. I just need to work on it some more to get it past that point. From what I can tell so far, it looks like this will be more helpful than anything I have tried. I am hoping to make more progress tonight now that I have this new information.

Here is an example of the logs of zoning in. I cut out a bunch of the actual data and stuff. I also made notes next to some of the packets.

Code:

Dec 31 2008 05:43:05:342 [Raw] [Client->Server] [Size: 12]
[OPCode: 0x0100]
000 | 00 00 00 02 6b 0b ee 8f 00 00 02 00              | ....k.......

Dec 31 2008 05:43:05:442 [Raw] [Server->Client] [Size: 19]
[OPCode: 0x0200]
000 | 6b 0b ee 8f 45 d7 b5 02 02 01 00 00 00 02 00 00  | k...E...........

Dec 31 2008 05:43:05:450 [Raw] [Client->Server] [Size: 38]
[OPCode: 0x0700]
000 | f0 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................

Dec 31 2008 05:43:05:562 [Raw] [Server->Client] [Size: 38]
[OPCode: 0x0800]
000 | f0 82 aa d9 db 45 00 00 00 00 00 00 00 02 00 00  | .....E..........

Dec 31 2008 05:43:05:722 [Raw] [Client->Server] [Size: 86]
[OPCode: 0x0300]
000 | 0a 00 09 00 00 94 35 00 00 00 00 4a 00 09 00 01  | ......5....J....

Dec 31 2008 05:43:05:722 [Decoded] [Client->Server] [Size: 4] - Probably OP_AckPacket
[OPCode: 0x3594]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:05:722 [Decoded] [Client->Server] [Size: 68] - OP_ZoneEntry
[OPCode: 0x5a6b]
[Name: OP_ZoneEntry][Updated: 10/07/08][Type: ClientZoneEntryStruct (68) ==]

Dec 31 2008 05:43:05:882 [Raw] [Server->Client] [Size: 5]
[OPCode: 0x1500]
000 | a5 00 01 4a 4f                                  | ...JO

Dec 31 2008 05:43:05:882 [Raw] [Server->Client] [Size: 406] - Varies in size
[OPCode: 0x0900]
000 | 00 00 00 19 0e f0 1a c1 88 00 00 00 00 00 00 64  | ...............d

Dec 31 2008 05:43:05:882 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x1af0]
000 | c1 88 00 00 00 00 00 00 64 00 00 00              | ........d...

Dec 31 2008 05:43:05:883 [Decoded] [Server->Client] [Size: 0]
[OPCode: 0x3bef]

Dec 31 2008 05:43:05:883 [Decoded] [Server->Client] [Size: 120] - OP_SendAATable
[OPCode: 0x322f]
000 | 02 00 00 00 01 ff ff ff ff ff ff ff ff 02 00 00  | ................

Dec 31 2008 05:43:06:603 [Raw] [Client->Server] [Size: 5]
[OPCode: 0x1500]
000 | a5 00 23 0b ab                                  | ..#..

Dec 31 2008 05:43:06:696 [Raw] [Server->Client] [Size: 507] - I think these are compressed, combined or encoded packets, or maybe combinations of each
[OPCode: 0x0d00]
000 | 00 26 00 00 5b c2 22 60 fd 19 df 72 00 00 00 00  | .&..[."`...r....

Dec 31 2008 05:43:06:973 [Decoded] [Server->Client] [Size: 23488] - OP_PlayerProfile
[OPCode: 0x6022]
[Name: OP_PlayerProfile][Updated: 01/17/08][Type: charProfileStruct (23488) ==]

Dec 31 2008 05:43:07:150 [Decoded] [Server->Client] [Size: 334] - OP_ZoneEntry
[OPCode: 0x5a6b]
[Name: OP_ZoneEntry][Updated: 10/07/08][Type: uint8_t (1) nc]

Dec 31 2008 05:43:07:163 [Decoded] [Server->Client] [Size: 8] - OP_TimeOfDay
[OPCode: 0x6015]
[Name: OP_TimeOfDay][Updated: 01/17/08][Type: timeOfDayStruct (8) ==]
000 | 16 2b 02 01 69 0c 00 00                          | .+..i...

Dec 31 2008 05:43:07:163 [Decoded] [Server->Client] [Size: 48] - Maybe OP_TributeUpdate
[OPCode: 0x399b]
000 | 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff  | ................

Dec 31 2008 05:43:07:179 [Decoded] [Client->Server] [Size: 4]
[OPCode: 0x4036]
000 | a9 04 00 00                                      | ....

Dec 31 2008 05:43:07:179 [Decoded] [Client->Server] [Size: 4] - Probably OP_AckPacket
[OPCode: 0x3594]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:07:680 [Decoded] [Server->Client] [Size: 205802] - Character Inventory
[OPCode: 0x709d]
000 | 30 00 00 00 01 00 00 00 00 00 00 00 1e 00 00 00  | 0...............

Dec 31 2008 05:43:08:028 [Decoded] [Server->Client] [Size: 4]
[OPCode: 0x5412]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:08:029 [Decoded] [Server->Client] [Size: 12] - Looks like OP_Weather
[OPCode: 0x2641]
000 | ff 00 00 00 00 00 00 00 01 00 00 00              | ............

Dec 31 2008 05:43:08:029 [Decoded] [Server->Client] [Size: 4] - OP_DeleteSpawn
[OPCode: 0x4292]
[Name: OP_DeleteSpawn][Updated: 10/07/08][Type: deleteSpawnStruct (4) ==]
000 | 4f 48 00 00                                      | OH..

Dec 31 2008 05:43:08:029 [Decoded] [Server->Client] [Size: 4]
[OPCode: 0x6c26]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:08:029 [Decoded] [Server->Client] [Size: 24]
[OPCode: 0x2c4c]
000 | 92 cb ce 02 08 08 00 00 0b e0 d9 aa 00 00 00 00  | ................
016 | 10 00 00 00 00 00 00 00                          | ........

Dec 31 2008 05:43:08:431 [Decoded] [Client->Server] [Size: 1]
[OPCode: 0x0924]
000 | 30                                              | 0

Dec 31 2008 05:43:08:431 [Decoded] [Client->Server] [Size: 0]
[OPCode: 0x43ac]

Dec 31 2008 05:43:08:431 [Decoded] [Client->Server] [Size: 0] - Maybe OP_ReqNewZone
[OPCode: 0x466c]

Dec 31 2008 05:43:08:611 [Decoded] [Server->Client] [Size: 20]
[OPCode: 0x116d]
000 | 00 00 00 00 a0 bb 0d 00 20 bf 02 00 05 00 00 00  | ........ .......
016 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:08:612 [Decoded] [Server->Client] [Size: 932] - OP_NewZone
[OPCode: 0x5ca5]
[Name: OP_NewZone][Updated: 01/17/08][Type: newZoneStruct (932) ==]

Dec 31 2008 05:43:08:676 [Decoded] [Server->Client] [Size: 921] - Custom Titles
[OPCode: 0x1b26]
000 | 22 00 00 00 3c 00 00 00 64 00 00 00 41 70 70 72  | "...<...d...Appr

Dec 31 2008 05:43:12:766 [Decoded] [Client->Server] [Size: 4] - OP_TargetMouse?
[OPCode: 0x7bbb]
[Name: OP_TargetMouse][Updated: 01/17/08][Type: clientTargetStruct (4) ==]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:14:898 [Decoded] [Client->Server] [Size: 4] - Probably OP_AckPacket
[OPCode: 0x3594]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:14:898 [Decoded] [Client->Server] [Size: 0] - Request Client Spawn
[OPCode: 0x1436]

Dec 31 2008 05:43:15:015 [Decoded] [Server->Client] [Size: 184] - Spawn Doors
[OPCode: 0x102f]
000 | 41 43 44 4f 4f 52 53 33 31 30 00 00 ff ff 00 00  | ACDOORS310......

Dec 31 2008 05:43:15:027 [Decoded] [Server->Client] [Size: 484]
[OPCode: 0x5821]
000 | 13 00 00 00 00 00 00 00 00 00 87 43 00 00 d9 44  | ...........C...D

Dec 31 2008 05:43:15:028 [Decoded] [Server->Client] [Size: 0] - New World Objects Sent (Replaced sendexpzonein)
[OPCode: 0x69cd]

Dec 31 2008 05:43:15:167 [Decoded] [Client->Server] [Size: 88]
[OPCode: 0x0baa]
000 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  | ................

Dec 31 2008 05:43:15:168 [Decoded] [Client->Server] [Size: 0] - Send Exp Zone In
[OPCode: 0x7b73]

Dec 31 2008 05:43:15:339 [Decoded] [Server->Client] [Size: 8] - OP_SpawnAppearance
[OPCode: 0x10b7]
[Name: OP_SpawnAppearance][Updated: 01/17/08][Type: spawnAppearanceStruct (8) ==]
000 | 00 00 10 00 53 48 00 00                          | ....SH..

Dec 31 2008 05:43:15:339 [Decoded] [Server->Client] [Size: 12] - OP_AAExpUpdate
[OPCode: 0x3088]
[Name: OP_AAExpUpdate][Updated: 01/17/08][Type: altExpUpdateStruct (12) ==]
000 | 06 00 00 00 00 00 00 00 00 00 00 00              | ............

Dec 31 2008 05:43:15:340 [Decoded] [Server->Client] [Size: 8] - OP_ExpUpdate
[OPCode: 0x0e98]
[Name: OP_ExpUpdate][Updated: 01/17/08][Type: expUpdateStruct (8) ==]
000 | 43 00 00 00 00 00 00 00                          | C.......

Dec 31 2008 05:43:15:340 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x50d0]
000 | 00 00 00 00 00 00 00 00 25 59 5b 49              | ........%Y[I

Dec 31 2008 05:43:15:355 [Decoded] [Server->Client] [Size: 0]
[OPCode: 0x7b73]

Dec 31 2008 05:43:15:506 [Decoded] [Client->Server] [Size: 128]
[OPCode: 0x7312]
000 | 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00  | ................

Dec 31 2008 05:43:15:621 [Decoded] [Server->Client] [Size: 4704] - List of Rewards available from /claim
[OPCode: 0x4e4e]
000 | cc 0b 00 00 01 00 00 00 01 00 00 00 bc 9f 00 00  | ................

Dec 31 2008 05:43:15:625 [Decoded] [Server->Client] [Size: 12] - OP_SimpleMessage
[OPCode: 0x5448]
[Name: OP_SimpleMessage][Updated: 01/17/08][Type: simpleMessageStruct (12) ==]
000 | 0e 0e 00 00 0f 00 00 00 00 00 00 00              | ............

Dec 31 2008 05:43:15:625 [Decoded] [Server->Client] [Size: 4]
[OPCode: 0x435b]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:15:625 [Decoded] [Server->Client] [Size: 4]
[OPCode: 0x0296]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:15:626 [Decoded] [Server->Client] [Size: 326] - OP_ZoneEntry (this time from server to client)
[OPCode: 0x5a6b]
[Name: OP_ZoneEntry][Updated: 10/07/08][Type: uint8_t (1) nc]

Dec 31 2008 05:43:15:626 [Decoded] [Server->Client] [Size: 5] - OP_RemoveSpawn
[OPCode: 0x3164]
[Name: OP_RemoveSpawn][Updated: 04/17/08][Type: removeSpawnStruct (5) nc]
000 | 4f 48 00 00 01                                  | OH...

Dec 31 2008 05:43:15:626 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x5ebc]
000 | 00 00 00 00 62 70 cb 32 00 00 00 00              | ....bp.2....

Dec 31 2008 05:43:15:659 [Decoded] [Client->Server] [Size: 8]
[OPCode: 0x2d17]
000 | 62 70 cb 32 4a 17 19 da                          | bp.2J...

Dec 31 2008 05:43:15:660 [Decoded] [Client->Server] [Size: 0]
[OPCode: 0x6759]

Dec 31 2008 05:43:15:660 [Decoded] [Client->Server] [Size: 8]
[OPCode: 0x7b6e]
000 | 53 48 00 00 40 00 00 00                          | SH..@...

Dec 31 2008 05:43:15:660 [Decoded] [Client->Server] [Size: 19] - OP_WearChange
[OPCode: 0x231f]
[Name: OP_WearChange][Updated: 01/17/08][Type: SpawnUpdateStruct (19) ==]
000 | 53 48 50 00 00 00 00 00 00 00 00 00 00 00 00 00  | SHP.............
016 | 00 00 09                                        | ...

Dec 31 2008 05:43:15:661 [Decoded] [Client->Server] [Size: 20] - OP_BazaarSearch
[OPCode: 0x4675]
[Name: OP_BazaarSearch][Updated: 01/17/08][Type: bazaarSearchQueryStruct (100) nc]
000 | 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................
016 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:15:661 [Decoded] [Client->Server] [Size: 0]
[OPCode: 0x19d2]

Dec 31 2008 05:43:15:661 [Decoded] [Client->Server] [Size: 4]
[OPCode: 0x4b49]
000 | 17 00 00 00                                      | ....

Dec 31 2008 05:43:15:662 [Decoded] [Client->Server] [Size: 12]
[OPCode: 0x7eac]
000 | 26 02 00 00 fa 02 00 00 00 f7 44 04              | &.........D.

Dec 31 2008 05:43:15:662 [Decoded] [Client->Server] [Size: 4]
[OPCode: 0x365d]
000 | 01 01 01 01                                      | ....

Dec 31 2008 05:43:15:662 [Decoded] [Client->Server] [Size: 4]
[OPCode: 0x266e]
000 | 01 01 01 01                                      | ....

Dec 31 2008 05:43:15:662 [Decoded] [Client->Server] [Size: 0]
[OPCode: 0x7eeb]

Dec 31 2008 05:43:15:662 [Decoded] [Client->Server] [Size: 8]
[OPCode: 0x27bf]
000 | 00 00 00 00 ff ff ff ff                          | ........

Dec 31 2008 05:43:15:663 [Decoded] [Client->Server] [Size: 4]
[OPCode: 0x7e31]
000 | 01 01 01 01                                      | ....

Dec 31 2008 05:43:15:663 [Decoded] [Client->Server] [Size: 4]
[OPCode: 0x2d37]
000 | 01 01 01 01                                      | ....

Dec 31 2008 05:43:15:738 [Decoded] [Server->Client] [Size: 140] - Probably OP_GuildMemberList
[OPCode: 0x32c6]
000 | 0a 00 00 00 54 72 65 76 69 75 73 00 00 00 00 00  | ....XXXXXXX..... (name removed)

Dec 31 2008 05:43:15:902 [Decoded] [Server->Client] [Size: 648] - OP_GuildMOTD
[OPCode: 0xd677]
[Name: OP_GuildMOTD][Updated: 01/17/08][Type: guildMOTDStruct (136) nc]

Dec 31 2008 05:43:15:902 [Decoded] [Server->Client] [Size: 8]
[OPCode: 0x35d3]
000 | 92 f4 00 00 00 00 00 00                          | ........

Dec 31 2008 05:43:15:903 [Decoded] [Server->Client] [Size: 8]
[OPCode: 0x7b6e]
000 | 53 48 00 00 40 00 00 00                          | SH..@...

Dec 31 2008 05:43:15:959 [Decoded] [Client->Server] [Size: 40] - OP_ClientUpdate
[OPCode: 0x7062]
[Name: OP_ClientUpdate][Updated: 01/17/08][Type: playerSelfPosStruct (40) ==]

Dec 31 2008 05:43:16:339 [Decoded] [Server->Client] [Size: 62] - Looks like the EQPlayers update
[OPCode: 0x7eeb]
000 | 68 74 74 70 73 3a 2f 2f 77 77 77 2e 65 71 70 2e  | https://www.eqp.

Dec 31 2008 05:43:16:339 [Decoded] [Server->Client] [Size: 10]
[OPCode: 0x538f]
000 | 58 12 00 00 16 1d 00 00 53 48                    | X.......SH

Dec 31 2008 05:43:16:340 [Decoded] [Server->Client] [Size: 10]
[OPCode: 0x4b61]
000 | 00 00 00 00 00 00 00 00 53 48                    | ........SH

Dec 31 2008 05:43:16:340 [Decoded] [Server->Client] [Size: 10]
[OPCode: 0x02d6]
000 | d9 1b 00 00 d9 1b 00 00 53 48                    | ........SH


KLS 12-31-2008 08:27 PM

SEQ isn't converting network to host byte order on the raw soe opcodes but here:

Code:

Dec 31 2008 05:43:05:342 [Raw] [Client->Server] [Size: 12]
[OPCode: 0x0100]
000 | 00 00 00 02 6b 0b ee 8f 00 00 02 00              | ....k.......

Connect Request
int crc length 0x00000002 = 2
int session id 0x6b0bee8f
max packet size 0x00000200 = 512

Code:

Dec 31 2008 05:43:05:442 [Raw] [Server->Client] [Size: 19]
[OPCode: 0x0200]
000 | 6b 0b ee 8f 45 d7 b5 02 02 01 00 00 00 02 00 00  | k...E...........

Connect Accept Reply
int session id 0x6b0bee8f
int encode key 0x45d7b502
char crc length 0x02
crypt options bitfield 0x0201
max packet size 0x00000200

Code:

Dec 31 2008 05:43:05:450 [Raw] [Client->Server] [Size: 38]
[OPCode: 0x0700]
000 | f0 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................

Network Status Update - not really important.

[code]Dec 31 2008 05:43:05:722 [Raw] [Client->Server] [Size: 86]
[OPCode: 0x0300]
000 | 0a 00 09 00 00 94 35 00 00 00 00 4a 00 09 00 01 | ......5....J.... [code]
Combined packet

contains:
Code:

Dec 31 2008 05:43:05:722 [Decoded] [Client->Server] [Size: 4] -
[OPCode: 0x3594]
000 | 00 00 00 00                                      | ....

Dec 31 2008 05:43:05:722 [Decoded] [Client->Server] [Size: 68] - OP_ZoneEntry
[OPCode: 0x5a6b]
[Name: OP_ZoneEntry][Updated: 10/07/08][Type: ClientZoneEntryStruct (68) ==]

The first packet isn't a soe ack you can tell by the opcode and the fact that it doesn't include a sequence number. Likely some kind of I am ready for this info packet.

Code:

Dec 31 2008 05:43:05:882 [Raw] [Server->Client] [Size: 5]
[OPCode: 0x1500]
000 | a5 00 01 4a 4f                                  | ...JO

This is an ack packet, tho it looks wrong, they're usually 4 bytes total including the opcode 2 without this one is 7 byte with the opcode 5 without. The opcode is SOE_ACK tho.

Code:

Dec 31 2008 05:43:05:882 [Raw] [Server->Client] [Size: 406] - Varies in size
[OPCode: 0x0900]
000 | 00 00 00 19 0e f0 1a c1 88 00 00 00 00 00 00 64  | ...............d

These are standalone packets, encoded and compressed with a 2 byte sequence on the top probably 0x0000 since this is the first and a crc on the end. It's also possible to combine packets within an 0x0009 packet but you can't combine a raw packet and an eq packet inside the 0x0009 they both have to be EQ packets.

Code:

Dec 31 2008 05:43:06:696 [Raw] [Server->Client] [Size: 507] -
[OPCode: 0x0d00]
000 | 00 26 00 00 5b c2 22 60 fd 19 df 72 00 00 00 00  | .&..[."`...r....

This is a fragmented packet like 0x0009 they are encoded and compressed they have a sequence number for recombining and a length byte. These are used when the data chunk being sent is larger than the max frame size sent on init: 512.

I know this doesn't help at all for figuring out what you need for the SoF stuff but maybe if you understand how the raw protocol works you'll understand it a bit better.

trevius 01-01-2009 07:46 AM

Ya, at least that clears a few things up that I wasn't quite sure about. I was ignoring the 0300 and 0900 because I figured they were doing something like that. I think 0d00 is also something like that, I am guessing raw packets that need to be encrypted? Either way, I ignore those as well :P

Just familiarizing myself with the packet logs, I started breaking down the structure for player profile to see if I could verify what it should look like currently for EQLive. So far I am almost done with it and will post the finished version when it is completed. I think it will help to have an accurate player profile with SoF once it is working at all.

Right now, I think I am really close, but I am doing the same thing live does and the client just stops at that first main loop every time. Maybe I have something messed up earlier on and it isn't figuring that out until that point. Or, maybe I have to have the AA stats opcode for it to continue, and I don't. I have almost all of the ones I need, but that one is really elusive to me lol. I can run Titanium fine without it, so I think it should be ok to run SoF without it, but no way to know for sure.

Basically, this is the order things happen on Titanium in the emu for the part I am having a problem with:

Code:

OP_ReqClientSpawn From Client to request the following:
OP_SpawnDoor
OP_GroundSpawn
OP_SendAAStats
OP_SendExpZonein To client to tell them that we are done sending it all.
OP_SendExpZonein From the Client to ask the server for more stuff

And this the order I am seeing from live for that same part:
Code:

OP_ReqClientSpawn
OP_SpawnDoor
OP_NotSure (not sure which one this is yet)
OP_SendWorldObjectMSG - New from EQLive.  Server sends this to client
OP_SendExpZonein - Client sees the Object MSG and sends this asking for more stuff

So, I think SoF is supposed to be set the way Live is now. But for some reason, it still isn't working yet for me. I have tried both ways and more and the client never responds with the SendExpZonein as it should, or anything else for that matter. It is like it is either waiting for something that hasn't come yet, or something came but was messed up in format.

Well, I will keep plugging away at it. I learn more each day and it will help alot once I actually get to the point where I can start cleaning stuff up so people can actually use SoF to play.

Here is the example right from the logs from Live:

Code:

Dec 31 2008 05:43:14:898 [Decoded] [Client->Server] [Size: 0] - Request Client Spawn
[OPCode: 0x1436]

Dec 31 2008 05:43:15:015 [Decoded] [Server->Client] [Size: 184] - Spawn Doors
[OPCode: 0x102f]
000 | 41 43 44 4f 4f 52 53 33 31 30 00 00 ff ff 00 00  | ACDOORS310......

Dec 31 2008 05:43:15:027 [Decoded] [Server->Client] [Size: 484] - Unsure what this is atm.  Probably zone points
[OPCode: 0x5821]
000 | 13 00 00 00 00 00 00 00 00 00 87 43 00 00 d9 44  | ...........C...D

Dec 31 2008 05:43:15:028 [Decoded] [Server->Client] [Size: 0] - Send Exp Zone In
[OPCode: 0x69cd]


Here is the full 0x5821 that I am gonna check and see if I can find what it is:
Code:

Dec 31 2008 23:44:35:954 [Decoded] [Server->Client] [Size: 172]
[OPCode: 0x5821]
000 | 06 00 00 00 01 00 00 00 00 00 d1 43 00 00 80 41  | ...........C...A
016 | 00 00 e8 c1 00 80 bf 43 98 00 00 00 02 00 00 00  | .......C........
032 | 00 40 18 c4 00 80 cf c3 00 00 80 c0 00 00 22 43  | .@............"C
048 | a1 00 00 00 03 00 00 00 00 00 16 44 00 60 e5 c4  | ...........D.`..
064 | 00 00 a8 c1 00 00 fc 42 a8 00 00 00 04 00 00 00  | .......B........
080 | 00 80 ec 43 00 c0 e5 c4 00 00 a8 c1 00 00 fe 42  | ...C...........B
096 | a8 00 00 00 05 00 00 00 00 a0 01 45 00 00 e2 c2  | ...........E....
112 | 00 00 ae 42 00 00 be 43 ae 00 00 00 06 00 00 00  | ...B...C........
128 | 00 00 02 45 00 00 75 c3 00 00 ae 42 00 00 e4 42  | ...E..u....B...B
144 | ae 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................
160 | 00 00 00 00 00 00 00 00 00 00 00 00              | ............



All times are GMT -4. The time now is 04:54 AM.

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