PDA

View Full Version : 4/13/11 patch



mons00n
04-13-2011, 07:54 PM
The 4/13/11 decided to break my SEQ installation. It was working last night with the fixes mentioned in this thread (http://www.showeq.net/forums/showthread.php?6506-Test-Server-Updates). Now I get a wall OP errors before it seg faults out. I get different errors depending on what zone I go into (I assume it depends on mobs/people). These are the ones I get (and where they show up when grep'd):

ClickObject (interface.cpp)
MobUpdate (everquest.h)
ClientUpdate (interface.cpp)
InspectAnswer (interface.cpp)
DeleteSpawn (spawnlog.cpp/h/moc)

I can't do any logging because it crashes with a seg fault shortly after starting.

Here's a snippet of one of my crashes:


Warning: OP_ClickObject (0x442a) (dataLen: 65) doesn't match: sizeof(remDropStruct):8
Warning: OP_ClickObject (0x442a) (dataLen: 62) doesn't match: sizeof(remDropStruct):8
Player: Exp: Set: 91872946 total, with 3189602 (18/330) into level with 4807566 left, where 1/330 = 24233
Player: Exp: New: < 24233, 436194 (18/330) into level with 7560974 left
Warning: OP_ClientUpdate (0x7062) (dataLen: 24) doesn't match: sizeof(playerSpawnPosStruct):22 sizeof(playerSelfPosStruct):40
Warning: OP_MobUpdate (0x4656) (dataLen: 14) doesn't match: sizeof(spawnPositionUpdate):12
Warning: OP_MobUpdate (0x4656) (dataLen: 14) doesn't match: sizeof(spawnPositionUpdate):12
Warning: OP_InspectAnswer (0x2370) (dataLen: 10) doesn't match: sizeof(inspectDataStruct):1860
Warning: OP_ClientUpdate (0x7062) (dataLen: 24) doesn't match: sizeof(playerSpawnPosStruct):22 sizeof(playerSelfPosStruct):40
Warning: OP_InspectAnswer (0x2370) (dataLen: 10) doesn't match: sizeof(inspectDataStruct):1860
Warning: OP_DeleteSpawn (0x220c) (dataLen: 12) doesn't match: sizeof(deleteSpawnStruct):4
Segmentation fault


It looks like OP codes have changes, or have the structures changed? How does one tell? There doesn't seem to be much activity in this forum so I'm just curious as to if anyone is still hunting these down.

I can sometimes get it to NOT crash. Now when figuring out these OP codes (if that's all it is) do I change them in conf/zoneopcodes.xml or /usr/local/share/showeq? And does it require a recompile?

Kalastrom
04-14-2011, 09:03 PM
*** UPDATED DATA ***
From what I've managed to figure out so far, some opcodes have changed as have some structures. I've managed to fix a very small number so far, one of which is technically inconsequential.

OP_GuildMOTD's opcode has changed to 71D1 (update the xml file).
OP_ZoneEntry's opcode has changed to 02D6

the playerSpawnStruct (in everquest.h) needed to be updated, adding a 2 byte placeholder variable like so:

/*0000*/ uint16_t spawnId;
uint8_t unk[2];
/*0002*/ signed padding0000:12; // ***Placeholder


playerSelfPosStruct (also in everquest.h) also needed to be updated, increasing uint8_t unknown0004[4] by two bytes making it unknown0004[6].

spawnPositionUpdate (in everquest.h) needed a two byte update as well (it seems, can't completely confirm yet as npc movement on the map isn't working right yet)

/*0000*/ int16_t spawnId;
uint8_t unk1[2];
/*0002*/ int64_t y:19, z:19, x:19, u3:7;


I also know that the spawnPositionUpdate struct needs to be updated as well by two bytes, but nothing I've tried has worked right yet.

As for the inevitable crashing question, I've found that it doesn't crash in Nektulos Forest for me, for some reason, everywhere else I've tried so far it crashes in.

mons00n
04-14-2011, 11:43 PM
Your above changes seem to help a little. If I log in when SEQ is open then I get an immediate seg fault. Upon reopening it and zoning into surefall glade I got the following:



Warning: OP_ClickObject (0x442a) (dataLen: 65) doesn't match: sizeof(remDropStruct):8
Warning: OP_ClickObject (0x442a) (dataLen: 62) doesn't match: sizeof(remDropStruct):8
Warning: OP_InspectAnswer (0x2370) (dataLen: 10) doesn't match: sizeof(inspectDataStruct):1860
Warning: OP_InspectAnswer (0x2370) (dataLen: 10) doesn't match: sizeof(inspectDataStruct):1860
Warning: OP_DeleteSpawn (0x220c) (dataLen: 12) doesn't match: sizeof(deleteSpawnStruct):4
Segmentation fault


So I zoned into Nektulos and sure enough it does not crash just as you said. But I am being flooded with:



Warning: OP_InspectAnswer (0x2370) (dataLen: 10) doesn't match: sizeof(inspectDataStruct):1860


I'd love to help but I'm not sure how. What did you do to come up with your above fixes?

Kalastrom
04-14-2011, 11:57 PM
I spent many hours looking at the code and the packets being dumped. I've got a most likely fix for OP_InspectAnswer as well. The opcode 2370 is actually OP_GuildMOTD now (I'm pretty sure), but I don't know what the new InspectAnswer code is yet. On top of that, npc and player corpses are not being handled properly either I just discovered. They're drawn when you change zones (player corpses don't have the right icon though), but they do no disappear when they rot, nor do new corpses (post zoning) appear on the map.

mons00n
04-15-2011, 12:01 AM
Didn't your original post say that the OP_GuildMOTD was 71D1? My guild MOTD was showing up fine with 71D1, but is gibberish when using 2370.

I also get an OP_ZoneEntry error when zoning into Nektulos:


Warning: OP_ZoneEntry (0x2d6) (dataLen: 76) doesn't match: sizeof(ClientZoneEntryStruct):68


Does that mean there's still an issue with the zone entry OP code?

Kalastrom
04-15-2011, 12:02 AM
Sorry, braindead. I thought I hadn't included the GuildMOTD in the original post. Been staring at this stuff for too long today possibly. lol

mons00n
04-15-2011, 12:12 AM
haha no problem.

Since SEQ figures out what zone I'm entering does that mean that the OP code is ok but the structure is not? (I'm new to the inner workings of SEQ so I'm trying to figure it out)

Kalastrom
04-15-2011, 12:24 AM
The zoning code appears to be okay. when I zone into Neriak (for example) from Nek (a zone where I don't crash), the zone loads, map is drawn, NPCs are placed and then it immediately crashes right after (most likely while processing a packet). In my case the last packets I see in the logs are these:
From zone.log:

Apr 15 2011 02:00:45:867 [Decoded] [Server->Client] [Size: 112]
[OPCode: 0x390c]
[Name: OP_GroupUpdate][Updated: 10/21/09][Type: uint8_t (1) nc]
000 | 00 00 00 00 62 13 00 00 4a 61 76 65 6e 20 54 61 | ....b...Javen Ta
016 | 56 6f 73 00 00 00 00 00 00 00 00 00 00 00 00 00 | Vos.............
032 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
048 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
064 | 00 00 00 00 00 00 00 00 54 61 69 6c 6f 72 69 6e | ........Tailorin
080 | 67 20 53 75 70 70 6c 69 65 73 00 00 00 00 00 00 | g Supplies......
096 | 00 00 00 00 00 00 00 00 06 00 00 00 29 02 e4 01 | ............)...

from unknownzone.log:

Apr 15 2011 02:00:45:867 [Server->Client] [Size: 10]
[OPCode: 0x6967]
000 | a2 05 00 00 b1 05 00 00 2f 3e | ......../>

Apr 15 2011 02:00:45:867 [Server->Client] [Size: 10]
[OPCode: 0x0ff4]
000 | c0 07 00 00 c0 07 00 00 2f 3e | ......../>

Apr 15 2011 02:00:45:867 [Server->Client] [Size: 3]
[OPCode: 0x7901]
000 | 31 3e 64 | 1>d

Apr 15 2011 02:00:45:867 [Server->Client] [Size: 3]
[OPCode: 0x1912]
000 | 31 3e 00 | 1>.

Apr 15 2011 02:00:45:867 [Server->Client] [Size: 3]
[OPCode: 0x5a6b]
000 | 31 3e 00 | 1>.

and from global.log:

Apr 15 2011 02:00:45:867 [199.108.3.50:1398->client:50870] [Size: 73]
[OPCode: 0x300] [Flags: 5a] [CRC ok]

000 | 00 03 5a 78 9c b3 67 e0 64 bc c8 20 c9 93 9e b9 | ..Zx..g.d.. ....
016 | 88 95 81 61 23 10 eb db f1 7c e1 3f c0 ce c0 00 | ...a#....|.?....
032 | c2 40 4e 81 f2 12 16 06 06 10 d6 b7 63 65 ac 34 | [email protected]
048 | b4 4b 61 15 92 34 b4 63 60 cd 8e 02 92 2c 0c a2 | .Ka..4.c`....,..
064 | 0c dc 00 e3 d8 0c 8e 37 0e | .......7.

I'm fairly certain that the first posted packet's opcode is completely wrong, and since I've isolated the ZoneEntry code I'm trying to track down what that one is right now.

mons00n
04-15-2011, 12:41 AM
After sitting in Nektulos for a while it seems my most frequent packet has an OPCode:0x38e0, is this a chat channel of some sort?



Apr 14 2011 22:57:49:644 [Server->Client] [Size: 18]
[OPCode: 0x38e0]
000 | 18 46 00 00 70 19 05 81 6a 10 00 10 b5 80 64 01 | .F..p...j.....d.
016 | 60 2a | `*

Apr 14 2011 22:57:49:934 [Server->Client] [Size: 18]
[OPCode: 0x38e0]
000 | 1c 37 00 00 70 1d f6 01 4c e0 00 60 f7 a0 60 05 | .7..p...L..`..`.
016 | 60 08 | `.

Apr 14 2011 22:57:49:934 [Server->Client] [Size: 18]
[OPCode: 0x38e0]
000 | 29 2a 00 00 70 19 0c 81 a8 40 01 22 14 00 60 04 | )*..p....@."..`.
016 | c0 14

.......

Kalastrom
04-15-2011, 12:46 AM
I'm not sure what that opcode is, but I'm going to tinker a bit with it since I was looking for a movement update code earlier and couldn't find it. maybe that's the one. EDIT: Nope, that wasn't it. lol

As for the crashes, I think I found out what's causing it, but I can't fix it correctly at the moment. Turns out (at least on my end) that when seq processes the erroneous OP_GroupUpdate packet it crashes, found that out by commenting the opcode out in the xml file.

mons00n
04-15-2011, 12:55 AM
As for the crashes, I think I found out what's causing it, but I can't fix it correctly at the moment. Turns out (at least on my end) that when seq processes the erroneous OP_GroupUpdate packet it crashes, found that out by commenting the opcode out in the xml file.

This stopped the crashing for me as well. I can see the mobs/alerts/etc on the map but you're right their movement doesn't seem update. Player movement on the other hand IS updating. I'm also getting this OP error mixed in now along with the InspectAnswer spam:



Warning: OP_GroupCancelInvite (0x2736) (dataLen: 0) doesn't match: sizeof(groupDeclineStruct):152


At least it's usable now to some degree!
EDIT: ignore the above statement. I tried to take on a mob in sol-b and it seg faulted on me. I'll see if i can reproduce it while logging data.

Kalastrom
04-15-2011, 12:59 AM
Ah HA! OP_TargetMouse has been changed (duh), it's opcode is now 5F5E.

mons00n
04-15-2011, 01:15 AM
Ah HA! OP_TargetMouse has been changed (duh), it's opcode is now 5F5E.

Nice that seems to have fixed it so you no longer have to comment out OP_GroupUpdate!

Now I'm getting seg faults when fighting monters. There doesn't seem to be one specific action causing it unfortunately so here are the end of my logs before the seg fault:

unknownzone.log


Apr 15 2011 00:12:11:608 [Client->Server] [Size: 18]
[OPCode: 0x33f2]
000 | 02 d3 07 c4 fa ef df c3 9e 3b 5c 42 02 5a 6a 6c | .........;\B.Zjl
016 | 08 02 | ..

Apr 15 2011 00:12:11:728 [Server->Client] [Size: 4]
[OPCode: 0x3ea4]
000 | 27 45 0a 51 | 'E.Q

Apr 15 2011 00:12:11:728 [Server->Client] [Size: 4]
[OPCode: 0x3ea4]
000 | f6 43 0a 5c | .C.\

Apr 15 2011 00:12:11:728 [Server->Client] [Size: 36]
[OPCode: 0x32c6]
000 | 00 00 00 00 b2 01 00 00 1b 01 00 00 63 69 6e 64 | ............cind
016 | 65 72 20 67 6f 62 6c 69 6e 00 31 35 00 00 00 00 | er goblin.15....
032 | 00 00 00 00 | ....

Apr 15 2011 00:12:11:729 [Server->Client] [Size: 18]
[OPCode: 0x38e0]
000 | 45 ac 00 00 72 0d 69 40 eb a0 01 26 c9 81 38 05 | E...r.i@...&..8.
016 | 20 86


zone.log


Apr 15 2011 00:12:11:729 [Decoded] [Server->Client] [Size: 28]
[OPCode: 0x7519]
[Name: OP_Action2][Updated: 06/12/09][Type: action2Struct (28) ==]
000 | d5 46 f6 43 1c ff ff 10 00 00 00 cd cc cc 3d bd | .F.C..........=.
016 | 78 e8 42 00 00 00 00 00 00 00 00 00 | x.B.........

Apr 15 2011 00:12:11:729 [Decoded] [Server->Client] [Size: 18]
[OPCode: 0x38e0]
000 | 45 ac 00 00 72 0d 69 40 eb a0 01 26 c9 81 38 05 | E...r.i@...&..8.
016 | 20 86 | .

Apr 15 2011 00:12:12:008 [Decoded] [Server->Client] [Size: 24]
[OPCode: 0x7062]
[Name: OP_ClientUpdate][Updated: 01/17/08][Type: playerSpawnPosStruct (24) ==]
000 | 4f 46 00 00 db 07 00 00 10 03 00 00 e7 fc 07 00 | OF..............
016 | 61 46 d8 7e f6 00 00 00 | aF.~....

Apr 15 2011 00:12:12:008 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x3b52]
[Name: OP_FormattedMessage][Updated: 10/21/09][Type: formattedMessageStruct (20) nc]
000 | 0e 01 00 00 08 01 00 00 00 00 00 00 | ............


global.log


Apr 15 2011 00:12:11:608 [client:47177->199.108.3.87:1428] [Size: 35]
[OPCode: 0x300] [Flags: a5] [CRC ok]

000 | 00 03 a5 18 00 09 00 45 f2 33 02 d3 07 c4 fa ef | .......E.3......
016 | df c3 9e 3b 5c 42 02 5a 6a 6c 08 02 04 00 15 02 | ...;\B.Zjl......
032 | 98 b5 a5 | ...

Apr 15 2011 00:12:11:729 [199.108.3.87:1428->client:47177] [Size: 150]
[OPCode: 0x300] [Flags: 5a] [CRC ok]

000 | 00 03 5a 78 9c d3 61 e0 64 9a c9 20 c9 b6 c4 4e | ..Zx..a.d.. ...N
016 | dd 95 2b 50 4e b2 f4 a8 9b ba 2b c3 ff ff 1c 0c | ..+PN.....+.....
032 | 0c 0c 67 cf 9c b1 bd 21 f4 d5 99 01 06 8a 80 8a | ..g....!........
048 | 67 81 15 7f 73 e6 8a 51 3b 66 04 12 dc c4 c8 c0 | g...s..Q;f......
064 | 20 0d c4 c9 99 79 29 a9 45 0a e9 f9 49 39 99 79 | ....y).E...I9.y
080 | 0c 86 a6 30 4d 40 33 bf 39 5f 75 fb f9 ff 3f 3f | [email protected]_u...??
096 | 03 16 00 94 be ea f6 cd 59 e6 ff 7f 01 a8 95 7b | ........Y......{
112 | 2b 5e 38 c1 a5 59 18 44 19 5c 45 1e 58 b8 ae 01 | +^8..Y.D.\E.X...
128 | 5a cf 9b e9 f0 7a 01 a3 da c9 46 0b 56 85 36 00 | Z....z....F.V.6.
144 | 99 86 2e 53 64 7a | ...Sdz

Apr 15 2011 00:12:11:888 [client:47177->199.108.3.87:1428] [Size: 7]
[OPCode: 0x1500]
000 | 00 15 a5 02 9a 36 4f | .....6O


All I did was cast root, a dot or two, or just hit the thing and let it hit me back.

Let me know if these help you out or you need me to try anything. I'm about to turn in for the evening though.

Kalastrom
04-15-2011, 01:23 AM
Get some sleep then, I'm getting more than a little annoyed that I can't find the npc movement opcode.

EDIT: Also, uncommenting the GroupUpdate opcode brought crashes back to mine, so it is definitely NOT fixed.

Edit #2: OP_Consider is now 3C2D.

Edit #3: I'm seriously thinking 38E0 is the NpcMoveUpdate code, but the packet's structured differently.

mons00n
04-15-2011, 01:43 AM
EDIT: Also, uncommenting the GroupUpdate opcode brought crashes back to mine, so it is definitely NOT fixed.


well changing the OP_TargetMouse and uncommenting the GroupUpdate stops the crash when zoning (other than nek). I'm going to comment out the GroupUpdate again and see if that stops crashing the code when I'm fighting mobs.

EDIT: ok so I'm still crashing when fighting monsters. For me it makes no difference commenting out GroupUpdate (then again I'm not in a group atm)

Appreciate your help, and good luck finding the movement op code! Again if there's anything I can do to help let me know.

Kalastrom
04-15-2011, 02:08 AM
Nice timing. OP_NpcMoveUpdate is definitely 38E0. Packet changed as well, following code fixes it.
in spawnshell.cpp, function void SpawnShell::npcMoveUpdate(const uint8_t* data, size_t len, uint8_t dir):

// spawnId.
uint16_t spawnId = stream.readUInt(16);

// 13 Apr 2011 -- 2 bytes of null data added into packet.
uint16_t unk1 = stream.readUInt(16);

// 6 bit field specifier.
uint8_t fieldSpecifier = stream.readUInt(6);

Edit 1: OP_Death is 49B6, OP_DeleteSpawn is 0BD0. Still not sure what packet belongs to 2370, though it can't be many choices since it always seems to be 10 bytes long.

Railsmurf
04-15-2011, 09:42 AM
OP_RemoveSpawn seems to be 725A

Edit: and OP_GroupInvited seems to be 03CC

Edit 2: OP_FormattedMessage seems to segfault showeq when fighting mobs, i comment it out form zoneopcodes.xml and seems to be running stable after that

Edit 3: OP_InspectAnswer seems to be 3365

BlueAdept
04-15-2011, 10:39 AM
Thanks for helping and posting these. I will be out of the country starting sunday to sunday so if you can get everything working and send me the changes, I will make up a new tarball for everyone when I get back.

mons00n
04-15-2011, 09:04 PM
Kala & Rail's fixes above are working so far.

Razzy
04-16-2011, 07:18 AM
Hello, I am a long time user (since 2000) - and I have a renewed interested in EQ Progression server. Thank you guys for your work and I hope this will continue for a longer time. I wish I know how to look for the opcode so I could help out.

The Kala & Rail's fixes are working fine so far.

pita
04-16-2011, 02:48 PM
I must have screwed something up. Followed the changes posted in this thread.

Still seeing the following:
Warning: OP_ZoneEntry (0x2d6) (dataLen: 76) doesn't match: sizeof(ClientZoneEntryStruct):68
Warning: OP_ClickObject (0x442a) (dataLen: 65) doesn't match: sizeof(remDropStruct):8
Debug: SpawnShell::fillSpawnStruct - expected length: 371, read: 356 for spawn ' *******' I removed the spawn name.

Seg fault, shortly after I get Your Player's ID is


Edit: fixed the ZoneEntry error by adding 8 bytes to the placeholder at the end of the struct.

Kalastrom
04-16-2011, 03:48 PM
Are you sure you're running the latest tarball and made the changes in http://www.showeq.net/forums/showthread.php?6506-Test-Server-Updates before adding in these changes?

pita
04-16-2011, 08:18 PM
Ok, it seems I was still using a modified 5.13.10.2 source, and was functional, until this latest patch. I've run through it 3 times now, using the official 5.13.10.3 tarball as a starting point. Not having much luck. Can anyone see what I am missing. I wasn't clear on playerSpawnStruct change, as there doesn't seem to be that struct. I applied it to playerSpawnPosStruct.

Thanks in advance!

Here are the diff's of the 3 files, starting from the original.

everquest.h.diff:


*** showeq-5.13.10.3-orig/src/everquest.h 2011-01-01 17:08:56.000000000 -0
500
--- showeq-5.13.10.3/src/everquest.h 2011-04-16 21:57:55.000000000 -0400
***************
*** 563,569 ****
/*0000*/ uint32_t unknown0000; // ***Placeholder
/*0004*/ char name[32]; // Player firstname
/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
! /*0064*/ uint32_t unknown0064; // unknown
};


--- 563,569 ----
/*0000*/ uint32_t unknown0000; // ***Placeholder
/*0004*/ char name[32]; // Player firstname
/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
! /*0064*/ uint32_t unknown0064[3]; // unknown
};


***************
*** 714,720 ****
/*07872*/ uint8_t unknown07872[20];
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*10172*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
! /*10572*/ uint8_t unknown10572[560];
/*11132*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*11212*/ uint32_t endurance; // Current endurance
/*11216*/ uint32_t aa_spent; // Number of spent AA points (includin
g glyphs)
--- 714,720 ----
/*07872*/ uint8_t unknown07872[20];
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*10172*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
! /*10572*/ uint8_t unknown10572[1280];
/*11132*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*11212*/ uint32_t endurance; // Current endurance
/*11216*/ uint32_t aa_spent; // Number of spent AA points (includin
g glyphs)
***************
*** 1416,1421 ****
--- 1416,1422 ----
struct spawnPositionUpdate
{
/*0000*/ int16_t spawnId;
+ uint8_t unk1[2];
/*0002*/ int64_t y:19, z:19, x:19, u3:7;
unsigned heading:12;
signed unused2:4;
***************
*** 2187,2192 ****
--- 2188,2194 ----
struct SpawnUpdateStruct
{
/*0000*/ uint16_t spawnId; // Id of spawn to update
+ uint8_t unk1[2];
/*0002*/ uint16_t subcommand; // some sort of subcommand type
/*0004*/ int16_t arg1; // first option
/*0006*/ int16_t arg2; // second option
***************
*** 2284,2289 ****
--- 2286,2292 ----
struct playerSpawnPosStruct
{
/*0000*/ uint16_t spawnId;
+ uint8_t unk[2];
/*0002*/ signed padding0000:12; // ***Placeholder
signed deltaX:13; // change in x
signed padding0005:7; // ***Placeholder
***************
*** 2311,2317 ****
{
/*0000*/ uint16_t spawnId; // Player's spawn id
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
! /*0004*/ uint8_t unknown0004[4]; // ***Placeholder
/*0008*/ float x; // x coord (2nd loc value)
/*0012*/ float y; // y coord (1st loc value)
/*0016*/ signed deltaHeading:10; // change in heading
--- 2314,2320 ----
{
/*0000*/ uint16_t spawnId; // Player's spawn id
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
! /*0004*/ uint8_t unknown0004[6]; // ***Placeholder
/*0008*/ float x; // x coord (2nd loc value)
/*0012*/ float y; // y coord (1st loc value)
/*0016*/ signed deltaHeading:10; // change in heading


zoneopcodes.xml.diff


*** showeq-5.13.10.3-orig/conf/zoneopcodes.xml 2011-01-01 13:30:45.000000000 -0500
--- showeq-5.13.10.3/conf/zoneopcodes.xml 2011-04-16 21:44:02.000000000 -0400
***************
*** 5,11 ****
<!--
Critical opcodes used directly by ShowEQ
-->
! <opcode id="5BAD" name="OP_NpcMoveUpdate" updated="12/08/10">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
--- 5,11 ----
<!--
Critical opcodes used directly by ShowEQ
-->
! <opcode id="3278" name="OP_NpcMoveUpdate" updated="12/08/10">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
***************
*** 13,32 ****
<comment></comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="220C" name="OP_DeleteSpawn" updated="12/08/10">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
! <opcode id="002B" name="OP_ZoneEntry" updated="10/15/10">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="5F85" name="OP_GuildMOTD" updated="10/15/10">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
! <opcode id="2370" name="OP_InspectAnswer" updated="10/15/10">
<comment>old InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
--- 13,32 ----
<comment></comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="0BD0" name="OP_DeleteSpawn" updated="12/08/10">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
! <opcode id="02D6" name="OP_ZoneEntry" updated="10/15/10">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="71D1" name="OP_GuildMOTD" updated="10/15/10">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
! <opcode id="3365" name="OP_InspectAnswer" updated="10/15/10">
<comment>old InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
***************
*** 34,40 ****
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
! <opcode id="2257" name="OP_TargetMouse" updated="10/15/10">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
--- 34,40 ----
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
! <opcode id="5F5E" name="OP_TargetMouse" updated="10/15/10">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
***************
*** 74,84 ****
<comment></comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
! <opcode id="3B52" name="OP_FormattedMessage" updated="10/21/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
! <opcode id="6CFE" name="OP_SpawnDoor" updated="12/08/10">
<comment>old DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
--- 74,85 ----
<comment></comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
! /* <opcode id="3B52" name="OP_FormattedMessage" updated="10/21/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
! */
! <opcode id="6CFE" name="OP_SpawnDoor" updated="12/08/10">
<comment>old DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
***************
*** 102,108 ****
<payload dir="server" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You got invited to a group</comment>
</opcode>-->
! <opcode id="5251" name="OP_GroupInvite" updated="10/21/09">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite or get invited</comment>
</opcode>
--- 103,109 ----
<payload dir="server" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You got invited to a group</comment>
</opcode>-->
! <opcode id="03CC" name="OP_GroupInvite" updated="10/21/09">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite or get invited</comment>
</opcode>
***************
*** 148,154 ****
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3E50" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
</opcode>
***************
*** 148,154 ****
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3E50" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
--- 149,155 ----
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3C2D" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
***************
*** 186,196 ****
<comment>old ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="7434" name="OP_RemoveSpawn" updated="06/12/09">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
! <opcode id="3237" name="OP_Death" updated="09/07/10">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
--- 187,197 ----
<comment>old ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="725A" name="OP_RemoveSpawn" updated="06/12/09">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
! <opcode id="49B6" name="OP_Death" updated="09/07/10">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>

spawnshell.cpp.diff


*** showeq-5.13.10.3-orig/src/spawnshell.cpp 2011-01-01 17:10:22.000000000 -0500
--- showeq-5.13.10.3/src/spawnshell.cpp 2011-04-16 21:45:13.000000000 -0400
***************
*** 947,952 ****
--- 947,955 ----
// spawnId.
uint16_t spawnId = stream.readUInt(16);

+ // 13 Apr 2011 -- 2 bytes of null data added into packet.
+ uint16_t unk1 = stream.readUInt(16);
+
// 6 bit field specifier.
uint8_t fieldSpecifier = stream.readUInt(6);

***************
*** 1357,1362 ****
--- 1360,1369 ----

if(len==sizeof(removeSpawnStruct))
{
+ // Hack to fix corpse clean-up change
+ deleteItem(tSpawn, rmSpawn->spawnId);
+ // End Hack
+
if(!rmSpawn->removeSpawn)
{
// Remove a spawn from outside the update radius

Railsmurf
04-17-2011, 03:56 AM
OP_GroundSpawn is 442A

EDIT: sorry i was way of here, see kala's post futher down
Old not relevant text: "OP_ClickObject seems to be 7C87 but the struct do not match so ground spawns never gets removed, and changeing struct is beyond me at the moment."

BOHICA1021
04-17-2011, 10:11 AM
I am in the same boat as pita. Several times starting over from 5.13.10.2 making the above changes and changes from http://www.showeq.net/forums/showthr...Server-Updates and still no success. Everything looks like it is working while my character is still loading, but once the character gets into game, seg fault. It looks like there are just 3 files changing. Everquest.h, spawnshell.cpp, and zoneopcodes.xml. Would it be possible for someone who has this working to paste those three files?

pita
04-17-2011, 01:32 PM
I got annoyed with builds taking 20 minutes on my old AMD 1400+ linux box, so I threw together a "new" P4 3.0gig box, with 2gig ram, Ubuntu 11.04 beta. (Yeah, I know, living on the wild side.)

Copied the exact same showeq folder from the old box, recompiled, now I am getting an OP_GroupDisband size mismatch. Sigh!!!

Can anyone post a working diff against 5.13.10.3 tarball?

On a completely different note, I really really really don't like the new Unity desktop. I reverted back to Gnome within about 10 minutes.

oiji
04-17-2011, 03:41 PM
Pita I looked at your DIFF and you are missing the change to OP_GroupUpdate in zoneoppcodes.xml. This needs to be commented out.

pita
04-17-2011, 09:42 PM
ok, commented out OP_GroupUdate, and I can get into game, have a map, and some skittles, but it crashes soon after.

Kalastrom
04-17-2011, 11:07 PM
Another update, sorry for the delay but I was dealing with RL things. OP_GroundSpawn is definitely 0x442A, OP_ClickObject is definitely 0x4194, OP_HPUpdate is definitely 0x2370, and OP_InspectAnswer is definitely 0x3365.

I did find a packet and opcode (0x0FF4) that ShowEQ doesn't handled. It's a mana related packet structured exactly like the one attached to OP_HPUpdate, but it is NOT OP_ManaChange. It's 10 bytes long, 4 bytes of mana, then 4 bytes of mana, and finishes itself off with 2 bytes of spawnID.

Edit 1: I ended up commenting out all the group related opcodes as I'm not sure what ShowEQ would process them for, nor am I really sure I care about that data. I know that's probably not the best way to handle it, but whatever for now. lol I'm also not sure what purpose OP_RemoveSpawn has, or how to tell if it really is working, since corpse rotting is handled by DeleteSpawn, and picking up ground spawn items is handled by ClickObject. I've got it in my codes as 725A as per previous post, but other than that I've no idea what to do with it.

Edit 2: Updated ClientZoneEntryStruct to match client sent 02D6 packet, change
/*0064*/ uint32_t unknown0064; to this:
/*0064*/ uint32_t unknown0064[3];

Edit #3: Found some guild related opcodes 7429 which is 76 bytes long, and 4D4E which is 72 bytes long, doesn't look like anything useful, but I offer the data for those that are curious.

Edit #4: OP_SimpleMessage is now 3B52 which was the old OP_FormattedMessage opcode. No idea what the new OP_FormattedMessage opcode is as of yet, not sure what a formatted message would look like on my screen anyway. That will at least stop crashes related to this opcode.

Edit #5: 5D0F is the contents of the veteran reward claim window.

BOHICA1021
04-18-2011, 06:58 PM
Well, that did the trick. Did what Kalastrom did and commented out all group OP codes. I get skittles and movements. Zoned to several instances and no crashes yet.

pita
04-18-2011, 08:12 PM
Seems to be loading map that is one further up the expansion list. IE Feerott, loads HoT lower. Lower, loads HoT Upper.

Seems ok in UF zones though


Edit: Realized, I hadn't applied this patch : http://www.showeq.net/forums/showthread.php?6541-Showeq-Loading-wrong-maps-in-HoT&p=46065#post46065

Kalastrom
04-19-2011, 01:19 AM
I have no idea on that one as I'm on a progression server.

Spanners
04-19-2011, 08:41 AM
Sounds like you have a map entry missing screwing the array up.

Kalastrom
04-20-2011, 02:23 AM
Okay, anybody else noticed spawn points being loaded for a zone that are not correct? For example, I just had spawn points in Sol B, show up on the map when I zoned into Sol A. And this is after I cleared out every spawn point file I had.

Edit 1 and most important! I figured out the spawn point issue. Turns out the spawn point list is keyed off OP_ZoneChange, which I'm pretty sure is 5BD9. So far it's working, please inform me if it's not!

Razzy
04-30-2011, 08:08 AM
Okay, anybody else noticed spawn points being loaded for a zone that are not correct? For example, I just had spawn points in Sol B, show up on the map when I zoned into Sol A. And this is after I cleared out every spawn point file I had.

Edit 1 and most important! I figured out the spawn point issue. Turns out the spawn point list is keyed off OP_ZoneChange, which I'm pretty sure is 5BD9. So far it's working, please inform me if it's not!

Edit: NM! All fixed now. I missed the part that I need to comment out all the OP_Group* and I also missed that wrong zone load fix by pita.

Hi, it is sorta working. As long I stay in zone, it's fine but when I zone, it'd crash. Is there a new rollup pushed out yet? I'll try redo the changes again - making sure I didn't miss anything.

Razzy
05-01-2011, 12:13 PM
Well everything seemed ok until I zoned into Misty Thicket, didn't load map at all and it is off if i tried to load the map manually. Other zones (progression server) seems okay. Have not crashed yet.

Kalastrom
05-01-2011, 12:18 PM
Yah, I haven't found a good map for misty thicket yet. I should pull the one from the client since mapfiend's is out of date.

BlueAdept
05-01-2011, 06:13 PM
Im back in town and settled in again. Could someone tar up an updated/working source and send it to me so I can update the file on here? Since I do not play any more, it is kind of hard for me to make sure I got everything. Please PM me.

hug
05-02-2011, 03:36 PM
These forums hate me. Tried to send a PM, but apparently I haven't enabled that feature, and the silly board won't allow me to make any changes...

Razzy
05-02-2011, 05:22 PM
I could have sworn it was working last month there. I am using the converted maps from www.mapfiend.net. I got the script from here somewhere that converts it to *.map format. The in-game map is working fine as it is using the same file.

BlueAdept
05-03-2011, 07:05 AM
Thanks everyone. I got a tarball now. I will try to update the download section later tonight or tomorrow.

BlueAdept
05-04-2011, 08:17 AM
Sorry everyone, it is going to have to wait until Friday. My linux machine is down and I do not have a way to verify the package I received. Ill have some time to work on my linux box then.

Razzy
05-04-2011, 03:47 PM
Sorry everyone, it is going to have to wait until Friday. My linux machine is down and I do not have a way to verify the package I received. Ill have some time to work on my linux box then.


EQ is probaby down until next week.. take your time! heh.

Kalastrom
05-19-2011, 06:07 AM
Okay, I just noticed I was wrong about a particular opcode. OP_HPUpdate is actually 0x6967, 0x2370 is the endurance opcode, and 0x0ff4 is definitely the mana opcode for player regen. 2370 and 0ff4 did not have an opcode defined in zoneopcodes.xml, so I added them myself, just because I could, but they have no handling code. Don't really need it I think.

bobgraton
05-23-2011, 12:17 PM
I might have miss something somewhere , seq is starting populating spawn list but crashing just after entering the world. In any case, has anyone made a tarball or patch with all the changes detailed here ?

Kalastrom
05-23-2011, 12:28 PM
A tarball was made and sent to BlueAdept, not sure if he's posted it yet or not.

hug
05-24-2011, 03:31 PM
Is anyone still playing on Test to know if tomorrow's patch is going to give seq the pooch screw?

Kalastrom
05-24-2011, 03:34 PM
Not me, but I'll probably fix it. lol

sammie
05-24-2011, 10:20 PM
I logged into Test to check functionality and there is a change to playerProfile again.

In everquest.h:
/*10572*/ uint8_t unknown10572[1280]; // add 360 (was 920) 9-3-2011

to

/*10572*/ uint8_t unknown10572[1600]; // add 320 (was 1280) 24-5-2011

I ran around and zoned a few times, noticed no other opcode or structure changes. Had skittles and no warnings in console, so this should be the only change if this code goes live tomorrow.

I am also running some diffs for easier patching since there are so many changes that haven't been committed yet. I may wait until tomorrow to include this fix to post them unless someone asks for them ahead of time.

Kalastrom
05-25-2011, 07:48 AM
Sounds good to me.

Edit: The above correction fixed showeq as of 25 May 2011. I've updated my src tarball and you can download it here: https://rapidshare.com/files/873259105/showeq-5.13.10.4.tar.bz2

Razzy
05-25-2011, 06:51 PM
Sounds good to me.

Edit: The above correction fixed showeq as of 25 May 2011. I've updated my src tarball and you can download it here: https://rapidshare.com/files/873259105/showeq-5.13.10.4.tar.bz2

You guys rock. Thanks.

BOHICA1021
05-27-2011, 06:58 AM
Sounds good to me.

Edit: The above correction fixed showeq as of 25 May 2011. I've updated my src tarball and you can download it here: https://rapidshare.com/files/873259105/showeq-5.13.10.4.tar.bz2


Thanks for the tarball Kalastrom. I decided to reload Fedora 14 on my system and using this tarball saved me a ton of headaches getting SEQ back up and running. However, one thing to note. You are missing the following line in the zones.h file for HoT.

{ "feerrott2", "Dream Feerrott" }, // 700

bobgraton
05-28-2011, 05:26 AM
Kalastorm

Much thanks all looks fine :)