Valhalla Legends Forums Archive | Battle.net Bot Development References | D2GS Packet Research

AuthorMessageTime
Ringo
Note; This research was done many years ago in a very short space of time.
- It has since been *refreshed* at 12th/jan/2010.



(Keep in mind my reserch was done in HC/SC ladder games)

So, Getting from the realm to game....

Responce to join request:
The last packet the realm sends you (with the game server info)
[code]0000  15 00 04 03 00 C3 02 00 00 D5 F8 6A DB E2 BD C0    ...........j....
0010  0C 00 00 00 00                                    .....[/code]
15 00 - packet lengh
04 - Packet ID (MCP_JOINGAME)
03 00 - Request ID
C3 02 - D2GS Token
00 00 - 0x00
D5 F8 6A DB - D2GS IP
E2 BD C0 0C - D2GS Hash
00 00 00 00 - Result


Once connected to the game server, you should receve this:
[code]
S > C
AF 01                                              ..
[/code]
In the above packets responce you will need to send some logon infomation to the game server.
The packet header is as follows for sending and recving(decompressed) packets:
[code]
(BYTE) Packet ID
(VOID) Data
[/code]
The lengh of the packet is decided apone the packet ID and some/many packets have multiple formats/lenghs (this can be obtained from inside data values and in rare case's, inside packet lengh bytes)


As for sending logon info to the server:
[code]
C > S
68 D3 B0 B5 2C D9 03 04 0B 00 00 00 50 CC 5D ED
B6 19 A5 91 00 72 74 74 74 68 65 61 68 65 61 68
65 61 68 72 00
[/code]
Clicky here and read the 1st packet in the list for infomation on sending this packet



Then if u get this packet its all good!
it means the game server has accepted you.
If u never recv this, it normaly can mean a few things, like failed to join game or say for example your proceeding data after ur char name wasnt right for your char)
[code]
S > C
02 5C                                              .\
[/code]

Now the above packet has been recv, this packet should be sent to the server to enter the game enviroment.
[code]
C > S
6B                                                k
[/code]
After you have sent this, the server should then send you some very large clumped packets. (All the game infomation about you, other players etc)
You should notice that the large packets 1st byte does not match that of the packets lengh.
This is because most uncompressed packets have a lengh as the 1st byte.
This limits it to 240 as anything above that i used with a differnt method to obtain the uncompressed packets lengh (for decompression).
(Every packet from the server should be decompressed after u have sent this byte)
As for splitting the packets up, this is a matter of ones persional opinion, but you may want to keep chucking the clump of data back through ur parser, untill it comes to a unknown packet or parse's each message in the clump. But be warned, any bugs in your packet handlers will mess your whole parser up.












[size=8] C > S[/size] can be found here





[size=8]S > C[/size] - decompressed


[size=6]0x01[/size], Lengh=9, D2GS_SETUP
[color=yellow]01 00 04 00 30 00 01 01 00
(BYTE) Difficulty (0x00=N, 0x01=NM, 0x02=H)
(BYTE) 0x04
(BYTE) Difficulty/Core Flag (0x08=HC, 0x10=NM, 0x20=HELL)
(WORD) Ladder/Expo Flag (0x10=LOD, 0x20=Ladder)
(BYTE) Expo (0x00=classic, 0x01=LOD)
(WORD) Ladder (0x00=No, 0x01=Yes)[/color]
State's the game type when entering a game.

[size=6]0x02[/size], Lengh=1, D2GS_0x02
[color=yellow]02
Blank.[/color]
This packet only gets sent in the game login after 0x01 (in responce to clients 0x68 login packet)
Following this, the client will send 0x6B to enter the game.

[size=6]0x03[/size], Lengh=12, D2GS_SEED
[color=yellow]03 04 8E DC C2 5A 67 00 8A 3F 23 B8
(BYTE) Act (0 based)
(DWORD) Seed 1
(WORD) Area ID
(DWORD) Seed 2[/color]
Used by the client to generat the map and derive what graphic/collision data to apply to an area of the map un/asigned via S>C 0x08/0x07.
Iirc, the 1st seed is used for map generation, the 2nd for NPC and general object, etc, asignment.

[size=6]0x04[/size], Lengh=1, D2GS_ENTERGAME
[color=yellow]04
Blank[/color]
Notifys you that you have now enterd the game.

[size=6]0x05[/size], Lengh=1, D2GS_MOVEACT
[color=yellow]05
Blank[/color]
Notifys you that you have now moved act's.

[size=6]0x06[/size], Lengh=1, D2GS_BOOT
[color=yellow]06
Blank[/color]
Notifys you that the server has booted you (and most likely everyone else) from the game.

[size=6]0x07[/size], Lengh=6, D2GS_MAPADD
[color=yellow]07 C0 04 A8 03 01
(WORD) Floor Cell X
(WORD) Floor Cell Y
(BYTE) Area ID[/color]
X and Y will not match up to the X and Y in witch you stand, this packet is for notifying D2 what floor file to load.
This is normal done in 4 sections at a time.

[size=6]0x08[/size], Lengh=6, D2GS_MAPREM
[color=yellow]08 D1 04 9E 03 01
(WORD) Floor Cell X
(WORD) Floor Cell Y
(BYTE) Area ID[/color]
Speficys where to remove floor sections from the screen. (removes above, 0x07)

[size=6]0x09[/size], Lengh=11, D2GS_DOORASIGN
[color=yellow]09 05 XX XX XX XX 04 5D 1D 9C 13
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Side
(WORD) X
(WORD) Y[/color]
A door to another area has just come into you range of view.
The Side will be 0x04 when you get with in a screens distance from it, and the ID will be specifying the ID for the door/entity on the other* side. Other wise it will be specifying the ID to the door for the area you are on.

[size=6]0x0A[/size], Lengh=6, D2GS_LOSTSIGHT
[color=yellow]0A 01 XX XX XX XX
(BYTE) Entity's Type
(DWORD) Entity's ID[/color]
An entity has left your range of view.

[size=6]0x0B[/size], Lengh=6, D2GS_0x0B
[color=yellow]0B 00 XX XX XX XX
(BYTE) Entity's Type
(DWORD) Entity's ID[/color]
Sent when entering a game, with in the join game data/block.
Always seen to be a Player, belonging to you, the recving/joining client.
None the less, A very important packet for the join process.

[size=6]0x0C[/size], Lengh=9, D2GS_SHOWDMG
[color=yellow]0C 01 XX XX XX XX 13 01 49
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Effect/State
(BYTE) SFX
(BYTE) Life%[/color]
An Entity has lost some life and maybe changed animation states.


[size=6]0x0D[/size], Lengh=13, D2GS_ACTIONEFFECT
[color=Yellow]0D 00 XX XX XX XX 07 67 16 D8 15 00 5D
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Effect/State
(WORD) Location X
(WORD) Location Y
(BYTE) Life%
(BITS[4]) State Graphic Code
(BITS[4]) State Sound Code[/color]
An Entity has a new effect.

[size=6]0x0E[/size], Lengh=12, D2GS_OBJECTSTATE
[color=yellow]0E 02 XX XX XX XX 03 01 02 00 00 00
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) 0x03
(BYTE) Boolean (0x00=cant change back, 0x01 can change)
(DWORD) Entity's State[/color]
Notifys you of an object's state, such as a shrine, or a WP being active/inactive.
Note: Many differnt objects have differnt Entity state values, and they all mean differnt things depending on the object.

[size=6]0x0F[/size], Lengh=16, D2GS_ENTITYMOVE
[color=Yellow]0F 00 XX XX XX XX 17 3E 13 4B 16 00 40 13 45 16
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Movment Type (0x20=knocked back, 0x17=Run, 0x01=Walk, etc)
(WORD) Going to Location X
(WORD) Going to Location Y
(BYTE) 0x00 (if not knockback)
(WORD) Current Location X
(WORD) Current Location Y[/color]
Notifys you that an entity (normaly a player) is moving to a new location.

[size=6]0x10[/size], Lengh=16, D2GS_ENTITYTOENTITY
[color=Yellow]10 00 XX XX XX XX 18 01 $$ $$ $$ $$ 65 15 6C 12
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Movment Type (0x18=Run, 0x00=Walk, etc)
(BYTE) Entity's Type (being moved to)
(DWORD) Entity's ID (being moved to)
(WORD) Location X
(WORD) Location Y[/color]
Notify you that an Entity (normaly a player) is moving towards another entity.

[size=6]0x11[/size], Lengh=8, D2GS_REPORTKILL
[color=Yellow]11 00 XX XX XX XX 98 00
(BYTE) Entity's Type
(DWORD) Entity's ID
(WORD) 0x98 for player, 0x97 for merc[/color]
The useage of this packet is unknown.
But what is known about it, is that it's sent to a client who "witness's" a kill from a player or merc.
This doesnt seem to include summoned monsters.
It does include your own merc.

[size=6]0x15[/size], Lengh=11, D2GS_REASIGN
[color=Yellow]15 01 XX XX XX XX 20 14 83 10 01
(BYTE) Entity's Type
(DWORD) Entity's ID
(WORD) Location X
(WORD) Location Y
(BYTE) Reasign Boolean (0x01=true, 0x00=false)[/color]
Notifys you that, you or another player is at a location.
This packet is used when a player teleports, notifying you that both them and there merc and summon's have been reasigned to a new location.
This packet also notifys you of your X and Y when joining a game.
If reasign is false (0x00) then this packet should be ignored?.

[size=6]0x18[/size], Lengh=15, D2GS_POT
[color=Yellow](BITS[15]) Life
(BITS[15]) Mana
(BITS[15]) Stamina
(BITS[15]) If > 0 Then you're Characters X
(BITS[1]) Unknown
(BITS[15]) If > 0 Then you're Characters Y
(BITS[36] Unknown[/color]
Notifys you're of you're current life, mana, stamina and location.
Format very much like S>C 0x95, plus a few extra bytes.
Relates to drinking potions.

[size=6]0x19[/size], Lengh=2, D2GS_BYTETOGOLDBANK
[color=Yellow]19 1B
(BYTE) Gold[/color]
A small amount of Gold has been added to your gold bank. (inventory)

[size=6]0x1A[/size], Lengh=2, D2GS_BYTETOEXP
[color=Yellow]1A 21
(BYTE) +Exp[/color]
You have gained experience.

[size=6]0x1B[/size], Lengh=3, D2GS_WORDTOEXP
[color=Yellow]1B 5F 02
(WORD) +Exp[/color]
You have gained more experience.

[size=6]0x1C[/size], Lengh=5, D2GS_DWORDTOEXP
[color=Yellow]1C C4 10 00 0F
(DWORD) +Exp[/color]
You have gained even more experience.

[size=6]0x1D[/size], Lengh=3, D2GS_BYTEATTRIBUTE
[color=Yellow]1D 03 DC
(BYTE) Attribute Code
(BYTE) Attribute Rating[/color]
Notifys you of base attributes.

[size=6]0x1E[/size], Lengh=4, D2GS_WORDATTRIBUTE
[color=Yellow]1E 09 00 24
(BYTE) Attribute Code
(WORD) Attribute Rating[/color]
Notifys you of base attributes.

[size=6]0x1F[/size], Lengh=6, D2GS_DWORDATTRIBUTE
[color=Yellow]1F 0F 64 E8 0C 00
(BYTE) Attribute Code
(DWORD) Attribute Rating[/color]
Notifys you of base attributes.

[size=6]0x20[/size], Lengh=10, D2GS_PLAYERATTRIBUTE
[color=yellow]20 XX XX XX XX 02 1A 00 00 00
(DWORD) Player ID (that the stats points relates to)
(BYTE) Attribute Code
(DWORD) Attribute Rating[/color]
Notifys you of somones stats points/base attributes.

[size=6]0x22[/size], Lengh=12, D2GS_SKILLBOOKCOUNT
[color=yellow]22 00 26 XX XX XX XX DC 00 10 1F 00
(BYTE) Entity's Type?
(BYTE) 0x26
(DWORD) Entity's ID
(WORD) Skill Code
(BYTE) Stats Amount
(WORD) Unknown[/color]
Notifys you of a skill's charge/count.
For example if you have a scroll book, you will be notifyed of how many scrolls are in the book, etc.
IIRC, The entity is noramly always you're own character.

[size=6]0x23[/size], Lengh=13, D2GS_SKILLSELECT
[color=yellow]23 00 XX XX XX XX 00 44 00 FF FF FF FF
(BYTE) Entity's Type?
(DWORD) Entity's ID
(BYTE) Skill Side (0x00=Right, 0x01=Left)
(WORD) Skill Code
(DWORD) Unknown (-1 in HC, 0 in SC)[/color]
Notifys you when another player selects a new skill with in your range of view.

[size=6]0x26[/size], Lengh=10+n, D2GS_CHAT
[color=Yellow]26 01 00 02 00 00 00 00 00 05 (Character Name) 00 (Message) 00
(BYTE) Chat Type
(BYTE) Unknown
(BYTE) Entity's Type (if not over head, then 0x02?)
(DWORD) Entity's ID (if not over head, then 0x00)
(BYTE) Unknown
(BYTE) Unknown (0x05 chat, 0x01 recv-wisp)
(STRING) Character Name (Blank if over head)
(STRING) Message[/color]
Chat Type's;
0x01 = Open Chat
0x02 = @Recv Wisper
0x05 = Over Head Chat
0x06 = @Sent Wisper
Note; If a shrine displays an over head message (and they can/do), the message will contain a 4 character number;
"3684" will render as "You feel refreshed", etc.

[size=6]0x27[/size], Lengh=40, D2GS_NPCINTERACT
Lengh = 40
[color=Yellow](BYTE) Entity's Type
(DWORD) Entity's ID
(BYTES[34]) Unknown (Un-Researched)[/color]
Notifys you that you have a merc, and the mercs ID.
Also notify's you of NPC interaction, etc.

[size=6]0x28[/size], Lengh=103, D2GS_QUESTTREE
[color=Yellow](DWORD) Unknown (maybe a reassion id)
(WORD) Unknown (0x00)
(WORD) Unknown (Seen 0x00, 0x01)
For each quest:
_(BYTE) Flag 1
_(BYTE) Flag 2
(VOID) remaining extra mumbojumbo[/color]
Notifys you of thee game's/you're quest tree status.
The quest order seems to be:
[size=1]1 = A1 Q1 (Den of evil)
2 = A1 Q2 (Kill blood raven)
3 = A1 Q5 (Kill blacksmith)
4 = A1 Q3 (Save cain)
5 = Unknown?
6 = A1 Q6 (Kill Andy)
7 = ACT2 ENABLER?
8 = Unknown
9 = A2 Q1 (Sewers)
10 = A2 Q2
11 = A2 Q3
12 = A2 Q4
13 = A2 Q5
14 = A2 Q6
15 = ACT3 ENABLER?
16 = Unknown
17 = A3 Q4
18 = A3 Q3
19 = A3 Q2
20 = A3 Q1
21 = A3 Q5 (travi)
22 = A3 Q6 (mep)
23 = ACT4 ENABLER?
24 = Unknown
25 = A4 Q1
26 = A4 Q3 (A5 Enabler)
27 = A4 Q2
23 = Unknown
24 = Unknown
25 = Unknown
26 = Unknown
27 = Unknown
28 = Unknown
29 = Unknown
30 = A5 Q1
31 = A5 Q2
32 = A5 Q3
33 = A5 Q4
34 = A5 Q5 (Ancients)
35 = A5 Q6[/size]

[size=6]0x2C[/size], Lengh=8, D2GS_SOUND
[color=Yellow]2C 00 XX XX XX XX 1A 00
(BYTE) Entity's Type
(DWORD) Entity's ID
(WORD) Speech ID[/color]
This packet is fairly common thorugh out the game, and is used to trigger a sound file to be played.
Player (Entity 0x00) Speech ID's;
19 00 = help / help me
1A 00 = follow me / come on!
1B 00 = this is urs / this is for you
1C 00 = thnks / thank you
1D 00 = ahh oops / forgive me
1E 00 = bye / Good Bye
1F 00 = Die / time to die
20 00  = Run / Run away

[size=6]0x3F[/size], Lengh=8, D2GS_ITEMRUNOUT
[color=Yellow]3F FF 1F 8D 95 15 FF FF
(BYTE) 0xFF
(DWORD) Item/Entity's ID
(WORD) 0xFFFF[/color]
Notifys you that you have just interacted with an item and its ran out?
Also notifys you when you have opened a scroll, etc.

[size=6]0x42[/size], Lengh=6, D2GS_MOUSECLEAR
[color=Yellow]42 00 C0 2A 19 B5
(BYTE) Entity's Type
(DWORD) Entity's ID[/color]
Notifys you that your mouse/item buffer is now clear/empty.

[size=6]0x47[/size] & [size=6]0x48[/size], Lengh=11, D2GS_0x47/0x48
[color=Yellow]47 00 00 91 8F F7 BA 00 00 00 00
48 00 00 C8 A7 7B CD 00 00 00 00
(WORD) Unknown
(DWORD) Entity's ID
(DWORD) Unknown[/color]
These 2 packets can almost always be seen together, and 0x48 will always follow 0x47 and both contain the same ID field as each other.
They can also be recv in large rows based on the number of ID's a client would need in the cause of an event/update or distribution of infomation.
*shrugs*

[size=6]0x4C[/size], Lengh=16, D2GS_ENTITYATTACKENTITY
[color=yellow]4C 00 XX XX XX XX 00 00 01 01 DC BF 5B 31 00 00
(BYTE) Entity's Type (Issueing attack)
(DWORD) Entity's ID (Issueing attack)
(WORD) Attack Method/Skill Code
(BYTE) Skill Level
(BYTE) Entity's Type (Being Attacked)
(DWORD) Entity's ID (Being Attacked)
(WORD) 0x00[/color]
Notifys you that a entity is attacking another entity.
This normaly covers range attacks when it comes to NPC's, but should cover all players other than your self.
This can also cover objects, which display state change FX, such as shrines. (need to look into that)

[size=6]0x4D[/size], Lengh=17, D2GS_ENTITYATTACKLOCATION - also relations with shrines
[color=yellow]4D 00 XX XX XX XX 28 00 00 00 09 B7 16 62 11 00 00
(BYTE) Entity's Type (Issueing attack)
(DWORD) Entity's ID (Issueing attack)
(WORD) Skill Code
(WORD) 0x00
(BYTE) Skill Level?
(WORD) Attack/Cast Location X
(WORD) Attack/Cast Location Y
(WORD) 0x00[/color]
Notifys you that an entity has attacked/cast at a location.
This has also been seen in relation to shrines, when interacted with.

[size=6]0x51[/size], Lengh=14, D2GS_OBJECTASIGNMENT
[color=yellow]51 02 XX XX XX XX 25 00 59 16 A0 15 02 00
(BYTE) Entity's Type (normaly always objects)
(DWORD) Entity's ID
(WORD) Entity's Unique Code/Class
(WORD) Location X
(WORD) Location Y
(BYTE) State (0x00=no &HE will follow, 0x02=expect a &HE)
(BYTE) Interaction Conditions[/color]
State's:
0x00 State = Objects state can be changed
0x02 State = Objects state can not be changed with interaction
Interaction's:
0x00 = Covers things like general objects/chests etc
0x01 = Refreshing Shrine
0x02 = Health Shrine
0x05 = Chest will catch fire
0x08 = Chest has a mommy inside
0x0D = Mana Recharge Shrine
0x0E = Stamina Shrine
0x0F = Exp Shrine
0x13 = Fire Shrine
0x80 = Locked chest (state should be 0x00)

[size=6]0x53[/size], Lengh=10, D2GS_GAMEREFRESH
[color=Yellow]53 02 00 00 00 00 44 00 00 00
(DWORD) Possible Player Slot Number - (used as party number for a player)
(BYTE) Boolean - (0x00=false, 0x80=true?)
(DWORD) Some kind of count[/color]
You should recv this packet every 1 min average and it will be followed by a 0x47 and a 0x48 packet for each player with in your 4 screen view.
The last DWORD seems to count up slowly and goes back to 00 after 0xA0(ish) and the boolean BYTE should differ from 0x00 and 0x80 every time you recv this packet.
At least, that was the case whe looked at.

[size=6]0x59[/size], Lengh=28, D2GS_PLAYERASIGN
[color=yellow]59 XX XX XX XX 04 (Char Name) 00 00 00 00 00
(DWORD) Player's ID
(BYTE) Character Class
(BYTE[16]) Character Name
(WORD) Location X
(WORD) Location Y[/color]
Notifys you that a player is standing/coming into your range of view. (4 screens, aprox)
The X and Y locations in this packet will be null if it is for the recving player(you).

[size=6]0x5A[/size], Lengh=40, D2GS_EVENTNOTIFY
[color=yellow](BYTE) Event
(BYTE) Action (always 0x04, unless stated other wise)
(DWORD) Entity's ID
(BYTE) Entity's Type
(BYTE[16]) A
(BYTE[16]) B[/color]
Notifys you of events through out the game, that a D2 client would display, such as relation changes (hostile, loot etc) and players joining/leaving.
Events;
0x00="A-B Dropped Due To Timeout" (A=CharName, B=AccName)
0x01="A-B Dropped Due To Errors" (A=CharName, B=AccName)
0x02="A-B Joined The Game" (A=CharName, B=AccName)
0x03="A-B Quits The Game" (A=CharName, B=AccName)
0x04="A Is Not In The Game" (from use of @wisper, action should be 0)
0x05="A Is Not Logged In The Game" (action should be 0)
0x06="A Was Slain By...type"
- If Type Player: ID=class, B=Player who slained A.
- If Type NPC: ID=Class, [optional] B=text-number of unique boss ID, ie; pindle.
- Otherwise: ID=Class of entity that slained A.
0x07=Player Relation.. ID=Player's ID who changed relation.
- Actions: 0x00=Nutural, 0x02=Teaming, 0x04=Friendly, 0x08=Nasty, 0x09=Remove
- Type's:
-- 0x01=[friendly] ID has Give Loot
-- 0x02=[friendly] ID has Give Loot?
-- 0x03=[nasty] ID has gone Hostile
-- 0x04=[nutural] ID is no longer Hostile
-- 0x05=[teaming] ID Invites you to their party
-- 0x06=[remove] ID cancels party invite
-- 0x07=[teaming] ID is now in you're party
-- 0x08=[teaming] You're now in ID's party
-- 0x09=[remove] ID has left you're party
-- 0x0B=[remove] ID has removed loot
0x08="A Is Busy" (when clicking for trade)
0x09="Wait A Short Time Before Going Into Trade" (A=CharName)
0x0A="Item's In Box" (Cube is full or unacessable in current state)
0x0D="A Is Not Listening To You" (@Wisper responce, they have you squelched)
0x0E="Not Enough Mana" (action=1, ID=Player's ID who lacks the mana)
0x0F="Realm Is Going Down In ID Mins" (ID=number of mins)
0x10="You must wait awhile before hostiling A"
0x11="ID Soj's Have Been Sold" (ID=soj count)
0x12="Diablo Walks The Earth" (ID=soj count?)

[size=6]0x5B[/size], Lengh=36, D2GS_PLAYERINGAME
[color=yellow]5B 24 00 XX XX XX XX 01 (Char Name) 00 01 00 FF FF 00 00 00 00 00 00 00 00
(WORD) Packet Lengh
(DWORD) Player's ID
(BYTE) Player's Class
(BYTE[16]) Character's Name
(WORD) Character's Level
(WORD) Party Number (0xFFFF = none)
(VOID) Null-Padding[/color]
Notifys you that a player is in the game and will only send you this packet once for each player present in the game.
This will also be sent to you when another player has joined the game as wall as being followed by a 0x5A packet type 0x02 for notification.

[size=6]0x5C[/size], Lengh=5, D2GS_PLAYERQUITGAME
[color=yellow]5C XX XX XX XX
(DWORD) Player's ID[/color]
Notifys you that a player has exit'ed the game -- this make's it final.

[size=6]0x60[/size], Lengh=7, D2GS_TELESTATE
[color=yellow]60 03 05 XX XX XX XX
(BYTE) Teleport's State
(BYTE) Area ID (where the portal can take you)
(DWORD) Teleport's ID (your side)[/color]
Notifys you of a teleports state and where it takes you to.
This will cover all teleports, including "public" static teleports. (like in TP-home shrines)
The entity ID will be the teleports asigned ID, and should already be asigned from S>C 0x51.
State's:
0x00 = Unused Town Area
0x03 = Unused Area
0x05 = Used Town Area
0x07 = Used Area

[size=6]0x63[/size], Lengh=21, D2GS_TELESTATE
[color=yellow]63 XX XX XX XX 02 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00
(DWORD) Object/Waypoint's ID
(WORD) 0x0102
(BYTE[14]) Waypoint avaliblity flag(s)[/color]
Notifys you of your avalible waypoints, in responce to an interaction with a waypoint object.
Each bit in flag state's the avaliblity of the given waypoint, in waypoint order.
So for example;
BIT[1]=Rogue Encampment
BIT[2]=Cold Plains
BIT[3]=Stony Fields
BIT[4]=Dark Wood
BIT[5]=Black Marsh
BIT[6]=Outer Cloister
BIT[7]=Jail Level 1
BIT[8]=Inner Cloister
BIT[9]=CataCombs Level 2
..And so on, etc etc..

[size=6]0x65[/size], Lengh=7, D2GS_KILLCOUNT
[color=yellow]65 XX XX XX XX 00 00
(DWORD) Entity's ID
(WORD) Kill Count[/color]
Notifys you of your own, and other players kill count on joining the game.
You will continue to get one of these everytime your self or another player kills somthing with on your range of view.

[size=6]0x67[/size], Lengh=16, D2GS_NPCMOVE
[color=Yellow]67 XX XX XX XX 01 87 11 0A 12 01 00 0D 46 00 05
(DWORD) NPC/Entity's ID
(BYTE) Movment Type (0x01=walk, 0x14=knockback, 0x17=run)
(WORD) Moving To X
(WORD) Moving To Y
(WORD) 0x01
(DWORD) Flag[/color]
Notifys you that a NPC (entity 1) is moving to a new location.

[size=6]0x68[/size], Lengh=21, D2GS_NPCTOTARGET
[color=yellow]68 1B AE FF CD 18 3B 12 02 12 00 3E 32 6B 2E 01 00 0D 46 00 05
(DWORD) NPC/Entity's ID
(BYTE) Movment Type (0x00 = walk, 0x18=run, etc)
(WORD) Location X
(WORD) Location Y
(BYTE) Entity's Type (Target)
(DWORD) Entity's ID (Target)
(WORD) 0x01
(DWORD) Flag[/color]
Notifys you that a NPC (entity 1) is moving towards a target.

[size=6]0x69[/size], Lengh=12, D2GS_NPCSTATEASIGN
[color=Yellow]69 XX XX XX XX 06 3E 14 71 12 5C 03
(DWORD) NPC/Entity's ID
(BYTE) NPC's State/Effect
(WORD) Location X
(WORD) Location Y
(BYTE) Life%
(BYTE) Unknown - (might be Area ID)[/color]
Notifys you that a computer is alive/dieing/dead.

[size=6]0x6B[/size], Lengh=16, D2GS_NPCACTION
[color=Yellow]6B XX XX XX XX 0C 00 00 00 00 00 00 53 11 03 12
(DWORD) NPC/Entity's ID
(BYTE) Action Type
(DWORD) 0x00
(DWORD) 0x00
(WORD) X
(WORD) Y[/color]
Notifys you that a NPC has done an action at a location.
This will normaly be things like an NPC doing an anti idle of some kind, as well as when a summon'ed NPC is raised etc.
A few action type's;
Warriv: 0x0C = has a strech
Charsi: 0x0C = Cast/Hit a wepon

[size=6]0x6C[/size], Lengh=16, D2GS_NPCATTACK
[color=yellow]6C XX XX XX XX 10 00 3E 32 6B 2E 00 4A 12 13 12
(DWORD) NPC/Entity's ID
(WORD) Skill Code/Attack method (Varys per NPC)
(DWORD) Entity's ID (being attacked)
(BYTE) Entity's Type (being attacked)
(WORD) X
(WORD) Y[/color]
Notifys you that a NPC (entity 1) is attacking a target.

[size=6]0x6D[/size], Lengh=10, D2GS_NPCSTOP
[color=Yellow]6D XX XX XX XX B1 11 02 12 80
(DWORD) NPC/Entity's ID
(WORD) Location X
(WORD) Location Y
(BYTE) Life%[/color]
Notifys you that a NPC has got to and stoped at its destination.

[size=6]0x75[/size], Lengh=13, D2GS_ABOUTPLAYER
[color=Yellow]75 XX XX XX XX FF FF 02 00 00 00 00 00 
(DWORD) Player/Entity's ID
(WORD) Party Number (0xFFFF = none)
(WORD) Character level
(WORD) Relationship Flag (To This Player)
(WORD) Player Is In Your Party (0=false, 1=true)[/color]
Notifys you of player updates, such as level up.

[size=6]0x76[/size], Lengh=6, D2GS_OVERHEADCLEAR
[color=yellow]76 00 XX XX XX XX
(BYTE) Entity's Type
(DWORD) Entity's ID[/color]
Notifys you that a player/com/object is no longer displaying an overhead chat event.

[size=6]0x77[/size], Lengh=2, D2GS_TRADE
[color=Yellow]77 01
(BYTE) Request ID[/color]
Request ID's:
0x01 = A Player Wants To Trade
0x05 = A Player Has Press'd their 'Accept' button
0x06 = No Accept Buttons Can Be Clicked
0x09 = You Dont Have Room To Accept The Items
0x0C = A Player Cancels Trade
0x0D = You Have Accepted/Recved some items
0x0E = The accept Button Has Been Disabled
0x0F = The accept Button Has Been Re-enabled

[size=6]0x78[/size], Lengh=21, D2GS_WHOTRADE
[color=yellow]78 (Char Name) 00 AB 38 71 44
(BYTE[16]) Character Name (Of the player you are trading with)
(DWORD) Player/Entity's ID (Of the player you are trading with)[/color]
Notifys you that your now in trade mode with another player.

[size=6]0x79[/size], Lengh=6, D2GS_GOLDTRADE
[color=yellow]79 00 00 00 00 00
(BYTE) Verifyed (0x00=false, 0x01=true)
(DWORD) Trading Gold[/color]
Notify's you how much gold the other player has put in the trade window, for trade.

[size=6]0x7A[/size], Lengh=13, D2GS_SUMMONLOG
[color=Yellow]7A 01 04 6B 01 19 AD 0C 20 XX XX XX XX
(BYTE) Action (0x00=Remove, 0x01=Add)
(BYTE) Skill number (in skill tree)
(WORD) Summoned/Entity's Unique Code/Class
(DWORD) Player ID (The summoned relates to)
(DWORD) Summoned ID[/color]
Notifys you that a player has summoned/unsummoned a helper.
This does NOT include mercs, and when removing, expect the same packet to be sent 3 times in a row.
You will also be expected to keep track of summon's for players who are anywhere in the game.

[size=6]0x7F[/size], Lengh=10, D2GS_PARTYUPDATE
[color=Yellow]7F 01 1E 00 A8 B1 FE 60 02 00
(BYTE) Entity's Type
(WORD) Life %
(DWORD) Entity's ID
(WORD) Area ID[/color]
Notifys you that a party number, merc or summoned helper's info has changed.
For players this will normaly cover changeing areas, or life% changes.
For mercs/summons this will normaly only cover life% changes.

[size=6]0x81[/size], Lengh=20, D2GS_MERCOWNER
[color=yellow]81 07 52 01 XX XX XX XX $$ $$ $$ $$ 57 85 E5 B1 FB 03 00 00
(BYTE) Unknown - 0x07
(BYTE) Unknown - 0x52
(BYTE) Entity Type?
(DWORD) Player/Entity's ID
(DWORD) Merc/Entity's ID
(DWORD) Unknown (Entity ID of some kind?)
(DWORD) Unknown[/color]
Notifys you that you own a merc and that said merc is alive.
You will recv this for your merc on joining the game and on hireing a merc to say that "its alive".
This will also notify you of joining player's merc's.

[size=6]0x82[/size], Lengh=29, D2GS_TELEOWNER
[color=yellow]82 E4 B7 10 30 (Char Name) 00 21 26 83 53 42 8C 06 A7
(DWORD) Player/Entity's ID (Who is the TP owner)
(BYTE[16]) Character Name
(DWORD) Teleport's ID Your Side
(DWORD) Teleport's ID Other Side[/color]
Notifys you that somone owns a teleport.
The owner ID will be for example, the player who it belongs to.
Your side will be refering to the entity ID found in 0x60 Teleport state.
Other side will be the ID of the teleport on the area where it takes you.
(Each teleport has a twin)

[size=6]0x89[/size], Lengh=2, D2GS_QUESTEVENT
[color=yellow]89 0D
(BYTE) Event ID[/color]
Notifys you that a quest has just been changed/under gone an event.

[size=6]0x8A[/size], Lengh=6, D2GS_ENTITYREQUESTCHAT
[color=Yellow]8A 01 XX XX XX XX
(BYTE) Entity's Type
(DWORD) Entity's ID[/color]
Notifys you that an entity (normaly always a NPC) would like to talk to you.
This will normaly be a NPC wanting to talk about a quest.

[size=6]0x8B[/size], Lengh=6, D2GS_PARTYINVITESTATUS
[color=Yellow]8B XX XX XX XX 02
(DWORD) Player/Entity's ID
(BYTE) Relatioin Status[/color]
Notifys you of a party status change.

[size=6]0x8C[/size], Lengh=11, D2GS_PLAYERRELATIONSHIP
[color=Yellow]8C 1B B1 2E 14 36 A2 5D 36 08 00
(DWORD) Player/Entity's 1 ID
(DWORD) Player/Entity's 2 ID
(WORD) Relationship Flag (Entity 1's Relationship With Entity 2)[/color]
Notifys you of relation changes between all ingame players.

[size=6]0x8D[/size], Lengh=7, D2GS_PARTYNUMBER
[color=Yellow]8D CB 20 0D A4 03 00
(DWORD) Player/Entity's ID
(WORD) Party Number (0xFFFF = none)[/color]
Notifys you of whos in whos party.
Party numbers should* range from 0 to 7.

[size=6]0x8E[/size], Lengh=10, D2GS_CORPSEASIGN
[color=yellow]8E 01 CD 82 5D 88 B3 30 17 6A
(BYTE) Event (0=Remove, 1=Add)
(DWORD) Player/Entity's ID
(DWORD) Corpse/Entity's ID[/color]
Notifys you that a player is the owner of a corpse.
This is because inview corses will look like a new player, so this packet is to asign them to it before hand.

[size=6]0x8F[/size], Lengh=33, D2GS_PONG
[color=Yellow](DWORD[8]) 0x00[/color]
This is a responce to sending a 0x6D ping.
Used to calculate the current latency between client and server.

[size=6]0x90[/size], Lengh=13, D2GS_PARTYPULSE
[color=Yellow]90 XX XX XX XX 7D 12 00 00 43 16 00 00
(DWORD) Player/Entity's ID
(DWORD) Mini Map Location X
(DWORD) Mini Map Location Y[/color]
Notifys you if inparty players mini map location.
This is sent for each player in your party every second, no matter where or what act they are in.

[size=6]0x94[/size], Lengh=6+n, D2GS_SKILLLOG
[color=yellow]94 08 XX XX XX XX 00 00 01 02 00 01 01 00 01 D9 00 01 DA 00 01 DB 00 01 DC 00 01 03 00 01
(BYTE) Number of skills in this packet (that your character has upgraded)
(DWORD) Player/Entity's ID
~ For Each Skill Upgraded ~
(WORD) Skill Code
(BYTE) Skill Level[/color]
Notifys you of you're current upgraded and avalible skills.

[size=6]0x95[/size], Lengh=13, D2GS_RESOURCES
[color=Yellow]95 09 87 60 C1 9B 00 00 00 00 00 00 00
(BITS[15]) Life
(BITS[15]) Mana
(BITS[15]) Stamina
(BITS[15]) If > 0 Then you're Characters X
(BITS[1]) Unknown
(BITS[15]) If > 0 Then you're Characters Y
(BITS[20] Unknown[/color]
Notifys you're of you're current life, mana, stamina and location.

[size=6]0x96[/size], Lengh=9, D2GS_WALKVERIFY
[color=Yellow]96 4A 00 A8 09 2D 0B 00 00
(BITS[15]) Stamina
(BITS[15]) Location X
(BITS[1]) Unknown
(BITS[15]) Location Y
(BITS[18]) Unknown[/color]
Notifys you that your moving/made it to a new location.
This should be handled as desynq detection, rather than location asignment.

[size=6]0x97[/size], Lengh=1, D2GS_WEPONSWITCH
[color=Yellow]97
Blank[/color]
Notifys you that you were successfull switching you're wepons around.

[size=6]0x9E[/size], Lengh=7, D2GS_MERCATTRIBUTEBYTE
[color=Yellow]9E 00 37 00 00 00 B6
(BYTE) Attribute Code
(DWORD) Merc/Entity's ID
(BYTE) Attribute Amount[/color]
Asign stats to a merc, such as; max HP, str, dex etc.

[size=6]0x9F[/size], Lengh=8, D2GS_MERCATTRIBUTEWORD
[color=Yellow]9F 1F 37 00 00 00 8F 04
(BYTE) Attribute Code
(DWORD) Merc/Entity's ID
(WORD) Attribute Amount[/color]
Asign stats to a merc.

[size=6]0xA0[/size], Lengh=10, D2GS_MERCATTRIBUTEDWORD
[color=Yellow]A0 0D 37 00 00 00 4C 89 D0 04
(BYTE) Attribute Code
(DWORD) Merc/Entity's ID
(DWORD) Attribute Amount[/color]
Asign stats to a merc.

[size=6]0xA1[/size], Lengh=7, D2GS_MERCATTRIADDBYTE
[color=Yellow]A1 0D A0 0E 74 36 02
(BYTE) Attribute Code
(DWORD) Merc/Entity's ID
(DWORD) Attribute Amount (To Add onto Existing Amount)[/color]
Add to merc's exsting stats.

[size=6]0xA2[/size], Lengh=8, D2GS_MERCATTRIADDWORD
[color=Yellow]A2 0D A0 0E 74 36 8E 02
(BYTE) Attribute Code
(DWORD) Merc/Entity's ID
(WORD) Attribute Amount (To Add onto Existing Amount)[/color]
Add to merc's exsting stats.

[size=6]0xA4[/size], Lengh=3, D2GS_BALLSPAWN
[color=Yellow]A4 69 00
(WORD) NPC Unique Code/Class (Being Spawned)[/color]
Notifys you that you have triggerd baal to laugh and start spawning the next set of NPC's.
The NPC code will specify which NPC's are being summoned next.

[size=6]0xA7[/size], Lengh=7, D2GS_AURAEFFECT
[color=yellow]A7 00 XX XX XX XX 79 
(BYTE) Player/Entity's Type
(DWORD) Player/Entity's ID
(BYTE) Effect/Aura Code[/color]
Notifys you an entity has been coverd by an effect, like frozen/posion etc.

[size=6]0xA8[/size], Lengh=7th Byte, D2GS_AURAADD
[color=Yellow]A8 00 EA F2 12 5D 0E B2 2D 64 B8 50 F0 1F
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Lengh Of this packet
(BYTE) Effect/Aura Code
(VOID) Reward stats/list.[/color]
Notifys you that a player/merc is now coverd by an aura.

[size=6]0xA9[/size], Lengh=7, D2GS_AURAREM
[color=yellow]A9 00 XX XX XX XX B4
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Effect/Aura Code[/color]
Notifys you that a entity is no longer coverd by an aura or its rewards/effect's.

[size=6]0xAA[/size], Lengh=7th Byte, D2GS_ENTITYINFOADD
[color=yellow]AA 01 70 94 22 49 0A 69 FE 01
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Lengh of this packet
(VOID) Reward stats/list.[/color]
Contains a string of data to be asigned to an entity.

[size=6]0xAB[/size], Lengh=7, D2GS_ENTITYHEAL
[color=yellow]AB 01 XX XX XX XX 75
(BYTE) Entity's Type
(DWORD) Entity's ID
(BYTE) Life%[/color]
Notifys you that another player/comp has gained some extra life.

[size=6]0xAC[/size], Lengh=13th Byte, D2GS_NPCASIGN
[color=yellow]AC XX XX XX XX 39 02 DA 17 1E 18 80 0E 01
(DWORD) NPC/Entity's ID
(WORD) NPC/Entity's Unique Code/Class
(WORD) X
(WORD) Y
(BYTE) Life%
(BYTE) Lengh of this packet
(VOID) Reward stats/list.[/color]
Notifys you that a NPC has come into you're range of view.

[size=6]0xAE[/size], Lengh=3+n, D2GS_WARDEN
[color=yellow]AE 02 00 4C EF
(WORD) Lengh Of Payload
(VOID) Payload[/color]
The Warden.

[size=6]0xAF[/size], Lengh=13th Byte, D2GS_COMPRESSION
[color=yellow]AF 01
(BYTE) D2GS Protocol Compressed (1=yes, 0=no)[/color]
Notifys you if the D2GS server/protocol is useing

[size=6]0xB0[/size], Lengh=1, D2GS_TIMEOUT
[color=Yellow]B0
Blank[/color]
Notifys you that you have been droped due to time out.
If you sent 0x69 exit game, you should recv this just before the D2GS closes the connection, when in a closed game.

[size=6]0xB4[/size], Lengh=5, D2GS_TIMEOUT
[color=Yellow]B4 06 00 00 00
(DWORD) Reassion[/color]
Notifys you that your attempt to join the game server was rejected.
This packet is a respoince to C >S 0x68 logon.
0x01 = Bad character version
0x02 = Bad character quest data
0x03 = Bad character WP data
0x04 = bad character stats data
0x05 = Bad character skill data
0x06 = Unable to join game
0x07 = Bad character inventory data
0x08 = Bad character bodies (corpses im guessing)
0x09 = Bad Header
0x0A = Bad character merc
0x0B = Bad intro data
0x0C = Bad item data
0x0D = Bad character dead body item
0x0E = Genertic Bad file
0x0F = Game is full
0x10 = Bad Game version
0x11 = Must kill baal in normal to enter a nightmare game
0x12 = Must kill baal in nightmare to enter a hell game
0x13 = A Softcore player cant join a hardcore game
0x14 = A Hardcore player cant join a softcore game
0x15 = A Dead hardcore player cant join or create games
0x16 = Unknown failur
0x17 = A Classic player cant enter a expantion game
0x18 = A Expantion player cant enter a classic game
0x19 = Failed to join the game
0x1A = Unable to enter game
June 3, 2005, 12:09 AM
LordNevar
Here's a refrence to alot of the packets for ingame in a decompressed state if anyone wants it.

http://rumkin.com/software/diabloii/packets.php
June 3, 2005, 12:53 AM
Ringo
Nice :)
I notice alot of your recv are question marked as well, we should beable to make sence out alota this.

[edit] is that your reserch?
June 3, 2005, 1:04 AM
Newby
Very nice job.
June 3, 2005, 1:26 AM
LordNevar
No it is not my research, although I have put quite an extensive packet refrence like that together. It's rough but it works for what I need it for. I do not remember how I got my hands on that link, but it also serves it's purpose and maybe someone who really needs it can put it to a good use, and maybe identify alot more of it, and if Arta has the time and ambition could be added to a sub section of bnetdocs when it's more intuned. :)
June 3, 2005, 2:04 AM
Ringo
Iv got some notes all over the place, so i will put some more up tomorow.
I think alot of my notes were more based on figgering packets lenghs out, but i will also read through my parser, cos i expect that is more up todate than the notes iv just been reading through.
That link should proove very resourcefull and i will read through it tomorow to check for any errors in my notes, thanks.
This should at least get the ball rolling anyway :)
June 3, 2005, 4:42 AM
QwertyMonster
Wow Ringo, very nice job! I understand all of that :)

Edit: I suggest this being stickied or something, as its pretty usual.
June 3, 2005, 9:36 AM
UserLoser.
Don't forget about D2GS private messages (or whispers).  In a game, type @playername message, it has a different formatted chat messages

I'd love to help you out and do this all *again*, but I don't even have a client which can even connect to Battle.net anymore.  Only thing I have is SphtBot, well, I'd have to write a plugin to log onto realms then get back into D2 games...
June 3, 2005, 11:46 AM
Ringo
Thanks, i have added both other messages to the chat event packet but i didnt know of that @command, is there anymore like that? :P

[quote]
I'd love to help you out and do this all *again*, but I don't even have a client which can even connect to Battle.net anymore.  Only thing I have is SphtBot, well, I'd have to write a plugin to log onto realms then get back into D2 games...
[/quote]
If u generaly would love to help and have a set of d2 cdkeys still, id be happy to do a reinstall on them and send you the whole D2 folder - with d2loader
i think 1.5GB over msn would take awhile but if ur up for that idea then its ok with me.

I checked through some notes just now, and most of them i just dumped in txt's with nothing wrote with them so i will need to get my bot out and recatch them to get there values :(

UserLoser, how many(ish) packet IDs were there in the last patch? im guessing 100's  :o

[edit]
added a few more, but im outa time, iv got to go out, i will try do a few more tomorow if i get time.
June 3, 2005, 9:05 PM
dRAgoN
Pretty sure the player id is marked as a byte with a value range of 0-7
June 4, 2005, 4:44 AM
Ringo
[quote author=l)ragon link=topic=11756.msg114813#msg114813 date=1117860266]
Pretty sure the player id is marked as a byte with a value range of 0-7
[/quote]

Hmm, this could have been one of the things that changed in the new patch, cos it seems everything is done via a 32bit value.

Players / town folks / gold / objects in general will have verying dwords for differnt games, and can change each time they go out of view.

Iv got a few things to do, but i got alot of packet dumps this morning, witch should be needed to sort alot more out, i will sort through abit of it later.
June 4, 2005, 12:21 PM
dRAgoN
Can check if the death packet is still the same as this.

[code];User Killed Example - l)ragon
;
;pid            vMonstersID    Act?    vv    UsersName    vvvvvvvvvvvvvvvvvvvvvvvvv   
;5A   06 04     00 00 00 00     01     44 72 61 67 6F 6E 73 53 6B 61 6E 6B 5F 49 49    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
'******************User Killed Example********************************'
'*'Z    DragonsSkank                                             '*'
'*'Fallen Den     MonID     Act?                                    '*'
'*'5A >06 04< >13 00 00 00< >01< 44 72 61 67 6F 6E 73 53 6B 61 6E 6B'*'
'*'2D  49 56   00 00 00 00   00  00 00 00 00 00 00 00 00 00 00 00 00'*'
'*'                                                                 '*'
'*'Z    DragonsSkank                                             '*'
'*'FallenShamen Den  MonID  Act?                                    '*'
'*'5A >06 04< >3A 00 00 00< >01< 44 72 61 67 6F 6E 73 53 6B 61 6E 6B'*'
'*'2D  49 56   00 00 00 00   00  00 00 00 00 00 00 00 00 00 00 00 00'*'
'*'                                                                 '*'
'*'Z    NixSorc                                                  '*'
'*'Tainted Cat 2   MonID    Act?                                    '*'
'*'5A >06 04< >0B 00 00 00< >01< 4E 69 78 53 6F 72 63 00 00 00 00 00'*'
'*'00  00 00   00 00 00 00   00  00 00 00 00 00 00 00 00 00 00 00 00'*'
'*'                                                                 '*'
'*************************************************  ******************' Extra dumps i had
;
;
[MonsterIDs]
MonID-0=Skeleton
MonID-1=Returned
MonID-2=Bone Warrior
MonID-3=Burning Dead
MonID-4=Horror
MonID-5=Zombie
MonID-6=Hungry Dead
MonID-7=Ghoul
MonID-8=Drowned Carcass
MonID-9=Plague Bearer
MonID-10=Afflicted
MonID-11=Tainted
MonID-12=Misshappen
MonID-13=Disfigured
MonID-14=Damned
MonID-15=Foul Crow
MonID-16=BloodHawk
MonID-17=Black Raptor
MonID-18=Cloud Stalker
MonID-19=Fallen
MonID-20=Carver
MonID-21=Devil Kin
MonID-22=DarkOne
MonID-23=Warped Fallen
MonID-24=Brute
MonID-25=Yeti
MonID-26=Crusher
MonID-27=Wailing Beast
MonID-28=Gargantuan Beast
MonID-29=Sand Raider
MonID-30=Marauder
MonID-31=Invader
MonID-32=Infidel
MonID-33=Assailant
MonID-34=
MonID-35=
MonID-36=
MonID-37=
MonID-38=Ghost
MonID-39=Wraith
MonID-40=Specter
MonID-41=Apparition
MonID-42=Dark Shape
MonID-43=Dark Hunter
MonID-44=Vile Hunter
MonID-45=Dark Stalker
MonID-46=Black Rogue
MonID-47=Flesh Hunter
MonID-48=Dune Beast
MonID-49=Rock Dweller
MonID-50=Jungle Hunter
MonID-51=Doom Ape
MonID-52=Temple Guard
MonID-53=Moon Clan
MonID-54=Night Clan
MonID-55=Blood Clan
MonID-56=Hell Clan
MonID-57=Death Clan
MonID-58=Fallen Shamen
MonID-59=Carver Shamen
MonID-60=Devilkin Shamen
MonID-61=Dark Shamen
MonID-62=Warped Shamen
MonID-63=Quill Rat
MonID-64=Spike Fiend
MonID-65=Thorn Beast
MonID-66=Razor Spike
MonID-67=Jungle Urchin
MonID-68=Sand Maggot
MonID-69=Rock Worm
MonID-70=Devourer
MonID-71=Giant Lamprey
MonID-72=World Killer
MonID-73=Tomb Viper
MonID-74=Claw Viper
MonID-75=Salamander
MonID-76=Pit Viper
MonID-77=Serpent Magus
MonID-78=Sand Leaper
MonID-79=Cave Leaper
MonID-80=Tomb Creeper
MonID-81=Tree Lurker
MonID-82=Razor Pit Demon
MonID-83=Huntress
MonID-84=Saber Cat
MonID-85=Night Tiger
MonID-86=Hell Cat
MonID-87=Itches
MonID-88=Black Locusts
MonID-89=Plague Bugs
MonID-90=Hell Swarm
MonID-91=Dung Soldier
MonID-92=Sand Warrior
MonID-93=Scarab
MonID-94=Steel Weevil
MonID-95=Albino Roach
MonID-96=Dried Corpse
MonID-97=Decayed
MonID-98=Embalmed
MonID-99=Preserved Dead
MonID-100=Cadaver
MonID-101=Hallow One
MonID-102=Guardian
MonID-103=Unraveler
MonID-104=Horadrim Ancient
MonID-105=Baal Subject Mummy
MonID-106=
MonID-107=
MonID-108=
MonID-109=
MonID-110=Carrion Bird
MonID-111=UndeadS cavenger
MonID-112=Hell Buzzard
MonID-113=Winged Nightmare
MonID-114=Sucker
MonID-115=Feeder
MonID-116=Blood Hook
MonID-117=Blood Wing
MonID-118=Gloam
MonID-119=Swamp Ghost
MonID-120=Burning Soul
MonID-121=Black Soul
MonID-122=Arach
MonID-123=Sand Fisher
MonID-124=Poison Spinner
MonID-125=Flame Spider
MonID-126=Spider Magus
MonID-127=Thorned Hulk
MonID-128=Bramble Hulk
MonID-129=Thrasher
MonID-130=Spike Fist
MonID-131=Ghoul Lord
MonID-132=Night Lord
MonID-133=Dark Lord
MonID-134=Blood Lord
MonID-135=Banished
MonID-136=Desert Wing
MonID-137=Fiend
MonID-138=Gloom Bat
MonID-139=Blood Diver
MonID-140=Dark Familiar
MonID-141=Rat Man
MonID-142=Fetish
MonID-143=Flayer
MonID-144=Soul Killer
MonID-145=Stygian Doll
MonID-146=Deckard Cain
MonID-147=Gheed
MonID-148=Akara
MonID-149=
MonID-150=Kashya
MonID-151=
MonID-152=
MonID-153=
MonID-154=Charsi
MonID-155=Warriv
MonID-156=Andarial
MonID-157=
MonID-158=
MonID-159=
MonID-160=Dark Ranger
MonID-161=Vile Archer
MonID-162=Dark Archer
MonID-163=Black Archer
MonID-164=Flesh Archer
MonID-165=Dark Spearwomen
MonID-166=Vile Lancer
MonID-167=Dark Lancer
MonID-168=Black Lancer
MonID-169=Flesh Lancer
MonID-170=Skeleton Archer
MonID-171=Returned Archer
MonID-172=Bone Archer
MonID-173=Burning Dead Archer
MonID-174=Horror Archer
MonID-175=Warriv
MonID-176=Atma
MonID-177=Drognan
MonID-178=Fara
MonID-179=
MonID-180=Sand Maggot Young
MonID-181=Rock Worm Young
MonID-182=Devourer Young
MonID-183=Giant Lamprey Young
MonID-184=World Killer Yound
MonID-185=
MonID-186=Blunderbore
MonID-187=Gorbelly
MonID-188=Mauler
MonID-189=Urdar
MonID-190=Sand Maggot Egg
MonID-191=Rock Worm Egg
MonID-192=Devourer Egg
MonID-193=Giant Lamprey Egg
MonID-194=World Killer Egg
MonID-195=
MonID-196=
MonID-197=
MonID-198=Greiz
MonID-199=Elzix
MonID-200=Geglash
MonID-201=Jerhyn
MonID-202=Lysander
MonID-203=
MonID-204=
MonID-205=
MonID-206=Foul Crow Nest
MonID-207=Blood Hawk Nest
MonID-208=Black Vulture Nest
MonID-209=Cloud Stalker Nest
MonID-210=Meshif
MonID-211=Duriel
MonID-212=
MonID-213=
MonID-214=
MonID-215=
MonID-216=
MonID-217=
MonID-218=
MonID-219=
MonID-220=
MonID-221=
MonID-222=
MonID-223=
MonID-224=
MonID-225=
MonID-226=
MonID-227=Maggot
MonID-228=Mummy Generator
MonID-229=Radament
MonID-230=
MonID-231=
MonID-232=
MonID-233=
MonID-234=Flying Scimitar
MonID-235=Zakarumite
MonID-236=Faithful
MonID-237=Zealot
MonID-238=Sexton
MonID-239=Cantor
MonID-240=Heirophant
MonID-241=Heirophant
MonID-242=Mephesto
MonID-243=Diablo
MonID-244=Deckard Cain
MonID-245=Deckard Cain
MonID-246=Deckard Cain
MonID-247=Swamp Dweller
MonID-248=Bog Creature
MonID-249=Slime Prince
MonID-250=Summoner
MonID-251=Tyrael
MonID-252=Asheara
MonID-253=Hratli
MonID-254=Alkor
MonID-255=Ormus
MonID-256=Izual
MonID-257=Halbu
MonID-258=Water Watcher Limb
MonID-259=River Stalker Limb
MonID-260=Stygain Watcher Limb
MonID-261=Water Watcher Head
MonID-262=River Stalker Head
MonID-263=Stygain Watcher Head
MonID-264=Meshif
MonID-265=Deckard Cain
MonID-266=Navi
MonID-267=Blood Raven
MonID-268=
MonID-269=
MonID-270=Rogue Scout
MonID-271=
MonID-272=
MonID-273=Gargoyle Trap
MonID-274=Returned Mage
MonID-275=Bone Mage
MonID-276=Burning Dead Mage
MonID-277=Horror Mage
MonID-278=Rat Man Shamen
MonID-279=Fetish Shamen
MonID-280=Flayer Shamen
MonID-281=Soul Killer Shamen
MonID-282=Stygian Doll Shamen
MonID-283=Larva
MonID-284=Sand Maggot Queen
MonID-285=Rock Worm Queen
MonID-286=Devourer Queen
MonID-287=Giant Lamprey Queen
MonID-288=World Killer Queen
MonID-289=Clay Golem
MonID-290=Blood Golem
MonID-291=Iron Golem
MonID-292=Fire Golem
MonID-293=
MonID-294=
MonID-295=Night Maraduer
MonID-296=
MonID-297=Natalya
MonID-298=Flesh Spawner
MonID-299=Stygian Hag
MonID-300=Grotesque
MonID-301=Flesh Beast
MonID-302=Stygian Dog
MonID-303=Grotesque Wyrm
MonID-304=Groper
MonID-305=Strangler
MonID-306=Storm Caster
MonID-307=Corpulent
MonID-308=Corpse Spitter
MonID-309=Maw Fiend
MonID-310=Doom Knight
MonID-311=Abyss Knight
MonID-312=Oblivion Knight
MonID-313=Quill Bear
MonID-314=Spike Giant
MonID-315=Thorn Brute
MonID-316=Razor Beast
MonID-317=Giant Urchin
MonID-318=
MonID-319=
MonID-320=
MonID-321=
MonID-322=
MonID-323=
MonID-324=
MonID-325=
MonID-326=A Trap
MonID-327=A Trap
MonID-328=A Trap
MonID-329=A Trap
MonID-330=A Trap
MonID-331=Kaelan
MonID-332=
MonID-333=
MonID-334=Sucker Nest
MonID-335=Feeder Nest
MonID-336=Blood Hook Nest
MonID-337=Blood Wing Nest
MonID-338=Guard
MonID-339=
MonID-340=
MonID-341=
MonID-342=
MonID-343=
MonID-344=
MonID-345=Council Member
MonID-346=Council Member
MonID-347=Council Member
MonID-348=Turret
MonID-349=Turret
MonID-350=Turret
MonID-351=Hydra
MonID-352=Hydra
MonID-353=Hydra
MonID-354=A Trap
MonID-355=
MonID-356=Dopplezon
MonID-357=Valkyrie
MonID-358=
MonID-359=Iron Wolf
MonID-360=Balrog
MonID-361=Pit Lord
MonID-362=Venom Lord
MonID-363=Necro Skeleton
MonID-364=Necro Mage
MonID-365=Griswold
MonID-366=Compelling Orb
MonID-367=Tyrael
MonID-368=Young Diablo
MonID-369=A Trap
MonID-370=
MonID-371=Lightning Spire
MonID-372=Fire Tower
MonID-373=Slinger
MonID-374=Spear Cat
MonID-375=Night Slinger
MonID-376=Hell Slinger
MonID-377=
MonID-378=
MonID-379=Returned Mage
MonID-380=Bone Mage
MonID-381=Baal Cold Mage
MonID-382=Horror Mage
MonID-383=Returned Mage
MonID-384=Bone Mage
MonID-385=Burning Dead Mage
MonID-386=Horror Mage
MonID-387=Returned Mage
MonID-388=Bone Mage
MonID-389=Burning Dead Mage
MonID-390=Horror Mage
MonID-391=Hell Bovine
MonID-392=
MonID-393=
MonID-394=Spear Cat
MonID-395=Night Slinger
MonID-396=Rat Man
MonID-397=Fetish
MonID-398=Flayer
MonID-399=Soul Killer
MonID-400=Stygian Doll
MonID-401=
MonID-402=The Smith
MonID-403=Traped Soul
MonID-404=Traped Soul
MonID-405=Jamella
MonID-406=Izual
MonID-407=Rat Man
MonID-408=Malachai
MonID-409=The Feature Creep
MonID-410=
MonID-411=Wake Of Destruction
MonID-412=Charged Bolt Sentry
MonID-413=Lightning Sentry
MonID-414=Blade Creeper
MonID-415=Invis Pet
MonID-416=Inferno Sentry
MonID-417=Death Sentry
MonID-418=Shadow Warrior
MonID-419=Shadow Master
MonID-420=Druid Hawk
MonID-421=Druid Spirit Wolf
MonID-422=Druid Fenris
MonID-423=Spirit Of Barbs
MonID-424=Heart Of Wolverine
MonID-425=Oak Sage
MonID-426=Druid Plague Poppy
MonID-427=Druid Cycle Of Life
MonID-428=Vine Creature
MonID-429=Druid Bear
MonID-430=Eagle
MonID-431=Wolf
MonID-432=Bear
MonID-433=Barricaded Door
MonID-434=Barricaded Door
MonID-435=Prison Door
MonID-436=Barricaded Door
MonID-437=Rot Walker
MonID-438=Reanimate Horde
MonID-439=Prowling Dead
MonID-440=Unholy Corpse
MonID-441=Defiled Warrior
MonID-442=Siege Beast
MonID-443=Crush Biest
MonID-444=Blood Bringer
MonID-445=Gore Bearer
MonID-446=Deamon Steed
MonID-447=Snow Yeti 1
MonID-448=Snow Yeti 2
MonID-449=Snow Yeti 3
MonID-450=Snow Yeti 4
MonID-451=Wolf Rider 1
MonID-452=Wolf Rider 2
MonID-453=Wolf Rider 3
MonID-454=Minionexp
MonID-455=Slayerexp
MonID-456=Ice Boar
MonID-457=Fire Boar
MonID-458=Hell Spawn
MonID-459=Ice Spawn
MonID-460=Greater Hell Spawn
MonID-461=Greater Ice Spawn
MonID-462=Fanatic Minion
MonID-463=Berserk Slayer
MonID-464=Consumed Fire Boar
MonID-465=Consumed Ice Boar
MonID-466=Frenzied Hell Spawn
MonID-467=Frenzied Ice Spawn
MonID-468=Insane Hell Spawn
MonID-469=Insane Ice Spawn
MonID-470=Succubusexp
MonID-471=Vile Temptress
MonID-472=Stygian Harlot
MonID-473=Hell Temptress
MonID-474=Blood Temptress
MonID-475=Dominus
MonID-476=Vile Witch
MonID-477=Stygian Fury
MonID-478=Blood Witch
MonID-479=Hell Witch
MonID-480=Over Seer
MonID-481=Lasher
MonID-482=Over Lord
MonID-483=Blood Boss
MonID-484=Hell Whip
MonID-485=Minion Spawner
MonID-486=Minion Slayer Spawner
MonID-487=Minion Ice/Fire Boar Spawner
MonID-488=Minion Ice/Fire Boar Spawner
MonID-489=Minion Ice/Hell Spawn Spawner
MonID-490=Minion Ice/Fire Boar Spawner
MonID-491=Minion Ice/Fire Boar Spawner
MonID-492=Minion Ice/Hell Spawn Spawner
MonID-493=Imp 1
MonID-494=Imp 2
MonID-495=Imp 3
MonID-496=Imp 4
MonID-497=Imp 5
MonID-498=Catapults
MonID-499=Catapulte
MonID-500=Catapult Seige
MonID-501=Catapult W
MonID-502=Frozen Horror 1
MonID-503=Frozen Horror 2
MonID-504=Frozen Horror 3
MonID-505=Frozen Horror 4
MonID-506=Frozen Horror 5
MonID-507=Blood Lord 1
MonID-508=Blood Lord 2
MonID-509=Blood Lord 3
MonID-510=Blood Lord 4
MonID-511=Blood Lord 5
MonID-512=Larzuk
MonID-513=Drehya
MonID-514=Malah
MonID-515=Nihlathak
MonID-516=Qual-kehk
MonID-517=Catapult Spotter S
MonID-518=Catapult Spotter E
MonID-519=Catapult Spotter Siege
MonID-520=Catapult Spotter W
MonID-521=Deckard Cain
MonID-522=Tyrael
MonID-523=Barbarian Fighter
MonID-524=Barbarian Fighter
MonID-525=Barricade Wall Right
MonID-526=Barricade Wall Left
MonID-527=Nihlathak
MonID-528=Drehya
MonID-529=Evil Hut
MonID-530=Death Mauler 1
MonID-531=Death Mauler 2
MonID-532=Death Mauler 3
MonID-533=Death Mauler 4
MonID-534=Death Mauler 5
MonID-535=POW
MonID-536=Barbarian Fighter
MonID-537=Barbarian Fighter
MonID-538=Ancient Statue 1
MonID-539=Ancient Statue 2
MonID-540=Ancient Statue 3
MonID-541=Ancient Barbarian 1
MonID-542=Ancient Barbarian 2
MonID-543=Ancient Barbarian 3
MonID-544=Baal Throne
MonID-545=Baal Crab
MonID-546=Baal Taunt
MonID-547=Putrid Defiler
MonID-548=Putrid Defiler
MonID-549=Putrid Defiler
MonID-550=Putrid Defiler
MonID-551=Putrid Defiler
MonID-552=Pain Worm
MonID-553=Pain Worm
MonID-554=Pain Worm
MonID-555=Pain Worm
MonID-556=Pain Worm
MonID-557=Bunny
MonID-558=Council Member
MonID-559=Venom Lord
MonID-560=Baal Crab To Stairs
MonID-561=Hireling
MonID-562=Hireling
MonID-563=Baal Tentacle
MonID-564=Baal Tentacle
MonID-565=Baal Tentacle
MonID-566=Baal Tentacle
MonID-567=Baal Tentacle
MonID-568=Injured Barbarian
MonID-569=Injured Barbarian
MonID-570=Injured Barbarian
MonID-571=Baal Crab Clone
MonID-572=Baals Minion
MonID-573=Baals Minion
MonID-574=Baals Minion
MonID-575=Worldstone Effect[/code]
Edit: These are the 1.08 or 1.09 monsters by id, youll need to consult the db files for 1.10.
June 6, 2005, 2:43 AM
Ringo
now thats what im talking about, THANK YOU!
it tolk me hours just to obtain the World Map ID's  :D

In regards to the top packet the char recving the packets, was that the char that got slained or was it a observer? :)

I will defernetly be doing some follow/packet logging out side town tomorow thanks!

[edit] np thanks alot !


[code]
At the time of death:
MID = 56 AC 13 E0
PID = 1F 99 35 17
X   = 4C 12
Y   = 09 12
Char name = gWf
slained by = fallen

unknown 0x5A party packet recv
  5A 06 04 13 00 00 00 01 67 77 66 00 00 00 00 00        Z.......gWf.....
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00        ................
  00 00 00 00 00 00 00 00 0D 00 1F 99 35 17 08 4A        ............5..J
  12 0B 12 03 00 9C 00 18 10 66 19 27 58 10 20 A0        .........f.'X. .
  00 65 8C 49 C2        .e.I.
  ~~~~ UNKNOWN ~~~~ 
  8E 01 1F 99 35 17 8F AC 9A 9B 9D 08 1E 05 32 8B        ....5.........2.
  39 81 00 1F 99 35 17 30 00 82 08 65 84 08 32 37        9....5.0...e..27
  47 06 82 80 80 81 E1 3F 9D 08 20 07 99 A5 9C 40        G......?.. ....@
  00 1F 99 35 17 30 00 82 08 65 A4 0A 22 56 37 06        ...5.0...e...V7.
  82 80 00 01 86 04 FF 01 47 00 00 1F 99 35 17 00        ........G....5..
  00 00 00 48 00 00 1F 99 35 17 00 00 00 00 0D 00        ...H....5.......
  1F 99 35 17 09 4A 12 0B 12 03 00 59 8F AC 9A 9B        ..5..J.....Y....
  03 67 77 66 00 00 00 00 00 00 00 00 00 00 00 00        .gWf............
  00 4A 12 0B 12 75 8F AC 9A 9B FF FF 00 00 00 00        .J...u..........
  00 00 20 8F AC 9A 9B 43 00 00 00 00 20 8F AC 9A        .. ....C.... ...
  9B 44 00 00 00 00 20 8F AC 9A 9B 0C 00 00 00 00        .D.... .........
  20 8F AC 9A 9B 00 00 00 00 00 20 8F AC 9A 9B 02         ......... .....
  00 00 00 00 74 01 1F 99 35 17 8F AC 9A 9B AA 00        ....t...5.......
  8F AC 9A 9B 0D 07 D2 B2 F2 FF 3F 0D 00 8F AC 9A        ..........?.....
  9B 09 4A 12 0B 12 00 00 76 00 8F AC 9A 9B 0D 00        ..J.....v.......
  8F AC 9A 9B        ....
[/code]
hmm i dont think they have changed :)
Il check some other monster types tomorow tho, thanks


[code]
MID        = 56 AC 13 E0
PID        = 1F 99 35 17
PID X      = 4A 12
PID Y      = 0B 12
MID X      = 4C 12
MID Y      = 09 12
Char name  = gWf
slained by = fallen (lvl 1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5A 06 04 13 00 00 00 01 67 77 66 00 00 00 00 00        Z.......gWf.....
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00        ................
  00 00 00 00 00 00 00 00                                ........
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  0D 00 1F 99 35 17 08 4A 12 0B 12 03 00                 ....5..J.....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  9C 00 18 10 66 19 27 58 10 20 A0 00 65 8C 49 C2        ....f.'X. ..e.I.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Player gets slained
5A
06 04 <- relation to a player being slained
13 00 00 00 <- monster type
01 <- one persion was slained by the monster
(NS) <- char name of the persion slained
(0x00 x 28) <- veryable nulls

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The player stops moving
0D
00 <- player related
1F 99 35 17 <- The PlayerID
08 <- Facing direction of the char
4A 12 <- X
0B 12 <- Y
03 00 <- unknown

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Slained player drops gold
9C 00 18 10 66 19 27 58 10 20 A0 00 65 8C 49 C2 (got cut short)



MID        = 56 AC 13 E0
PID        = ## ## ## ##
PID X      = << >>
PID Y      = ^^ vv
MID X      = 4C 12
MID Y      = 09 12
Char name  = gWf
slained by = fallen (lvl 1)

  8E 01 ## ## ## ## 8F AC 9A 9B 9D 08 1E 05 32 8B        ....5.........2.
  39 81 00 ## ## ## ## 30 00 82 08 65 84 08 32 37        9....5.0...e..27
  47 06 82 80 80 81 E1 3F 9D 08 20 07 99 A5 9C 40        G......?.. ....@
  00 ## ## ## ## 30 00 82 08 65 A4 0A 22 56 37 06        ...5.0...e...V7.
  82 80 00 01 86 04 FF 01 47 00 00 ## ## ## ## 00        ........G....5..
  00 00 00 48 00 00 ## ## ## ## 00 00 00 00 0D 00        ...H....5.......
  ## ## ## ## 09 << >> ^^ vv 03 00 59 8F AC 9A 9B        ..5..J.....Y....
  03 67 77 66 00 00 00 00 00 00 00 00 00 00 00 00        .gWf............
  00 << >> ^^ vv 75 8F AC 9A 9B FF FF 00 00 00 00        .J...u..........
  00 00 20 8F AC 9A 9B 43 00 00 00 00 20 8F AC 9A        .. ....C.... ...
  9B 44 00 00 00 00 20 8F AC 9A 9B 0C 00 00 00 00        .D.... .........
  20 8F AC 9A 9B 00 00 00 00 00 20 8F AC 9A 9B 02         ......... .....
  00 00 00 00 74 01 ## ## ## ## 8F AC 9A 9B AA 00        ....t...5.......
  8F AC 9A 9B 0D 07 D2 B2 F2 FF 3F 0D 00 8F AC 9A        ..........?.....
  9B 09 << >> ^^ vv 00 00 76 00 8F AC 9A 9B 0D 00        ..J.....v.......
  8F AC 9A 9B                                            ....

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
MID        = 56 AC 13 E0
PID        = ## ## ## ##
PID X      = << >>
PID Y      = ^^ vv
MID X      = 4C 12
MID Y      = 09 12
Char name  = gWf
slained by = fallen (lvl 1)

8E 01 ## ## ## ## 8F AC 9A 9B <- asign player ID to corpse ID

9D 08 1E 05 32 8B 39 81 00 ## ## ## ## 30 00 82 08 65 84 08 32
37 47 06 82 80 80 81 E1 3F <- slained player is no longer wareing this item

9D 08 20 07 99 A5 9C 40 00 ## ## ## ## 30 00 82 08 65 A4 0A 22
56 37 06 82 80 00 01 86 04 FF 01 <- slained player is no longer wareing this item

47 00 00 ## ## ## ## 00 00 00 00 <- next coming messages relate to this Player ID

48 00 00 ## ## ## ## 00 00 00 00 <- next coming messages relate to this Player ID

0D 00 ## ## ## ## 09 << >> ^^ vv 03 00 <- slained player has stoped

59 8F AC 9A 9B 03 (NS) 00 00 .... 00 00 << >> ^^ vv <- notification asign corpse to location (mini map related)

75 8F AC 9A 9B FF FF 00 00 00 00 00 00 <- corpse char level is a dummy.

20 8F AC 9A 9B 43 00 00 00 00 <- setting Corpses statpoints to zero

20 8F AC 9A 9B 44 00 00 00 00 <-

20 8F AC 9A 9B 0C 00 00 00 00 <-

20 8F AC 9A 9B 00 00 00 00 00 <- strengh (of the corpse)

20 8F AC 9A 9B 02 00 00 00 00 <- Dextority (of the corpse)

74 01 ## ## ## ## 8F AC 9A 9B <- Visibility toggle related?

AA 00 8F AC 9A 9B 0D 07 D2 B2 F2 FF 3F <- mask/draw corpse related?

0D 00 8F AC 9A 9B 09 << >> ^^ vv 00 00 <- Corpse stops

76 00 8F AC 9A 9B <- finilize corpse's existance?

0D 00 8F AC 9A 9B <- ment to be 0x0D stop moving (decompression cut short)
[/code]
June 6, 2005, 3:01 AM
dRAgoN
[quote author=Ringo link=topic=11756.msg115009#msg115009 date=1118026876]
now thats what im talking about, THANK YOU!
it tolk me hours just to obtain the World Map ID's  :D

In regards to the top packet the char recving the packets, was that the char that got slained or was it a observer? :)

I will defernetly be doing some follow/packet logging out side town tomorow thanks!

[edit] np thanks alot !
[/quote]
dosent matter where your at if somone dies you will recieve the packet.
never did much besides leave the bot in town and watch others get them selves killed.
June 6, 2005, 3:06 AM
Ringo
[size=8]C > S[/size]

[size=6]0x68[/size]
Send Logon Infomation
[color=yellow]
68 D3 B0 B5 2C D9 03 04 0B 00 00 00 50 CC 5D ED B6 19 A5 91 00 72 74 74 74 68 65 61 68 65 61 68 65 61 68 72 00
(DWORD) D2GS Hash
(WORD) D2GS Token
(BYTE) Your Char's Type
(DWORD) Version Byte (0x0B)
(DWORD) Unknown - 0xED5DCC50
(DWORD) Unknown - 0x91A519B6
(BYTE) Unknown - 0x00
(STRAND[16]) Character Name
[/color]
This is the main packet for the D2GS logon where you need to send your char infomation to the game server.
This packet must be 37 bytes long, so if your char name is not 15 letters in lengh, you will need to add the correct number of bytes after your Char name.
Your char name should be inbedded to the start of the following hex strand:
[code]
00000000B5D6779A81B36F4B00000000
[/code]
The strand must be 16 bytes long and contain your character name with a null terminator.
The server will not answer this packet if it is not 37 bytes long, doesnt contain the D2GS hash or D2GS token or doesnt contain your char name.
[size=4]Char Type's:[/size]
0x00 = Amazon
0x01 = Sorceress
0x02 = Necromancer
0x03 = Paladin
0x04 = Barbarian
0x05 = Druid
0x06 = Assassin



[size=6]0x6D[/size]
Ping Packet (keep alive)
[color=Yellow]
(DWORD) Tickcount
(DWORD) *Unknown
(DWORD) Unused - 0x00
[/color]
Should be sent every 5 to 7 seconds to stop from dropping from the game.
The *Unknown should be a null value on joining the game server, and after that, a non-static value is used.
Averying DWORD between 0x30 and 0x50 seems to be ok for a temp solution.



[size=6]0x4F[/size]
Cancel Or Accept a trade / Move gold / Close objects
[color=Yellow]
(DWORD) Request ID
(WORD) Number Of Gold <- only relates to moving gold around
[/color]
[size=4]Request ID's[/size]
0x02 = Cancel Trade Request/Close Trade Screen
0x03 = Accept Trade Request
0x04 = Press The Accept Button
0x07 = Unclick The Accept Button <- send when placing/putting down items also
0x08 = Refresh (See below about refreshing why in trade)
0x12 = Close Stash
0x13 = Move Gold From Stash To Inventory
0x14 = Move Gold From Inventory To Stash
0x17 = Close Horadric Cube
[size=4]Refreshing[/size]
It is important to send a 0x08 request of this packet when ever you do any thing in trade.
This would generaly cover things like:
After you have sent a 0x19 packet to pick up an object to the mouse curser
After you have sent a 0x18 packet to place the object onto the trade screen
After you have accepted/closed a trade and trade request's
After you have manualy unclicked the accept button
etc etc



[size=6]0x14[/size]
Send OverHead Chat
[color=Yellow]
14 00 00[68 65 68 65 68 65 68 65 5D 23 00]00 00
(WORD) Unknown - 0x00
(NULLSTRING) Overhead Chat Message
(NULLSTRING) Unused (Blank - 0x00)
(NULLSTRING) Unused (Blank - 0x00)
[/color]
Sent to display a over head message from your char.
(This Command is aka !Message)



[size=6]0x15[/size]
Multiple Formats:
Format 1:
Send Normal Chat:
[color=Yellow]
15 01 00[68 65 68 65 65 5D 23 00]00 00
(WORD) Unknown - 0x01
(NULLSTRING) Chat Message
(NULLSTRING) Unused (Blank - 0x00)
(NULLSTRING) Unused (Blank - 0x00)
[/color]
Sent to chat to other players.
(Will recv compressed chat message back, veryifying your chat)

Format 2:
@Wisper Chat:
[color=Yellow]
15 02 00[74 65 73 74 79 00][62 6F 67 65 6E 5F 4C 65 78 69 00]00
(WORD) Unknown - 0x02
(NULLSTRING) @ Wispering Message
(NULLSTRING) Char Name (You are useing the @wisper command to wisper)
(NULLSTRING) Unused (Blank - 0x00)
[/color]
Sent to wisper other ingame players.
(This Command is aka @CharName Message)



[size=6]0x3F[/size]
Send Char Speech
[color=Yellow]
3F 19 00
(WORD) Speech ID
[/color]
Sent to 'talk' to other players with the speech commands.
[size=4]Player Speech ID's:[/size]
All Players:
19 00 = help / help me
1A 00 = follow me / come on!
1B 00 = this is urs / this is for you
1C 00 = thnks / thank you
1D 00 = ahh oops / forgive me
1E 00 = bye / Good Bye
1F 00 = Die / time to die
20 00 = Run / Run away



[size=6]0x03[/size]
Run around
[color=Yellow]
03 65 15 61 12
(WORD) X location
(WORD) Y location
[/color]
Sent to run around with your char.



[size=6]0x01[/size]
Walk around
[color=Yellow]
01 69 15 69 12
(WORD) X location
(WORD) Y location
[/color]
Sent to walk around with your char.



[size=6]0x5E[/size]
Party Request's
[color=Yellow]
5E 08 3E 82 EB 2B
(BYTE) Action type
(DWORD) Player ID (Of The Other Persion)
[/color]
[size=4]Action Type's[/size]
0x06 = Invite A Player To Party With You
0x07 = Cancel A Party Invite To Another Player
0x08 = Accept A Party Invite From Another Player



[size=6]0x5D[/size]
Set Player Relations
[color=Yellow]
5D 01 01 DC A0 9F D7
(BYTE) Request ID
(BYTE) Action Types
(DWORD) Player ID (Of The Other Persion)
[/color]
[size=4]Request ID 0x01[/size]
Action Type's
0x00 = Remove This Players Rights To Loot Your Corpse
0x01 = Allow This Player To Loot Your Corpse

[size=4]Request ID 0x02[/size]
Action Type's
0x00 = Allow This Player To Hear You
0x01 = Stop This Player From Hearing You

[size=4]Request ID 0x03[/size]
Action Type's
0x00 = Unsquelch This Player
0x01 = Squelch This Player
(You must also send 0x0E /squelch there username to BNCS)

[size=4]Request ID 0x04[/size]
Action Type's
0x00 = Remove Hostile With This Player
0x01 = Go Hostile With This Player



[size=6]0x40[/size]
Request Quests Log
[color=Yellow]
40
(BLANK)
[/color]
Send this to the server to request your current quest logs for the act your currently on.



[size=6]0x04[/size]
Run To A Object
[color=Yellow]
04 02 00 00 00 E2 84 2F 64
(DWORD) Object Type
(DWORD) Object ID (asigned 32 bit value)
[/color]
Sent to 'run' to an object.
[size=4]Object Type's[/size]
0x00 = Run to another player
0x01 = Run to a Town Folk or Monster
0x02 = Run to a Object like stash, Waypoint or teleport.
0x04 = Run to a item
0x05 = Run to a Doorway



[size=6]0x02[/size]
Walk To A Object
[color=Yellow]
02 02 00 00 00 E2 84 2F 64 
(DWORD) Object Type
(DWORD) Object ID (asigned 32 bit value)
[/color]
Sent to 'walk' to an object.
[size=4]Object Type's[/size]
0x00 = Walk to another player
0x01 = Walk to a Town Folk or Monster
0x02 = Walk to a Object like stash, Waypoint or teleport.
0x04 = Walk to a item
0x05 = Walk to a Doorway



[size=6]0x13[/size]
Interact With an Object
[color=Yellow]
13 02 00 00 00 E2 84 2F 64 
(DWORD) Object Type
(DWORD) Object ID
[/color]
Sent to interact with an object.
[size=4]Object Type's[/size]
0x00 = Request trade Interaction with another player
0x01 = Interact with a Town Folk
0x02 = Interact with Object's like stash, teleports, shrines, chest's and waypoints etc
0x04 = Interact with an Item <- relates to some items/quest items i think
0x05 = Walk Through a Doorway



[size=6]0x69[/size]
Exit Game
[color=Yellow]
69
(BLANK)
[/color]
When exiting a D2GS game, you will need to send this packet to notify the server that your leaving.
The server will then shut the connection on the client, and the client should then start logging back onto the realm.



[size=6]0x6B[/size]
Enter Game
[color=Yellow]
6B
(BLANK)
[/color]
This is the packet used in the D2GS logon, it is to register you to the game.
Untill you send this packet you will not recv any game infomation.



[size=6]0x06[/size]
Left Skill On Object
[color=Yellow]
06 01 00 00 00 0D 99 C1 21
(DWORD) Object Type
(DWORD) Object ID
[/color]
When sending this packet to attack somthing, your char will use its current selected left skill.
This will cover both melee attacking skills and missle casting skills.
[size=4]Object Type's[/size]
0x00 = Left Attack another player
0x01 = Left Attack a Monster
0x02 = Left Attack An Object (tp, wp, stash, shrine etc)



[size=6]0x09[/size] - Not used in 1.11?
Left Skill Repeat On Object
[color=Yellow]
09 01 00 00 00 F4 3B 32 8E
(DWORD) Object Type
(DWORD) Object ID
[/color]
Keep sending this packet after you have sent a 0x06 packet to continue useing your selected left skill to cast/attack on a selected object.
[size=4]Object Type's[/size]
0x00 = Left Attack another player
0x01 = Left Attack a Monster
0x02 = Left Attack An Object (tp, wp, stash, shrines etc)



[size=6]0x0D[/size]
Right Skill On Object
[color=Yellow]
0D 01 00 00 00 6C B0 40 96
(DWORD) Object Type
(DWORD) Object ID
[/color]
When sending this packet to attack somthing, your char will use its current selected right skill.
This will cover both melee attacking skills and missle casting skills.
[size=4]Object Type's[/size]
0x00 = Right Attack another player
0x01 = Right Attack a Monster
0x02 = Right Attack An Object (tp, wp, stash, shrines etc)


[size=6]0x10[/size] - Not used in 1.11?
Right Skill Repeat On Object
[color=Yellow]
10 01 00 00 00 60 27 FA 9D
(DWORD) Object Type
(DWORD) Object ID
[/color]
Keep sending this packet after you have sent a 0x0D packet to continue useing your selected right skill to cast/attack on a selected object.
[size=4]Object Type's[/size]
0x00 = Right Attack another player
0x01 = Right Attack a Monster
0x02 = Right Attack An Object (tp, wp, stash, shrines etc)



[size=6]0x0C[/size]
Right Skill On Location
[color=Yellow]
0C 61 15 E4 16
(WORD) Use At Location X
(WORD) Use At Location Y
[/color]
Sent to use the right side skill to cast/attck on a desired location.



[size=6]0x0F[/size] - Not used in 1.11?
Right Skill Repeat On Location
[color=Yellow]
0F BD 13 9E 10
(WORD) Repeat Right Skill Location X
(WORD) Repeat Right Skill Location Y
[/color]
Keep sending this packet after you have sent a 0x0C packet to continue useing your selected right skill to cast/attack at the selected location.



[size=6]0x05[/size]
Left Skill On Location
[color=Yellow]
05 58 15 EC 16
(WORD) Use At Location X
(WORD) Use At Location Y
[/color]
Sent to use the left side skill to cast/attck on a desired location.



[size=6]0x08[/size] - Not used in 1.11?
Left Skill Repeat On Location
[color=Yellow]
08 99 13 99 10
(WORD) Repeat Left Skill Location X
(WORD) Repeat Left Skill Location Y
[/color]
Keep sending this packet after you have sent a 0x05 packet to continue useing your selected left skill to cast/attack at the selected location.



[size=6]0x3C[/size]
Select SKill
[color=Yellow]
3C 28 00 00 00 FF FF FF FF
3C 27 00 00 80 FF FF FF FF
(WORD) Skill Type
(WORD) Skill Side (0x0000=Right, 0x8000=Left)
(DWORD) Unknown - 0xFFFFFFFF
[/color]
Sent to select a skill for your char to use.
(Make sure your char has the skill your trying to select)



[size=6]0x16[/size]
Pick Up A Ground Object
[color=yellow]
16 04 00 00 00 74 33 53 AB 00 00 00 00
(DWORD) Request ID (0x04)
(DWORD) Object's ID
(DWORD) Object's Direction
[/color]
Send this packet to pick up an object from the ground.
[size=4]Directions:[/size]
0x00 = Automaticly Put Object In Inventory
0x01 = Put Object In Mouse Curser



[size=6]0x17[/size]
Drop Object From Mouse Curser To The Ground
[color=yellow]
17 74 33 53 AB
(DWORD) Object's ID
[/color]
Send this packet to drop a seclected item (in the mouse curser) onto the ground.



[size=6]0x18[/size]
Place Object In A Location
[color=yellow]
18 74 33 53 AB 00 00 00 00 00 00 00 00 00 00 00 00
(DWORD) Object's ID
(DWORD) Square X
(DWORD) Square Y
(DWORD) Object's Direction
[/color]
Send this packet to remove an item from your mouse curser and place it a desired location.
[size=4]Directions:[/size]
0x00 = Place Object In Inventory
0x02 = Place Object In Horadric Cube/On Trade Screen
0x04 = Place Object In Stash

[size=4]Inventory And Trade Screen Dimention's:[/size]
[code]
  0   1   2   3   4   5   6   7   8   9
0

1

2

3
[/code]

[size=4]Horadric Cube Dimention's:[/size]
[code]
  0   1   2
0

1

2

3
[/code]

[size=4]Stash Dimention's:[/size]
[code]
  0   1   2   3   4   5
0

1

2

3

4

5

6

7
[/code]



[size=6]0x19[/size]
Pick Up A Object From Storage
[color=yellow]
19 74 33 53 AB
(DWORD) Object's ID
[/color]
Send this packet to pick an object up from a selected location to your mouse curser.
This packet generaly covers most things when it comes to picking an object up for placment in a location.



[size=6]0x1F[/size]
Replace A Storage Object
[color=yellow]
1F 56 8C F1 E1 C5 0C 1F 62 08 00 00 00 01 00 00 00
(DWORD) New Object's ID
(DWORD) Old Object's ID
(DWORD) Square X
(DWORD) Square Y
[/color]
Send this packet to replace an object (old object) in your inventory/stash or horadric cube with the object in your curser. (new object)
The result will be the old object being in the mouse curser.
(Do not send this packet to replace objects on a trade screen, as a trade screen does not support object replacment)



[size=6]0x20[/size]
Interact With An Inventory Object
[color=yellow]
20 87 1F 75 28 17 16 00 00 96 15 00 00
(DWORD) Object's ID
(DWORD) Your Location X
(DWORD) Your Location Y
[/color]
Send this packet to interact with an item in your inventory.
X and Y must be your X and Y locations for the area your standing on.
This packet will cover things like drinking pots from your inventory, opening your horadric cube, opening a teleport where your standing and activating a identify scroll in the mouse curser.



[size=6]0x2A[/size]
Place An Object In A Horadric Cube
[color=yellow]
2A 3D 1D 5E EF C8 A1 3D 70
(DWORD) Object's ID
(DWORD) Horadric Cube's ID
[/color]
Send this packet to remove an item from your mouse curser and drop it into a Horadric cube. (Horadric cube must be closed)



[size=6]0x50[/size]
Drop Gold
[color=yellow]
50 80 96 25 4E 01 00 00 00
(DWORD) Your Chars Player ID
(DWORD) Gold To Drop
[/color]
Send this packet to the server to remove gold from your inventory and drop it onto the ground.
You may want to note that trying to drop gold that you dont have will cause a very long realm down.



[size=6]0x59[/size]
Register Town Folk Interaction
[color=yellow]
59 01 00 00 00 69 2D E2 73 BB 14 00 00 9D 18 00 00
((DWORD) Request ID (0x01)
(DWORD) Town Folk's ID
(DWORD) Your Location X
(DWORD) Your Location Y
[/color]
Send this packet before sending a 0x13 interaction packet when interacting with a town folk.



[size=6]0x30[/size]
Cancel Twon Folk Interaction
[color=yellow]
30 01 00 00 00 E1 05 11 14
(DWORD) Request ID (0x01)
(DWORD) Town Folk's ID
[/color]
Send this packet to stop/cancel/close all interaction's with a town folk.



[size=6]0x38[/size]
Town Folk Interaction Selection
[color=yellow]
38 01 00 00 00 6E AF 39 3A 00 00 00 00
(DWORD) Request ID
(DWORD) Town Folk's ID
(DWORD) Unknown(0)
[/color]
Send this packet to accept a desired type of interaction with the town folk.
Make sure the town folk supports/offers the selected type of trading before you send this packet, and make sure you have sent all the other interaction packets before hand.
[size=4]Request ID's:[/size]
0x00 = Imbune An Item (Related to A1 Q5) - (item must be in curser)
0x01 = Accept Trading or Trade/Repair With The Town Folk
0x02 = Accept Gambleing With The Town Folk



[size=6]0x2F[/size]
Finalize Town Folk Interaction Request
[color=yellow]
2F 01 00 00 00 6E AF 39 3A
(DWORD) Request ID (0x01)
(DWORD) Town Folk's ID
[/color]
Send this packet after you have sent your other town folk request packets.
Im not sure what this packet is for, but on most town folk, D2 send's it after sending the other interaction packets.



[size=6]0x26[/size]
Drink A Potion From Your Belt
[color=yellow]
26 99 9B 1C 5E 00 00 00 00 00 00 00 00
(DWORD) Potion's ID
(DWORD) Unknown(0)
(DWORD) Unknown(0)
[/color]
Send this packet to drink a potion from your belt.



[size=6]0x24[/size]
Move Belt Potion To Mouse Curser
[color=yellow]
24 AA A2 4B 2F
(DWORD) Potion's ID
[/color]
Send this packet to Lift a pot from your belt to your mouse curser.



[size=6]0x23[/size]
Place Potion In Belt
[color=yellow]
23 AA A2 4B 2F 0A 00 00 00
(DWORD) Potion's ID
(DWORD) Belt Slot Number
[/color]
Send this packet to remove a potion from your mouse curser and place it into your belt.
(Make sure your belt has enough slots for your slot number and that a potion isnt already in its place)
[size=4]Belt Demention's[/size]
[code]
12   13   14   15

8    9    10   11

4    5    6    7

0    1    2    3
[/code]



[size=6]0x63[/size]
Move Potion From Inventory To Belt
[color=yellow]
63 AA A2 4B 2F
(DWORD) Potion's ID
[/color]
Send this packet to automaticly move a potion from your inventory to your belt.



[size=6]0x25[/size]
Replace Belt Potion
[color=yellow]
25 AA A2 4B 2F A8 20 90 BA
(DWORD) Old Potion's ID (to the curser)
(DWORD) New Potion's ID (from the curser)
[/color]
Send this packet to replace a potion in your belt with the potion in your mouse curser.
(The old potion will be the new object in the mouse curser after you send this packet)



[size=6]0x1A[/size]
Put On A Body Item
[color=yellow]
1A 9B 85 88 97 04 00 00 00
(DWORD) Object's ID
(WORD) Body Location
(WORD) Unknown(0x00)
[/color]
Send this packet to place an item from your curser onto your body.
(Make sure the body part you specify has no item on it and supports the style of item your trying to place on it)
[size=4]Body Location's[/size]
0x01 = Hat
0x02 = Amulet
0x03 = Body Armor
0x04 = Left Side Wepon
0x05 = Right Side Wepon
0x06 = Left Side Ring
0x07 = Right Side Ring
0x08 = Belt
0x09 = Boots
0x0A = Golves



[size=6]0x1D[/size]
Replace A Body Item
[color=yellow]
1D 5F BF 80 1E 03 00 00 00
(DWORD) Object's ID (of the item your now putting onto your body)
(WORD) Body Location
(WORD) Unknown(0x00)
[/color]
Send this packet to replace an item on your body with an item in your curser.
(The result will be the old item from your body being in the curser)
[size=4]Body Location's[/size]
0x01 = Hat
0x02 = Amulet
0x03 = Body Armor
0x04 = Left Side Wepon
0x05 = Right Side Wepon
0x06 = Left Side Ring
0x07 = Right Side Ring
0x08 = Belt
0x09 = Boots
0x0A = Golves



[size=6]0x1C[/size]
Remove A Body Item
[color=yellow]
1C 03 00
(WORD) Body Location
[/color]
Send this packet to remove a body item and place it in the mouse curser.
[size=4]Body Location's[/size]
0x01 = Hat
0x02 = Amulet
0x03 = Body Armor
0x04 = Left Side Wepon
0x05 = Right Side Wepon
0x06 = Left Side Ring
0x07 = Right Side Ring
0x08 = Belt
0x09 = Boots
0x0A = Golves



[size=6]0x27[/size]
Identify An Object
[color=yellow]
27 5F BF 80 1E E3 AB 1F B0
(DWORD) Object's ID (to use the unidentify scroll on)
(DWORD) Identify Scroll's ID
[/color]
Send this packet to use a unidentify scroll on a item.
If the item is already unidentifyed then the scroll will be canceled and not used.



[size=6]0x49[/size]
WayPoint Interaction
[color=Yellow]
49 4B 87 58 BC 00 00 00 00
(DWORD) WayPoint's ID
(DWORD) Area ID
[/color]
Send this packet to go to a new area via the way point.
Make sure your char has the waypoint your trying to go to.
[code]
0x00 = Close Waypoint Menu
[/code]
~~~ Act 1 Waypoints ~~~
[code]
0x01 = Rogue Encampment
0x03 = Cold Plains
0x04 = Stony Fields
0x05 = Dark Wood
0x06 = Black Marsh
0x1B = Outer Cloister
0x1D = Jail Level 1
0x20 = Inner Cloister
0x23 = CataCombs Level 2
[/code]

~~~ Act 2 Waypoints ~~~
[code]
0x28 = Lut Gholein
0x30 = Sewers Level 2
0x2A = Dry Hills
0x39 = Halls Of The Dead Level 2
0x2B = Far Oasis
0x2C = Lost City
0x34 = Palace Cellar Level 1
0x4A = Arcain Sanctuary
0x2E = Canyon Of The Magi
[/code]

~~~ Act 3 Waypoints ~~~
[code]
0x4B = Kurast Docks
0x4C = Spider Forest
0x4D = Great Marsh
0x4E = Flayer Jungle
0x4F = Lower Kurast
0x50 = Kurast Bazaar
0x51 = Upper Kurast
0x53 = Travincal
0x65 = Durance Of Hate Level 2
[/code]

~~~ Act 4 Waypoints ~~~
[code]
0x67 = The Pandeminoum Fortress
0x6A = City Of The Damned
0x6B = River Of Flame
[/code]

~~~ Act 5 Waypoints ~~~
[code]
0x6D = Harrogath
0x6F = Frigid Highlands
0x70 = Arreat Plateau
0x71 = Crystalline Passage
0x73 = Glacial Trail
0x7B = Halls Of Pain
0x75 = Frozen Tundra
0x76 = The Ancient's Way
0x81 = Worldstone Keep Level 2
[/code]



[size=6]0x4B[/size]
Bring Merc In The Waypoint/Teleport
[color=Yellow]
4B 01 00 00 00 36 A8 1A 00
(DWORD) Player Type (0x01)
(DWORD) Merc's ID
[/color]
Its important to send this packet when ever you change area's useing a waypoint or teleport, to bring your merc with you. (If you have a merc and/or he is alive and with you)
(This only counts for merc's and not summoned helper's)



[size=6]0xFF[/size]
Get D2GS Stats & Stuff
[color=Yellow]
FF 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(BYTE) 0x01
(BYTE[14]) Unknown
[/color]
Requests the stats of a closed D2GS.
All responces from the D2GS to this request, will be sent back uncompressed, so keep that in mind while sending this request after you have enterd agame, when you wunder why you're decompression stream brakes.
Altho, depending what data is sent in the request, may very the responce, the responce should generaly be (for the above format);
[code]
01 00 00 00 00 01 00 00 00 06 00 08 00 38 00 CA      .............8..
00 FF FF FF 7F FF FF FF 7F 00 C0 80 C5 00 20 47      .............. G
D6 87 13 00 00 BC 21 00 00 44 32 47 53 20 63 6F      ......!..D2GS co
6D 70 69 6C 65 64 20 61 74 20 31 34 3A 33 37 3A      mpiled at 14:37:
30 36 20 6F 6E 20 46 65 62 20 32 30 20 32 30 30      06 on Feb 20 200
37 20 52 45 4C 45 41 53 45 00 00 00 00 00 00 00      7 RELEASE.......
9C FC D5 06 0C 1A 99 6F 00 00 00 47 A8 B5 57 7C      .......o...G..W|
00 00 00 00 00 00 00 00 01 00 00 00 DB B3 57 7C      ..............W|
0C 21 00 00 00 00 00 00 00 00 00 00 79 23 96 6F      .!..........y#.o
0F 97 57 7C 64 24 96 6F E4 88 59 7C 00 00 00 00      ..W|d$.o..Y|....
00 00 00 00 10 27 00 00 E4 19 00 00 00 17 00 00      .....'..........
00 F4 01 00 00 1F 00 00 00 00 04 00 00 04 00 00      ................
00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00      ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      ................
00 9A 02 00 00 01 00 12 00 01 00 02 00 01 00 00      ................
00 00 00 00 00 00 00 07 00 05 00 01 00 01 00 04      ................
00 00 00 00 00 01 00 01 00 03 00 03 00 00 00 14      ................
00 00 00 09 00 00 00 16 00 00 00 00 00 00 00 00      ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00      ................
00 00 00 00 00                                        .....[/code]
The servers uptime is stored as a system time structure just after the 1st byte;
[code]
(BYTE) Unknown/0x01 normaly
(BYTE[16]) SYSTEMTIME structure (of this D2GS's current uptime)
etc.
[/code]
Besides the system time structure of the servers uptime and the compile info string, i've no idea what the other values are, nore had the time/interest needed to probe them :)
June 8, 2005, 6:38 PM
Ringo
D2 1.10 Stats Codes:
[size=1]
[color=yellow]
0   = STATS_STRENGTH
1   = STATS_ENERGY
2   = STATS_DEXTERITY
3   = STATS_VITALITY
4   = STATS_STATPTS
5   = STATS_NEWSKILLS
6   = STATS_HITPOINTS
7   = STATS_MAXHP
8   = STATS_MANA
9   = STATS_MAXMANA
10  = STATS_STAMINA
11  = STATS_MAXSTAMINA
12  = STATS_LEVEL
13  = STATS_EXPERIENCE
14  = STATS_GOLD
15  = STATS_GOLDBANK
16  = STATS_ITEM_ARMOR_PERCENT
17  = STATS_ITEM_MAXDAMAGE_PERCENT
18  = STATS_ITEM_MINDAMAGE_PERCENT
19  = STATS_TOHIT
20  = STATS_TOBLOCK
21  = STATS_MINDAMAGE
22  = STATS_MAXDAMAGE
23  = STATS_SECONDARY_MINDAMAGE
24  = STATS_SECONDARY_MAXDAMAGE
25  = STATS_DAMAGEPERCENT
26  = STATS_MANARECOVERY
27  = STATS_MANARECOVERYBONUS
28  = STATS_STAMINARECOVERYBONUS
29  = STATS_LASTEXP
30  = STATS_NEXTEXP
31  = STATS_ARMORCLASS
32  = STATS_ARMORCLASS_VS_MISSILE
33  = STATS_ARMORCLASS_VS_HTH
34  = STATS_NORMAL_DAMAGE_REDUCTION
35  = STATS_MAGIC_DAMAGE_REDUCTION
36  = STATS_DAMAGERESIST
37  = STATS_MAGICRESIST
38  = STATS_MAXMAGICRESIST
39  = STATS_FIRERESIST
40  = STATS_MAXFIRERESIST
41  = STATS_LIGHTRESIST
42  = STATS_MAXLIGHTRESIST
43  = STATS_COLDRESIST
44  = STATS_MAXCOLDRESIST
45  = STATS_POISONRESIST
46  = STATS_MAXPOISONRESIST
47  = STATS_DAMAGEAURA
48  = STATS_FIREMINDAM
49  = STATS_FIREMAXDAM
50  = STATS_LIGHTMINDAM
51  = STATS_LIGHTMAXDAM
52  = STATS_MAGICMINDAM
53  = STATS_MAGICMAXDAM
54  = STATS_COLDMINDAM
55  = STATS_COLDMAXDAM
56  = STATS_COLDLENGTH
57  = STATS_POISONMINDAM
58  = STATS_POISONMAXDAM
59  = STATS_POISONLENGTH
60  = STATS_LIFEDRAINMINDAM
61  = STATS_LIFEDRAINMAXDAM
62  = STATS_MANADRAINMINDAM
63  = STATS_MANADRAINMAXDAM
64  = STATS_STAMDRAINMINDAM
65  = STATS_STAMDRAINMAXDAM
66  = STATS_STUNLENGTH
67  = STATS_VELOCITYPERCENT
68  = STATS_ATTACKRATE
69  = STATS_OTHER_ANIMRATE
70  = STATS_QUANTITY
71  = STATS_VALUE
72  = STATS_DURABILITY
73  = STATS_MAXDURABILITY
74  = STATS_HPREGEN
75  = STATS_ITEM_MAXDURABILITY_PERCENT
76  = STATS_ITEM_MAXHP_PERCENT
77  = STATS_ITEM_MAXMANA_PERCENT
78  = STATS_ITEM_ATTACKERTAKESDAMAGE
79  = STATS_ITEM_GOLDBONUS
80  = STATS_ITEM_MAGICBONUS
81  = STATS_ITEM_KNOCKBACK
82  = STATS_ITEM_TIMEDURATION
83  = STATS_ITEM_ADDAMASKILLPOINTS
84  = STATS_ITEM_ADDPALSKILLPOINTS
85  = STATS_ITEM_ADDNECSKILLPOINTS
86  = STATS_ITEM_ADDSORSKILLPOINTS
87  = STATS_ITEM_ADDBARSKILLPOINTS
88  = STATS_ITEM_DOUBLEHERBDURATION
89  = STATS_ITEM_LIGHTRADIUS
90  = STATS_ITEM_LIGHTCOLOR
91  = STATS_ITEM_REQ_PERCENT
92  = STATS_ITEM_FASTATTACKRATE
93  = STATS_ITEM_FASTERATTACKRATE
94  = STATS_ITEM_FASTESTATTACKRATE
95  = STATS_ITEM_FASTMOVEVELOCITY
96  = STATS_ITEM_FASTERMOVEVELOCITY
97  = STATS_ITEM_FASTESTMOVEVELOCITY
98  = STATS_ITEM_FASTGETHITRATE
99  = STATS_ITEM_FASTERGETHITRATE
100 = STATS_ITEM_FASTESTGETHITRATE
101 = STATS_ITEM_FASTBLOCKRATE
102 = STATS_ITEM_FASTERBLOCKRATE
103 = STATS_ITEM_FASTESTBLOCKRATE
104 = STATS_ITEM_FASTCASTRATE
105 = STATS_ITEM_FASTERCASTRATE
106 = STATS_ITEM_FASTESTCASTRATE
107 = STATS_ITEM_SINGLESKILL1
108 = STATS_ITEM_SINGLESKILL2
109 = STATS_ITEM_SINGLESKILL3
110 = STATS_ITEM_POISONLENGTHRESIST
111 = STATS_ITEM_NORMALDAMAGE
112 = STATS_ITEM_HOWL
113 = STATS_ITEM_STUPIDITY
114 = STATS_ITEM_DAMAGETOMANA
115 = STATS_ITEM_IGNORETARGETAC
116 = STATS_ITEM_FRACTIONALTARGETAC
117 = STATS_ITEM_PREVENTHEAL
118 = STATS_ITEM_HALFFREEZEDURATION
119 = STATS_ITEM_TOHIT_PERCENT
120 = STATS_ITEM_DAMAGETARGETAC
121 = STATS_ITEM_DEMONDAMAGE_PERCENT
122 = STATS_ITEM_UNDEADDAMAGE_PERCENT
123 = STATS_ITEM_DEMON_TOHIT
124 = STATS_ITEM_UNDEAD_TOHIT
125 = STATS_ITEM_THROWABLE
126 = STATS_ITEM_FIRESKILL
127 = STATS_ITEM_ALLSKILLS
128 = STATS_ITEM_ATTACKERTAKESLIGHTDAMAGE
129 = STATS_IRONMAIDEN_LEVEL
130 = STATS_LIFETAP_LEVEL
131 = STATS_THORNS_LEVEL
132 = STATS_BONEARMOR
133 = STATS_BONEARMORMAX
134 = STATS_ITEM_FREEZE
135 = STATS_ITEM_OPENWOUNDS
136 = STATS_ITEM_CRUSHINGBLOW
137 = STATS_ITEM_KICKDAMAGE
138 = STATS_ITEM_MANAAFTERKILL
139 = STATS_ITEM_HEALAFTERDEMONKILL
140 = STATS_ITEM_EXTRABLOOD
141 = STATS_ITEM_DEADLYSTRIKE
142 = STATS_ITEM_ABSORBFIRE_PERCENT
143 = STATS_ITEM_ABSORBFIRE
144 = STATS_ITEM_ABSORBLIGHT_PERCENT
145 = STATS_ITEM_ABSORBLIGHT
146 = STATS_ITEM_ABSORBMAGIC_PERCENT
147 = STATS_ITEM_ABSORBMAGIC
148 = STATS_ITEM_ABSORBCOLD_PERCENT
149 = STATS_ITEM_ABSORBCOLD
150 = STATS_ITEM_SLOW
151 = STATS_ITEM_BLESSEDAIM
152 = STATS_ITEM_DEFIANCE
153 = STATS_ITEM_CANNOTBEFROZEN
154 = STATS_ITEM_STAMINADRAINPCT
155 = STATS_ITEM_REANIMATE
156 = STATS_ITEM_PIERCE
157 = STATS_ITEM_MAGICARROW
158 = STATS_ITEM_EXPLOSIVEARROW
159 = STATS_ITEM_THROW_MINDAMAGE
160 = STATS_ITEM_THROW_MAXDAMAGE
161 = STATS_SKILL_HANDOFATHENA
162 = STATS_SKILL_STAMINAPERCENT
163 = STATS_SKILL_PASSIVE_STAMINAPERCENT
164 = STATS_SKILL_CONCENTRATION
165 = STATS_SKILL_ENCHANT
166 = STATS_SKILL_PIERCE
167 = STATS_SKILL_CONVICTION
168 = STATS_SKILL_CHILLINGARMOR
169 = STATS_SKILL_FRENZY
170 = STATS_SKILL_DECREPIFY
171 = STATS_SKILL_ARMOR_PERCENT
172 = STATS_ALIGNMENT
173 = STATS_TARGET0
174 = STATS_TARGET1
175 = STATS_GOLDLOST
176 = STATS_CONVERSION_LEVEL
177 = STATS_CONVERSION_MAXHP
178 = STATS_UNIT_DOOVERLAY
[/color]
Expansion:
[color=yellow]
179 = STATS_ITEM_ADDDRUSKILLPOINTS
180 = STATS_ITEM_ADDASSSKILLPOINTS
181 = STATS_ITEM_ADDSKILL_SINGLE4
182 = STATS_ITEM_ADDSKILL_SINGLE5
183 = STATS_ITEM_ADDSKILL_SINGLE6
184 = STATS_ITEM_ADDSKILL_SINGLE7
185 = STATS_ITEM_ADDSKILL_SINGLE8
186 = STATS_ITEM_ADDSKILL_SINGLE9
187 = STATS_ITEM_ADDSKILL_SINGLE10
188 = STATS_ITEM_ADDSKILL_TAB1
189 = STATS_ITEM_ADDSKILL_TAB2
190 = STATS_ITEM_ADDSKILL_TAB3
191 = STATS_ITEM_ADDSKILL_TAB4
192 = STATS_ITEM_ADDSKILL_TAB5
193 = STATS_ITEM_ADDSKILL_TAB6
194 = STATS_ITEM_NUMSOCKETS
195 = STATS_ITEM_SKILLONATTACK1
196 = STATS_ITEM_SKILLONATTACK2
197 = STATS_ITEM_SKILLONATTACK3
198 = STATS_ITEM_SKILLONHIT1
199 = STATS_ITEM_SKILLONHIT2
200 = STATS_ITEM_SKILLONHIT3
201 = STATS_ITEM_SKILLONGETHIT1
202 = STATS_ITEM_SKILLONGETHIT2
203 = STATS_ITEM_SKILLONGETHIT3
204 = STATS_ITEM_CHARGED_SKILL0
205 = STATS_ITEM_CHARGED_SKILL1
206 = STATS_ITEM_CHARGED_SKILL2
207 = STATS_ITEM_CHARGED_SKILL3
208 = STATS_ITEM_CHARGED_SKILL4
209 = STATS_ITEM_CHARGED_SKILL5
210 = STATS_ITEM_CHARGED_SKILL6
211 = STATS_ITEM_CHARGED_SKILL7
212 = STATS_ITEM_CHARGED_SKILL8
213 = STATS_ITEM_CHARGED_SKILL9
214 = STATS_ITEM_ARMOR_PERLEVEL
215 = STATS_ITEM_ARMORPERCENT_PERLEVEL
216 = STATS_ITEM_HP_PERLEVEL
217 = STATS_ITEM_MANA_PERLEVEL
218 = STATS_ITEM_MAXDAMAGE_PERLEVEL
219 = STATS_ITEM_MAXDAMAGE_PERCENT_PERLEVEL
220 = STATS_ITEM_STRENGTH_PERLEVEL
221 = STATS_ITEM_DEXTERITY_PERLEVEL
222 = STATS_ITEM_ENERGY_PERLEVEL
223 = STATS_ITEM_VITALITY_PERLEVEL
224 = STATS_ITEM_TOHIT_PERLEVEL
225 = STATS_ITEM_TOHITPERCENT_PERLEVEL
226 = STATS_ITEM_COLD_DAMAGEMAX_PERLEVEL
227 = STATS_ITEM_FIRE_DAMAGEMAX_PERLEVEL
228 = STATS_ITEM_LTNG_DAMAGEMAX_PERLEVEL
229 = STATS_ITEM_POIS_DAMAGEMAX_PERLEVEL
230 = STATS_ITEM_RESIST_COLD_PERLEVEL
231 = STATS_ITEM_RESIST_FIRE_PERLEVEL
232 = STATS_ITEM_RESIST_LTNG_PERLEVEL
233 = STATS_ITEM_RESIST_POIS_PERLEVEL
234 = STATS_ITEM_ABSORB_COLD_PERLEVEL
235 = STATS_ITEM_ABSORB_FIRE_PERLEVEL
236 = STATS_ITEM_ABSORB_LTNG_PERLEVEL
237 = STATS_ITEM_ABSORB_POIS_PERLEVEL
238 = STATS_ITEM_THORNS_PERLEVEL
239 = STATS_ITEM_FIND_GOLD_PERLEVEL
240 = STATS_ITEM_FIND_MAGIC_PERLEVEL
241 = STATS_ITEM_REGENSTAMINA_PERLEVEL
242 = STATS_ITEM_STAMINA_PERLEVEL
243 = STATS_ITEM_DAMAGE_DEMON_PERLEVEL
244 = STATS_ITEM_DAMAGE_UNDEAD_PERLEVEL
245 = STATS_ITEM_TOHIT_DEMON_PERLEVEL
246 = STATS_ITEM_TOHIT_UNDEAD_PERLEVEL
247 = STATS_ITEM_CRUSHINGBLOW_PERLEVEL
248 = STATS_ITEM_OPENWOUNDS_PERLEVEL
249 = STATS_ITEM_KICK_DAMAGE_PERLEVEL
250 = STATS_ITEM_DEADLYSTRIKE_PERLEVEL
251 = STATS_ITEM_FIND_GEMS_PERLEVEL
252 = STATS_ITEM_REPLENISH_DURABILITY
253 = STATS_ITEM_REPLENISH_QUANTITY
254 = STATS_ITEM_EXTRA_STACK
255 = STATS_ITEM_FIND_ITEM
256 = STATS_ITEM_SLASH_DAMAGE
257 = STATS_ITEM_SLASH_DAMAGE_PERCENT
258 = STATS_ITEM_CRUSH_DAMAGE
259 = STATS_ITEM_CRUSH_DAMAGE_PERCENT
260 = STATS_ITEM_THRUST_DAMAGE
261 = STATS_ITEM_THRUST_DAMAGE_PERCENT
262 = STATS_ITEM_ABSORB_SLASH
263 = STATS_ITEM_ABSORB_CRUSH
264 = STATS_ITEM_ABSORB_THRUST
265 = STATS_ITEM_ABSORB_SLASH_PERCENT
266 = STATS_ITEM_ABSORB_CRUSH_PERCENT
267 = STATS_ITEM_ABSORB_THRUST_PERCENT
268 = STATS_ITEM_ARMOR_BYTIME
269 = STATS_ITEM_ARMORPERCENT_BYTIME
270 = STATS_ITEM_HP_BYTIME
271 = STATS_ITEM_MANA_BYTIME
272 = STATS_ITEM_MAXDAMAGE_BYTIME
273 = STATS_ITEM_MAXDAMAGE_PERCENT_BYTIME
274 = STATS_ITEM_STRENGTH_BYTIME
275 = STATS_ITEM_DEXTERITY_BYTIME
276 = STATS_ITEM_ENERGY_BYTIME
277 = STATS_ITEM_VITALITY_BYTIME
278 = STATS_ITEM_TOHIT_BYTIME
279 = STATS_ITEM_TOHITPERCENT_BYTIME
280 = STATS_ITEM_COLD_DAMAGEMAX_BYTIME
281 = STATS_ITEM_FIRE_DAMAGEMAX_BYTIME
282 = STATS_ITEM_LTNG_DAMAGEMAX_BYTIME
283 = STATS_ITEM_POIS_DAMAGEMAX_BYTIME
284 = STATS_ITEM_RESIST_COLD_BYTIME
285 = STATS_ITEM_RESIST_FIRE_BYTIME
286 = STATS_ITEM_RESIST_LTNG_BYTIME
287 = STATS_ITEM_RESIST_POIS_BYTIME
288 = STATS_ITEM_ABSORB_COLD_BYTIME
289 = STATS_ITEM_ABSORB_FIRE_BYTIME
290 = STATS_ITEM_ABSORB_LTNG_BYTIME
291 = STATS_ITEM_ABSORB_POIS_BYTIME
292 = STATS_ITEM_FIND_GOLD_BYTIME
293 = STATS_ITEM_FIND_MAGIC_BYTIME
294 = STATS_ITEM_REGENSTAMINA_BYTIME
295 = STATS_ITEM_STAMINA_BYTIME
296 = STATS_ITEM_DAMAGE_DEMON_BYTIME
297 = STATS_ITEM_DAMAGE_UNDEAD_BYTIME
298 = STATS_ITEM_TOHIT_DEMON_BYTIME
299 = STATS_ITEM_TOHIT_UNDEAD_BYTIME
300 = STATS_ITEM_CRUSHINGBLOW_BYTIME
301 = STATS_ITEM_OPENWOUNDS_BYTIME
302 = STATS_ITEM_KICK_DAMAGE_BYTIME
303 = STATS_ITEM_DEADLYSTRIKE_BYTIME
304 = STATS_ITEM_FIND_GEMS_BYTIME
305 = STATS_ITEM_PIERCE_COLD
306 = STATS_ITEM_PIERCE_FIRE
307 = STATS_ITEM_PIERCE_LTNG
308 = STATS_ITEM_PIERCE_POIS
309 = STATS_ITEM_DAMAGE_VS_MONSTER
310 = STATS_ITEM_DAMAGE_PERCENT_VS_MONSTER
311 = STATS_ITEM_TOHIT_VS_MONSTER
312 = STATS_ITEM_TOHIT_PERCENT_VS_MONSTER
313 = STATS_ITEM_AC_VS_MONSTER
314 = STATS_ITEM_AC_PERCENT_VS_MONSTER
315 = STATS_FIRELENGTH
316 = STATS_BURNINGMIN
317 = STATS_BURNINGMAX
318 = STATS_PROGRESSIVE_DAMAGE
319 = STATS_PROGRESSIVE_STEAL
320 = STATS_PROGRESSIVE_OTHER
321 = STATS_PROGRESSIVE_FIRE
322 = STATS_PROGRESSIVE_COLD
323 = STATS_PROGRESSIVE_LIGHTNING
324 = STATS_ITEM_EXTRA_CHARGES
323 = STATS_PROGRESSIVE_TOHIT
[/color][/size]
June 10, 2005, 6:35 PM
Ringo
D2 1.10 Level ID's/Map sizes
ID  = Level's ID
sX  = Size X
sY  = Size Y
osX = Off Set Size X
osY = Off Set Size Y

Note:
Each set of 4 means that the area in question can be differnt (4 possible sides) in witch the X and Y and offset X and Y will give you an idea of the total square size of the map/level in witch the area sits;

Example;
Town is always right sided (WP on the right)
Bloodmoor has a 4 side dementions (based on sides of the town area that takes you to it) and all of them can go in 2 possible directions.
etc etc

Act 1:
[code]
ID    sX    sY    osX   osY   Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1     56    40    -1    -1    Town
1     0     80    80    -1    Wilderness
2     0     80    80    1000  Wilderness
3     0     80    80    1000  Wilderness
4     0     80    80    -1    Wilderness
5     0     80    80    -1    Wilderness
6     0     80    80    -1    Wilderness
8     200   200   1500  1000  Cave 1
9     200   200   1500  1300  Cave 2
10    200   200   1500  1600  Cave 3
11    200   200   1500  1900  Cave 4
12    200   200   1500  2200  Cave 5
13    24    24    1500  2500  Cave 2 Treasure
14    24    24    1500  2624  Cave 3 Treasure
15    24    24    1500  2748  Cave 4 Treasure
16    24    24    1500  2872  Cave 5 Treasure
17    40    48    -1    -1    Graveyard
18    200   200   2000  1000  Crypt 1 A
19    200   200   2000  1300  Crypt 2 A
20    8     8     2000  1600  Tower 2
21    200   200   2500  1000  Crypt 3 A
22    200   200   2500  1300  Crypt 3 B
23    200   200   2500  1600  Crypt 3 C
24    200   200   2500  1900  Crypt 3 D
25    30    30    2500  2200  Crypt 3 E
26    64    18    3000  1000  Monastery
27    56    40    0     -40   Courtyard 1
28    200   200   -1    -1    Barracks
29    200   200   3500  1000  Jail 1
30    200   200   3500  1300  Jail 2
31    200   200   3500  1600  Jail 3
32    18    20    4000  1000  Courtyard 2
33    28    34    -4    -34   Cathedral
34    200   200   4500  1000  Catacombs 1
35    200   200   4500  1300  Catacombs 2
36    200   200   4500  1600  Catacombs 3
37    22    31    4500  1900  Catacombs 4
38    43    48    5000  1000  Tristram
39    80    80    5000  1148  Moo Moo Farm
[/code]

Act 2:
[code]
ID    sX    sY    osX   osY   Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40    56    56    1000  1000  Town
41    80    80    -1    -1    Desert 1
42    80    80    -1    -1    Desert 2
43    80    80    -1    -1    Desert 3
44    80    80    -1    -1    Desert 4
45    32    32    -1    -1    Desert 5
46    80    80    2500  1000  Valley of the Kings
47    200   200   1500  1000  Sewer 1 A
48    200   200   1500  1300  Sewer 1 B
49    200   200   1500  1600  Sewer 1 C
50    16    19    2000  1000  Harem
51    100   100   2000  1119  Corrupt Harem 1
52    100   100   2000  1319  Basement 1
53    100   100   2000  1519  Basement 2
54    100   100   2000  1719  Basement 3
55    200   200   3000  1000  Tomb 1 A
56    200   200   3000  1300  Tomb 2 A
57    200   200   3000  1600  Tomb 2 B
58    200   200   3000  1900  Tomb 3 A
59    200   200   3000  2200  Tomb 1 Treasure
60    200   200   3000  2500  Tomb 2 Treasure
61    200   200   3000  2800  Tomb 3 Treasure
62    200   200   3500  1000  Lair 1 A
63    200   200   3500  1300  Lair 1 B
64    200   200   3500  1600  Lair 1 Treasure
65    200   200   4000  1000  Sewer 2 A
66    200   200   4500  1000  Tomb Tal 1
67    200   200   4500  1300  Tomb Tal 2
68    200   200   4500  1600  Tomb Tal 3
69    200   200   4500  1900  Tomb Tal 4
70    200   200   4500  2200  Tomb Tal 5
71    200   200   4500  2500  Tomb Tal 6
72    200   200   4500  2800  Tomb Tal 7
73    32    47    4500  3100  Duriel's Lair
74    200   200   5000  1000  Arcane
[/code]

Act 3:
[code]
ID    sX    sY    osX   osY   Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75    64    48    1000  1000  Town
76    64    192   -1    -1    Jungle 1
77    64    192   -1    -1    Jungle 2
78    64    192   -1    -1    Jungle 3
79    80    64    -1    -1    Kurast 1
80    80    64    -1    -1    Kurast 2
81    80    64    -1    -1    Kurast 3
82    48    16    -1    -1    Kurast 4
83    64    64    -1    -1    Travincal
84    200   200   1500  1000  Spider 1
85    200   200   1500  1300  Spider 2
86    200   200   2000  1000  Dungeon 1 A
87    200   200   2000  1300  Dungeon 1 B
88    200   200   2000  1600  Dungeon 2 A
89    200   200   2000  1900  Dungeon 2 B
90    40    40    2000  2200  Dungeon 1 Treasure
91    40    40    2000  2340  Dungeon 2 Treasure
92    200   200   2500  1000  Sewer 1
93    18    22    2500  1300  Sewer 2
94    24    24    3000  1000  Temple 1
95    24    24    3000  1124  Temple 2
96    24    24    3000  1248  Temple 3
97    24    24    3000  1372  Temple 4
98    24    24    3000  1496  Temple 5
99    24    24    3000  1620  Temple 6
100   200   200   3500  1000  Mephisto 1
101   200   200   3500  1300  Mephisto 2
102   41    29    3500  1600  Mephisto 3
[/code]

Act 4:
[code]
ID    sX    sY    osX   osY   Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103   32    24    1000  1000  Town
104   80    64    -1    -1    Mesa 1
105   64    80    -1    -1    Mesa 2
106   80    64    -1    -1    Mesa 3
107   200   200   -1    -1    Lava 1
108   120   120   1500  1000  Diablo 1
[/code]

Act 5:
[code]
ID    sX    sY    osX   osY   Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109   40    40    1000  1000  Town
110   240   48    760   1000  Siege 1
111   -1    -1    -1    -1    Barricade 1
112   -1    -1    -1    -1    Barricade 2
113   200   200   2000  1000  Ice Cave 1
114   64    64    2000  1300  Ice Cave 1A
115   200   200   2000  1464  Ice Cave 2
116   32    32    2000  1764  Ice Cave 2A
117   128   80    2000  1896  Barricade Snow
118   200   200   2000  2076  Ice Cave 3
119   32    32    2000  2376  Ice Cave 3A
120   20    28    2000  2508  Mountain Top
121   22    27    2000  2636  Temple Entrance
122   80    80    2000  2763  Temple 1
123   80    80    2000  2943  Temple 2
124   84    84    2500  1000  Temple Boss
125   200   200   2500  1184  Hell 1
126   200   200   2500  1484  Hell 2
127   200   200   2500  1784  Hell 3
128   200   200   2500  2084  Baal Temple 1
129   200   200   2500  2384  Baal Temple 2
130   200   200   2500  2684  Baal Temple 3
131   40    52    3000  1000  Throne Room
132   55    55    3000  1152  World Stone
[/code]
June 15, 2005, 2:23 AM
Explicit[nK]
I applaud the effort. :)
June 19, 2005, 8:38 PM
Infamous
This was posted in Blizzhackers a while back by Paul[Le]

Client > Server

[code]
Number Size(bytes) Effect: Usage:
01 5 Walk 01 [WORD x] [WORD y]
02 9 Walk to entity 02 [DWORD entity kind] [DWORD id]
03 5 Run 03 [WORD x] [WORD y]
04 9 Run to entity 04 [DWORD entity kind] [DWORD id]
05 5 Shift Left Click Skill 05 [WORD x] [WORD y]
06 9 Left Skill on unit 06 [DWORD entity kind] [DWORD id]
07 9 Shift left skill on unit 07 [DWORD entity kind] [DWORD id]
08 5 Shift Left skill (hold) 08 [WORD x] [WORD y]
09 9 Left Skill on unit (hold) 09 [DWORD entity kind] [DWORD id]
0a 9 Shift left skill unit (hold) 0a [DWORD entity kind] [DWORD id]
0b 1 <unknown> 0b
0c 5 Right skill 0c [WORD x] [WORD y]
0d 9 Right skill unit 0d [DWORD entity kind] [DWORD id]
0e 9 Shift right skill unit 0e [DWORD entity kind] [DWORD id]
0f 5 Right skill (hold) 0f [WORD x] [WORD y]
10 9 Right skill unit (hold) 10 [DWORD entity kind] [DWORD id]
11 9 Shift Right skill unit (hold) 11 [DWORD entity kind] [DWORD id]
12 1 <unknown> 12
13 9 Interact (click) entity 13 [DWORD entity kind] [DWORD id]
14 [Varies] Overhead Chat 14 00 00 [*char message] 00 00 00
15 [Varies] Chat 15 01 00 [*char message] 00 00 00
16 13 Pick item (ground) 16 04 00 00 00 [DWORD id] [DWORD inventory(0) or cursor (1)]
17 5 Drop item (ground) 17 [DWORD id]
18 17 Insert item in buffer 18 [DWORD id] [DWORD xpos] [DWORD ypos] [DWORD buffer]
19 5 Remove item from buffer 19 [DWORD id]
1a 9 Equip item 1a [DWORD id] [WORD position] 00 00
1b 9 Swap 2 handed item 1b [DWORD id] [WORD position] 00 00
1c 3 Remove body item 1c [WORD position]
1d 9 Swap cursor item with body 1d [DWORD id] [WORD position] 00 00
1e 9 <Unknown> 1e [DWORD unknown][DWORD unknown]
1f 17 Swap cursor/buffer items 1f [DWORD cursor item id] [DWORD buffer item id] [DWORD xpos] [DWORD ypos]
20 13 Activate buffer item 20 [DWORD id] [WORD x] 00 00 [WORD y] 00 00
21 9 Stack items 21 [DWORD item to stack id] [DWORD item where it stacks id]
22 5 Unstack items 22 [DWORD unknown]
23 9 Item to belt 23 [DWORD id] [DWORD position]
24 5 Item from belt 24 [DWORD id]
25 9 Switch belt item 25 [DWORD cursor item][DWORD belt item]
26 13 Use belt item 26 [DWORD id] [DWORD option] 00 00 00 00
27 9 Identify item 27 [DWORD item id] [DWORD scroll id]
28 9 Socket item 28 [DWORD item to socket id] [DWORD socketable item id]
29 9 Scroll to book 29 [DWORD scroll id] [DWORD book id]
2a 9 Item to cube (indirect) 2a [DWORD item id] [DWORD cube id]
2b -- Unused -------------
2c -- Unused (Logged as hack) -------------
2d -- Unused (Logged as hack) -------------
2e -- Unknown -------------
2f 9 Initiate entity chat 2f [DWORD entity kind] [DWORD id]
30 9 Terminate entity chat 30 [DWORD entity kind] [DWORD id]
31 9 Quest message 31 [DWORD id] [DWORD message]
32 17 Buy item from NPC buffer 32 [DWORD entity id] [DWORD item id] [DWORD tab] [DWORD cost]
33 17 Sell item to NPC buffer 33 [DWORD entity id] [DWORD item id] [DWORD tab] [DWORD cost]
34 5 Identify items with NPC 34 [DWORD entity id]
35 17 Repair 35 [DWORD entity id] [DWORD item id] [DWORD tab] [DWORD cost?]
36 9 Hire merc 36 [DWORD entity id] [DWORD merc id]
37 5 Identify (from gamble?) 37 [DWORD item id]
38 13 Entity action 38 [DWORD action] [DWORD entity id] [DWORD complement]
39 5 <Unknown> 39 [DWORD unknown]
3a 3 Add stat point 3a [WORD stat]
3b 3 Add skill point 3b [WORD skill]
3c 9 Select skill 3c [WORD skill] 00 [BYTE left (80) or right 00) skill] FF FF FF FF
3d 5 (Logged as Mode (5) crash exploit) 3d [DWORD object id]
3e 5 <Unknown> 3e [DWORD unknown]
3f 3 Play audio. 3f [WORD sound message]
40 1 Quest window? 40
41 1 Resurrect 41
42 -- Unknown/Unused --------------
43 -- Unknown/Unused --------------
44 17 Staff in orifice 44 [DWORD orifice entity kind] [DWORD orifice id] [DWORD staff id] [DWORD entity state]
45 9 <Unknown> 45 [DWORD unknown][DWORD unknown]
46 13 <Unknown> 46 [DWORD unknown][DWORD unknown][DWORD unknown]
47 13 <Unknown> 47 [DWORD unknown][DWORD unknown][DWORD unknown]
48 1 Turns off busy state. 48
49 9 Take WP/Close WP 49 [DWORD wp id] [BYTE destination] 00 00 00
4a -- Unused --------------
4b 9 <Unknown> 4b [DWORD unknown][DWORD unknown]
4c 5 <Unknown> 4c [DWORD unknown]
4d 3 <Unknown> 4d [WORD unknown]
4e -- Unused --------------
4f 7 Click Button 4f [DWORD button id] [WORD complement]
50 9 Drop Gold 50 [DWORD player id] [DWORD gold pieces]
51 9 Bind hotkey to skill 51 [BYTE skill] [BYTE left (80) or right 00) skill] [WORD hotkey] FF FF FF FF
52 5 <Unknown> 52 [DWORD unknown]
53 1 <Unknown> 53
54 1 <Unknown> 54
55 -- Unused --------------
56 -- Unused --------------
57 -- Unused --------------
58 3 Quest Completed 58 [WORD Quest id]
59 17 Make entity move 59 [DWORD entity kind] [DWORD entity id] [WORD x] 00 00 [WORD y] 00 00
5a -- Unused --------------
5b -- Unused --------------
5c -- Unused --------------
5d 7 Squelch/Hostile 5d [BYTE button] [BYTE toggle on/off] [DWORD player id]
5e 6 Invite Party 5e [BYTE button] [DWORD player id]
5f 5 Update Player Pos 5f [WORD x] [WORD y]
60 1 Swap weapons 60
61 3 Drop/Pickup merc item 61 [WORD position (00 to drop)]
62 5 Resurrect Merc 62 [DWORD npc id]
63 5 Shift left-click item (to belt) 63 [DWORD item]
64 9 <Unknown> 64 [DWORD unknown] [DWORD unknown]
65 -- <Unknown> 65
66 -- <Unknown> 66
67 [Varies] Enter Game 67 XX XX XX XX XX XX XX XX 00 00 00 00 [*char character name] 00 XX XX XX [DWORD ?]
68 1 Leave Game --------------
69 -- Unused --------------
6c 9 Client Update 6c [DWORD timer in milliseconds] [DWORD delay]

[/code]

Server > Client

[code]
[Number] - {Bytes} - [Packet ()] - /Usage||/

[04] - {1} - [04] - /Use WP? |GUI Image|/
[07] - Add Map Data 07 [WORD X] [WORD Y] [BYTE Area ID]
[08] - Remove Map Data 08 [WORD x] [WORD y] [BYTE Area ID]
[0a] - Remove Entity 0a [BYTE entity kind] [DWORD id]
[0d] - Unit State 0d [DWORD Unit ID] [BYTE Unit Type] XX XX XX XX 00 00
[0e] - Update Object State 0e 02 [DWORD Object ID] XX XX [DWORD State]
[a8] - {varies} - [a8 00 (DWORD Player ID) (varies)] /Use Skill?/
[11] - {8} - [11 00 (DWORD Player ID) (BYTE Unit ID) 00 - /Attacked By Player??/
[15] - 00 [DWORD Player ID] XX XX XX XX XX
[23] - Switch Skill 23 00 [DWORD Player ID] [BYTE Left/Right (00/01)] [WORD Skill ID] FF FF FF FF
[26] - {vaires} - [26 01 00 00 (DWORD Player ID) (WORD Unkown) 00 (varies, message) /Overhead Message?/
[26] - {varies} - [26 01 00 02 00 00 00 00 00 (varies, character name) 00 (varies, message)] /Chat Message?/
[3f] - 08 Right Click(scroll, pot,etc) 3f [BYTE Used[00/ff] [DWORD ItemID] ff
[51] - 14 Identifies Close Objects 51 02 [DWORD ID][WORD object ID][DWORD Coordinates X,Y][WORD state?]
[5a] - {varies} - 5a [varies] - /Server Message??|Receiving this packet manually or through a module, will result into a clientside effect|/
[5b] - {varies} - 5b 24 00 [Player ID] XX [Player Name] 00 00 00 [rest varies] - /Join Game, Player IDs?/
[63] - Open Waypoint(contains player wp data?) 63 [DWORD Way Point ID] XX XX XX XX XX XX XX 00 00 00 00 00 00 00 00 00
[67] - {16} - [67 (DWORD Unknown) 01 (DWORD Unkown) 01 00 07 4b 00 05] /NPC Move?/
[76] - {6} 76 00 (DWORD Player ID) /Player ID On Minimap?/
[77] - {2} 77 (BYTE Unknown) /Open Something? Lol..../
[7a] - {13} - 7a 00 00 00 00 00 00 00 00 (DWORD Player ID) - /You Died?/
[8f] - {33} - 8f 00 00 00 00 00 00 00 00 00 00 00 00 (WORD Unknown) (WORD Unique_Pong_ID) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 / Pong packet|triggered by your sending the ping packet, 6c|/
[9c] - {varies} - 9c [Unknown] - /Drop item|Pickup item?/
[/code]
July 1, 2005, 7:44 PM
Ringo
Nice  :D
Do you know how up todate and correct they are?
The S > C list is pritty damn big :P
July 1, 2005, 11:30 PM
Infamous
I checked most of these packets and they seem to be correct and up to date  :)
July 1, 2005, 11:39 PM
KkBlazekK
[s]Arta[/s] LivedKrad added these packets to BNETDocs. :)
July 4, 2005, 11:13 PM
Arta
That would be LivedKrad, actually.
July 4, 2005, 11:22 PM
Ringo
Great stuff! :D
July 4, 2005, 11:29 PM
LivedKrad
The more you guys update packets in this thread the more you see on BnetDocs, so keep up the good work! (Special thanks to Ringo and rumkin's site)
July 4, 2005, 11:56 PM
KkBlazekK
I think you made an error on http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=476 this one..
July 5, 2005, 2:14 AM
Archangel
[quote author=LivedKrad.fe link=topic=11756.msg118906#msg118906 date=1120521384]
The more you guys update packets in this thread the more you see on BnetDocs, so keep up the good work! (Special thanks to Ringo and rumkin's site)
[/quote]

Wow pretty nice job both of you and bnetdocs. Fast research and fast updates.
July 5, 2005, 3:36 AM
Elneroth
Packet 0x81.
I can't figure out what does this, or if there's any other packets attached to it.

the following are from 3 different occurances.
[code]0x81:  81 07 31 02 CF 80 BA 8E 40 9D 6E D6 45 AC 15 EA 95 2A 00 00 7A 00 00 00 00 00 00 00 00 40 9D 6E D6

0x81:  81 07 31 02 34 2F B9 11 CA 0D 29 ED 45 AC 15 EA 95 2A 00 00 7A 00 00 00 00 00 00 00 00 CA 0D 29 ED

0x81:  81 07 0F 01 81 3A DD 8C D4 B5 66 0D 33 33 3A 0C 74 0D 00 00 7A 00 00 00 00 00 00 00 00 D4 B5 66 0D

Length: 33[/code]

As far as I can tell, it only comes before each event of 0x8B (User is in game).
July 5, 2005, 4:07 PM
LivedKrad
[quote author=Blaze link=topic=11756.msg118920#msg118920 date=1120529644]
I think you made an error on http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=476 this one..
[/quote]

Hmm, I'm not sure what you mean. What exactly do you think is erroneous?
July 5, 2005, 5:54 PM
Arta
The format was in extrainfo by mistake. I fixed it.
July 5, 2005, 6:13 PM
Ringo
[quote author=Elneroth link=topic=11756.msg118985#msg118985 date=1120579660]
Packet 0x81.
I can't figure out what does this, or if there's any other packets attached to it.

the following are from 3 different occurances.
[code]0x81:  81 07 31 02 CF 80 BA 8E 40 9D 6E D6 45 AC 15 EA 95 2A 00 00 7A 00 00 00 00 00 00 00 00 40 9D 6E D6

0x81:  81 07 31 02 34 2F B9 11 CA 0D 29 ED 45 AC 15 EA 95 2A 00 00 7A 00 00 00 00 00 00 00 00 CA 0D 29 ED

0x81:  81 07 0F 01 81 3A DD 8C D4 B5 66 0D 33 33 3A 0C 74 0D 00 00 7A 00 00 00 00 00 00 00 00 D4 B5 66 0D

Length: 33[/code]

As far as I can tell, it only comes before each event of 0x8B (User is in game).
[/quote]
It means the player has a merc or somthoing like that, its not 33 in lengh tho, what you have there is a 0x81 packet followed by a 0x7A packet (Summon packet)

[edit]
[code]
81 07 31 02 CF 80 BA 8E 40 9D 6E D6 45 AC 15 EA 95 2A 00 00 7A 00 00 00 00 00 00 00 00 40 9D 6E D6

(Player has merc)
81 07 31 02 CF 80 BA 8E [40 9D 6E D6] 45 AC 15 EA 95 2A 00 00

(There merc is none existant)
7A 00 00 00 00 00 00 00 00 [40 9D 6E D6]


[/code]
July 5, 2005, 8:21 PM
LivedKrad
Any idea on how the Object ID is produced?
July 7, 2005, 12:14 PM
Infamous
Item codes
[url]http://www.d2jsp.org/docs/itemcodes.html[/url]
July 10, 2005, 6:04 PM
LivedKrad
Those are for unidentified general items (with no properties of their own). I'm speaking of the specific items that differentiate one item from another.
July 10, 2005, 6:54 PM
LivedKrad
Packet 0x9D (I don't know if you have any information on this yet Ringo?)

[code]
Packet 0x9D received, data:(6) 01 D6 A3 00 A5 00 63 3F EF 03 11 00 80 00 65 64 06 10 57 97 06 82 00 01 80 9C 48 80 62 C1 01 11 FF 01 9D 06 20
[/code]

That's with very small formatting, originally the first part looked like:
9D 06 28 01 etc..

So, I came up with a small format (for only the beginning):

(BYTE) Packet ID (0x9D)
(BYTE) Action Type
(BYTE) Packet Size
(BYTE) Body Type
(DWORD) Item ID
(BYTE) Unknown - 0
(DWORD) Player ID
....

I have no idea what the rest is, offer any insight?
July 11, 2005, 1:04 AM
Infamous
[size=24pt]0x1E[/size]
Server -> Client
[code]

(BYTE)  Attribute
(WORD)  Amount

[/code]


Attributes:

0x07: Amount of life
0x09: Amount of mana
0x0B: Amount of stamina
July 22, 2005, 4:28 AM
Ringo
D2 1.10 Skill Codes:
[code]
|ID  |Name                        |Char      |LvL |ManaCost (Base)
[/code]
[code]
0    Attack                        All          1    0
1    Kick                          All          1    0
2    Throw                        All          1    0
3    Unsummon                      All          1    0
4    Left Hand Throw              All          1    0
5    Left Hand Swing              All          1    0
6    Magic Arrow                  Amazon      1    12
7    Fire Arrow                    Amazon      1    12
8    Inner Sight                  Amazon      1    10
9    Critical Strike              Amazon      1    0
10  Jab                          Amazon      1    8
11  Cold Arrow                    Amazon      6    12
12  Multiple Shot                Amazon      6    8
13  Dodge                        Amazon      6    0
14  Power Strike                  Amazon      6    8
15  Poison Javelin                Amazon      6    16
16  Exploding Arrow              Amazon      12  10
17  Slow Missiles                Amazon      12  10
18  Avoid                        Amazon      12  0
19  Impale                        Amazon      12  3
20  Lightning Bolt                Amazon      12  24
21  Ice Arrow                    Amazon      18  16
22  Guided Arrow                  Amazon      18  32
23  Penetrate                    Amazon      18  0
24  Charged Strike                Amazon      18  16
25  Plague Javelin                Amazon      18  7
26  Strafe                        Amazon      24  11
27  Immolation Arrow              Amazon      24  6
28  Dopplezon                    Amazon      24  76
29  Evade                        Amazon      24  0
30  Fend                          Amazon      24  5
31  Freezing Arrow                Amazon      30  9
32  Valkyrie                      Amazon      30  25
33  Pierce                        Amazon      30  0
34  Lightning Strike              Amazon      30  9
35  Lightning Fury                Amazon      30  20
36  Fire Bolt                    Sorceress    1    5
37  Warmth                        Sorceress    1    0
38  Charged Bolt                  Sorceress    1    24
39  Ice Bolt                      Sorceress    1    3
40  Frozen Armor                  Sorceress    1    7
41  Inferno                      Sorceress    6    9
42  Static Field                  Sorceress    6    9
43  Telekinesis                  Sorceress    6    7
44  Frost Nova                    Sorceress    6    9
45  Ice Blast                    Sorceress    6    12
46  Blaze                        Sorceress    12  22
47  Fire Ball                    Sorceress    12  10
48  Nova                          Sorceress    12  15
49  Lightning                    Sorceress    12  16
50  Shiver Armor                  Sorceress    12  11
51  Fire Wall                    Sorceress    18  22
52  Enchant                      Sorceress    18  25
53  Chain Lightning              Sorceress    18  9
54  Teleport                      Sorceress    18  24
55  Glacial Spike                Sorceress    18  20
56  Meteor                        Sorceress    24  34
57  Thunder Storm                Sorceress    24  19
58  Energy Shield                Sorceress    24  5
59  Blizzard                      Sorceress    24  23
60  Chilling Armor                Sorceress    24  17
61  Fire Mastery                  Sorceress    30  0
62  Hydra                        Sorceress    30  40
63  Lightning Mastery            Sorceress    30  0
64  Frozen Orb                    Sorceress    30  50
65  Cold Mastery                  Sorceress    30  0
66  Amplify Damage                Necromancer  1    4
67  Teeth                        Necromancer  1    6
68  Bone Armor                    Necromancer  1    11
69  Skeleton Mastery              Necromancer  1    0
70  Raise Skeleton                Necromancer  1    6
71  Dim Vision                    Necromancer  6    9
72  Weaken                        Necromancer  6    4
73  Poison Dagger                Necromancer  6    12
74  Corpse Explosion              Necromancer  6    15
75  Clay Golem                    Necromancer  6    15
76  Iron Maiden                  Necromancer  12  5
77  Terror                        Necromancer  12  7
78  Bone Wall                    Necromancer  12  17
79  Golem Mastery                Necromancer  12  0
80  Raise Skeletal Mage          Necromancer  12  8
81  Confuse                      Necromancer  18  13
82  Life Tap                      Necromancer  18  9
83  Poison Explosion              Necromancer  18  8
84  Bone Spear                    Necromancer  18  28
85  BloodGolem                    Necromancer  18  25
86  Attract                      Necromancer  24  17
87  Decrepify                    Necromancer  24  11
88  Bone Prison                  Necromancer  24  27
89  Summon Resist                Necromancer  24  44
90  IronGolem                    Necromancer  24  35
91  Lower Resist                  Necromancer  30  22
92  Poison Nova                  Necromancer  30  20
93  Bone Spirit                  Necromancer  30  24
94  FireGolem                    Necromancer  30  50
95  Revive                        Necromancer  30  45
96  Sacrifice                    Paladin      1    0
97  Smite                        Paladin      1    2
98  Might                        Paladin      1    0
99  Prayer                        Paladin      1    16
100  Resist Fire                  Paladin      1    0
101  Holy Bolt                    Paladin      6    16
102  Holy Fire                    Paladin      6    0
103  Thorns                        Paladin      6    0
104  Defiance                      Paladin      6    0
105  Resist Cold                  Paladin      6    0
106  Zeal                          Paladin      12  2
107  Charge                        Paladin      12  9
108  Blessed Aim                  Paladin      12  0
109  Cleansing                    Paladin      12  0
110  Resist Lightning              Paladin      12  0
111  Vengeance                    Paladin      18  16
112  Blessed Hammer                Paladin      18  20
113  Concentration                Paladin      18  0
114  Holy Freeze                  Paladin      18  0
115  Vigor                        Paladin      18  0
116  Conversion                    Paladin      24  4
117  Holy Shield                  Paladin      24  35
118  Holy Shock                    Paladin      24  0
119  Sanctuary                    Paladin      24  1
120  Meditation                    Paladin      24  0
121  Fist of the Heavens          Paladin      30  25
122  Fanaticism                    Paladin      30  0
123  Conviction                    Paladin      30  0
124  Redemption                    Paladin      30  0
125  Salvation                    Paladin      30  0
126  Bash                          Barbarian    1    2
127  Sword Mastery                Barbarian    1    0
128  Axe Mastery                  Barbarian    1    0
129  Mace Mastery                  Barbarian    1    0
130  Howl                          Barbarian    1    4
131  Find Potion                  Barbarian    1    2
132  Leap                          Barbarian    6    2
133  Double Swing                  Barbarian    6    2
134  Pole Arm Mastery              Barbarian    6    0
135  Throwing Mastery              Barbarian    6    0
136  Spear Mastery                Barbarian    6    0
137  Taunt                        Barbarian    6    3
138  Shout                        Barbarian    6    6
139  Stun                          Barbarian    12  2
140  Double Throw                  Barbarian    12  1
141  Increased Stamina            Barbarian    12  0
142  Find Item                    Barbarian    12  7
143  Leap Attack                  Barbarian    18  9
144  Concentrate                  Barbarian    18  2
145  Iron Skin                    Barbarian    18  0
146  Battle Cry                    Barbarian    18  5
147  Frenzy                        Barbarian    24  3
148  Increased Speed              Barbarian    24  0
149  Battle Orders                Barbarian    24  7
150  Grim Ward                    Barbarian    24  4
151  Whirlwind                    Barbarian    30  50
152  Berserk                      Barbarian    30  4
153  Natural Resistance            Barbarian    30  0
154  War Cry                      Barbarian    30  10
155  Battle Command                Barbarian    30  11
156  Fire Hit                      All          1    0
157  UnHolyBolt                    All          1    0
158  SkeletonRaise                All          1    0
159  MaggotEgg                    All          1    0
160  ShamanFire                    All          1    0
161  MagottUp                      All          1    0
162  MagottDown                    All          1    0
163  MagottLay                    All          1    0
164  AndrialSpray                  All          1    0
165  Jump                          All          1    0
166  Swarm Move                    All          1    0
167  Nest                          All          1    0
168  Quick Strike                  All          1    0
169  VampireFireball              All          1    0
170  VampireFirewall              All          1    0
171  VampireMeteor                All          1    0
172  GargoyleTrap                  All          1    0
173  SpiderLay                    All          1    0
174  VampireHeal                  All          1    0
175  VampireRaise                  All          1    0
176  Submerge                      All          1    0
177  FetishAura                    All          1    0
178  FetishInferno                All          1    0
179  ZakarumHeal                  All          1    0
180  Emerge                        All          1    0
181  Resurrect                    All          1    0
182  Bestow                        All          1    0
183  MissileSkill1                All          1    0
184  MonTeleport                  All          1    0
185  PrimeLightning                All          1    0
186  PrimeBolt                    All          1    0
187  PrimeBlaze                    All          1    0
188  PrimeFirewall                All          1    0
189  PrimeSpike                    All          1    0
190  PrimeIceNova                  All          1    0
191  PrimePoisonball              All          1    0
192  PrimePoisonNova              All          1    0
193  DiabLight                    All          1    0
194  DiabCold                      All          1    0
195  DiabFire                      All          1    0
196  FingerMageSpider              All          1    0
197  DiabWall                      All          1    0
198  DiabRun                      All          1    0
199  DiabPrison                    All          1    0
200  PoisonBallTrap                All          1    0
201  AndyPoisonBolt                All          1    0
202  HireableMissile              All          1    0
203  DesertTurret                  All          1    0
204  ArcaneTower                  All          1    0
205  MonBlizzard                  All          1    0
206  Mosquito                      All          1    0
207  CursedBallTrapRight          All          1    0
208  CursedBallTrapLeft            All          1    0
209  MonFrozenArmor                All          1    0
210  MonBoneArmor                  All          1    0
211  MonBoneSpirit                All          1    0
212  MonCurseCast                  All          1    0
213  HellMeteor                    All          1    0
214  RegurgitatorEat              All          1    0
215  MonFrenzy                    All          1    0
216  QueenDeath                    All          1    0
217  Scroll of Identify            All          1    0
218  Book of Identify              All          1    0
219  Scroll of Townportal          All          1    0
220  Book of Townportal            All          1    0
221  Raven                        Druid        1    6
222  Plague Poppy                  Druid        1    8
223  Dire Wolf                    Druid        1    15
224  Shape Shifting                Druid        1    0
225  Firestorm                    Druid        1    4
226  Oak Sage                      Druid        6    15
227  Summon Spirit Wolf            Druid        6    15
228  Mammoth Bear                  Druid        6    15
229  Molten Boulder                Druid        6    20
230  Arctic Blast                  Druid        6    6
231  Cycle of Life                Druid        12  10
232  Feral Rage                    Druid        12  3
233  Maul                          Druid        12  3
234  Eruption                      Druid        12  15
235  Cyclone Armor                Druid        12  5
236  Heart of Wolverine            Druid        18  20
237  Summon Fenris                Druid        18  20
238  Rabies                        Druid        18  10
239  Fire Claws                    Druid        18  4
240  Twister                      Druid        18  7
241  Vines                        Druid        24  14
242  Hunger                        Druid        24  3
243  Shock Wave                    Druid        24  7
244  Volcano                      Druid        24  25
245  Tornado                      Druid        24  10
246  Spirit of Barbs              Druid        30  25
247  Summon Grizzly                Druid        30  40
248  Fury                          Druid        30  4
249  Armageddon                    Druid        30  35
250  Hurricane                    Druid        30  30
251  Fire Trauma                  Assassin    1    24
252  Claw Mastery                  Assassin    1    0
253  Psychic Hammer                Assassin    1    16
254  Tiger Strike                  Assassin    1    1
255  Dragon Talon                  Assassin    1    6
256  Shock Field                  Assassin    6    6
257  Blade Sentinel                Assassin    6    7
258  Quickness                    Assassin    6    10
259  Fists of Fire                Assassin    6    2
260  Dragon Claw                  Assassin    6    2
261  Charged Bolt Sentry          Assassin    12  13
262  Wake of Fire Sentry          Assassin    12  13
263  Weapon Block                  Assassin    12  0
264  Cloak of Shadows              Assassin    12  13
265  Cobra Strike                  Assassin    12  2
266  Blade Fury                    Assassin    18  4
267  Fade                          Assassin    18  10
268  Shadow Warrior                Assassin    18  27
269  Claws of Thunder              Assassin    18  4
270  Dragon Tail                  Assassin    18  10
271  Lightning Sentry              Assassin    24  20
272  Inferno Sentry                Assassin    24  20
273  Mind Blast                    Assassin    24  15
274  Blades of Ice                Assassin    24  3
275  Dragon Flight                Assassin    24  15
276  Death Sentry                  Assassin    30  20
277  Blade Shield                  Assassin    30  27
278  Venom                        Assassin    30  12
279  Shadow Master                Assassin    30  40
280  Royal Strike                  Assassin    30  4
281  Wake Of Destruction Sentry    All          1    0
282  Imp Inferno                  All          1    0
283  Imp Fireball                  All          1    0
284  Baal Taunt                    All          1    0
285  Baal Corpse Explode          All          1    0
286  Baal Monster Spawn            All          1    0
287  Catapult Charged Ball        All          1    0
288  Catapult Spike Ball          All          1    0
289  Suck Blood                    All          1    0
290  Cry Help                      All          1    0
291  Healing Vortex                All          1    0
292  Teleport 2                    All          1    0
293  Self-resurrect                All          1    0
294  Vine Attack                  All          1    0
295  Overseer Whip                All          1    0
296  Barbs Aura                    All          1    0
297  Wolverine Aura                All          1    0
298  Oak Sage Aura                All          1    0
299  Imp Fire Missile              All          1    0
300  Impregnate                    All          1    0
301  Siege Beast Stomp            All          1    0
302  MinionSpawner                All          1    0
303  CatapultBlizzard              All          1    0
304  CatapultPlague                All          1    0
305  CatapultMeteor                All          1    0
306  BoltSentry                    All          1    0
307  CorpseCycler                  All          1    0
308  DeathMaul                    All          1    0
309  Defense Curse                All          1    0
310  Blood Mana                    All          1    0
311  inferno sentry                All          1    0
312  death sentry                  All          1    0
313  sentry lightning              All          1    0
314  fenris rage                  All          1    0
315  Baal Tentacle                All          1    0
316  Baal Nova                    All          1    0
317  Baal Inferno                  All          1    0
318  Baal Cold Missiles            All          1    0
[/code]
July 27, 2005, 11:52 PM
Ringo
D2 1.10 COM codes

Up-to-date list's can be found with in Diablo II's MPQ files, in "excel" folder, in monstats.txt/monstats.bin

Code / Unique Name / Name / N Level / NM Level / H Level
[code]
0     Skeleton                      Skeleton                      2   35  68  
1     Returned                      Skeleton                      6   39  72  
2     BoneWarrior                   Skeleton                      7   40  73  
3     BurningDead                   Skeleton                      13  46  79  
4     Horror                        Skeleton                      14  47  80  
5     Zombie                        Zombie                        1   34  67  
6     HungryDead                    Zombie                        2   35  68  
7     Ghoul                         Zombie                        12  45  78  
8     DrownedCarcass                Zombie                        22  55  88  
9     PlagueBearer                  Zombie                        17  50  83  
10    Afflicted                     BigHead                       12  45  78  
11    Tainted                       BigHead                       11  44  77  
12    Misshapen                     BigHead                       5   38  71  
13    Disfigured                    BigHead                       8   41  74  
14    Damned                        BigHead                       27  60  90  
15    FoulCrow                      BloodHawk                     4   37  70  
16    BloodHawk                     BloodHawk                     6   39  72  
17    BlackRaptor                   BloodHawk                     16  49  82  
18    CloudStalker                  BloodHawk                     22  55  88  
19    Fallen                        Fallen                        1   34  67  
20    Carver                        Fallen                        5   38  71  
21    Devilkin                      Fallen                        7   40  73  
22    DarkOne                       Fallen                        10  43  76  
23    WarpedFallen                  Fallen                        40  70  90  
24    Brute                         Wendigo                       5   38  71  
25    Yeti                          Wendigo                       9   42  75  
26    Crusher                       Wendigo                       19  52  85  
27    WailingBeast                  Wendigo                       23  56  89  
28    GargantuanBeast               Wendigo                       2   35  68  
29    SandRaider                    SandRaider                    13  46  79  
30    Marauder                      SandRaider                    17  50  83  
31    Invader                       SandRaider                    18  51  84  
32    Infidel                       SandRaider                    24  57  90  
33    Assailant                     SandRaider                    26  59  90  
34    Gorgon                        Gorgon                        18  51  84  
35    StoneStalker                  Gorgon                        20  53  86  
36    SerpentQueen                  Gorgon                        22  55  88  
37    StygianWatcher                Gorgon                        24  57  90  
38    Ghost                         Wraith                        7   40  73  
39    Wraith                        Wraith                        10  43  76  
40    Specter                       Wraith                        19  52  85  
41    Apparition                    Wraith                        20  53  86  
42    DarkShape                     Wraith                        22  55  88  
43    DarkHunter                    CorruptRogue                  2   35  68  
44    VileHunter                    CorruptRogue                  5   38  71  
45    DarkStalker                   CorruptRogue                  8   41  74  
46    BlackRogue                    CorruptRogue                  9   42  75  
47    FleshHunter                   CorruptRogue                  23  56  89  
48    DuneBeast                     BaboonDemon                   18  51  84  
49    RockDweller                   BaboonDemon                   18  51  84  
50    JungleHunter                  BaboonDemon                   21  54  87  
51    DoomApe                       BaboonDemon                   22  55  88  
52    TempleGuard                   BaboonDemon                   24  57  90  
53    MoonClan                      Goatmen                       4   37  70  
54    NightClan                     Goatmen                       6   39  72  
55    BloodClan                     Goatmen                       7   40  73  
56    HellClan                      Goatmen                       19  52  85  
57    DeathClan                     Goatmen                       10  43  76  
58    FallenShaman                  FallenShaman                  2   35  68  
59    CarverShaman                  FallenShaman                  6   39  72  
60    DevilkinShaman                FallenShaman                  9   42  75  
61    DarkShaman                    FallenShaman                  11  44  77  
62    WarpedShaman                  FallenShaman                  40  70  90  
63    QuillRat                      SpikeFiend                    1   34  67  
64    SpikeFiend                    SpikeFiend                    5   38  71  
65    ThornBeast                    SpikeFiend                    8   41  74  
66    RazorSpine                    SpikeFiend                    9   42  75  
67    JungleUrchin                  SpikeFiend                    18  51  84  
68    SandMaggot                    SandMaggot                    16  49  82  
69    RockWorm                      SandMaggot                    17  50  83  
70    Devourer                      SandMaggot                    19  52  85  
71    GiantLamprey                  SandMaggot                    21  54  87  
72    WorldKiller                   SandMaggot                    27  60  90  
73    TombViper                     ClawViper                     11  44  77  
74    ClawViper                     ClawViper                     15  48  81  
75    Salamander                    ClawViper                     18  51  84  
76    PoisonSpitter                 ClawViper                     22  55  88  
77    SerpentMagus                  ClawViper                     24  57  90  
78    SandLeaper                    SandLeaper                    14  47  80  
79    CaveLeaper                    SandLeaper                    15  48  81  
80    TombCreeper                   SandLeaper                    17  50  83  
81    TreeLurker                    SandLeaper                    22  55  88  
82    RazorPitDemon                 SandLeaper                    26  59  90  
83    Huntress                      PantherWoman                  14  47  80  
84    SaberCat                      PantherWoman                  15  48  81  
85    NightTiger                    PantherWoman                  17  50  83  
86    HellCat                       PantherWoman                  19  52  85  
87    Itchies                       Swarm                         16  49  82  
88    BlackLocusts                  Swarm                         17  50  83  
89    PlagueBugs                    Swarm                         21  54  87  
90    HellSwarm                     Swarm                         22  55  88  
91    DungSoldier                   ScarabDemon                   14  47  80  
92    SandWarrior                   ScarabDemon                   16  49  82  
93    Scarab                        ScarabDemon                   17  50  83  
94    SteelWeevil                   ScarabDemon                   19  52  85  
95    AlbinoRoach                   ScarabDemon                   24  57  90  
96    DriedCorpse                   Mummy                         13  46  79  
97    Decayed                       Mummy                         15  48  81  
98    Embalmed                      Mummy                         18  51  84  
99    PreservedDead                 Mummy                         23  56  89  
100   Cadaver                       Mummy                         25  58  90  
101   HollowOne                     GreaterMummy                  15  48  81  
102   Guardian                      GreaterMummy                  18  51  84  
103   Unraveler                     GreaterMummy                  20  53  86  
104   Horadrim Ancient              GreaterMummy                  23  56  89  
105   BaalMummy                     GreaterMummy                  40  70  90  
106   DamnedHorde                   ChaosHorde                    16  49  82  
107   TwistedHorde                  ChaosHorde                    21  54  87  
108   WickedHorde                   ChaosHorde                    23  56  89  
109   UnholyHorde                   ChaosHorde                    28  61  90  
110   CarrionBird                   VultureDemon                  14  47  80  
111   UndeadScavenger               VultureDemon                  15  48  81  
112   HellBuzzard                   VultureDemon                  22  55  88  
113   WingedNightmare               VultureDemon                  23  56  89  
114   Sucker                        MosquitoDemon                 21  54  87  
115   Feeder                        MosquitoDemon                 23  56  89  
116   BloodHook                     MosquitoDemon                 22  55  88  
117   BloodWing                     MosquitoDemon                 24  57  90  
118   Gloam                         WillOWisp                     21  54  87  
119   SwampGhost                    WillOWisp                     23  56  89  
120   BurningSoul                   WillOWisp                     26  59  90  
121   BlackSoul                     WillOWisp                     28  61  90  
122   Arach                         EvilSpiders                   11  44  77  
123   SandFisher                    EvilSpiders                   15  48  81  
124   PoisonSpinner                 EvilSpiders                   21  54  87  
125   FlameSpider                   EvilSpiders                   22  55  88  
126   SpiderMagus                   EvilSpiders                   23  56  89  
127   ThornedHulk                   ThornedHulk                   21  54  87  
128   BrambleHulk                   ThornedHulk                   22  55  88  
129   Thrasher                      ThornedHulk                   23  56  89  
130   Spikefist                     ThornedHulk                   27  60  90  
131   GhoulLord                     Vampire                       19  52  85  
132   NightLord                     Vampire                       23  56  89  
133   DarkLord                      Vampire                       24  57  90  
134   BloodLord                     Vampire                       25  58  90  
135   Banished                      Vampire                       12  45  78  
136   DesertWing                    BatDemon                      15  48  81  
137   Fiend                         BatDemon                      19  52  85  
138   Gloombat                      BatDemon                      22  55  88  
139   BloodDiver                    BatDemon                      24  57  90  
140   DarkFamiliar                  BatDemon                      27  60  90  
141   RatMan                        Fetish                        10  43  76  
142   Fetish                        Fetish                        21  54  87  
143   Flayer                        Fetish                        22  55  88  
144   SoulKiller                    Fetish                        23  56  89  
145   StygianDoll                   Fetish                        24  57  90  
146   DeckardCain                   NPC                           99  70  90  
147   Gheed                         NPC                           99  70  90  
148   Akara                         NPC                           99  70  90  
149   chicken                       chicken                       99  70  90  
150   Kashya                        NPC                           99  70  90  
151   rat                           rat                           99  70  90  
152   RogueTown                     NPC                           99  70  90  
153   HellMeteor                    Boss                          0   33  66  
154   Charsi                        NPC                           99  70  90  
155   Warriv                        NPC                           99  70  90  
156   Andariel                      Boss                          12  45  78  
157   Smallbird                                                   99  70  90  
158   Largebird                                                   99  70  90  
159   Bat                           bat                           99  70  90  
160   DarkRanger                    CorruptRogue                  4   37  70  
161   VileArcher                    CorruptRogue                  5   38  71  
162   DarkArcher                    CorruptRogue                  7   40  73  
163   BlackArcher                   CorruptRogue                  10  43  76  
164   FleshArcher                   CorruptRogue                  24  57  90  
165   DarkSpearwoman                CorruptRogue                  2   35  68  
166   VileLancer                    CorruptRogue                  5   38  71  
167   DarkLancer                    CorruptRogue                  8   41  74  
168   BlackLancer                   CorruptRogue                  9   42  75  
169   FleshLancer                   CorruptRogue                  24  57  90  
170   SkeletonArcher                Skeleton                      5   38  71  
171   ReturnedArcher                Skeleton                      8   41  74  
172   BoneArcher                    Skeleton                      9   42  75  
173   BurningDeadArcher             Skeleton                      13  46  79  
174   HorrorArcher                  Skeleton                      18  51  84  
175   Warriv                        NPC                           99  70  90  
176   Atma                          NPC                           99  70  90  
177   Drognan                       NPC                           99  70  90  
178   Fara                          NPC                           99  70  90  
179   Cow                                                         99  70  90  
180   SandMaggotYoung               SandMaggotBaby                16  49  82  
181   RockWormYoung                 SandMaggotBaby                17  50  83  
182   DevourerYoung                 SandMaggotBaby                19  52  85  
183   GiantLampreyYoung             SandMaggotBaby                21  54  87  
184   WorldKillerYoung              SandMaggotBaby                24  57  90  
185   Camel                                                       99  70  90  
186   Blunderbore                   PinHead                       18  51  84  
187   Gorbelly                      PinHead                       20  53  86  
188   Mauler                        PinHead                       25  58  90  
189   Urdar                         PinHead                       32  65  90  
190   SandMaggotEgg                 SandMaggotEgg                 16  49  82  
191   RockWormEgg                   SandMaggotEgg                 17  50  83  
192   DevourerEgg                   SandMaggotEgg                 19  52  85  
193   GiantLampreyEgg               SandMaggotEgg                 21  54  87  
194   WorldKillerEgg                SandMaggotEgg                 27  60  90  
195   Act2Male                      NPC                           99  70  90  
196   Act2Female                    NPC                           99  70  90  
197   Act2Child                     NPC                           99  70  90  
198   Greiz                         NPC                           99  70  90  
199   Elzix                         NPC                           99  70  90  
200   Geglash                       NPC                           99  70  90  
201   Jerhyn                        NPC                           99  70  90  
202   Lysander                      NPC                           99  70  90  
203   Act2Guard                     NPC                           99  70  90  
204   Act2Vendor1                   NPC                           99  70  90  
205   Act2Vendor2                   NPC                           99  70  90  
206   FoulCrowNest                  FoulCrowNest                  3   36  69  
207   BloodHawkNest                 FoulCrowNest                  8   41  74  
208   BlackVultureNest              FoulCrowNest                  15  48  81  
209   CloudStalkerNest              FoulCrowNest                  22  55  88  
210   Meshif                        NPC                           99  70  90  
211   Duriel                        Boss                          22  55  88  
212   RatMan-skeleton               Fetish                        10  43  76  
213   Fetish-skeleton               Fetish                        21  54  87  
214   Flayer-skeleton               Fetish                        22  55  88  
215   SoulKiller-skeleton           Fetish                        23  56  89  
216   StygianDoll-skeleton          Fetish                        24  57  90  
217   DarkGuard                     DarkGuard                     13  46  79  
218   DarkKnight                    DarkGuard                     15  48  81  
219   BloodGuard                    DarkGuard                     17  50  83  
220   BloodKnight                   DarkGuard                     29  62  90  
221   DarkPaladin                   DarkGuard                     30  63  90  
222   BloodMage                     BloodMage                     14  47  80  
223   Demonist                      BloodMage                     29  62  90  
224   BlackMagus                    BloodMage                     28  61  90  
225   Diabolist                     BloodMage                     30  63  90  
226   DeathMage                     BloodMage                     17  50  83  
227   Maggot                                                      99  70  90  
228   MummyGenerator                                              15  48  81  
229   Radament                      Quest                         16  49  82  
230   FireBeast                     FireBeast                     3   36  69  
231   IceGlobe                      FireBeast                     5   38  71  
232   LightningBeast                FireBeast                     7   40  73  
233   PoisonOrb                     FireBeast                     9   42  75  
234   FlyingScimitar                                              12  45  78  
235   Zakarumite                    Zealot                        20  53  86  
236   Faithful                      Zealot                        22  55  88  
237   Zealot                        Zealot                        24  57  90  
238   Sexton                        Cantor                        22  55  88  
239   Cantor                        Cantor                        23  56  89  
240   Heirophant                    Cantor                        24  57  90  
241   Heirophant                    Cantor                        24  57  90  
242   Mephisto                      Boss                          26  59  90  
243   Diablo                        Boss                          40  70  90  
244   DeckardCain                   NPC                           99  70  90  
245   DeckardCain                   NPC                           99  70  90  
246   DeckardCain                   NPC                           99  70  90  
247   Swamp Dweller                 FrogBoy                       21  54  87  
248   Bog Creature                  FrogBoy                       22  55  88  
249   Slime Prince                  FrogBoy                       24  57  90  
250   Summoner                      Quest                         18  51  84  
251   tyrael                        NPC                           99  70  90  
252   asheara                       NPC                           99  70  90  
253   hratli                        NPC                           99  70  90  
254   alkor                         NPC                           99  70  90  
255   ormus                         NPC                           99  70  90  
256   izual                         unique                        29  62  90  
257   halbu                         NPC                           99  70  90  
258   WaterWatcherLimb              tentacle                      18  51  84  
259   RiverStalkerLimb              tentacle                      20  53  86  
260   StygianWatcherLimb            tentacle                      22  55  88  
261   WaterWatcherHead              tentaclehead                  18  51  84  
262   RiverStalkerHead              tentaclehead                  20  53  86  
263   StygianWatcherHead            tentaclehead                  22  55  88  
264   meshif                        NPC                           99  70  90  
265   DeckardCain                   NPC                           99  70  90  
266   navi                                                        1   34  67  
267   Bloodraven                    Quest                         10  43  76  
268   bug                                                         99  70  90  
269   scorpion                                                    99  70  90  
270   RogueScout                    NPC                           5   38  71  
271   RogueHireling                 NPC                           1   34  67  
272   RogueTownShoot                NPC                           99  70  90  
273   GargoyleTrap                                                15  48  81  
274   ReturnedMage                  Skeleton                      8   41  74  
275   BoneMage                      Skeleton                      10  43  76  
276   BurningDeadMage               Skeleton                      14  47  80  
277   HorrorMage                    Skeleton                      17  50  83  
278   RatManShaman                  Fetish                        11  44  77  
279   FetishShaman                  Fetish                        22  55  88  
280   FlayerShaman                  Fetish                        23  56  89  
281   SoulKillerShaman              Fetish                        24  57  90  
282   StygianDollShaman             Fetish                        24  57  90  
283   larva                                                       99  70  90  
284   SandMaggotQueen               SandMaggotQueen               11  44  77  
285   RockWormQueen                 SandMaggotQueen               14  47  80  
286   DevourerQueen                 SandMaggotQueen               17  50  83  
287   GiantLampreyQueen             SandMaggotQueen               21  54  87  
288   WorldKillerQueen              SandMaggotQueen               29  62  90  
289   ClayGolem                     Golem                         4   4   4  
290   BloodGolem                    Golem                         18  18  18  
291   IronGolem                     Golem                         22  22  22  
292   FireGolem                     Golem                         32  32  32  
293   Familiar                      Familiar                      1   34  67  
294   Act3Male                      NPC                           99  70  90  
295   NightMarauder                 SpiritBaboon                  24  57  90  
296   Act3Female                    NPC                           99  70  90  
297   Natalya                       Natalya                       99  70  90  
298   FleshSpawner                  Vile Mother[/code]
July 27, 2005, 11:57 PM
Ringo
D2 1.10 Object codes:

Up-to-date list's can be found with in Diablo II's MPQ files, in "excel" folder, in objects.txt/objects.bin

[code]
0    Dummy                         test data                    
1    Casket                        Casket #5                    
2    Shrine                        Shrine                        
3    Casket                        Casket #6                    
4    LargeUrn                      Urn #1                        
5    chest                         LargeChestR                  
0    Dummy                         test data
1    Casket                        Casket #5
2    Shrine                        Shrine
3    Casket                        Casket #6
4    LargeUrn                      Urn #1
5    chest                         LargeChestR
6    chest                         LargeChestL
7    Barrel                        Barrel
8    TowerTome                     Tower Tome
9    Urn                           Urn #2
10   Dummy                         Bench
11   Barrel                        BarrelExploding
12   Dummy                         RogueFountain
13   Door                          Door Gate Left
14   Door                          Door Gate Right
15   Door                          Door Wooden Left
16   Door                          Door Wooden Right
17   StoneAlpha                    StoneAlpha
18   StoneBeta                     StoneBeta
19   StoneGamma                    StoneGamma
20   StoneDelta                    StoneDelta
21   StoneLambda                   StoneLambda
22   StoneTheta                    StoneTheta
23   Door                          Door Courtyard Left
24   Door                          Door Courtyard Right
25   Door                          Door Cathedral Double
26   Gibbet                        Cain's Been Captured
27   Door                          Door Monastery Double Right
28   HoleAnim                      Hole in Ground
29   Dummy                         Brazier
30   Inifuss                       inifuss tree
31   Dummy                         Fountain
32   Dummy                         crucifix
33   Dummy                         Candles1
34   Dummy                         Candles2
35   Dummy                         Standard1
36   Dummy                         Standard2
37   Dummy                         Torch1 Tiki
38   Dummy                         Torch2 Wall
39   fire                          RogueBonfire
40   Dummy                         River1
41   Dummy                         River2
42   Dummy                         River3
43   Dummy                         River4
44   Dummy                         River5
45   AmbientSound                  ambient sound generator
46   Crate                         Crate
47   Door                          Andariel's Door
48   Dummy                         RogueTorch
49   Dummy                         RogueTorch
50   Casket                        CasketR
51   Casket                        CasketL
52   Urn                           Urn #3
53   Casket                        Casket
54   RogueCorpse                   Rogue corpse 1
55   RogueCorpse                   Rogue corpse 2
56   RogueCorpse                   rolling rogue corpse
57   CorpseOnStick                 rogue on a stick 1
58   CorpseOnStick                 rogue on a stick 2
59   Portal                        Town portal
60   Portal                        Permanent town portal
61   Dummy                         Invisible object
62   Door                          Door Cathedral Left
63   Door                          Door Cathedral Right
64   Door                          Door Wooden Left #2
65   Dummy                         invisible river sound1
66   Dummy                         invisible river sound2
67   Dummy                         ripple
68   Dummy                         ripple
69   Dummy                         ripple
70   Dummy                         ripple
71   Dummy                         forest night sound #1
72   Dummy                         forest night sound #2
73   Dummy                         yeti dung
74   Trap Door                     Trap Door
76   Dummy                         sewer drip
77   Shrine                        healthorama
78   Dummy                         invisible town sound
79   Casket                        casket #3
80   Obelisk                       obelisk
81   Shrine                        forest altar
82   Dummy                         bubbling pool of blood
83   Shrine                        horn shrine
84   Shrine                        healing well
88   Chest3                        tombchest 2 largechestR
90   Obelisk                       desert obelisk
91   Door                          tomb door left
92   Door                          tomb door right
93   Shrine                        mana shrineforinnerhell
94   LargeUrn                      Urn #4
95   LargeUrn                      Urn #5
96   Shrine                        health shrineforinnerhell
97   Shrine                        innershrinehell
98   Door                          tomb door left 2
99   Door                          tomb door right 2
100  Duriel's Lair                 Portal to Duriel's Lair
101  Dummy                         Brazier3
102  Dummy                         Floor brazier
103  Dummy                         flies
104  ArmorStand                    Armor Stand 1R
105  ArmorStand                    Armor Stand 2L
106  WeaponRack                    Weapon Rack 1R
107  WeaponRack                    Weapon Rack 2L
108  Malus                         Malus
110  not used                      drinker
111  well                          Fountain 1
112  not used                      gesturer
114  not used                      turner
115  well                          Fountain 3
117  Dummy                         jungle torch
118  Well                          Fountain 4
119  Waypoint                      waypoint portal
121  jerhyn                        placeholder #1
122  jerhyn                        placeholder #2
123  Shrine                        innershrinehell2
124  Shrine                        innershrinehell3
125  hidden stash                  ihobject3 inner hell
126  skull pile                    skullpile inner hell
127  hidden stash                  ihobject5 inner hell
128  hidden stash                  hobject4 inner hell
129  Door                          secret door 1
130  Well                          pool act 1 wilderness
131  Dummy                         vile dog afterglow
132  Well                          cathedralwell act 1 inside
133  shrine                        shrine1_arcane sanctuary
134  shrine                        dshrine2 act 2 shrine
135  shrine                        desertshrine3 act 2 shrine
136  shrine                        dshrine1 act 2 shrine
138  Well                          cavewell act 1 caves
139  chest                         chest-r-large act 1
140  chest                         chest-r-tallskinney act 1
141  chest                         chest-r-med act 1
144  chest                         Lchest1 act 1
145  Waypoint                      waypointi inner hell
149  taintedsunaltar               tainted sun altar quest
152  orifice                       Where you place the Horadric staff
153  Door                          tyrael's door
154  corpse                        guard corpse
155  hidden stash                  rock act 1 wilderness
156  Waypoint                      waypoint act 2
157  Waypoint                      waypoint act 1 wilderness
158  skeleton                      corpse
159  hidden stash                  rockb act 1 wilderness
160  fire                          fire small
161  fire                          fire medium
162  fire                          fire large
163  hiding spot                   cliff act 1 wilderness
164  Shrine                        mana well1
165  Shrine                        mana well2
168  Shrine                        mana well5
169  hollow log                    log
170  Shrine                        jungle healwell act 3
171  skeleton                      corpseb
174  loose rock                    rockc act 1 wilderness
175  loose boulder                 rockd act 1 wilderness
176  chest                         chest-L-med
177  chest                         chest-L-large
179  bookshelf                     bookshelf1
180  bookshelf                     bookshelf2
181  chest                         jungle chest act 3
182  coffin                        tombcoffin
184  Shrine                        jungle shrine2
185  stash                         jungle object` act3
186  stash                         jungle object` act3
187  stash                         jungle object` act3
188  stash                         jungle object` act3
189  Dummy                         cain portal
190  Shrine                        jungle shrine3 act 3
191  Shrine                        jungle shrine4 act 3
192  teleport pad                  teleportation pad
193  LamTome                       Lam Esen's Tome
194  stair                         stairsl
195  stair                         stairsr
196  a trap                        test data floortrap
197  Shrine                        jungleshrine act 3
199  Shrine                        mafistoshrine
200  Shrine                        mafistoshrine
201  Shrine                        mafistoshrine
202  Shrine                        mafistomana
203  stash                         mafistolair
204  stash                         box
205  stash                         altar
206  Shrine                        mafistohealth
207  dummy                         water rocks in act 3 wrok
208  Basket                        basket 1
209  Basket                        basket 2
210  Dummy                         water logs in act 3  ne logw
211  Dummy                         water rocks girl in act 3 wrob
212  Dummy                         bubbles in act3 water
213  Dummy                         water logs in act 3 logx
214  Dummy                         water rocks in act 3 rokb
215  Dummy                         water rocks girl in act 3 watc
216  Dummy                         water rocks in act 3 waty
217  Dummy                         water logs in act 3  logz
218  Dummy                         web covered tree 1
219  Dummy                         web covered tree 2
220  Dummy                         web covered tree 3
221  Dummy                         web covered tree 4
222  pillar                        hobject1
223  cocoon                        cacoon
224  cocoon                        cacoon 2
225  skullpile                     hobject1
226  Shrine                        outershrinehell
227  dummy                         water rock girl act 3  nw  blgb
228  dummy                         big log act 3  sw blga
229  door                          slimedoor1
230  door                          slimedoor2
231  Shrine                        outershrinehell2
232  Shrine                        outershrinehell3
233  pillar                        hobject2
234  dummy                         Big log act 3 se blgc
235  dummy                         Big log act 3 nw blgd
236  Shrine                        health wellforhell
237  Waypoint                      act3waypoint town
238  Waypoint                      waypointh
239  body                          burning town
240  chest                         gchest1L general
241  chest                         gchest2R general
242  chest                         gchest3R general
243  chest                         glchest3L general
244  ratnest                       sewers
245  body                          burning town
246  ratnest                       sewers
247  bed                           bed act 1
248  bed                           bed act 1
249  manashrine                    mana wellforhell
250  a trap                        exploding cow  for Tristan and ACT 3 only¡­¡­Very Rare  1 or 2
251  gidbinn altar                 gidbinn altar
252  gidbinn                       gidbinn decoy
253  Dummy                         diablo right light
254  Dummy                         diablo left light
255  Dummy                         diablo start point
256  Dummy                         stool for act 1 cabin
257  Dummy                         wood for act 1 cabin
258  Dummy                         more wood for act 1 cabin
259  Dummy                         skeleton spawn for hell   facing nw
261  a trap                        spikes for tombs floortrap
262  Shrine                        act 1 cathedral
263  Shrine                        act 1 jail
264  Shrine                        act 1 jail
265  Shrine                        act 1 jail
266  goo pile                      goo pile for sand maggot lair
267  bank                          bank
268  wirt's body                   wirt's body
269  dummy                         gold placeholder
270  corpse                        guard corpse 2
271  corpse                        dead villager 1
272  corpse                        dead villager 2
274  hidden stash                  tiny pixel shaped thingie
275  Shrine                        health shrine for caves
276  Shrine                        mana shrine for caves
277  Shrine                        cave magic shrine
289  bed                           bed for harum
290  door                          iron grate door left
291  door                          iron grate door right
292  door                          wooden grate door left
293  door                          wooden grate door right
294  door                          wooden door left
295  door                          wooden door right
296  Dummy                         wall torch left for tombs
297  Dummy                         wall torch right for tombs
298  portal                        arcane sanctuary portal
301  Dummy                         maggot well health
302  manashrine                    maggot well mana
304  teleportation pad             teleportation pad
305  teleportation pad             teleportation pad
306  teleportation pad             teleportation pad
307  Dummy                         arcane thing
308  Dummy                         arcane thing
309  Dummy                         arcane thing
310  Dummy                         arcane thing
311  Dummy                         arcane thing
312  Dummy                         arcane thing
313  Dummy                         arcane thing
314  dead guard                    harem guard 1
315  dead guard                    harem guard 2
316  dead guard                    harem guard 3
317  dead guard                    harem guard 4
318  eunuch                        harem blocker
321  Dummy                         test data
323  Waypoint                      waypoint act2 sewer
324  Waypoint                      waypoint act3 travincal
327  dummy                         torch (act 3 sewer) stra
328  dummy                         torch (act 3 kurast) strb
329  chest                         mafistochestlargeLeft
330  chest                         mafistochestlargeright
331  chest                         mafistochestmedleft
332  chest                         mafistochestmedright
333  chest                         spiderlairchestlargeLeft
334  chest                         spiderlairchesttallLeft
335  chest                         spiderlairchestmedright
336  chest                         spiderlairchesttallright
337  Steeg Stone                   steeg stone
338  Guild Vault                   guild vault
339  Trophy Case                   trophy case
340  Message Board                 message board
341  Dummy                         mephisto bridge
342  portal                        hellgate
345  Dummy                         hellfire1
346  Dummy                         hellfire2
347  Dummy                         hellfire3
348  Dummy                         helllava1
349  Dummy                         helllava2
350  Dummy                         helllava3
351  Dummy                         helllightsource1
352  Dummy                         helllightsource1
353  Dummy                         helllightsource1
354  chest                         horadric cube chest
355  chest                         horadric scroll chest
356  chest                         staff of kings chest
357  Tome                          yet another tome
358  fire                          hell brazier
359  fire                          hell brazier
360  RockPIle                      dungeon
362  basket                        dungeon
363  HungSkeleton                  outerhell skeleton
364  Dummy                         guy for dungeon
365  casket                        casket for Act 3 dungeon
366  sewer stairs                  stairs for act 3 sewer quest
367  sewer lever                   lever for act 3 sewer quest
368  darkwanderer                  start position
369  dummy                         trapped soul placeholder
370  Dummy                         torch for act3 town
371  chest                         LargeChestR
372  BoneChest                     innerhellbonepile
373  Dummy                         skeleton spawn for hell            facing ne
374  Dummy                         fog act 3 water rfga
375  Dummy                         Not used
376  Hellforge                     Forge  hell
377  Guild Portal                  Portal to next guild level
378  Dummy                         hratli start
379  Dummy                         hratli end
380  TrappedSoul                   Burning guy for outer hell
381  TrappedSoul                   Burning guy for outer hell
382  Dummy                         natalya start
383  TrappedSoul                   guy stuck in hell
384  TrappedSoul                   guy stuck in hell
385  Dummy                         cain start position
386  Dummy                         stairsr
387  chest                         arcanesanctuarybigchestLeft
388  casket                        arcanesanctuarycasket
389  chest                         arcanesanctuarybigchestRight
390  chest                         arcanesanctuarychestsmallLeft
391  chest                         arcanesanctuarychestsmallRight
392  Seal                          Diablo seal
393  Seal                          Diablo seal
394  Seal                          Diablo seal
395  Seal                          Diablo seal
396  Seal                          Diablo seal
397  chest                         sparklychest
398  Waypoint                      waypoint pandamonia fortress
399  fissure                       fissure for act 4 inner hell
401  Dummy                         smoke
402  Waypoint                      waypoint valleywaypoint
403  fire                          hell brazier
404  compellingorb                 compelling orb
405  chest                         khalim chest
406  chest                         khalim chest
407  chest                         khalim chest
408  Dummy                         fortress brazier #1
409  Dummy                         fortress brazier #2
408  Siege Control                 To control siege machines
409  ptox                          Pot O Torch (level 1)
410  pyox                          fire pit  (level 1)
413  chestR                        expansion no snow
414  Shrine3wilderness             expansion no snow
415  Shrine2wilderness             expansion no snow
416  hiddenstash                   expansion no snow
417  flag wilderness               expansion no snow
418  barrel wilderness             expansion no snow
419  barrel wilderness             wilderness/siege
420  woodchestL                    expansion no snow
421  Shrine3wilderness             expansion no snow
422  manashrine                    expansion no snow
423  healthshrine                  expansion no snow
424  burialchestL                  expansion no snow
425  burialchestR                  expansion no snow
426  well                          expansion no snow
427  Shrine2wilderness             expansion no snow
428  Shrine2wilderness             expansion no snow
429  Waypoint                      expansion no snow
430  ChestL                        expansion no snow
431  woodchestR                    expansion no snow
432  ChestSL                       expansion no snow
433  ChestSR                       expansion no snow
434  etorch1                       expansion no snow
435  ecfra                         camp fire
436  ettr                          town torch
437  etorch2                       expansion no snow
438  burningbodies                 wilderness/siege
439  burningpit                    wilderness/siege
440  tribal flag                   wilderness/siege
441  eflg                          town flag
442  chan                          chandeleir
443  jar1                          wilderness/siege
444  jar2                          wilderness/siege
445  jar3                          wilderness/siege
446  swingingheads                 wilderness
447  pole                          wilderness
448  animated skulland rockpile    expansion no snow
449  gate                          town main gate
450  pileofskullsandrocks          seige
451  hellgate                      seige
452  banner 1                      preset in enemy camp
453  banner 2                      preset in enemy camp
454  explodingchest                wilderness/siege
455  chest                         specialchest
456  deathpole                     wilderness
457  Ldeathpole                    wilderness
458  Altar                         inside of temple
459  dummy                         Drehya Start In Town
460  dummy                         Drehya Start Outside Town
461  dummy                         Nihlathak Start In Town
462  dummy                         Nihlathak Start Outside Town
463  hidden stash                  icecave_
464  healthshrine                  icecave_
465  manashrine                    icecave_
466  evilurn                       icecave_
467  icecavejar1                   icecave_
468  icecavejar2                   icecave_
469  icecavejar3                   icecave_
470  icecavejar4                   icecave_
471  icecavejar4                   icecave_
472  icecaveshrine2                icecave_
473  cagedwussie1                  caged fellow
474  Ancient Statue 3              statue
475  Ancient Statue 1              statue
476  Ancient Statue 2              statue
477  deadbarbarian                 seige/wilderness
478  clientsmoke                   client smoke
479  icecaveshrine2                icecave_
480  icecave_torch1                icecave_
481  icecave_torch2                icecave_
482  ttor                          expansion tiki torch
483  manashrine                    baals
484  healthshrine                  baals
485  tomb1                         baal's lair
486  tomb2                         baal's lair
487  tomb3                         baal's lair
488  magic shrine                  baal's lair
489  torch1                        baal's lair
490  torch2                        baal's lair
491  manashrine                    snowy
492  healthshrine                  snowy
493  well                          snowy
494  Waypoint                      baals_waypoint
495  magic shrine                  snowy_shrine3
496  Waypoint                      wilderness_waypoint
497  magic shrine                  snowy_shrine3
498  well                          baalslair
499  magic shrine2                 baal's lair
500  object1                       snowy
501  woodchestL                    snowy
502  woodchestR                    snowy
503  magic shrine                  baals_shrine3
504  woodchest2L                   snowy
505  woodchest2R                   snowy
506  swingingheads                 snowy
507  debris                        snowy
508  pene                          Pen breakable door
509  magic shrine                  temple
510  mrpole                        snowy
511  Waypoint                      icecave
512  magic shrine                  temple
513  well                          temple
514  torch1                        temple
515  torch1                        temple
516  object1                       temple
517  object2                       temple
518  mrbox                         baals
519  well                          icecave
520  magic shrine                  temple
521  healthshrine                  temple
522  manashrine                    temple
523  red light                      (touch me)  for blacksmith
524  tomb1L                        baal's lair
525  tomb2L                        baal's lair
526  tomb3L                        baal's lair
527  ubub                          Ice cave bubbles 01
528  sbub                          Ice cave bubbles 01
529  tomb1                         redbaal's lair
530  tomb1L                        redbaal's lair
531  tomb2                         redbaal's lair
532  tomb2L                        redbaal's lair
533  tomb3                         redbaal's lair
534  tomb3L                        redbaal's lair
535  mrbox                         redbaals
536  torch1                        redbaal's lair
537  torch2                        redbaal's lair
538  candles                       temple
539  Waypoint                      temple
540  deadperson                    everywhere
541  groundtomb                    temple
542  Dummy                         Larzuk Greeting
543  Dummy                         Larzuk Standard
544  groundtombL                   temple
545  deadperson2                   everywhere
546  ancientsaltar                 ancientsaltar
547  To The Worldstone Keep Level 1ancientsdoor
548  eweaponrackR                  everywhere
549  eweaponrackL                  everywhere
550  earmorstandR                  everywhere
551  earmorstandL                  everywhere
552  torch2                        summit
553  funeralpire                   outside
554  burninglogs                   outside
555  stma                          Ice cave steam
556  deadperson2                   everywhere
557  Dummy                         Baal's lair
558  fana                          frozen anya
559  BBQB                          BBQ Bunny
560  btor                          Baal Torch Big
561  Dummy                         invisible ancient
562  Dummy                         invisible base
563  The Worldstone Chamber        baals portal
564  Glacial Caves Level 1         summit door
565  strlastcinematic              last portal
566  Harrogath                     last last portal
567  Zoo                           test data
568  Keeper                        test data
569  Throne of Destruction         baals portal
570  Dummy                         fire place guy
571  Dummy                         door blocker
572  Dummy                         door blocker
[/code]
July 28, 2005, 12:16 AM
Ringo
I might as well be the first one to say, that all of this is useless and some/most is now out of date  :-\
Theres been a few new S > C packets added in and alot of the C > S have had there packet ID's rased one, extra things added and some C > S packets are no longer used.

The reassion its pritty useless is because they have added a new keep alive packet (S > C 0xAE, report back C > S 0x66)
Some kind of check sum must be preformed on the 0xAE data and reported back in the 0x66 packet.
If you dont answer back with the correct data then the server will simply drop you just after sending a blank 0xB0 packet.
August 2, 2005, 11:23 PM
kamakazie
[quote author=Ringo link=topic=11756.msg122877#msg122877 date=1123024987]
I might as well be the first one to say, that all of this is useless and some/most is now out of date  :-\
Theres been a few new S > C packets added in and alot of the C > S have had there packet ID's rased one, extra things added and some C > S packets are no longer used.

The reassion its pritty useless is because they have added a new keep alive packet (S > C 0xAE, report back C > S 0x66)
Some kind of check sum must be preformed on the 0xAE data and reported back in the 0x66 packet.
If you dont answer back with the correct data then the server will simply drop you just after sending a blank 0xB0 packet.
[/quote]

Do you know if the compression algorithm has changed? I'm pretty sure they're still using the same algorithm, but it looks like the tables have changed. Anyone confirm this?

Edit: It also looks like the packet lengths are pretty much the same, except one packet has been removed (0xAD) and another added (either 0xAE or 0xAF, but I suspect 0xAE since you said it's different from before).
August 7, 2005, 3:45 AM
Ringo
hi, As far as i can see not alot has changed in that area, it seems to be mostly C > S and this new keep alive thing.
The only thing thats stopping a bot from connecting to the server and being able to stay connected for more than 20 seconds, is not being able to answer the 0xAE packet correctly (with 0x66).
Iv used Ethereal to get packet logs from d2, and converted the bytes back into data, slipt them up, decompressed them and then split them up again in the hope somone on these forums can crack it.
I dont mind redoing the C>S documentation if i know how to respond to 0xAE correctly, as otherwise there isnt much point as its unuseable :-\
Iv probly taken around 30 min to look into it since the release of the 1.11 patch, and could see this was going to be a problem, so i havent botherd with D2GS since.

Hopefully the following packet dumps should be helpfull in some way:

This is the raw sent/recv between a 1.11 d2 client and the D2GS:
[code]af 01                                            ..[/code]

[color=white]C > S[/color]
[size=1]aka: 0x67 logon, but with an extra "XX XX XX XX XX XX XX XX 00"[/size]
[code]68 d3 d0 b5 2c d9 03 04 0b 00 00 00 XX XX XX XX h...,.......P.].
XX XX XX XX 00 72 74 74 74 68 65 61 68 65 61 68 .....rtttheaheah
65 61 68 72 00                                  eahr.[/code]

[color=blue]S > C[/color]
[code]06 7a 04 64 bb bc                               .z.d..[/code]

[color=blue]S > C[/color]
[code]02 5c                                           .\[/code]

[color=white]C > S[/color]
[size=1]aka: 0x6C ping, but with a new null DWORD and a rased packet ID[/size]
[code]6d 6d df ca 06 00 00 00 00 00 00 00 00          mm...........[/code]

[color=blue]S > C[/color]
[size=1]aka: 0x8F ping responce (0x6D><0x8F delay generates 2nd DWORD of C>S 0x6D[/size]
[code]07 1f 7f ff ff ff c0                            .......[/code]

[color=white]C > S[/color]
[size=1]aka: 0x6A enter world[/size]
[code]6b                                              k[/code]

[color=blue]S > C[/color]
[code]91 17 46 20 18 b9 da 01 ac 6d 1b 46 d5 43 28 c8 ..F .....m.F.C(.
a8 65 19 15 0c a3 22 a1 af e0 86 31 00 c5 ce cc .e...."....1....
95 8b a1 99 b3 a1 be 31 00 c5 ce c3 98 78 31 00 .......1.....x1.
c5 ce c2 6d ce a1 cc 3c 18 80 62 e7 61 2e e7 51 ...m...<..b.a..Q
85 dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd ................
dd dd de 4a 43 ff ff ff ff ff ff ff ff ff ff ff ...JC...........
ff f0 fb ff ff ff ff ff ff ff ff ff ff ff fc 61 ...............a
77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 wwwwwwwwwwwwwwww
77 77 92 90 ff ff ff ff ff ff ff ff ff ff ff ff ww..............
fc                                              .[/code]

[color=blue]S > C[/color]
[code]f1 55 0f bf ff ff ff ff ff ff ff ff ff ff ff cc .U..............
63 10 0c 5c ec 62 7e 73 50 72 e9 0e 57 68 e4 f9 c..\.b~sPr..Wh..
1d 42 28 92 a0 c2 91 41 8c 01 9c 99 38 16 42 a1 .B(....A....8.B.
81 88 06 2e 77 18 80 62 e7 66 a7 63 cc 65 00 c8 ....w..b.f.c.e..
d6 9b 00 84 43 ca d2 10 1a 85 21 40 0b 21 3b 42 ....C.....!@.!;B
00 03 c7 5b 18 80 62 e7 66 a7 63 cc 65 03 69 0e ...[..b.f.c.e.i.
ca c2 4a 11 e5 69 0f 42 85 b7 02 a4 66 8d 0d c7 ..J..i.B....f...
e8 42 34 3b 20 63 2a 3a d4 26 e7 d7 02 a4 66 8d .B4; c*:.&....f.
00 58 7d 22 cd 0e c8 18 ca 8d 75 a8 4d cf ae 05 .X}"......u.M...
48 cd 1a 03 86 a1 6c d0 ec 81 8c a8 d0 2d 42 6e H.....l......-Bn
7d 70 2a 46 68 d0 b0 92 15 8d 0e c8 18 ca 8d 0a }p*Fh...........
d4 26 e7 d7 02 a8 1a 34 26 31 1b 0d 0e c8 18 cb .&.....4&1......
1a c5 21 24 49 42 b8 15 40 d1 a0 fe ba d0 40 68 ..!$IB..@.....@h
76 40 c6 59 50 08 09 02 4a 15 c3 a8 c4 03 17 3b v@.YP...J......;
7f c3 a8 c4 03 17 3b fe 73 50 72 e9 0e 57 68 e4 ......;.sPr..Wh.
f9 1d 42 28 92 a0 c2 91 41 8c 01 9c 99 39 74 49 ..B(....A....9tI
b1 37 fe 7e 81 60 e4 34 bc 1d 02 51 c4 4b 16 d7 .7.~.`.4...Q.K..
ff 44 38 9f 1f cf ba 21 a8 f9 70 fb a2 1a 8f 8f .D8....!..p.....
e7 dd 10 e2 7c b8 7d d1 2d 3e 5c 3e e8 86 a3 e4 ....|.}.->\>....
01 f7 44 38 9f 1f cf ba 25 a7 c7 f3 ee 88 71 3e ..D8....%.....q>
40 1f 74 4b 4f 90 07 dd 3c 62 01 8b 9d 8e 46 ad @.tKO...<b....F.
26 71 d8 d7 68                                  &q..h[/code]

[color=blue]S > C[/color]
[code]f1 c8 04 a4 99 06 03 01 28 65 05 21 d1 68 a2 45 ........(e.!.h.E
8e 20 2c 82 1e 41 80 1c 04 01 49 70 62 01 c6 90 . ,..A....Ipb...
ae 84 89 3c 07 20 40 87 0a 40 e0 8c 0f 42 58 3f ...<. @..@...BX?
1b 40 60 6a 04 65 94 91 3c 09 ca 86 a6 09 96 91 .@`j.e..<.......
9c 10 b9 65 24 4f 32 56 2e 86 66 ce 96 16 52 44 ...e$O2V..f...RD
f2 a1 a9 82 65 a7 8b b5 06 21 40 93 28 9a 9a 26 ....e....!@.(..&
5e 46 5d a8 31 0a 07 eb f0 46 0e 5a 8e 83 fc 5b ^F].1....F.Z...[
35 0e 13 2d 34 35 27 41 0b 83 96 a3 a1 92 b1 74 5..-45'A.......t
33 36 74 b0 1c b5 1d 05 b3 50 e1 32 d0 46 03 03 36t......P.2.F..
e9 16 3f 40 11 a8 a8 99 69 19 c1 0b 80 c0 fa 45 ..?@....i......E
99 2b 17 43 33 67 4b 00 60 7d 22 c0 11 a8 a8 99 .+.C3gK.`}".....
69 e2 e1 f4 71 02 c4 98 b8 6a 27 26 5e 46 5c 3e i...q....j'&^F\>
8e 20 58 fd 7e 78 b8 b7 22 89 04 98 01 35 0e 93 . X.~x.."....5..
2f 23 2e 2d c8 a2 41 fa fc 11 93 18 8f a0 52 35 /#.-..A.......R5
9a 86 c9 96 91 9c 10 b9 31 88 fa 64 ac 5d 0c cd ........1..d.]..
9d 2c 26 31 1f 46 b3 50 d9 32 d3 c5 dc 80 0b 45 .,&1.F.P.2.....E
03 17 1a cd 53 a6 cf 17 5d 68 49 01 64 98 bc 6a ....S...]hI.d..j
7d 32 f2 32 eb ad 09 20 2c fd 7e 78 bb 10 4c 24 }2.2... ,.~x..L$
92 6a 8d 49 09 97 91 97 62 09 84 93 f5 f9 e2 e9 .j.I....b.......
23 08 d2 1d c7 13 54 69 b0 3f 18 80 62 e7 66 2a #.....Ti.?..b.f*
c1 18 69 33 39 32 73 9a 83 95 da 04 64 71 fa 10 ..i392s.....dq..
8b d0 16 6a 99 32 d2 33 82 17 23 8f d0 84 64 ac ...j.2.3..#...d.
5d 0c cd 9d 2c 23 8f d0 84 02 cd 53 26 5a 08 c4 ]...,#.....S&Z..
50 f1 d6 8f f0 36 6a 99 32 d3 43 52 74 10 b8 8a P....6j.2.CRt...
1e 3a d3 25 62 e8 66 6c e9 60 8a 1e 3a d0 36 6a .:.%b.fl.`..:.6j
99 32 d3 c5 c0 ec 87 11 c7 08 fc 6a e9 97 91 97 .2.........j....
03 b2 1c 47 3e eb f3 c5 ca 2e 42 16 c9 30 16 6a ...G>.....B..0.j
19 8d 57 91 97 28 b9 08 5b 3f 5f 9e 2e 3f ae b4 ..W..(..[?_..?..
24 92 60 20 d5 2a 65 e0                         $.` .*e.[/code]

[color=blue]S > C[/color]
[code]f1 07 23 2e 3f ae b4 24 9f af cf 17 26 31 1f 49 ..#.?..$....&1.I
30 30 6a ba 65 e4 65 c9 8c 47 d3 f5 f8 23 52 03 00j.e.e..G...#R.
17 3b 1f e3 61 a8 a6 99 69 a1 a9 3a 08 5d 48 0c .;..a...i..:.]H.
5c ec c9 58 ba 19 9b 3a 58 a4 06 2e 76 36 1a 8a \..X...:X...v6..
69 96 9e 2e 59 49 13 c5 a9 6c d4 3a 4d 9e 2e 0e i...YI...l.:M...
5a 8e 84 98 e4 6a 4f 4c bc 8c b8 39 6a 3a 1f af Z....jOL...9j:..
cf 17 01 81 f4 8b 0e a7 a6 a4 e4 d9 e2 e4 71 fa ..............q.
10 83 d8 ea 6a 1c a6 cf 17 11 43 c7 5a 3c 38 06 ....j.....C.Z<8.
35 0e 13 67 8b a9 01 8b 9d 92 60 44 d4 92 99 79 5..g......`D...y
19 75 20 31 73 b3 f5 f9 cd 41 cb a4 39 5d a3 93 .u 1s....A..9]..
e4 75 08 a2 4a 83 0a 45 06 30 06 72 64 e2 b6 31 .u..J..E.0.rd..1
00 c5 ce fd 00 ad 8c 40 31 73 bf 17 c3 b8 c4 03 .......@1s......
17 3b 40 35 8d a3 68 da a8 65 19 15 0c a3 22 a1 .;@5..h..e....".
94 64 54 35 de db 7f e3 28 c4 03 17 3b c0 68 c4 .dT5....(...;.h.
03 17 3b 6d b1 79 74 1f 1a c6 d1 b4 6d 54 32 8c ..;m.yt.....mT2.
8a 86 51 91 50 ca 32 2a 1a e3 60 d4 32 0e 22 f8 ..Q.P.2*..`.2.".
d8 59 10 8b 43 07 e0                            .Y..C..[/code]

[color=white]C > S[/color]
[code]66 01 00 1e                                      f...[/code]



As you can see, D2 has sent a 0x66 packet, witch it never used to.
But this is in responce to a S > C 0xAE packet witch is the 0x04 (compressed) packet (f1 c8 04)

The whole thing again but decompressed:
(useing the same decompression as last patch)



[code]af 01                                            ..[/code]

[color=white]C > S[/color]
[code]68 d3 d0 b5 2c d9 03 04 0b 00 00 00 XX XX XX XX h...,.......P.].
XX XX XX XX 00 72 74 74 74 68 65 61 68 65 61 68 .....rtttheaheah
65 61 68 72 00                                  eahr.[/code]

[color=blue]S > C[/color]
[code]06 7a 04 64 bb bc                               .z.d..[/code]

[color=blue]S > C[/color]
[code]02 5c                                           .\[/code]

[color=white]C > S[/color]
[code]6d 6d df ca 06 00 00 00 00 00 00 00 00          mm...........[/code]

[color=blue]S > C[/color]
[code]07 1f 7f ff ff ff c0                            .......[/code]

[color=white]C > S[/color]
[code]6b                                              k[/code]



[color=blue]S > C[/color] - decompressed (91 17)
[code] 59 5F 8C 02 20 04 72 74 74 74 68 65 61 68 65 61     Y_.. .rtttheahea
68 65 61 68 72 00 00 00 00 00                       heahr.....

AA 00 5F 8C 02 20 0C 69 59 F9 FF 1F                 .._.. .iY...

76 00 5F 8C 02 20                                   v._..

22 00 26 5F 8C 02 20 DB 00 01 1F 00                 ..&_.. .....

22 00 26 5F 8C 02 20 D9 00 01 1F 00                 ..&_.. .....

5E 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01     ^...............
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01     ................
01 01 01 01 01 00                                   ......

28 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00     (...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00                                .......

29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     )...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00                                                  .

5E 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01     ^...............
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01     ................
01 01 01 01 01 00                                   ......

28 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00     (...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00                                                  .[/code]



[color=blue]S > C[/color] - decompressed (f1 55 0f)
[code] 29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     )...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00                                                  .

0B 00 5F 8C 02 20                                   .._..

5F 01 00 00 00                                      _....

1D 00 1E                                            ...

1D 01 0A                                            ...

1D 02 14                                            ...

1D 03 19                                            ...

1E 07 00 37                                         ...7

1E 09 00 0A                                         ....

1E 0B 00 5C                                         ...\

1D 0C 01                                            ...

9D 06 1E 05 5F 8C 02 20 00 5F 8C 02 20 11 20 82     ...._.. ._.. . .
00 65 84 08 80 16 86 07 82 80 C0 C1 E1 3F           .e...........?

9D 06 20 06 2F 26 01 80 00 5F 8C 02 20 11 20 82     .. ./&..._.. . .
00 65 A4 0A 20 56 37 06 82 80 E0 00 06 06 FF 01     .e.. V7.........

9C 0E 14 10 17 93 00 D0 10 20 A2 00 65 08 00 80     ......... ..e...
06 17 03 02                                         ....

9C 0E 14 10 8B 29 00 F8 10 20 A2 00 65 08 02 80     .....)... ..e...
06 17 03 02                                         ....

9C 0E 14 10 C5 14 00 EC 10 20 A2 00 65 08 04 80     ......... ..e...
06 17 03 02                                         ....

9C 0E 14 10 62 0A 00 E6 10 20 A2 00 65 08 06 80     ....b.... ..e...
06 17 03 02                                         ....

9C 04 14 10 31 05 00 73 10 20 A2 00 65 00 72 42     ....1..s. ..e.rB
37 37 06 02                                         77..

9C 04 14 10 98 02 80 A9 10 20 A2 00 65 00 52 92     ......... ..e.R.
36 37 06 02                                         67..

23 00 5F 8C 02 20 01 00 00 00 00 00 00              #._.. .......

23 00 5F 8C 02 20 00 00 00 00 00 00 00              #._.. .......

1D 00 1E                                            ...

1D 01 0A                                            ...

1D 02 14                                            ...

1D 03 19                                            ...

1E 07 00 37                                         ...7

1E 09 00 0A                                         ....

1E 0B 00 5C                                         ...\

1D 0C 01                                            ...

95 37 00 05 00 17 00 00 00 00 00 00 00              .7...........

03 00 04 6D 79 6F 01 00 C7 AE 78 39                 ...mYo....X9

53 02 00 00 00 00 00 00 00 00                       S.........

07 78 03 98 03 01                                   .X....

07 70 03 90 03 01                                   .p....

07 70 03 98 03 01                                   .p....

07 78 03 90 03 01                                   .X....

07 80 03 90 03 01                                   ......

07 70 03 A0 03 01                                   .p....

07 78 03 98 03 01                                   .X....

07 80 03 98 03 01                                   ......

07 78 03 A0 03 01                                   .X....

07 80 03 A0 03 01                                   ......

15 00 5F 8C 02 20 79 11 14 12 01                    .._.. Y....

7E 11 00 00                                         ~...[/code]




[color=blue]S > C[/color] - decompressed ([size=4]f1 c8 04[/size])
[code] AE 25 00 B8 8C AE F7 B3 23 64 4C F8 78 8B B0 82     .%......#dL.X...
BB A5 A9 E1 02 BC 85 6F E7 06 E8 51 C6 92 E0 E1     .......o...Q....
C5 0E CA D9 CC 74 8C FD                             .....t..

AC 63 0A 00 3E 9A 00 52 11 09 12 80 0E 01           .c..>..R......

AA 01 63 0A 00 3E 0C 69 59 F9 FF 1F                 ..c..>.iY...

6D 63 0A 00 3E 52 11 09 12 80                       mc..>R....

51 02 14 00 BC DE 25 00 4C 11 10 12 02 00           Q.....%.L.....

0E 02 14 00 BC DE 03 00 02 00 00 00                 ............

AC C6 14 00 7C 98 00 53 11 21 12 80 10 11 40 00     ....|..S.!....@.

AA 01 C6 14 00 7C 0C 69 59 F9 FF 1F                 .....|.iY...

6D C6 14 00 7C 53 11 21 12 80                       m...|S.!..

AC 8C 29 00 F8 93 00 54 11 46 12 80 0E 01           ..)....T.F....

AA 01 8C 29 00 F8 0C 69 59 F9 FF 1F                 ...)...iY...

6D 8C 29 00 F8 54 11 46 12 80                       m.)..T.F..

51 02 29 00 78 9D 25 00 57 11 3D 12 02 00           Q.).X.%.W.....

0E 02 29 00 78 9D 03 00 02 00 00 00                 ..).X.......

51 02 53 00 F0 1A 25 00 4F 11 23 12 02 00           Q.S...%.O.#...

0E 02 53 00 F0 1A 03 00 02 00 00 00                 ..S.........

AC 31 05 00 8F 9B 00 72 11 1B 12 80 0E 01           .1.....r......

AA 01 31 05 00 8F 0C 69 59 F9 FF 1F                 ..1....iY...

6D 31 05 00 8F 72 11 1B 12 80                       m1...r....

51 02 01 A0 EB 45 0B 01 72 11 15 12 00 00           Q....E..r.....

51 02 02 80 D7 8B 25 00 5A 11 03 12 02 00           Q.....%.Z.....

0E 02 02 80 D7 8B 03 00 02 00 00 00                 ............

51 02 05 00 AF 37 25 00 68 11 1A 12 02 00           Q....7%.h.....

0E 02 05 00 AF 37 03 00 02 00 00 00                 .....7......

51 02 0A 00 5E 6F 24 00 78 11 08 12 00 00           Q...^o$.X.....

A8 00 5F 8C 02 20 0B 69 AC FC 0F                    .._.. .i...

1D 0C 01                                            ...

1D 00 1E                                            ...

1D 02 14                                            ...

AC 19 93 00 D0 96 00 8B 11 12 12 80 0E 01           ..............

AA 01 19 93 00 D0 0C 69 59 F9 FF 1F                 .......iY...

6D 19 93 00 D0 8B 11 12 12 80                       m.........

AC 33 26 01 80 98 00 A4 11 12 12 80 10 11 40 00     .3&...........@.

AA 01 33 26 01 80 0C 69 59 F9 FF 1F                 ..3&...iY...

6D 33 26 01 80 A4 11 12 12 80                       m3&.......

51 02 A6 00 E0 35 77 00 93 11 01 12 02 00           Q....5W.......

0E 02 A6 00 E0 35 03 01 02 00 00 00                 .....5......

51 02 4C 01 C0 6B 25 00 8B 11 F9 11 02 00           Q.L..k%.......

0E 02 4C 01 C0 6B 03 00 02 00 00 00                 ..L..k......

51 02 98 02 80 D7 25 00 86 11 0D 12  02 00          Q.....%.......[/code]





[color=blue]S > C[/color] - decompressed (F1 07 23)
[code] 0E 02 98 02 80 D7 03 00 02 00 00 00                 ............

51 02 31 05 00 8F 25 00 9F 11 02 12 02 00           Q.1...%.......

0E 02 31 05 00 8F 03 00 02 00 00 00                 ..1.........

AC 67 8C 02 20 98 00 73 11 44 12 80 10 11 40 00     .g.. ..s.D....@.

AA 01 67 8C 02 20 0C 69 59 F9 FF 1F                 ..g.. .iY...

6D 67 8C 02 20 73 11 44 12 80                       mg.. s.D..

51 02 63 0A 00 3E 4E 00 6B 11 23 12 00 00           Q.c..>N.k.#...

51 02 C6 14 00 7C 25 00 79 11 43 12 02 00           Q....|%.Y.C...

0E 02 C6 14 00 7C 03 00 02 00 00 00                 .....|......

51 02 8C 29 00 F8 23 00 6C 11 40 12 00 00           Q..)..#.l.@...

51 02 19 93 00 D0 27 00 7D 11 22 12 00 00           Q.....'.}.....

51 02 33 26 01 80 81 01 84 11 21 12 00 00           Q.3&......!...

51 02 67 8C 02 20 25 00 94 11 25 12 02 00           Q.g.. %...%...

0E 02 67 8C 02 20 03 00 02 00 00 00                 ..g.. ......

1D 00 1E                                            ...

1D 01 0A                                            ...

1D 02 14                                            ...

1D 03 19                                            ...

1E 07 00 37                                         ...7

1E 09 00 0A                                         ....

1E 0B 00 5C                                         ...\

1D 0C 01                                            ...

48 00 00 5F 8C 02 20 00 00 00 00                    H.._.. ....

04                                                  .

48 00 00 5F 8C 02 20 00 00 00 00                    H.._.. ....

5B 24 00 5F 8C 02 20 04 72 74 74 74 68 65 61 68     [$._.. .rtttheah
65 61 68 65 61 68 72 00 01 00 FF FF 00 00 00 00     eaheahr.........
00 00 00 00                                         ....

65 5F 8C 02 20 00 00                                e_.. ..

8D 5F 8C 02 20 FF FF                                ._.. ..

5A 02 04 00 00 00 00 00 72 74 74 74 68 65 61 68     Z.......rtttheah
65 61 68 65 61 68 72 00 73 70 61 78 5B 73 63 2D     eaheahr.spaX[sc-
64 5D 00 00 00                                      d....[/code]


[color=white]C > S[/color]
[code]66 01 00 1e                                      f...[/code]







You may have noticed that both packets have a format of:
[color=yellow]
(BYTE) Packet ID
(WORD) Lengh Of Data (Discluding this header)
(VOID) Data
[/color]

But im not sure how:
[code] AE 25 00 B8 8C AE F7 B3 23 64 4C F8 78 8B B0 82     .%......#dL.X...
BB A5 A9 E1 02 BC 85 6F E7 06 E8 51 C6 92 E0 E1     .......o...Q....
C5 0E CA D9 CC 74 8C FD                             .....t..[/code]
makes:
[code]66 01 00 1e                                      f...[/code]


But after this point when d2 is now idleing in the game, as long as the 0x66 was correct, the client will continue to recv 0xAE packets and respond with an 0x66.
It seems that incorrect 0x66 packets will be ignored, untill the client times out. :(


Then d2 continues to recv/respond  0xAE/0x66 packet every 2 - 4 seconds:


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compressed:
[code] 47 04 A2 34 0E 83 F1 48 1D 00 A1 80 43 07 66 61     G..4...H....C.fa
34 7F 14 43 11 C0 16 05 02 58 6B 1C 00 9A C1 48     4..C.....Xk....H
0D 05 12 60 5E 17 C8 80 4C 1E 89 42 BB 40 04 32     ...`^...L..B.@.2
02 E0 82 07 00 D9 02 17 C8 92 A1 12 34 81 90 70     ............4..p
00 07 80 CC 3A 00 C0                                ....:..[/code]
decompressed:
[code] AE 34 00 A6 CC 42 C7 88 5D 2E C8 0F DB 98 41 F4     .4...B........A.
18 9D B2 39 FE 77 9A 6D 42 A3 DF 31 EF 5B E2 AF     ...9.W.mB..1.[..
27 38 49 14 4F F6 B9 CF A5 A4 A2 F1 E8 52 E8 6F     '8I.O........R.o
A1 C5 2F 81 F9 7C                                   ../..|[/code]

Sent from d2:
[code]66 05 00 df d6 17 b9 bf[/code]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compressed:
[code] 4E 04 A2 34 D0 2D 8B A1 D8 0F 21 0D 49 80 0D 28     N..4.-....!.I..(
DA 42 8A 40 5C 18 02 D2 68 E6 0C 80 F9 3C 34 03     .B.@\...h....<4.
C0 58 41 0F 41 04 2E 8A 84 09 4C 14 95 50 98 90     .XA.A.....L..P..
02 58 7C 41 8A 60 98 71 18 05 90 26 D8 0D 00 C1     .X|A.`.q...&....
00 15 03 E3 12 F0 03 5A 0B C0 52 41 ED E0           .......Z..RA..[/code]
decompressed:
[code] AE 34 00 10 EC 59 24 91 C0 11 31 5C 0D 74 C2 42     .4...Y$...1\.t.B
9E BB B7 3B 7A BD A8 43 FB C9 B6 B0 83 CF EE 46     ...;Z..C.......F
A2 50 B3 55 06 0B A0 39 29 B8 44 AF 78 5D 4B 9A     .P.U...9).D.X.K.
FF 8D 84 CD B4 CB 0B                                .......[/code]

Sent from d2:
[code]66 05 00 5c cd 79 ad c6[/code]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compressed:
[code] 44 04 A2 34 29 09 C0 0C 3C 17 82 00 55 20 82 00     D..4)...<...U ..
72 78 A8 16 06 62 51 48 A4 13 83 58 26 33 1D 88     rX...bQH...X&3..
03 C1 A8 E0 50 69 60 68 07 44 60 1A 05 12 08 62     ....Pi`h.D`....b
50 27 0A 40 70 47 05 80 20 C0 12 03 40 60 57 07     P'.@pG.. ...@`W.
85 A2 A8 F8                                         ....[/code]
decompressed:
[code] AE 34 00 E1 3D 5C 26 5A CD E5 B0 CD 22 51 68 B6     .4...\&Z.....Qh.
F9 28 4D 4D DC FE AF 0F 7E A0 51 70 18 3F 14 6D     .(MM....~.Qp.?.m
FB C7 0E 8D 9B 0A 2E 38 B1 E1 A5 35 B6 86 09 AD     .......8...5....
BF BB 58 C9 64 55                                   ..X.dU[/code]

Sent from d2:
[code]66 05 00 f1 d6 fd 56 68[/code]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compressed:
[code] 6B 0E 61 E0 C4 03 17 3B 09 B9 D4 39 87 83 10 0C     k.a....;...9....
5C EC 25 E7 50 E6 1E 0C 40 31 73 B0 9B 73 A8 73     \.%.P...@1s..s.s
0F 06 20 18 B9 D8 4B B9 D4 12 88 D0 68 4C 0C 01     .. ...K.....hL..
E8 FC 05 0B C0 4C 4C 07 27 A1 AC 4F 19 47 00 1A     .....LL.'..O.G..
01 0C 05 92 C8 57 07 E5 81 B8 7A 19 C6 20 2A 42     .....W....Z.. *B
81 F6 44 67 07 C3 11 89 B8 6C 11 5A 68 E8 1D A2     ..Dg.....l.Zh...
19 01 40 4F 1F CB A4 18 27 0D C0                    ..@O....'..[/code]
decompressed:
[code] 22 00 26 5F 8C 02 20 DB 00 00 1F 00                 ..&_.. .....

22 00 26 5F 8C 02 20 D9 00 00 1F 00                 ..&_.. .....

22 00 26 5F 8C 02 20 DB 00 01 1F 00                 ..&_.. .....

22 00 26 5F 8C 02 20 D9 00 01 1F 00                 ..&_.. .....

AE 34 00 BF 31 F2 27 93 9B 96 9A 3A C6 6C FE 3E     .4..1.'....:.l.>
65 77 8D 71 09 4B 63 E7 CC 62 75 83 6A 5F 9C C2     eW.q.Kc..bu.j_..
A8 13 34 01 CB 5F 0B 17 1B D3 14 14 1F C8 07 61     ..4.._.........a
B2 DD 98 95 B8 B1                                   ......[/code]

Sent from d2:
[code]66 05 00 bf 71 51 bb fa[/code]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compressed:
[code] 44 04 A2 34 14 87 84 41 18 02 03 A0 08 18 07 50     D..4...A.......P
1C 07 00 B8 D4 10 88 10 5E 06 82 80 32 42 29 00     ........^...2B).
A0 C6 0A 80 98 8C 10 43 F3 78 60 12 01 B8 52 72     .......C.X`...Rr
E9 30 19 95 C2 4A 23 C0 44 D0 C8 28 8A 21 80 33     .0...J#.D..(.!.3
05 D0 64 5D                                         ..d.[/code]
decompressed:
[code] AE 34 00 B3 26 E2 0E 71 C7 71 F2 7D 8E A5 9E 70     .4..&..q.q.}...p
D0 A2 BA A3 DE BD 06 42 88 F5 B4 9A 34 CF 2A 17     .......B....4.*.
00 F2 36 C4 E1 01 95 31 BE 58 D7 07 51 AB 14 61     ..6....1.X..Q..a
41 41 F2 F9 EE BD                                   AA....[/code]

Sent from d2:
[code]66 05 00 96 c2 2e 8d b0[/code]



Other than keep a client 'alive' ingame, this packet was made to screw us over, im sure of it :P
August 8, 2005, 4:31 AM
Trojan
Blizzard's new anti-hack system called "Warden" was patched into D2 in 1.11 (I believe it was also added to WoW in 1.6.1). A search for the string literal "WardenClient.cpp" in D2client.dll or WoW.exe will show this.

Warden requests are encrypted with RC4 and sent in the payload of the 0xAE packet. The client responds with an RC4 encrypted response in the 0x66 packet. The requests generally contain a list of DLLs to look for in memory (d2jsp, d2hackit, r2d2, d2maphack), and the replies state whether they were found or not.

Be aware that Warden downloads up-to-date anti-hack code upon game connection (the first 0xAE packet has the name of such a ".mod" file), and blizzard can transparently change this server-side without a clientside patch. So far I have only seen one such .mod file and it contains code that allows them to search for DLLs such as the ones I listed above.

They have also added memory-checking capabilities to the (received)0x8F and (sent)0x6D packet pair.
August 8, 2005, 5:38 AM
LivedKrad
Does this mean we're screwed? Has the compression scheme changed? This is not good!
August 9, 2005, 8:50 PM
UserLoser.
[quote author=Trojan link=topic=11756.msg123546#msg123546 date=1123479486]
Blizzard's new anti-hack system called "Warden" was patched into D2 in 1.11 (I believe it was also added to WoW in 1.6.1). A search for the string literal "WardenClient.cpp" in D2client.dll or WoW.exe will show this.

Warden requests are encrypted with RC4 and sent in the payload of the 0xAE packet. The client responds with an RC4 encrypted response in the 0x66 packet. The requests generally contain a list of DLLs to look for in memory (d2jsp, d2hackit, r2d2, d2maphack), and the replies state whether they were found or not.

Be aware that Warden downloads up-to-date anti-hack code upon game connection (the first 0xAE packet has the name of such a ".mod" file), and blizzard can transparently change this server-side without a clientside patch. So far I have only seen one such .mod file and it contains code that allows them to search for DLLs such as the ones I listed above.

They have also added memory-checking capabilities to the (received)0x8F and (sent)0x6D packet pair.
[/quote]

I was wondering what that was a while ago...I could have sworn I saw it in Brood War a while ago..or maybe that was just WoW like you said
August 10, 2005, 12:30 AM
LivedKrad
So basically, the 0xAE packet is just a plaintext list of "no no DLLs" that have been encrypted with the RC4 cipher?
August 10, 2005, 7:34 AM
l2k-Shadow
I'm sure this has already been covered but I spent about 30 minutes working with 0x68, the response to 0xAE (now 0xAF)  packet and came out with the following, and so far working, conclusion that I posted in comment on bnetdocs.

http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=447

Hope that helps updating your bot.
August 10, 2005, 9:08 PM
kamakazie
[quote author=l2k-Shadow link=topic=11756.msg123866#msg123866 date=1123708116]
I'm sure this has already been covered but I spent about 30 minutes working with 0x68, the response to 0xAE (now 0xAF)  packet and came out with the following, and so far working, conclusion that I posted in comment on bnetdocs.

http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=447

Hope that helps updating your bot.
[/quote]

Just some notes: 0x91A519B6 is hardcoded into the game. 0xED5DCC50 results from calling Fog.dll#10227 and then doing some arithmetic on the return value to get the value. As for the extra bytes in the username, I doubt they matter much. You could probably get away with filling in the rest of bytes with nulls. There just needs to be 16 byte since there are no packet lengths and thus the length of the packet must be fixed.
August 11, 2005, 1:12 AM
l2k-Shadow
All true, but that's the way the client does it so I'd figure it'd be best to do it that way.
August 11, 2005, 1:47 AM
hi.times
I'm getting a timeout after about 15-20 seconds in game. I'm assuming this is due to not sending the 0x66 warden packet, or am i the only one?

I tried filling the packet with nulls, with same result. Through debugging and assembler analysis, i was able to locate a few different functions which are involved with sending 0x66, however i have not yet determined the specific code to generate the data contents.

From what i have seen, the format is this.

BYTE 0x66  - Packet ID
BYTE XX    - Variable data size, usually 5.
BYTE 00    - Null
VARIABLE  - Data contents

As mentioned earlier in this thread, this packet is sent in response to 0xAE. I will continue my analysis, and attempt to reverse the functions used to generate this packet.

August 12, 2005, 2:20 PM
kamakazie
[quote author=hi.times link=topic=11756.msg124084#msg124084 date=1123856423]
I'm getting a timeout after about 15-20 seconds in game. I'm assuming this is due to not sending the 0x66 warden packet, or am i the only one?

I tried filling the packet with nulls, with same result. Through debugging and assembler analysis, i was able to locate a few different functions which are involved with sending 0x66, however i have not yet determined the specific code to generate the data contents.

From what i have seen, the format is this.

BYTE 0x66  - Packet ID
BYTE XX    - Variable data size, usually 5.
BYTE 00    - Null
VARIABLE  - Data contents

As mentioned earlier in this thread, this packet is sent in response to 0xAE. I will continue my analysis, and attempt to reverse the functions used to generate this packet.
[/quote]

Have any offsets others can take a look at?
August 12, 2005, 5:33 PM
hi.times
I did a few stack traces, and came up with these. I'm detailing the stack from top to bottom order.

This is all in d2client.dll

I detected a complete 0x66 packet was constructed in this procedure and passed
as the first argument to *D2Client.6FB23260*, which in turn just passes it to the d2net send procedure. ESP is a pointer to the packet buffer, so when you see [ESP+X] dereference statements it's accessing the packet buffer.

[code]
6FB235A0  /$ 55            PUSH    EBP
6FB235A1  |. 8BEC          MOV    EBP, ESP
6FB235A3  |. 83E4 F8        AND    ESP, FFFFFFF8
6FB235A6  |. 81EC 04020000  SUB    ESP, 204
6FB235AC  |. 85C9          TEST    ECX, ECX
6FB235AE  |. 53            PUSH    EBX
6FB235AF  |. 56            PUSH    ESI
6FB235B0  |. 57            PUSH    EDI
6FB235B1  |. 7C 4C          JL      SHORT D2Client.6FB235FF
6FB235B3  |. 81F9 FD010000  CMP    ECX, 1FD
6FB235B9  |. 7F 44          JG      SHORT D2Client.6FB235FF
6FB235BB  |. 8D59 03        LEA    EBX, DWORD PTR [ECX+3]
6FB235BE  |. 81FB 00020000  CMP    EBX, 200
6FB235C4  |. 76 07          JBE    SHORT D2Client.6FB235CD
6FB235C6  |. 68 43040000    PUSH    443
6FB235CB  |. EB 37          JMP    SHORT D2Client.6FB23604
6FB235CD  |> 8B75 08        MOV    ESI, DWORD PTR [EBP+8]
6FB235D0  |. 66:894C24 11  MOV    WORD PTR [ESP+11], CX
6FB235D5  |. 8BC1          MOV    EAX, ECX
6FB235D7  |. C1E9 02        SHR    ECX, 2
6FB235DA  |. C64424 10 66  MOV    BYTE PTR [ESP+10], 66                    ; Packet ID
6FB235DF  |. 8D7C24 13      LEA    EDI, DWORD PTR [ESP+13]
6FB235E3  |. F3:A5          REP    MOVS DWORD PTR ES:[EDI], DWORD P>
6FB235E5  |. 8BC8          MOV    ECX, EAX
6FB235E7  |. 83E1 03        AND    ECX, 3
6FB235EA  |. F3:A4          REP    MOVS BYTE PTR ES:[EDI], BYTE PTR>
6FB235EC  |. 8D4C24 10      LEA    ECX, DWORD PTR [ESP+10]
6FB235F0  |. 51            PUSH    ECX                              ; Complete 0x66 packet pointer
6FB235F1  |. E8 6AFCFFFF    CALL    D2Client.6FB23260                ; Calls d2net.dll send function
6FB235F6  |. 5F            POP    EDI
6FB235F7  |. 5E            POP    ESI
6FB235F8  |. 5B            POP    EBX
6FB235F9  |. 8BE5          MOV    ESP, EBP
6FB235FB  |. 5D            POP    EBP
6FB235FC  |. C2 0400        RETN    4
[/code]

Now this is the procedure preceding the one above in the call stack.

[code]
6FB02A30  . 8B4424 04      MOV    EAX, DWORD PTR [ESP+4]
6FB02A34  . 8B4C24 08      MOV    ECX, DWORD PTR [ESP+8]
6FB02A38  . 50            PUSH    EAX
6FB02A39  . E8 620B0200    CALL    D2Client.6FB235A0
[/code]

It just appears to setup the various registers. Note eax contains a pointer to the actual data portion of the 0x66 packet, and ecx was 5 (the length of the data when i debugged it).

This is the last procedure i managed to trace back to, it gets a little hazy around here. When i was steping through the code it was jumping around quite alot, and seemed to lead to dead ends. But i'm pretty sure this has something todo with it.

I just need to spend some more time analysing it, but if anyone else wants to help, that would be great, more brains the better.

[code]
6FB02E10  /$ 51            PUSH    ECX
6FB02E11  |. A1 10C3BC6F    MOV    EAX, DWORD PTR [6FBCC310]
6FB02E16  |. 85C0          TEST    EAX, EAX
6FB02E18  |. 0F84 83000000  JE      D2Client.6FB02EA1
6FB02E1E  |. 56            PUSH    ESI
6FB02E1F  |. 90            NOP
6FB02E20  |> A1 0CC3BC6F    /MOV    EAX, DWORD PTR [6FBCC30C]
6FB02E25  |. 85C0          |TEST    EAX, EAX
6FB02E27  |. 74 36          |JE      SHORT D2Client.6FB02E5F
6FB02E29  |. 8B48 0C        |MOV    ECX, DWORD PTR [EAX+C]
6FB02E2C  |. 8B01          |MOV    EAX, DWORD PTR [ECX]
6FB02E2E  |. FF50 04        |CALL    DWORD PTR [EAX+4]
6FB02E31  |. 8B35 0CC3BC6F  |MOV    ESI, DWORD PTR [6FBCC30C]
6FB02E37  |. E8 248A0300    |CALL    D2Client.6FB3B860
6FB02E3C  |. A1 0CC3BC6F    |MOV    EAX, DWORD PTR [6FBCC30C]
6FB02E41  |. 85C0          |TEST    EAX, EAX
6FB02E43  |. 8BF0          |MOV    ESI, EAX
6FB02E45  |. 74 18          |JE      SHORT D2Client.6FB02E5F
6FB02E47  |. 50            |PUSH    EAX
6FB02E48  |. E8 43FBFAFF    |CALL    D2Client.6FAB2990
6FB02E4D  |. 6A 00          |PUSH    0
6FB02E4F  |. 68 17010000    |PUSH    117
6FB02E54  |. 68 6061B86F    |PUSH    D2Client.6FB86160              ;  ASCII "..\Source\D2Client\WARDEN\WardenClient.cpp"
6FB02E59  |. 56            |PUSH    ESI
6FB02E5A  |. E8 2D8FFBFF    |CALL    <JMP.&Storm.#403>
6FB02E5F  |> A1 10C3BC6F    |MOV    EAX, DWORD PTR [6FBCC310]
6FB02E64  |. B9 EC9DBA6F    |MOV    ECX, D2Client.6FBA9DEC
6FB02E69  |. A3 0CC3BC6F    |MOV    DWORD PTR [6FBCC30C], EAX
6FB02E6E  |. C705 10C3BC6F >|MOV    DWORD PTR [6FBCC310], 0
6FB02E78  |. 8D70 0C        |LEA    ESI, DWORD PTR [EAX+C]
6FB02E7B  |. FF50 10        |CALL    DWORD PTR [EAX+10]
6FB02E7E  |. 8B0D F448B96F  |MOV    ECX, DWORD PTR [6FB948F4]
6FB02E84  |. 8906          |MOV    DWORD PTR [ESI], EAX
6FB02E86  |. 894C24 04      |MOV    DWORD PTR [ESP+4], ECX
6FB02E8A  |. 8B0E          |MOV    ECX, DWORD PTR [ESI]
6FB02E8C  |. 8B11          |MOV    EDX, DWORD PTR [ECX]
6FB02E8E  |. 6A 04          |PUSH    4
6FB02E90  |. 8D4424 08      |LEA    EAX, DWORD PTR [ESP+8]
6FB02E94  |. 50            |PUSH    EAX
6FB02E95  |. FF12          |CALL    DWORD PTR [EDX]
6FB02E97  |. A1 10C3BC6F    |MOV    EAX, DWORD PTR [6FBCC310]
6FB02E9C  |. 85C0          |TEST    EAX, EAX
6FB02E9E  |.^75 80          \JNZ    SHORT D2Client.6FB02E20
6FB02EA0  |. 5E            POP    ESI
6FB02EA1  |> 59            POP    ECX
6FB02EA2  \. C3            RETN
[/code]
August 12, 2005, 6:55 PM
LivedKrad
According to monitoring decompressed packets I receive, I never see 0xAE at all. Is there something I'm doing wrong?
August 13, 2005, 5:15 PM
NetNX
Definitely.
August 13, 2005, 11:17 PM
LivedKrad
Additionally, the 0x6D ping packet sent to me by Arta (from shadow) seems to be wrong. The data my Diablo 2 sends is:

(DWORD) TC
(DWORD) Unknown - (not null)
(DWORD) NULL
August 14, 2005, 1:19 AM
hi.times
[quote author=LivedKrad.fe link=topic=11756.msg124242#msg124242 date=1123982359]
Additionally, the 0x6D ping packet sent to me by Arta (from shadow) seems to be wrong. The data my Diablo 2 sends is:

(DWORD) TC
(DWORD) Unknown - (not null)
(DWORD) NULL
[/quote]

Thats the new 0x6D format. I have found from packet logging that the first byte of the second DWORD contains a value, and the remaining 3 BYTES are null. So this is the format i use.

(BYTE)      0x6D    - ID
(DWORD) Random - Cookie
(DWORD) Random - First byte has a value, the rest are nulls.
(DWORD) Null        - Unknown

I believe you have to update the ping format, and send the new 0x66 warden packet to stay in the game.
August 14, 2005, 7:51 AM
LivedKrad
So you must send the 0x66 packet? I thought 0xAE was received first and then replied to..
Again I'm no sure, because I actually never receive 0xAE, so maybe I'm supposed to send 0x66 first?
August 14, 2005, 3:37 PM
hi.times
[quote author=LivedKrad.fe link=topic=11756.msg124281#msg124281 date=1124033845]
So you must send the 0x66 packet? I thought 0xAE was received first and then replied to..
Again I'm no sure, because I actually never receive 0xAE, so maybe I'm supposed to send 0x66 first?
[/quote]

You send 0x66 once you have entered a game, and receive compressed content containing 0xAE. You should receive it about every 5 seconds, around about the same interval used for the 0x6D keepalive.

If you are not receiving 0xAE, you have 2 possible problems, either you did not successfully enter the game, or a problem exists with your decoding/parsing routines.
August 14, 2005, 4:09 PM
NetNX
[quote author=hi.times link=topic=11756.msg124284#msg124284 date=1124035772]
[quote author=LivedKrad.fe link=topic=11756.msg124281#msg124281 date=1124033845]
So you must send the 0x66 packet? I thought 0xAE was received first and then replied to..
Again I'm no sure, because I actually never receive 0xAE, so maybe I'm supposed to send 0x66 first?
[/quote]

You send 0x66 once you have entered a game, and receive compressed content containing 0xAE. You should receive it about every 5 seconds, around about the same interval used for the 0x6D keepalive.

If you are not receiving 0xAE, you have 2 possible problems, either you did not successfully enter the game, or a problem exists with your decoding/parsing routines.
[/quote]

Eactly; This kinda makes me want to learn asm... I feel so incapible :'(
August 14, 2005, 4:17 PM
-MichaeL-
why do we need to know about d2 game packets? i mean who really wants to play that old crappy game anymore let alone waste time making bots and or hacks for it -.-
August 14, 2005, 5:36 PM
UserLoser.
I'm curious as to how Starcraft utilizes the WardenClient, does anybody have any information about it?  I took a look at battle.snp, and there obviously is a WardenClient 'feature' in it.  It's called right after battle.snp creates KeepAliveThreadProc...I just can't think of any messages that could do this in Starcraft (and when it could do it)...
August 14, 2005, 7:19 PM
Forged
[quote author=-MichaeL- link=topic=11756.msg124292#msg124292 date=1124041017]
why do we need to know about d2 game packets? i mean who really wants to play that old crappy game anymore let alone waste time making bots and or hacks for it -.-
[/quote]
As you can see by the screen shot below 22,000 of the 38,000 total games going on at the moment are diablo 2.  So I guess majority of battle.net users that still game and don't just sit in chat care about the game...

[img]http://www.securegamers.com/Forged/d2s.JPG[/img]
August 14, 2005, 7:39 PM
l2k-Shadow
[quote author=hi.times link=topic=11756.msg124267#msg124267 date=1124005886]
[quote author=LivedKrad.fe link=topic=11756.msg124242#msg124242 date=1123982359]
Additionally, the 0x6D ping packet sent to me by Arta (from shadow) seems to be wrong. The data my Diablo 2 sends is:

(DWORD) TC
(DWORD) Unknown - (not null)
(DWORD) NULL
[/quote]

Thats the new 0x6D format. I have found from packet logging that the first byte of the second DWORD contains a value, and the remaining 3 BYTES are null. So this is the format i use.

(BYTE)      0x6D    - ID
(DWORD) Random - Cookie
(DWORD) Random - First byte has a value, the rest are nulls.
(DWORD) Null        - Unknown

I believe you have to update the ping format, and send the new 0x66 warden packet to stay in the game.
[/quote]

That is quite odd, when I packet logged 0x6D last time, I always received a null value for the 2nd DWORD, they must have changed something since then I suppose. Also, this may sound nub, but the RC4 cipher which is apparently used to do some kind of encryption in the 0xAE - 0x66 relation is open source, so it'd be quite easy to break it if someone knows the encryption key... does anyone know if D2GS assigns the encryption key in the 0xAE packet or is it hardcoded inside the client?
August 15, 2005, 5:18 AM
NetNX
It wouldn't matter anyway since theres more then just the RC4 cipher thats going on there.. I'm sure the key is assigned in the first packet but there is much more involved ...
August 15, 2005, 6:08 PM
hi.times
I had another look at this 0x66 packet generation, and as far as i can tell this is the entry point procedure for sending 0x66 (does not include the code to generate the packet's data contents, thats somewhere before this in the call stack).

Note - ; DATA XREF: .rdata:6FB86114 ; only referenced through data (odd?)

[code]
.text:6FB02A30 sub_6FB02A30    proc near              ; DATA XREF: .rdata:6FB86114
.text:6FB02A30
.text:6FB02A30 arg_0          = dword ptr  4
.text:6FB02A30 arg_4          = dword ptr  8
.text:6FB02A30
.text:6FB02A30                mov    eax, [esp+arg_0]
.text:6FB02A34                mov    ecx, [esp+arg_4]
.text:6FB02A38                push    eax
.text:6FB02A39                call    loc_6FB235A0          ; This procedure constructs 0x66 packet, ESP+10h is packet start position, it then procedes to call the d2net send function(eventually).
.text:6FB02A3E                retn    8
[/code]

Now i ran into a problem doing a stack trace from this procedure, at first i thought i was doing something wrong, but it looks like the stack trace didn't work because this procedure isn't directly called by code.

Instead it looks as if a pointer to this procedure is stored as data and called through the data reference. If you use IDA's show xref's command on the procedure above, you will notice it's only called through these data references. I'm hoping maybe someone more skilled than me at debugging/asm could take a look at it and give their opinion.

It makes it extremely hard to trace the call stack when these data based procedure pointers are used. I also have a funny feeling that it's dynamically loading/executing code in some way, because of the way some of the offsets are changing.

Here is some code below to calculate the variable length of the 0xAE packet, which i'm sure we will need when we determine how to decode it's contents.

[code]
  // Added in 1.11
  // Assumes buf is a pointer to the data portion of the 0xAE packet
_asm
{
mov  ebx ,  buf ; copy buf pointer into ebx
mov  cx ,  WORD PTR [ebx+0] ; move first word into cx(counter)
movzx edx ,  cx ; move cx into 32bit register with zero extend
add  edx ,  2 ; increment length by 2
mov   eax  ,  edx ; return size in eax
}
[/code]
August 28, 2005, 8:44 PM
NetNX
[quote author=hi.times link=topic=11756.msg125817#msg125817 date=1125261895]
I had another look at this 0x66 packet generation, and as far as i can tell this is the entry point procedure for sending 0x66 (does not include the code to generate the packet's data contents, thats somewhere before this in the call stack).

Note - ; DATA XREF: .rdata:6FB86114 ; only referenced through data (odd?)

[code]
.text:6FB02A30 sub_6FB02A30    proc near              ; DATA XREF: .rdata:6FB86114
.text:6FB02A30
.text:6FB02A30 arg_0          = dword ptr  4
.text:6FB02A30 arg_4          = dword ptr  8
.text:6FB02A30
.text:6FB02A30                mov    eax, [esp+arg_0]
.text:6FB02A34                mov    ecx, [esp+arg_4]
.text:6FB02A38                push    eax
.text:6FB02A39                call    loc_6FB235A0          ; This procedure constructs 0x66 packet, ESP+10h is packet start position, it then procedes to call the d2net send function(eventually).
.text:6FB02A3E                retn    8
[/code]

Now i ran into a problem doing a stack trace from this procedure, at first i thought i was doing something wrong, but it looks like the stack trace didn't work because this procedure isn't directly called by code.

Instead it looks as if a pointer to this procedure is stored as data and called through the data reference. If you use IDA's show xref's command on the procedure above, you will notice it's only called through these data references. I'm hoping maybe someone more skilled than me at debugging/asm could take a look at it and give their opinion.

It makes it extremely hard to trace the call stack when these data based procedure pointers are used. I also have a funny feeling that it's dynamically loading/executing code in some way, because of the way some of the offsets are changing.

Here is some code below to calculate the variable length of the 0xAE packet, which i'm sure we will need when we determine how to decode it's contents.

[code]
  // Added in 1.11
  // Assumes buf is a pointer to the data portion of the 0xAE packet
_asm
{
mov  ebx ,  buf ; copy buf pointer into ebx
mov  cx ,  WORD PTR [ebx+0] ; move first word into cx(counter)
movzx edx ,  cx ; move cx into 32bit register with zero extend
add  edx ,  2 ; increment length by 2
mov   eax  ,  edx ; return size in eax
}
[/code]
[/quote]

Damnit. Bnet is learning from their horrible mistakes but ive almost got 0x66 and 0xAE licked with a temporary solution! :D
August 29, 2005, 5:31 PM
DarkMinion
I'm working on updating DMBot to allow it to join D2 games....what exactly has changed with the accept sequence on BNETDocs?

I am currently unable to get on D2 to packet log it myself else I wouldn't ask

(lost my CDs)
August 31, 2005, 6:36 PM
NetNX
Aim me: Grim Reaper Ice
-or-
MSN: NetNX@hotmail.com

I'll send you the iso's

Although not much has changed the only real changes since 1.10 have been the increase in packet id's by one in the D2GS Protocol and the implementation of wardenclient.cpp to piss everyone off :P
September 1, 2005, 1:20 AM
NetNX
I finally got around warden although i need a recompression dll :D 9$ for it if anyone wants to take up the task of doing it ;D

https://davnit.net/bnet/vL/phpbbs/index.php?topic=12692.0 <- Replys go here
September 2, 2005, 2:50 PM
kamakazie
[quote author=NetNX link=topic=11756.msg126642#msg126642 date=1125672656]
I finally got around warden although i need a recompression dll :D 9$ for it if anyone wants to take up the task of doing it ;D

https://davnit.net/bnet/vL/phpbbs/index.php?topic=12692.0 <- Replys go here
[/quote]

What do you mean by recompression dll? I'd gladly help if you share your research, now that I have time to investigate warden.
September 2, 2005, 5:00 PM
NetNX
[quote author=dxoigmn link=topic=11756.msg126651#msg126651 date=1125680439]
[quote author=NetNX link=topic=11756.msg126642#msg126642 date=1125672656]
I finally got around warden although i need a recompression dll :D 9$ for it if anyone wants to take up the task of doing it ;D

https://davnit.net/bnet/vL/phpbbs/index.php?topic=12692.0 <- Replys go here
[/quote]

What do you mean by recompression dll? I'd gladly help if you share your research, now that I have time to investigate warden.
[/quote]

D2GS.dll decopresses incoming packets from the D2GS Server i need a program that will allow me to recompress them...
September 2, 2005, 5:33 PM
Quarantine
...reverse the effects of the decompression code..duh.
September 2, 2005, 6:24 PM
kamakazie
[quote author=NetNX link=topic=11756.msg126655#msg126655 date=1125682425]
D2GS.dll decopresses incoming packets from the D2GS Server i need a program that will allow me to recompress them...
[/quote]

Is that necessary to bypasse/emulate warden? If so, explain please.

[quote author=Warrior link=topic=11756.msg126667#msg126667 date=1125685490]
...reverse the effects of the decompression code..duh.
[/quote]

Thank you for your contribution.
September 2, 2005, 6:29 PM
HdxBmx27
[quote author=NetNX link=topic=11756.msg126655#msg126655 date=1125682425]
D2GS.dll decopresses incoming packets from the D2GS Server i need a program that will allow me to recompress them...
[/quote]
Thats un-needed.
All* Packets sent from the client to the server are un-compressed.
please explain why you want this.
~-~(HDX)~-~
September 2, 2005, 6:44 PM
NetNX
to stop packets being send from the server to d2 and change them? and/or create my own server :D
September 2, 2005, 7:26 PM
Quarantine
Hey..no problem.
September 2, 2005, 8:27 PM
NetNX
woot i did it PSCODE OWNS


Edit: Goddamnit... Dosen't work right :'(
September 2, 2005, 9:43 PM
Ringo
Hi
Iv had alot to do lately so havent had noooo time for bnet.
But for almost a week now (Since last friday) server side warden has been turned off.
I updated 4 C > S packets in my chat bot, and it works as flawless as it did in 1.10!
[img]http://www.geocities.com/ringomail711/1.11.gif[/img]
Shame i got no time for d2 at the moment :(
September 8, 2005, 4:52 PM
LivedKrad
[quote author=Ringo link=topic=11756.msg115815#msg115815 date=1118802203]
D2 1.10 Level ID's/Map sizes
ID  = Level's ID
sX  = Size X
sY  = Size Y
osX = Off Set Size X
osY = Off Set Size Y

Note:
Each set of 4 means that the area in question can be differnt (4 possible sides) in witch the X and Y and offset X and Y will give you an idea of the total square size of the map/level in witch the area sits;

Example;
Town is always right sided (WP on the right)
Bloodmoor has a 4 side dementions (based on sides of the town area that takes you to it) and all of them can go in 2 possible directions.
etc etc

Act 1:
[code]
ID    sX    sY    osX  osY  Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1    56    40    -1    -1    Town
1    0    80    80    -1    Wilderness
2    0    80    80    1000  Wilderness
3    0    80    80    1000  Wilderness
4    0    80    80    -1    Wilderness
5    0    80    80    -1    Wilderness
6    0    80    80    -1    Wilderness
8    200  200  1500  1000  Cave 1
9    200  200  1500  1300  Cave 2
10    200  200  1500  1600  Cave 3
11    200  200  1500  1900  Cave 4
12    200  200  1500  2200  Cave 5
13    24    24    1500  2500  Cave 2 Treasure
14    24    24    1500  2624  Cave 3 Treasure
15    24    24    1500  2748  Cave 4 Treasure
16    24    24    1500  2872  Cave 5 Treasure
17    40    48    -1    -1    Graveyard
18    200  200  2000  1000  Crypt 1 A
19    200  200  2000  1300  Crypt 2 A
20    8    8    2000  1600  Tower 2
21    200  200  2500  1000  Crypt 3 A
22    200  200  2500  1300  Crypt 3 B
23    200  200  2500  1600  Crypt 3 C
24    200  200  2500  1900  Crypt 3 D
25    30    30    2500  2200  Crypt 3 E
26    64    18    3000  1000  Monastery
27    56    40    0    -40  Courtyard 1
28    200  200  -1    -1    Barracks
29    200  200  3500  1000  Jail 1
30    200  200  3500  1300  Jail 2
31    200  200  3500  1600  Jail 3
32    18    20    4000  1000  Courtyard 2
33    28    34    -4    -34  Cathedral
34    200  200  4500  1000  Catacombs 1
35    200  200  4500  1300  Catacombs 2
36    200  200  4500  1600  Catacombs 3
37    22    31    4500  1900  Catacombs 4
38    43    48    5000  1000  Tristram
39    80    80    5000  1148  Moo Moo Farm
[/code]

Act 2:
[code]
ID    sX    sY    osX  osY  Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40    56    56    1000  1000  Town
41    80    80    -1    -1    Desert 1
42    80    80    -1    -1    Desert 2
43    80    80    -1    -1    Desert 3
44    80    80    -1    -1    Desert 4
45    32    32    -1    -1    Desert 5
46    80    80    2500  1000  Valley of the Kings
47    200  200  1500  1000  Sewer 1 A
48    200  200  1500  1300  Sewer 1 B
49    200  200  1500  1600  Sewer 1 C
50    16    19    2000  1000  Harem
51    100  100  2000  1119  Corrupt Harem 1
52    100  100  2000  1319  Basement 1
53    100  100  2000  1519  Basement 2
54    100  100  2000  1719  Basement 3
55    200  200  3000  1000  Tomb 1 A
56    200  200  3000  1300  Tomb 2 A
57    200  200  3000  1600  Tomb 2 B
58    200  200  3000  1900  Tomb 3 A
59    200  200  3000  2200  Tomb 1 Treasure
60    200  200  3000  2500  Tomb 2 Treasure
61    200  200  3000  2800  Tomb 3 Treasure
62    200  200  3500  1000  Lair 1 A
63    200  200  3500  1300  Lair 1 B
64    200  200  3500  1600  Lair 1 Treasure
65    200  200  4000  1000  Sewer 2 A
66    200  200  4500  1000  Tomb Tal 1
67    200  200  4500  1300  Tomb Tal 2
68    200  200  4500  1600  Tomb Tal 3
69    200  200  4500  1900  Tomb Tal 4
70    200  200  4500  2200  Tomb Tal 5
71    200  200  4500  2500  Tomb Tal 6
72    200  200  4500  2800  Tomb Tal 7
73    32    47    4500  3100  Duriel's Lair
74    200  200  5000  1000  Arcane
[/code]

Act 3:
[code]
ID    sX    sY    osX  osY  Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75    64    48    1000  1000  Town
76    64    192  -1    -1    Jungle 1
77    64    192  -1    -1    Jungle 2
78    64    192  -1    -1    Jungle 3
79    80    64    -1    -1    Kurast 1
80    80    64    -1    -1    Kurast 2
81    80    64    -1    -1    Kurast 3
82    48    16    -1    -1    Kurast 4
83    64    64    -1    -1    Travincal
84    200  200  1500  1000  Spider 1
85    200  200  1500  1300  Spider 2
86    200  200  2000  1000  Dungeon 1 A
87    200  200  2000  1300  Dungeon 1 B
88    200  200  2000  1600  Dungeon 2 A
89    200  200  2000  1900  Dungeon 2 B
90    40    40    2000  2200  Dungeon 1 Treasure
91    40    40    2000  2340  Dungeon 2 Treasure
92    200  200  2500  1000  Sewer 1
93    18    22    2500  1300  Sewer 2
94    24    24    3000  1000  Temple 1
95    24    24    3000  1124  Temple 2
96    24    24    3000  1248  Temple 3
97    24    24    3000  1372  Temple 4
98    24    24    3000  1496  Temple 5
99    24    24    3000  1620  Temple 6
100  200  200  3500  1000  Mephisto 1
101  200  200  3500  1300  Mephisto 2
102  41    29    3500  1600  Mephisto 3
[/code]

Act 4:
[code]
ID    sX    sY    osX  osY  Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103  32    24    1000  1000  Town
104  80    64    -1    -1    Mesa 1
105  64    80    -1    -1    Mesa 2
106  80    64    -1    -1    Mesa 3
107  200  200  -1    -1    Lava 1
108  120  120  1500  1000  Diablo 1
[/code]

Act 5:
[code]
ID    sX    sY    osX  osY  Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109  40    40    1000  1000  Town
110  240  48    760  1000  Siege 1
111  -1    -1    -1    -1    Barricade 1
112  -1    -1    -1    -1    Barricade 2
113  200  200  2000  1000  Ice Cave 1
114  64    64    2000  1300  Ice Cave 1A
115  200  200  2000  1464  Ice Cave 2
116  32    32    2000  1764  Ice Cave 2A
117  128  80    2000  1896  Barricade Snow
118  200  200  2000  2076  Ice Cave 3
119  32    32    2000  2376  Ice Cave 3A
120  20    28    2000  2508  Mountain Top
121  22    27    2000  2636  Temple Entrance
122  80    80    2000  2763  Temple 1
123  80    80    2000  2943  Temple 2
124  84    84    2500  1000  Temple Boss
125  200  200  2500  1184  Hell 1
126  200  200  2500  1484  Hell 2
127  200  200  2500  1784  Hell 3
128  200  200  2500  2084  Baal Temple 1
129  200  200  2500  2384  Baal Temple 2
130  200  200  2500  2684  Baal Temple 3
131  40    52    3000  1000  Throne Room
132  55    55    3000  1152  World Stone
[/code]
[/quote]

I have no idea what this means. Can anyone clarify or help out?
September 11, 2005, 6:14 PM
Ringo
yay, warden's switched on  :-\
September 16, 2005, 5:49 PM
UserLoser.
[quote author=Ringo link=topic=11756.msg128353#msg128353 date=1126892992]
yay, warden's switched on  :-\
[/quote]

Someone show some packet dumps of this, please.
September 16, 2005, 8:27 PM
Ringo
[quote author=UserLoser link=topic=11756.msg128363#msg128363 date=1126902444]
[quote author=Ringo link=topic=11756.msg128353#msg128353 date=1126892992]
yay, warden's switched on  :-\
[/quote]

Someone show some packet dumps of this, please.
[/quote]

im to lazy to reinstall ethereal, so i hope this is enough
[code]
[22:03:33] Sent Logon
[22:03:33] Unknown D2GS data: 1
  01 00 04 08 30 00 01 01   ....0...

[22:03:33] Unknown D2GS data: 0
  00   .

[22:03:33] Got 2nd D2GS Startup Packet
[22:03:33]  02 5C
[22:03:33] Entering World..
[22:03:33] 0x59 we are in view
[22:03:34] 0x15 asigned my self to X=4873 Y=4228
[22:03:34] 0xAE - Warden Detected.
  AE 25 00 E7 C8 CC F7 BC 0A 6E AA 0A 90 FB B0 78   .%.......n.....X
  BB 5C CB 83 85 5A 85 51 3D 09 3E D3 55 4C 54 0C   .\...Z.Q..>.ULT.
  1B 30 DE 2A 82 D2 21 67   .0.*..!g

[/code]
September 16, 2005, 9:06 PM
LivedKrad
What is wrong with my parser:

[code]
Dim newClump$, compressedPacket$, decompressedPacket$, compLength&, decompLength&, decompMax&, packetID As Byte
Dim offset As Integer, indLength As Long, indPacket As String
newClump = data

compLength = GPSize(newClump, offset)
compressedPacket = Mid(newClump, offset, compLength)
decompressedPacket = String$(compLength * 2 + 150, Chr$(0))
decompMax = Len(decompressedPacket)
Call GamePacketDecode(compressedPacket, compLength, decompressedPacket, decompMax, decompLength)
decompressedPacket = Mid(decompressedPacket, 1, decompLength)

While Len(decompressedPacket) > 0
  packetID = Asc(Mid$(decompressedPacket, 1, 1))
  indLength = D2Parse.GetSize(packetID, decompressedPacket)
  If indLength = -2 Then
  AddChat vbRed, "Over 179, packet id " & Hex(packetID) & ": " & DebugOutput(decompressedPacket)
  Exit Sub
  End If
  indPacket = Mid(decompressedPacket, 1, indLength)
  Call D2Parse.ParseD2GS(packetID, indLength, Mid$(indPacket, 2))
  AddChat vbWhite, "New decompressed packet 0x" & Hex(packetID) & ": " & DebugOutput(indPacket)
  decompressedPacket = Mid(decompressedPacket, indLength + 1)
Wend
End Sub
[/code]

[code]
Public Function GPSize(ByVal d As String, ByRef Os As Integer) As Long
On Error Resume Next
Dim sD As Long
If Asc(Mid(d, 1, 1)) < &HF0 Then
    Os = 2
    GPSize = Asc(Mid(d, 1, 1)) - 1
Else
    sD = LeftShift(Asc(Mid(d, 1, 1)) And &HF, 8)
    Os = 3
    GPSize = sD + Asc(Mid(d, 2, 1)) - 2
End If
[/code]

[code]
Public Function GetSize(ByVal ID As Byte, ByVal data As String) As Long
Dim interimVal As Integer
If ID > 179 Then
GetSize = -2: Exit Function
End If
interimVal = PACKET_SIZE(ID)

If interimVal = &HFFFFFFFF Then
 
  Select Case ID
  Case &H9C
    GetSize = Asc(Mid$(data, 3, 1)): Exit Function
  Case &H9D
    GetSize = Asc(Mid$(data, 3, 1)): Exit Function
  Case &H5B
    GetSize = Asc(Mid$(data, 2, 1)): Exit Function
  Case &HA8
    GetSize = Asc(Mid$(data, 7, 1)): Exit Function
  Case &HAA
    GetSize = Asc(Mid$(data, 7, 1)): Exit Function
  Case &HAC
    GetSize = Asc(Mid$(data, 13, 1)): Exit Function
  Case &HAE
    GetSize = 40
    'GetSize = Asc(Mid$(data, 9, 1)): Exit Function
  Case &H26
    p_data = Mid$(data, 2)
    GetSize = Parsechat: Exit Function
  Case &H94
    GetSize = 6 + (Asc(Mid$(data, 1, 1)) * 3): Exit Function
  End Select

End If

GetSize = interimVal: Exit Function 'return interimVal;
End Function
[/code]

September 17, 2005, 12:03 AM
LivedKrad
[code]
PACKET_SIZE(0) = &H1: PACKET_SIZE(1) = &H8: PACKET_SIZE(2) = &H1: PACKET_SIZE(3) = &HC: PACKET_SIZE(4) = &H1
PACKET_SIZE(5) = &H1: PACKET_SIZE(6) = &H1: PACKET_SIZE(7) = &H6: PACKET_SIZE(8) = &H6: PACKET_SIZE(9) = &HB
PACKET_SIZE(10) = &H6: PACKET_SIZE(11) = &H6: PACKET_SIZE(12) = &H9: PACKET_SIZE(13) = &HD: PACKET_SIZE(14) = &HC
PACKET_SIZE(15) = &H10: PACKET_SIZE(16) = &H10: PACKET_SIZE(17) = &H8: PACKET_SIZE(18) = &H1A: PACKET_SIZE(19) = &HE
PACKET_SIZE(20) = &H12: PACKET_SIZE(21) = &HB: PACKET_SIZE(22) = &HFFFFFFFF: PACKET_SIZE(23) = 0: PACKET_SIZE(24) = &HF
PACKET_SIZE(25) = &H2: PACKET_SIZE(26) = &H2: PACKET_SIZE(27) = &H3: PACKET_SIZE(28) = &H5: PACKET_SIZE(29) = &H3
PACKET_SIZE(30) = &H4: PACKET_SIZE(31) = &H6: PACKET_SIZE(32) = &HA: PACKET_SIZE(33) = &HC: PACKET_SIZE(34) = &HC
PACKET_SIZE(35) = &HD: PACKET_SIZE(36) = &H5A: PACKET_SIZE(37) = &H5A: PACKET_SIZE(38) = &HFFFFFFFF: PACKET_SIZE(39) = &H28
PACKET_SIZE(40) = &H67: PACKET_SIZE(41) = &H61: PACKET_SIZE(42) = &HF: PACKET_SIZE(43) = &H0: PACKET_SIZE(44) = &H8
PACKET_SIZE(45) = &H0: PACKET_SIZE(46) = &H0: PACKET_SIZE(47) = &H0: PACKET_SIZE(48) = &H0: PACKET_SIZE(49) = &H0
PACKET_SIZE(50) = &H0: PACKET_SIZE(51) = &H0: PACKET_SIZE(52) = &H0: PACKET_SIZE(53) = &H0: PACKET_SIZE(54) = &H0
PACKET_SIZE(55) = &H0: PACKET_SIZE(56) = &H0: PACKET_SIZE(57) = &H0: PACKET_SIZE(58) = &H0: PACKET_SIZE(59) = &H0
PACKET_SIZE(60) = &H0: PACKET_SIZE(61) = &H0: PACKET_SIZE(62) = &HFFFFFFFF: PACKET_SIZE(63) = &H8: PACKET_SIZE(64) = &HD
PACKET_SIZE(65) = &H0: PACKET_SIZE(66) = &H6: PACKET_SIZE(67) = &H0: PACKET_SIZE(68) = &H0: PACKET_SIZE(69) = &HD
PACKET_SIZE(70) = &H0: PACKET_SIZE(71) = &HB: PACKET_SIZE(72) = &HB: PACKET_SIZE(73) = &H0: PACKET_SIZE(74) = &H0
PACKET_SIZE(75) = &H0: PACKET_SIZE(76) = &H10: PACKET_SIZE(77) = &H11: PACKET_SIZE(78) = &H7: PACKET_SIZE(79) = &H1
PACKET_SIZE(80) = &HF: PACKET_SIZE(81) = &HE: PACKET_SIZE(82) = &H2A: PACKET_SIZE(83) = &HA: PACKET_SIZE(84) = &H3
PACKET_SIZE(85) = &H0: PACKET_SIZE(86) = &H0: PACKET_SIZE(87) = &HE: PACKET_SIZE(88) = &H7: PACKET_SIZE(89) = &H1A
PACKET_SIZE(90) = &H28: PACKET_SIZE(91) = &HFFFFFFFF: PACKET_SIZE(92) = &H5: PACKET_SIZE(93) = &H6: PACKET_SIZE(94) = &H26
PACKET_SIZE(95) = &H5: PACKET_SIZE(96) = &H7: PACKET_SIZE(97) = &H2: PACKET_SIZE(98) = &H7: PACKET_SIZE(99) = &H15
PACKET_SIZE(100) = &H0: PACKET_SIZE(101) = &H7: PACKET_SIZE(102) = &H7: PACKET_SIZE(103) = &H10: PACKET_SIZE(104) = &H15
PACKET_SIZE(105) = &HC: PACKET_SIZE(106) = &HC: PACKET_SIZE(107) = &H10: PACKET_SIZE(108) = &H10: PACKET_SIZE(109) = &HA
PACKET_SIZE(110) = &H1: PACKET_SIZE(111) = &H1: PACKET_SIZE(112) = &H1: PACKET_SIZE(113) = &H1: PACKET_SIZE(114) = &H1
PACKET_SIZE(115) = &H20: PACKET_SIZE(116) = &HA: PACKET_SIZE(117) = &HD: PACKET_SIZE(118) = &H6: PACKET_SIZE(119) = &H2
PACKET_SIZE(120) = &H15: PACKET_SIZE(121) = &H6: PACKET_SIZE(122) = &HD: PACKET_SIZE(123) = &H8: PACKET_SIZE(124) = &H6
PACKET_SIZE(125) = &H12: PACKET_SIZE(126) = &H5: PACKET_SIZE(127) = &HA: PACKET_SIZE(128) = &H0: PACKET_SIZE(129) = &H14
PACKET_SIZE(130) = &H1D: PACKET_SIZE(131) = &H0: PACKET_SIZE(132) = &H0: PACKET_SIZE(133) = &H0: PACKET_SIZE(134) = &H0
PACKET_SIZE(135) = &H0: PACKET_SIZE(136) = &H0: PACKET_SIZE(137) = &H2: PACKET_SIZE(138) = &H6: PACKET_SIZE(139) = &H6
PACKET_SIZE(140) = &HB: PACKET_SIZE(141) = &H7: PACKET_SIZE(142) = &HA: PACKET_SIZE(143) = &H21: PACKET_SIZE(144) = &HD
PACKET_SIZE(145) = &H1A: PACKET_SIZE(146) = &H6: PACKET_SIZE(147) = &H8: PACKET_SIZE(148) = &HFFFFFFFF: PACKET_SIZE(149) = &HD
PACKET_SIZE(150) = &H9: PACKET_SIZE(151) = &H1: PACKET_SIZE(152) = &H7: PACKET_SIZE(153) = &H10: PACKET_SIZE(154) = &H11
PACKET_SIZE(155) = &H7: PACKET_SIZE(156) = &HFFFFFFFF: PACKET_SIZE(157) = &HFFFFFFFF: PACKET_SIZE(158) = &H7: PACKET_SIZE(159) = &H8
PACKET_SIZE(160) = &HA: PACKET_SIZE(161) = &H7: PACKET_SIZE(162) = &H8: PACKET_SIZE(163) = &H18: PACKET_SIZE(164) = &H3
PACKET_SIZE(165) = &H8: PACKET_SIZE(166) = &HFFFFFFFF: PACKET_SIZE(167) = &H7: PACKET_SIZE(168) = &HFFFFFFFF: PACKET_SIZE(169) = &H7
PACKET_SIZE(170) = &HFFFFFFFF: PACKET_SIZE(171) = &H7: PACKET_SIZE(172) = &HFFFFFFFF: PACKET_SIZE(173) = &H9: PACKET_SIZE(174) = &HFFFFFFFF
PACKET_SIZE(175) = &H1: PACKET_SIZE(176) = &H0: PACKET_SIZE(177) = &H35: PACKET_SIZE(178) = &HFFFFFFFF: PACKET_SIZE(179) = &H5
[/code]
September 17, 2005, 12:04 AM
kamakazie
[quote author=LivedKrad.fe link=topic=11756.msg128390#msg128390 date=1126915477]
[code]
PACKET_SIZE(0) = &H1: PACKET_SIZE(1) = &H8: PACKET_SIZE(2) = &H1: PACKET_SIZE(3) = &HC: PACKET_SIZE(4) = &H1
...snip...
PACKET_SIZE(175) = &H1: PACKET_SIZE(176) = &H0: PACKET_SIZE(177) = &H35: PACKET_SIZE(178) = &HFFFFFFFF: PACKET_SIZE(179) = &H5
[/code]
[/quote]

There are only 0xAF packets, that is they only go up to 0xAE; at least in terms of D2GS on Battle.net.
September 17, 2005, 12:11 AM
LivedKrad
That size table was taken from D2Client.dll from Diablo II v1.10. I guess the packet sizes have all changed now - can someone give me the correct ones?
September 17, 2005, 12:54 AM
kamakazie
[quote author=LivedKrad.fe link=topic=11756.msg128398#msg128398 date=1126918494]
That size table was taken from D2Client.dll from Diablo II v1.10. I guess the packet sizes have all changed now - can someone give me the correct ones?
[/quote]

Sure they were taking from D2Client? Usually you get those extra packet sizes from D2Net since it deals with playing games with others not on Battle.net Anyways, here is an update packet length table (which I don't think has changed since 1.10 :P):

[code]
        Private m_PacketLengths() As Integer = {&H1, &H8, &H1, &HC, &H1, &H1, &H1, &H6, &H6, &HB, &H6, &H6, &H9, &HD, &HC, &H10, _
                                              &H10, &H8, &H1A, &HE, &H12, &HB, -1, -1, &HF, &H2, &H2, &H3, &H5, &H3, &H4, &H6, _
                                              &HA, &HC, &HC, &HD, &H5A, &H5A, -1, &H28, &H67, &H61, &HF, &H0, &H8, &H0, &H0, &H0, _
                                              &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, -1, &H8, _
                                              &HD, &H0, &H6, &H0, &H0, &HD, &H0, &HB, &HB, &H0, &H0, &H0, &H10, &H11, &H7, &H1, _
                                              &HF, &HE, &H2A, &HA, &H3, &H0, &H0, &HE, &H7, &H1A, &H28, -1, &H5, &H6, &H26, &H5, _
                                              &H7, &H2, &H7, &H15, &H0, &H7, &H7, &H10, &H15, &HC, &HC, &H10, &H10, &HA, &H1, &H1, _
                                              &H1, &H1, &H1, &H20, &HA, &HD, &H6, &H2, &H15, &H6, &HD, &H8, &H6, &H12, &H5, &HA, _
                                              &H4, &H14, &H1D, &H0, &H0, &H0, &H0, &H0, &H0, &H2, &H6, &H6, &HB, &H7, &HA, &H21, _
                                              &HD, &H1A, &H6, &H8, -1, &HD, &H9, &H1, &H7, &H10, &H11, &H7, -1, -1, &H7, &H8, _
                                              &HA, &H7, &H8, &H18, &H3, &H8, -1, &H7, -1, &H7, -1, &H7, -1, &H0, -1}
[/code]
September 17, 2005, 1:45 AM
LivedKrad
Why is the supposed Warden packet listed as size 0 here, then? (0xAE)
September 17, 2005, 3:31 AM
kamakazie
[quote author=LivedKrad.fe link=topic=11756.msg128428#msg128428 date=1126927911]
Why is the supposed Warden packet listed as size 0 here, then? (0xAE)
[/quote]

It's -1. Indices start at 0, not 1! So 0xAE is the last packet in the bunch.
September 17, 2005, 3:58 AM
LivedKrad
Oh right! So, do you know where in the AE packet the size is defined?
September 17, 2005, 4:51 AM
l2k-Shadow
If you mean the length of the packet of 0xAE the format for it is:

(BYTE) ID (0xAE)
(WORD) Length EXCLUDING header
(VOID) Data
September 17, 2005, 5:51 AM
kamakazie
Hmm I might have to retract my statement that they only go up to 0xAE. When the client disconnects, the server sends packet 0xB0. This doesn't looked to be handled by D2Client, which I have been working from. Perhaps it is something only handled by D2Net then?
September 17, 2005, 8:38 AM
LivedKrad
That's the packet the server sends you to tell you you were forcefully dropped from the game. I don't think there are any packet above 0xB0, and the packets should go up to there anyway because packet 0xAF exists (first packet in the D2GS connection).
September 17, 2005, 3:31 PM
LivedKrad
Something is still wrong with my parser even with the new table I put in. I'm still getting this strange packet "0xC0", which is invalid. This is because I'm splitting the packets up incorrectly.
September 17, 2005, 3:40 PM
Ringo
Packets exist higher than 0xB0.
Last patch's AF was droped due to time out, witch has been shifted up a-byte to 0xB0.
AFAIK, 0xB3 still means ip banned.
September 17, 2005, 3:42 PM
LivedKrad
[code]
Dim newClump$, compressedPacket$, decompressedPacket$, compLength&, decompLength&, decompMax&, packetID As Byte
Dim offset As Integer, indLength As Integer, indPacket As String
newClump = data

While Len(newClump) > 0

compLength = GPSize(newClump, offset)
compressedPacket = Mid(newClump, offset, compLength)
decompressedPacket = String$(compLength * 2 + 150, Chr$(0))
decompMax = Len(decompressedPacket)
Call GamePacketDecode(compressedPacket, compLength, decompressedPacket, decompMax, decompLength)
decompressedPacket = Mid(decompressedPacket, 1, decompLength)

  packetID = Asc(Mid$(decompressedPacket, 1, 1))
  indLength = D2Parse.GetSize(packetID, decompressedPacket)
 
  If packetID = &HAE Then
    AddChat vbRed, "WARDEN 0x" & Hex(packetID) & ": " & DebugOutput(decompressedPacket)
    Exit Sub
  End If
 
    If indLength = -2 Then
  AddChat vbRed, "What the hell " & Hex(packetID) & " : " & DebugOutput(decompressedPacket)
  Exit Sub
  End If
 
  indPacket = Mid(decompressedPacket, 1, indLength)
  'Call D2Parse.ParseD2GS(packetID, indLength, Mid$(indPacket, 2))
  AddChat vbWhite, "New decompressed packet 0x" & Hex(packetID) & ": " & DebugOutput(indPacket)

newClump = Mid$(newClump, compLength + offset)
Wend
[/code]

I still don't get it. This code looks fine to me, I just don't get it.
September 17, 2005, 8:05 PM
LivedKrad
I think I might have fixed it, but I still get some weird things going on. Are you positive the length is the first two bytes after the packet ID?
September 17, 2005, 9:12 PM
l2k-Shadow
[quote author=LivedKrad.fe link=topic=11756.msg128520#msg128520 date=1126991549]
I think I might have fixed it, but I still get some weird things going on. Are you positive the length is the first two bytes after the packet ID?
[/quote]

Yes, the length is the two bytes after the packet ID, excluding the header. So two bytes after packet id + 3 = length of packet.
September 17, 2005, 9:42 PM
LivedKrad
Shadow, mind getting on MSN? I need to talk to you. Anyway, my separater is still having issues.
September 17, 2005, 10:11 PM
kamakazie
[quote author=LivedKrad.fe link=topic=11756.msg128532#msg128532 date=1126995115]
Shadow, mind getting on MSN? I need to talk to you. Anyway, my separater is still having issues.
[/quote]

Are you parsing all the other variable length packets correctly? Or is it just 0xAE?
September 17, 2005, 10:13 PM
LivedKrad
How should I know? The parser interprets invalid packets every time I get into a game. Always different.
September 18, 2005, 12:55 AM
Ringo
[quote author=LivedKrad.fe link=topic=11756.msg128549#msg128549 date=1127004947]
How should I know? The parser interprets invalid packets every time I get into a game. Always different.
[/quote]
Try think about how the compressed data's incoming to you..

[code]
Do
    'get the compressed packets size
    'cut out that lengh of data (compressed packet)
    'decompress it
    Do
        'get the decompressed packets size from your table
        'cut it out the decompressed data
        'send that bit of data to a parser (D2GS Packet)
        'set DecomData as decompressed packet lengh + 1
    Loop Untill Len(DecomData) < 1
    'set  ComData as compressed packet lengh + 1
Loop Untill Len(ComData) < 1[/code]
Hope this helps
September 22, 2005, 2:43 PM
LivedKrad
Not really. Here's what I have, still broken:

[code]
Dim newClump$, compressedPacket$, decompressedPacket$, compLength&, decompLength&, decompMax&, packetID As Byte
Dim offset As Integer, indLength As Integer, indPacket As String
newClump = data

'Process data begin---
While Len(newClump) > 1

  compLength = GPSize(newClump, offset) 'get the size of the new message
  compressedPacket = Mid$(newClump, 1, compLength) 'cut out that part of the clump
  decompressedPacket = DataDecomp(compressedPacket, compLength, offset, decompLength)
  'decompressedPacket = String$(compLength * compLength, Chr$(0))
  'Call GamePacketDecode(compressedPacket, compLength, decompressedPacket, Len(decompressedPacket), decompLength) 'decompress it
  decompressedPacket = Mid$(decompressedPacket, 1, decompLength)

    packetID = Asc(Mid$(decompressedPacket, 1, 1)) 'get packet id to identify size
    indLength = D2Parse.GetSize(packetID, decompressedPacket) 'get size of decompressed packet
    indPacket = Mid$(decompressedPacket, 1, indLength) 'removed from buffer
    'Call D2Parse.ParseD2GS(packetID, indLength, Mid$(indPacket, 2))
    AddChat vbWhite, "New decompressed packet 0x" & Hex(packetID) & ": " & DebugOutput(indPacket)
 
  newClump = Mid$(newClump, compLength + 1)
 
Wend
[/code]
September 23, 2005, 8:53 PM
Ringo
[quote author=LivedKrad.fe link=topic=11756.msg129100#msg129100 date=1127508783]
Not really. Here's what I have, still broken:
[/quote]
Your still not attempting to split up the decompressed packets.
Look at your code, you cut out the compressed packet, then geting the first decompressed ID, then get its lengh and then parse it.
What about the packets after that one?
A compressed packet (when decompressed) can hold multiple messages, but your only attempting to parse the first one.
September 30, 2005, 4:19 PM
LivedKrad
Right.. but notice as I reassign a new data clump from the PREVIOUS data clump to newClump, and then continue to parse the rest of that clump from there..
October 2, 2005, 7:03 AM
Ringo
[quote author=LivedKrad.fe link=topic=11756.msg129831#msg129831 date=1128236598]
Right.. but notice as I reassign a new data clump from the PREVIOUS data clump to newClump, and then continue to parse the rest of that clump from there..
[/quote]
I had nothing to do for the last half hour, so i wrote one for you, but i havent tested it at all, so its bound to need debugging.
Should give you a better idea tho



[code]
Private Declare Function GamePacketDecode Lib "D2GS.dll" _
    (ByVal indata As String, _
    ByVal insize As Long, _
    ByVal outdata As String, _
    ByVal outmax As Long, _
    ByRef outsize As Long) As Integer



Public Sub DoData(ByVal cData As String)

'used as a tmp buffer for the decompressed packets
Dim tmpBuf As String

'used to store packet lenghs
Dim dLen As Long

'holds any existing broken data
Static sBuf As String

'counts loops to stop crash's
Dim BugCount(1) As Long
BugCount(0) = 0
BugCount(1) = 0

'buffer new data with any existing old data
sBuf = sBuf & cData

'create a loop to brake up each compressed packet
Do

    'check this loop hasnt got stuck
    If PlusLoop(BugCount(0)) = False Then Exit Sub
   
    'store the compressed packets size in dLen
    dLen = GPSize(sBuf)
   
    'compressed packet is broken (will be buffered next time)
    If Len(sBuf) < dLen Then Exit Sub
   
    'check sanity
    If cR(dLen, 1, 4000) = False Then
        'loss the data on error
        sBuf = ""
        Exit Sub
    End If
   
    'create a tmp-buffer to store decompressed packets in
    tmpBuf = String(dLen * 2 + 250, Chr(0))
   
    'decompress it (see datadecomp function)
    If DataDecomp(sBuf, dLen, tmpBuf) = -1 Then
        'error, message will be cut short.
        'add more padding!
    End If
   
    'create a loop to split up and parse the _
    decompressed packets in tmpBuf
    Do
       
        'check this loop hasnt got stuck
        If PlusLoop(BugCount(1)) = False Then GoTo BrakeDECOMPloop
   
        'get the packets lengh from your packet size array
        dLen = D2GS_Packet_Lengh_Array(Asc(Left(tmpBuf, 1)))
       
        'if -1 then calculate the packets lengh
        If dLen = -1 Then dLen = Get_Verying_Packet_Size(tmpBuf)
       
        'return -1 on unknown/error
        If dLen = -1 Then
            'your verying packet lengh function
            'should return -1 on unknown
            'display packet data?
            tmpBuf = "" 'brakes this loop
        Else
            'dlen holds the decompressed packets lengh
            'cut it out the decompressed packet from tmpBuf and parse it
            Call Parse(Left(tmpBuf, dLen))
            'set tmpBuf to the next possible packet
            tmpBuf = Mid(tmpBuf, 1 + dLen)
        End If
    Loop Until Len(tmpBuf) < 1
BrakeDECOMPloop:
Loop Until Len(sBuf) < 2
End Sub



Private Function GPSize(D As String) As Long
If Asc(Mid(D, 1, 1)) < &HF0 Then
    'the lengh is the 1st byte - the lengh header
    GPSize = Asc(Mid(D, 1, 1)) - 1
    'remove the lengh header from sBuf to be returned
    D = Mid(D, 2)
Else
    'the lengh if the 1st byte and 16, left shifted by 8 + 2nd byte - the lengh header
    GPSize = (LeftShift(Asc(Mid(D, 1, 1)) And &HF, 8) + (Asc(Mid(D, 2, 1)) - 2))
    'remove the lengh header from sBuf to be returned
    D = Mid(D, 3)
End If
End Function



Private Function DataDecomp(Data As String, ByVal pSize As Long, OutBuf As String) As Long
Dim SizeReturn As Long
If GamePacketDecode(Left(Data, pSize), Len(Left(Data, pSize)), OutBuf, Len(OutBuf), SizeReturn) = -1 Then
    'needed more padding
    DataDecomp = -1 'return error
Else
    DataDecomp = 1
End If
'cut the decompressed data out of are tmpBuf for returning
OutBuf = Left(OutBuf, SizeReturn)
'set sbuf to the next compressed packet
Data = Mid(Data, 1 + SizeReturn)
End Function



Private Function LeftShift(ByVal Value As Long, ByVal Shift As Long) As Double
LeftShift = CDbl(Value * (2 ^ Shift))
End Function



Public Function cR(Bit As Long, Min As Integer, max As Integer) As Boolean
cR = True
If Bit < Min Or Bit > max Then cR = False
End Function



Public Function PlusLoop(AddOn As Long) As Boolean
Const BRAKEAGE As Integer = 100 'brake loops over this number
'add 1 to the loop counter
AddOn = AddOn + 1
'brake if over BRAKEAGE
If AddOn > BRAKEAGE Then
    AddOn = 0
    PlusLoop = False
Else
    PlusLoop = True
End If
End Function
[/code]







and the same with out all the explainations;
[code]
Public Sub DoData(ByVal cData As String)
Dim tmpBuf As String, dLen As Long, BugCount(1) As Long
Static sBuf As String
BugCount(0) = 0
BugCount(1) = 0
sBuf = sBuf & cData
Do
    If PlusLoop(BugCount(0)) = False Then Exit Sub
    dLen = GPSize(sBuf)
    If Len(sBuf) < dLen Then Exit Sub
    If cR(dLen, 1, 4000) = False Then: sBuf = "": Exit Sub
    tmpBuf = String(dLen * 2 + 250, Chr(0))
    If DataDecomp(sBuf, dLen, tmpBuf) = -1 Then
        'add more padding!
    End If
    Do
        If PlusLoop(BugCount(1)) = False Then GoTo BrakeDECOMPloop
        dLen = D2GS_Packet_Lengh_Array(Asc(Left(tmpBuf, 1)))
        If dLen = -1 Then dLen = Get_Verying_Packet_Size(tmpBuf)
        If dLen = -1 Then
            tmpBuf = ""
        Else
            Call Parse(Left(tmpBuf, dLen))
            tmpBuf = Mid(tmpBuf, 1 + dLen)
        End If
    Loop Until Len(tmpBuf) < 1
BrakeDECOMPloop:
Loop Until Len(sBuf) < 2
End Sub

Private Function GPSize(D As String) As Long
If Asc(Mid(D, 1, 1)) < &HF0 Then
    GPSize = Asc(Mid(D, 1, 1)) - 1
    D = Mid(D, 2)
Else
    GPSize = (LeftShift(Asc(Mid(D, 1, 1)) And &HF, 8) + (Asc(Mid(D, 2, 1)) - 2))
    D = Mid(D, 3)
End If
End Function

Private Function DataDecomp(Data As String, ByVal pSize As Long, OutBuf As String) As Long
Dim SizeReturn As Long
If GamePacketDecode(Left(Data, pSize), Len(Left(Data, pSize)), OutBuf, Len(OutBuf), SizeReturn) = -1 Then
    DataDecomp = -1
Else
    DataDecomp = 1
End If
OutBuf = Left(OutBuf, SizeReturn)
Data = Mid(Data, 1 + SizeReturn)
End Function

Private Function LeftShift(ByVal Value As Long, ByVal Shift As Long) As Double
LeftShift = CDbl(Value * (2 ^ Shift))
End Function

Public Function cR(Bit As Long, Min As Integer, max As Integer) As Boolean
cR = True
If Bit < Min Or Bit > max Then cR = False
End Function

Public Function PlusLoop(AddOn As Long) As Boolean
Const BRAKEAGE As Integer = 100
AddOn = AddOn + 1
If AddOn > BRAKEAGE Then
    AddOn = 0
    PlusLoop = False
Else
    PlusLoop = True
End If
End Function
[/code]

Hope this helps!
October 6, 2005, 4:24 PM
LivedKrad
Not at all. That thing is more broken than mine.
October 10, 2005, 6:21 PM
Ringo
[quote author=LivedKrad.fe link=topic=11756.msg130592#msg130592 date=1128968487]
Not at all. That thing is more broken than mine.
[/quote]
Cos it needed a very small bit of debugging.

All you need to change is:
    D2GS_PACKET_ARRAY(Asc(Mid(tmpBuf, 1, 1)))
    GET_D2GS_VERYING_SIZE(tmpBuf)
    'PARSE Left(tmpBuf, dLen)
and it WILL work!

[code]
Public Sub DoData(ByVal cData As String)
Dim tmpBuf As String
Dim dLen As Long
Static sBuf As String
Dim BugCount(1) As Long
sBuf = sBuf & cData
Do
    If PlusLoop(BugCount(0)) = False Then Exit Sub
    dLen = GPSize(sBuf)
    If Len(sBuf) < dLen Then Exit Sub
    tmpBuf = String(dLen * 2 + 250, Chr(0))
    Call DataDecomp(sBuf, dLen, tmpBuf)
    Do
        If PlusLoop(BugCount(1)) = False Then GoTo BrakeDECOMPloop
        dLen = D2GS_PACKET_ARRAY(Asc(Mid(tmpBuf, 1, 1)))
        If dLen = -1 Then dLen = GET_D2GS_VERYING_SIZE(tmpBuf)
        If dLen = -1 Then
            'unknown lengh
            tmpBuf = ""
        Else
            'PARSE Left(tmpBuf, dLen)
            tmpBuf = Mid(tmpBuf, 1 + dLen)
        End If
    Loop Until Len(tmpBuf) < 1
    BugCount(1) = 0
BrakeDECOMPloop:
Loop Until Len(sBuf) < 2
End Sub



Private Function GPSize(D As String) As Long
On Error Resume Next
If Asc(Mid(D, 1, 1)) < &HF0 Then
    GPSize = Asc(Mid(D, 1, 1)) - 2
    D = Mid(D, 2)
Else
    GPSize = LeftShift(Asc(Mid(D, 1, 1)) And &HF, 8) + Asc(Mid(D, 2, 1)) - 3
    D = Mid(D, 3)
End If
End Function



Private Function DataDecomp(Data As String, ByVal pSize As Long, OutBuf As String) As Long
Dim SizeReturn As Long
DataDecomp = GamePacketDecode(Left(Data, pSize), Len(Left(Data, pSize)), OutBuf, Len(OutBuf), SizeReturn)
OutBuf = Left(OutBuf, SizeReturn)
Data = Mid(Data, 2 + pSize)
End Function



Private Function LeftShift(ByVal Value As Long, ByVal Shift As Long) As Double
LeftShift = CDbl(Value * (2 ^ Shift))
End Function



Public Function PlusLoop(AddOn As Long, Optional BRAKEAGE As Integer = 100) As Boolean
AddOn = AddOn + 1
If AddOn > BRAKEAGE Then
    AddOn = 0
    PlusLoop = False
Else
    PlusLoop = True
End If
End Function
[/code]

I hope this helps! (again)
October 10, 2005, 10:08 PM
LivedKrad
First of all, I don't have those functions or that array. Secondly, I used my own. Maybe that one is the problem.

[code]
        'get the packets lengh from your packet size array
        dLen = D2Parse.GetSize(Asc(Left(tmpBuf, 1)), tmpBuf)



Public Function GetSize(ByVal ID As Byte, ByVal data As String) As Integer
Dim interimVal As Integer
If ID > 179 Then
GetSize = -2: Exit Function
End If
interimVal = m_PacketLengths(ID)

If interimVal = &HFFFFFFFF Then
 
  Select Case ID
  Case &H9C
    GetSize = Asc(Mid$(data, 3, 1)): Exit Function
  Case &H9D
    GetSize = Asc(Mid$(data, 3, 1)): Exit Function
  Case &H5B
    GetSize = Asc(Mid$(data, 2, 1)): Exit Function
  Case &HA8
    GetSize = Asc(Mid$(data, 7, 1)): Exit Function
  Case &HAA
    GetSize = Asc(Mid$(data, 7, 1)): Exit Function
  Case &HAC
    GetSize = Asc(Mid$(data, 13, 1)): Exit Function
  Case &HAE
    GetSize = gword(Mid(data, 2, 2)) + 3: Exit Function
  Case &H26
    p_data = Mid$(data, 2)
    GetSize = Parsechat: Exit Function
  Case &H94
    GetSize = 6 + (Asc(Mid$(data, 1, 1)) * 3): Exit Function
  End Select

End If

GetSize = interimVal: Exit Function 'return interimVal;
End Function



m_PacketLengths = Array(&H1, &H8, &H1, &HC, &H1, &H1, &H1, &H6, &H6, &HB, &H6, &H6, &H9, &HD, &HC, &H10, _
&H10, &H8, &H1A, &HE, &H12, &HB, -1, -1, &HF, &H2, &H2, &H3, &H5, &H3, &H4, &H6, _
                                              &HA, &HC, &HC, &HD, &H5A, &H5A, -1, &H28, &H67, &H61, &HF, &H0, &H8, &H0, &H0, &H0, _
                                              &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, -1, &H8, _
                                              &HD, &H0, &H6, &H0, &H0, &HD, &H0, &HB, &HB, &H0, &H0, &H0, &H10, &H11, &H7, &H1, _
                                              &HF, &HE, &H2A, &HA, &H3, &H0, &H0, &HE, &H7, &H1A, &H28, -1, &H5, &H6, &H26, &H5, _
                                              &H7, &H2, &H7, &H15, &H0, &H7, &H7, &H10, &H15, &HC, &HC, &H10, &H10, &HA, &H1, &H1, _
                                              &H1, &H1, &H1, &H20, &HA, &HD, &H6, &H2, &H15, &H6, &HD, &H8, &H6, &H12, &H5, &HA, _
                                              &H4, &H14, &H1D, &H0, &H0, &H0, &H0, &H0, &H0, &H2, &H6, &H6, &HB, &H7, &HA, &H21, _
                                              &HD, &H1A, &H6, &H8, -1, &HD, &H9, &H1, &H7, &H10, &H11, &H7, -1, -1, &H7, &H8, _
                                              &HA, &H7, &H8, &H18, &H3, &H8, -1, &H7, -1, &H7, -1, &H7, -1, &H0, -1, &H1, &H1)
[/code]
October 11, 2005, 11:34 PM
Ringo
[quote author=LivedKrad.fe link=topic=11756.msg130720#msg130720 date=1129073699]
First of all, I don't have those functions or that array. Secondly, I used my own.[/quote]

That was the idea :D

I dont see anything blatently wrong with your array and decompressed packet size function, are you useing [u]this[/u] code, or the one right up top?
Because up top, that code needed some debugging, witch i did and reposted 2 posts above. ([u]here[/u])
October 13, 2005, 2:03 PM
LivedKrad
Well, I did slight modifications to the routine you gave me. It has exactly the same results as all other packet decompressors/parsers I have made: a huge bunch of null packets and some weird ones.

[code]
[8:17:06 PM] DCSitter - v1 - Build: 45 - Copyright LivedKrad 2005.
[8:17:06 PM] Pre-variable-set done.
[8:17:09 PM] Starting connection to 63.240.202.120:6112
[8:17:09 PM] Connected to server 63.240.202.120:6112
[8:17:09 PM] Checking version..
[8:17:09 PM] Accessing account information..
[8:17:09 PM] Logging on to realm..
[8:17:09 PM] Connected to MCP server.
[8:17:09 PM] Character logon successful
[8:17:11 PM] Retrieving IP Address..
[8:17:11 PM] Attempting to idle in game trades with password
[8:17:11 PM] Game IP Address: 63.240.202.73
[8:17:11 PM] Game Server Token: 770
[8:17:11 PM] Game Hash: 270410304
[8:17:11 PM] Connected to D2GS.
[8:17:11 PM]  «- [0xAF] Game server requested login.
[8:17:11 PM] Logging into game..
[8:17:11 PM] Send: 0x68
[8:17:11 PM] TEST: LOGON OK
[8:17:11 PM] Send: 0x6D
[8:17:11 PM]  «- [0x5C] Game Login Results Received.
[8:17:11 PM] Game login was successful.
[8:17:11 PM]  -» [0x6A] Attempting to enter game...
[8:17:11 PM] Game join was successful.
[8:17:11 PM] Dump: GetSize() returned length: 33 : 8F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ?...............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00                                                ................
[8:17:11 PM] Dump: GetSize() returned length: 26 : 59 C6 10 BB B6 04 6C 6B 63 6C 6F 6E 65 68 75 6E  YÆ.»¶.lkclonehun
74 74 72 65 73 00 00 00 00 00                    ttres...........
[8:17:11 PM] Dump: GetSize() returned length: 12 : AA 00 C6 10 BB B6 0C 69 59 F9 FF 1F              ª.Æ.»¶.iYùÿ.....
[8:17:11 PM] Dump: GetSize() returned length: 6 : 76 00 C6 10 BB B6                                v.Æ.»¶..........
[8:17:11 PM] Dump: GetSize() returned length: 450 : 94 0A C6 10 BB B6 00 00 01 02 00 01 01 00 01 D9  ”.Æ.»¶.........Ù
00 01 DA 00 01 DB 00 01 DC 00 01 04 00 01 05 00  ..Ú..Û..Ü.......
01 03 00 01 22 00 26 C6 10 BB B6 D9 00 01 1F 00  ....".&Æ.»¶Ù....
5E 01 00 01 01 01 01 01 01 01 01 01 01 01 01 01  ^...............
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01  ................
01 01 01 01 01 00 28 06 00 00 00 00 00 01 00 00  ......(.........
00 00 00 00 00 00 00 00 00 19 00 01 00 01 00 0C  ................
00 01 00 05 00 81 01 05 00 25 00 01 00 00 00 00  .....?...%......
00 01 00 00 00 00 00 09 00 01 0A 01 00 01 00 04  ................
00 01 02 00 00 01 00 00 00 00 00 00 00 00 00 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 00 29 00 00  .............)..
00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  .€..............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00  ................
C6 10 BB B6 5F 01 00 00 00 1D 00 1E 1D 01 0A 1D  Æ.»¶_...........
02 14 1D 03 19 1E 07 00 37 1E 09 00 0A 1E 0B 00  ........7.......
5C 1D 0C 01 9C 0E 14 10 C1 B9 7E 12 10 00 A2 00  \...œ...Á¹~...¢.
65 08 00 80 06 17 03 02 9C 0E 14 10 E0 3C 3F 99  e..€....œ...à<?™
10 00 A2 00 65 08 06 80 06 17 03 02 9C 04 14 10  ..¢.e..€....œ...
70 9E 9F 4C 10 00 A2 00 65 00 52 92 36 37 06 02  pžŸL..¢.e.R’67..
9C 04 17 10 38 AF 4F 26 10 00 80 00 65 00 10 22  œ...8¯O&..€.e.."
F6 86 07 02 8E F0 1F 9C 04 16 10 9C B7 27 13 00  ö†..Žð.œ...œ·'..
00 80 00 65 00 00 3A D6 16 03 82 F1 15 9D 06 1E  .€.e..:Ö..‚ñ.?..
05 CE BB 93 09 00 C6 10 BB B6 11 00 82 00 65 84  .λ“..Æ.»¶..‚.e„
08 80                                            .€..............
[8:17:11 PM] uh oh! Error processing dump: (Packet: 16): 16 86 07 82 80 C0 C1 E1 3F                        .†.‚€ÀÁá?.......
[/code]

Any ideas what this 16 is? Never seen it, and obviously my packet size array has no value for it, because it's being return as -1.
October 14, 2005, 1:22 AM
Ringo
heh, it was right under are nose's  :P
Is it a bug...
Is it a glitch..
NO.. its super packet!
[quote="LivedKrad.fe"]
[8:17:11 PM] Dump: GetSize() returned length: 450 : 94 0A C6 10 BB B6 .................
[/quote]

[code]
  Case &H94
    GetSize = 6 + (Asc(Mid$(data, 1, 1)) * 3): Exit Function
[/code]
If that was done right, you would have saw a 0x20 right after 0x94, but your useing the packet id (DOH)
6 + (packetID[0x94] * 3) = super packet 450

hope this helps!
October 14, 2005, 5:09 AM
LivedKrad
Thanks for noticing that. I fixed that after I posted it on here, but I still have many other problems. I just don't know what the problems are!
October 14, 2005, 9:36 PM
LivedKrad
Ok man, test your code with your parsing/decompression because it sure as hell does not work with mine. This is probably my error BTW, I am not suggesting that it is yours.
October 16, 2005, 6:23 PM
LordNevar
[code]Private Declare Function GamePacketDecode Lib "D2GS.dll" (ByVal indata As String, ByVal insize As Long, ByVal outdata As String, ByVal outmax As Long, ByRef outsize As Long) As Integer
Private Declare Function GamePacketSize Lib "D2GS.dll" (ByVal Data As String, ByRef size As Long, ByRef offset As Long) As String

Public Function DecodePacket(Data As String) As String
Dim size&, offset&, outsize&, outdata$
    GamePacketSize Data, size, offset
    outdata = String(size + 6, vbNullChar)
    GamePacketDecode Mid(Data, offset + 1), size + 5, outdata, size + 5, outsize
    DecodePacket = outdata
End Function[/code]

[code]Public Sub ParseD2GS(Data As String)
    Dim PacketID As Byte
    If D2GS.InGame = True Then
        Data = DecodePacket(Data)
        PacketID = Asc(Left$(Data, 1))
    Else
        PacketID = Asc(Left$(Data, 1))
    End If[/code]

I've been using this code in my bot for quite sometime now, and have had no problems with it. Your more than welcome to it.
October 16, 2005, 6:42 PM
Ringo
[quote author=LivedKrad.fe link=topic=11756.msg131196#msg131196 date=1129487020]
Ok man, test your code with your parsing/decompression because it sure as hell does not work with mine. This is probably my error BTW, I am not suggesting that it is yours.
[/quote]
Here, try this source code that i made, so you can see it working and splitting up and parseing a very large clump of packets, including big and small.

Hope this helps!
October 17, 2005, 2:57 AM
Elneroth
Ugh, I've come back from a couple months ago to do a quick update on my huge project I abandoned.

So, what exactly has changed? I read the entire topic and have seen a few things.

As far as I can tell, has every single packet ID used in D2GS increased by one?

&H1AE -> &H67 -> &H6C
I've been looking at other posts and see:
&H1AF -> &H68 -> &H6D
I don't know what &H5C02 changed to though.

Also, what exactly has changed with the arrivle of 'warden'?
Has the sequence changed?

I read somewhere that you have to send 0x66 Right when you connect but other people have said you have to send it in responce to &H1AE (Considering the old &H1AE changed to &H1AF if the above is correct.)
And what is REQUIRED to be sent with 0x66? Can you just send a blank packet or do you have to include nulls?
October 17, 2005, 2:09 PM
Ringo
[quote author=Elneroth link=topic=11756.msg131330#msg131330 date=1129558156]
Ugh, I've come back from a couple months ago to do a quick update on my huge project I abandoned.

So, what exactly has changed? I read the entire topic and have seen a few things.

As far as I can tell, has every single packet ID used in D2GS increased by one?

&H1AE -> &H67 -> &H6C
I've been looking at other posts and see:
&H1AF -> &H68 -> &H6D
I don't know what &H5C02 changed to though.

Also, what exactly has changed with the arrivle of 'warden'?
Has the sequence changed?

I read somewhere that you have to send 0x66 Right when you connect but other people have said you have to send it in responce to &H1AE (Considering the old &H1AE changed to &H1AF if the above is correct.)
And what is REQUIRED to be sent with 0x66? Can you just send a blank packet or do you have to include nulls?
[/quote]

Hi, long time no see :)
this post and below should help show warden packets and 1.11 connection sequance, other wise the C > S and S > C packets in this thread got updated awhile ago for 1.11b.

AFAIK, there is next to zero infomation on emulating warden atm :(
October 17, 2005, 2:55 PM
LivedKrad
[quote author=Ringo link=topic=11756.msg131267#msg131267 date=1129517879]
[quote author=LivedKrad.fe link=topic=11756.msg131196#msg131196 date=1129487020]
Ok man, test your code with your parsing/decompression because it sure as hell does not work with mine. This is probably my error BTW, I am not suggesting that it is yours.
[/quote]
Here, try this source code that i made, so you can see it working and splitting up and parseing a very large clump of packets, including big and small.

Hope this helps!
[/quote]

Genius, well done Ringo. Works perfectly. Now to investigate what went wrong with mine. Thanks a million!
October 17, 2005, 10:02 PM
NetNX
Hmm i come back after so long and find out that this topic has drifted so far from packet research... ?
December 1, 2005, 6:58 PM
Ringo
*Wunderd when this was going to get moved to BNBDR* :)

Hmm, i was just re-reading this post about the decompression, when i noticed skywing say this:
[quote author=Skywing link=topic=585.msg18836#msg18836 date=1061527153]
There are indeed several bugs in the D2 packet decompressor code floating around - and you're right about them not being with the table itself.

You ought to be able to find them without too much trouble if you try to understand what all of the code does.
[/quote]
And indeed there is a bug, one that chops off the last byte or 2 of the packet (or am i the only one to get this?) -- it seems to happen alot in open games.
Anyway, if anyones useing the example code i posted, you just need to change the DataDecomp() function, and it will fix it:
[code]
Private Function DataDecomp(Data As String, ByVal pSize As Long, OutBuf As String) As Long
    On Error Resume Next
    Dim SizeReturn As Long
    DataDecomp = GamePacketDecode(Left(Data, pSize + 1), Len(Left(Data, pSize)) + 1, OutBuf, Len(OutBuf), SizeReturn)
    OutBuf = Left(OutBuf, SizeReturn)
    Data = Mid(Data, 2 + pSize)
End Function
[/code]
The extra byte given to the API will be lost, resulting in the whole message being decompressed and returned in the OutBuf.


Another thing, NetNX:
How did you get on with finding working compression code?
I'd love to host open bnet games and/or make a realm compatible D2GS!.
I think PvPGN servsers support D2GS, and i here there open source, has anyone checked it out for compression code?

And im also researching C > S 0x6C for open games, and was wundering if anyone had any infomation on it?
Incase anyone was wundering, the client uses it to send the host of the game the items the character is useing.
Then the host sends the data back in 0x9C/0x9D to say your useing them items.

Thanks in advance
December 12, 2005, 6:16 PM
LivedKrad
Has anyone figured out how to respond to 0xAE yet? After I initially send 0x66 at the beginning of the game (as a blank packet), I get one 0xAE response, to which I respond with BYTE: 0x66 WORD: 1 BYTE: 0, and after that I get no more 0xAE messages which obviously means Battle.net isn't buying into my shit.

So, does anyone know what is to be sent back? I notice on game initialization the 0x66 packet is of size 4 bytes, and after that the average size is about 0x23. Any guesses?
March 22, 2006, 8:44 PM
ShadowDancer
Someone stills interested in this?
June 26, 2006, 6:12 PM
JoeTheOdd
I may look into it when .NET Bot gets further into completion.
June 27, 2006, 4:33 AM
ShadowDancer
I am trying to complete some remaining things soo if is there a more up to date list plz send me the link.

S > C
[code]
0x94 skills list

(byte) count
(dword) player_id
for each skill (1 to count) {
(word) skill id
(byte) skill amount
}

=======================================================

0x21 set skill amount
{
//set skill amount
//byte[0] -> player type
//byte[1] -> unknow
//dword[0] -> player id
//word[1] -> skill
//word[2] -> amount
//byte[0] -> unknow
}
tells the amount of skill points that one player haves

=======================================================
27:

This packet comes when a npc talks with you, can be books also.

27 01 1D 00 00 00 02 00 02 00 79 01 02 00 AF 01 00 00... (and all the remaining 0)

it says:
the comp_player 1D is talking to you, amount of dialogs 2,
first dialog id (may be unique) 79 01
second dialog id (may be unique) AF 01

soo a probably packet format is:
(BYTE) type
(DWORD) relator_id
(BYTE) amount of dialogs
(BYTE) unknow, values (0x00, 0x6F)

for each dialog {
(WORD) unknow flags seen: 00, 02
(WORD) unique dialog id
}

if you not replye a 31 packet for each dialog, the server will keep sending 0x8A(player want talk with you) packets and 27 packets each interaction.

=======================================================
28 format:
(BYTE) type
(DWORD) Relator_Id
(BYTE) unknow (only 0 seen)
(WORD) unknow (only 1 seen)

for each quest {
(BYTE) Quest State
(BYTE) Quest Stand
}

Quest States
0x10 = Quest started: go to complete it
0x11 = 2nd mission dones with this
0x12 = comes in 2nd mission
0x15 = 4th mission dones with this
0x19 =
0x1A = Need to return for the reward

Standings
0x20 = It comes when the quest is ending or is if it is done.
0x40 = (¿)
0x80 = I havent seen it at the moment

type:
06 This is the common quest info that does not notifyes new changes
  -> Relator_Id is 0
01 a computer player is talking you about the quest (talk info comes with packet 0x27).


=======================================================
0A
(BYTE) Object Type
(DWORD) Object ID

Remove an object, for example a tp that disapears, an item picked from the ground, a moster killed.

0A 02 1B 00 00 00

=======================================================
03 
[byte act] (0-4)
[dword unknow]  = EE 78 68 18
[word MapArea]
[dword unknow] = DB E7 AF A0

ex 1
[d2gs unpadded+decoded+unpadded 12]
03 02 EE 78 68 18 4B 00 DB E7 AF A0
ex 2
[d2gs unpadded+decoded+unpadded 12]
03 01 EE 78 68 18 28 00 DB E7 AF A0

Usefull message, comes at game start and when your character changes from act.

=======================================================


31
[dword compplayerid]
[dword unknow]

end quest conversation with computer players

31 xx xx xx xx 00 00 00 00


=======================================================
22
(BYTE) unknow
(BYTE) unknow
(DWORD) Player ID
(WORD) seems as skills
(BYTE) unknow
(WORD) unknow

[d2gs unpadded+decoded+unpadded 12]
22 00 DE xx xx xx xx DB 00 01 D7 00 (Scroll of Townportal)

".Þ....Û..×.
[d2gs unpadded+decoded+unpadded 12]
22 00 DE xx xx xx xx D9 00 01 D7 00 (Scroll of Identify)

=======================================================

0x23
D2GS_CurrentSkillinhand
(BYTE) Player Type
(DWORD) Player ID
(BYTE) Hand 0 rigth 1 left
(WORD) Skill
(DWORD) Flags

This packet says what skill have we selected in your hands.

[d2gs unpadded+decoded+unpadded 13]
23 00 02 00 00 00 00 24 00 FF FF FF FF


========================================================
0x76
D2GS_POSTPLAYER

(byte) Unknow
(dword) Player ID

76 00 02 00 00 00

========================================================
7B
D2GS_KEYCONFIG
(BYTE) KeySlot (ie 0 as F1)
(BYTE) Skill
(BYTE) boolean 0x00 for rigth hand or 0x80 for left hand
(DWORD) unknow 0xFFFF


[d2gs unpadded+decoded+unpadded 8]
7B 00 70 80 FF FF FF FF

{.k€ÿÿÿÿ
[d2gs unpadded+decoded+unpadded 8]
7B 03 71 00 FF FF FF FF

{.q.ÿÿÿÿ

[/code]
June 28, 2006, 5:34 AM
KermEd
[table][tr][td]
Ringo, Heres a few more if you want to add them to the
list. They are based on my own findings, and might not
be correct, but hey its a few more bits of info.
[/td][/tr][tr][td]
[size=24pt][move]S > C[/move][/size]
[/td][/tr][tr][td][hr]
[size=20pt]0x01[/size] MapInit (If Followed By 0x02)
Length = 7 + Header
0x01 - 00 04 00 30 00 01 01  - Normal, Normal
0x01 - 01 04 10 30 00 01 01  - Nightmare, Normal
0x01 - 02 04 20 30 00 01 01  - Hell, Normal
0x01 - 00 04 08 30 00 01 01  - Normal, Hardcore
[color=Yellow](BYTE) Difficulty
(BYTE)  Unknown (Always 04)
(BYTE)  Hardcore & Difficulty
(DWORD) Unknown (Always 30, 00, 01, 01)[/color]

Difficulty,
            00=Normal
            01=Nightmare
            02=Hell
HardCore & Difficulty
            08=Normal, Hardcore
            10=Normal, Normal
            18=Nightmare, Hardcore  *?
            20=Nightmare, Normal
            28=Hell, Hardcore  *?
            30=Hell, Normal

Notes:

The packet always comes through as the same size, but
these values are only true the first time it is sent, at game start.

[/td][/tr][tr][td][hr]
[size=20pt]0x02[/size] Game Initialized?
Length = Header Only
0x02

[/td][/tr][tr][td][hr]
[size=20pt]0x05[/size] Game Saved On Battle.Net?
Length = Header Only
0x05

[/td][/tr][tr][td][hr]
[size=20pt]0x06[/size] Game End, User Quit.
Length = Header Only
0x06

Notes:

Packet 0x06 will follow Packet 0x05 prior to quitting a game. 
Mysteriously enough these two packets can be seen together at
other times.

[/td][/tr][tr][td][hr]
[size=20pt]0x21[/size] Skill Granted From Item
Length = 11 + Header
0x21 - 00 00 | 61 38 E4 07 | 2F 00 | 00 | 12 | 00
                      ^ PlayerID     ^Skill          ^Level
[color=Yellow](WORD)  Unknown
(DWORD) PlayerID
(WORD) Skill
(BYTE)  Unknown
(BYTE)  SkillLevel
(BYTE)  Unknown[/color]

Notes:

This displays the Skill Name, and Level of skill you recieve
only from an item.  If you have multiple items (a set for
example) that give you the skill, this seems to trigger once
for each of the items. 

[/td][/tr][tr][td][hr]
[size=20pt]0x41[/size] (Another) PlayerID Recieved
Length = 5 + Header
0x42 - 00 | 37 3E 03 A7
  Type ^     ^  ID
[color=Yellow](BYTE) ObjectType
(DWORD) ObjectID[/color]

Notes:

This ID is recieved on much rarer occasions than 0x0B

[/td][/tr][tr][td][hr]
[size=20pt]0x65[/size] Kill Counter
Length = 6 + Header
| 06 89 9C 79 | 01 00
| 67 27 CC E3 | 03 00
  ^ Id              ^ Count
[color=Yellow](DWORD) Player ID
(WORD) Current Kills[/color]

Notes:

This counter keeps track of your total number of
kills since the new game was created.  It should
be noted, that if it is sent with an incorrect Player
ID, its function changes and it does not display
your current kills.

[/td][/tr][tr][td][hr]
[size=20pt]0x67[/size] D2GS_COMMOVE
Length = 16
[color=Yellow](DWORD) Computer Player ID
(BYTE) Movment Type (0x01=walk, 0x17=run)
(WORD) Moving to Location X -  Reversed !
(WORD) Moving To Location Y -  Reversed !
(WORD) Unknown - 0x01
(BYTE) Unknown (always 0x01/0x07/0x0D/0x0F)
(WORD) Unknown
(BYTE) Unknown[/color]
   
Notes:

This code was already posted here by you, but I found
I had to manually reverse the LocX and LocY, and thought
I should post a note about it in case other users have
the same problem.

[/td][/tr][tr][td][hr]
[size=20pt]0x9E[/size] Merc Attribute As Byte
Length = 6 + Header
0x9E - 0C | 85 2F 36 1A | 0F
   Attr ^ Id ^        Value ^
[color=Yellow](BYTE) Attribute Type
(DWORD) MercID
(BYTE) Attribute Value[/color]

Notes:

This also seems to trigger for other members of your
non player party, and might be used for monsters as
well.  (Didn't seem to though on testing)

[/td][/tr][tr][td][hr]
[size=20pt]0x9F[/size] Merc Attribute As Word
Length = 7 + Header
0x9F - 07 | 85 2F 36 1A | 00 D2
    Attr ^ Id ^        Value ^
[color=Yellow](BYTE) Attribute Type
(DWORD) MercID
(WORD) Attribute Value[/color]

Notes:

This attribute follows the same format as the player
stats packet (0x1E).  If the value is below 255 the
first byte will be null in the Attribute Value and only
the second byte should be used.

Using both bytes when one is null can show incorrect
values for your stats.

This also seems to trigger for other members of your
non player party, and might be used for monsters as
well.  (Didn't seem to though on testing)

[/td][/tr][tr][td][hr]
[size=20pt]0xA0[/size] Merc Attribute As Dword
Length = 9 + Header
0xA0 - 0D | 85 2F 36 1A | 58 B7 06 00
    Attr ^ Id ^         Value ^
[color=Yellow](BYTE) Attribute Type
(DWORD) MercID
(DWORD) Attribute Value[/color]

Notes:

This also seems to trigger for other members of your
non player party, and might be used for monsters as
well.  (Didn't seem to though on testing)

[/td][/tr][tr][td][hr]
Also, Here is a list of a few packets that always seem
to contain no data, and are of 0 Length + Header:

[size=18pt]0x02[/size] - Game Init?
[size=18pt]0x04[/size] - Some Lists Show This As Screen Refresh
[size=18pt]0x05[/size] - Blank
[size=18pt]0x4F[/size] - Blank
[size=18pt]0x61[/size] - [color=Yellow](BYTE)[/color]  [my value was 0F]
[size=18pt]0x72[/size] - Blank
[size=18pt]0x97[/size] - Blank
[size=18pt]0xAF[/size] - Blank
[size=18pt]0xB3[/size] - Blank, Banned Ip?

I've got about another 10 that I've been trying to decode
today and will post them when progress is made.  I'm also
working on 0x28 (Quest Log) as it seems to not be as
posted for my system.

Keep up the good work!! 

Last Updated July 20th, 2006

[right]- KermEd[/right]
[/td][/tr][/table]
July 19, 2006, 10:08 PM
KermEd
Diablo II 11.1b - Unique Object Codes

Thought someone else might find this useful, I pulled it from the MPQ, and can help you know the sizing of different objects on the maps.

Normal Diablo: 0 - 409, Expansion: is 0 - 409 & 410-572

[code]
Id  |Desc                        |Token |X  |Y  |Yoff |Xoff |Xs |Ys |Act |Len |Top  |Wth |Hht |OnMap
--------------------------------------------------------------------------------------------------------
0   |Test Data                   |NU0   |0  |0  |0    |0    |0  |0  |0   |0   |0    |0   |0   |0     
1   |Casket #5                   |C5    |5  |3  |0    |0    |5  |5  |1   |0   |0    |0   |0   |0     
2   |Shrine                      |SF    |3  |3  |0    |0    |0  |0  |1   |3   |84   |0   |0   |310   
3   |Casket #6                   |C6    |5  |3  |0    |0    |5  |5  |1   |0   |0    |0   |0   |0     
4   |Urn #1                      |U1    |1  |1  |0    |0    |1  |1  |2   |0   |0    |0   |0   |0     
5   |Large Chest R               |L1    |1  |2  |0    |0    |0  |0  |7   |15  |0    |0   |0   |0     
6   |Large Chest L               |L2    |2  |1  |0    |0    |0  |0  |7   |15  |0    |0   |0   |0     
7   |Barrel                      |B1    |1  |1  |0    |0    |2  |2  |1   |0   |0    |0   |0   |0     
8   |Tower Tome                  |TT    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |427   
9   |Urn #2                      |U2    |1  |1  |0    |0    |1  |1  |2   |0   |0    |0   |0   |0     
10  |Bench                       |BE    |7  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
11  |Barrel Exploding            |BX    |1  |1  |0    |0    |2  |2  |1   |0   |0    |0   |0   |0     
12  |Rogue Fountain              |FN    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
13  |Door Gate L                 |D1    |1  |3  |4    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
14  |Door Gate R                 |D2    |3  |1  |4    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
15  |Door Wooden L               |D3    |1  |3  |4    |0    |0  |0  |1   |-20 |-80  |40  |40  |0     
16  |Door Wooden R               |D4    |3  |1  |3    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
17  |StoneAlpha                  |S1    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |314   
18  |StoneBeta                   |S2    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |314   
19  |StoneGamma                  |S3    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |314   
20  |StoneDelta                  |S4    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |314   
21  |StoneLambda                 |S5    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |314   
22  |StoneTheta                  |S6    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |314   
23  |DoorCourtyard L             |D5    |1  |7  |1    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
24  |DoorCourtyard R             |D6    |7  |1  |1    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
25  |DoorCathedralDouble         |D7    |9  |1  |-11  |0    |0  |0  |1   |-20 |-80  |40  |40  |0     
26  |Cain Captured               |GI    |3  |3  |15   |-14  |0  |0  |1   |0   |0    |0   |0   |0     
27  |DoorMonestaryDouble R       |D8    |7  |1  |1    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
28  |Hole In Ground              |HI    |5  |3  |1    |1    |0  |0  |1   |0   |0    |0   |0   |0     
29  |Brazier                     |BR    |1  |1  |0    |0    |0  |0  |7   |0   |0    |0   |0   |0     
30  |Inifuss Tree                |IT    |5  |5  |0    |0    |0  |0  |1   |-40 |-40  |80  |80  |313   
31  |Fountain                    |BF    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
32  |Crucifix                    |CL    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
33  |Candles1                    |A1    |3  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
34  |Candles2                    |A2    |1  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
35  |Standard1                   |N1    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
36  |Standard2                   |N2    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
37  |Torch1 Tiki                 |TO    |1  |1  |0    |0    |0  |0  |7   |0   |0    |0   |0   |0     
38  |Torch2 Wall                 |WT    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
39  |RogueBonfire                |RB    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
40  |River1                      |R1    |0  |0  |-9   |0    |0  |0  |1   |0   |0    |0   |0   |0     
41  |River2                      |R2    |0  |0  |-9   |0    |0  |0  |1   |0   |0    |0   |0   |0     
42  |River3                      |R3    |0  |0  |-9   |0    |0  |0  |1   |0   |0    |0   |0   |0     
43  |River4                      |R4    |0  |0  |-9   |0    |0  |0  |1   |0   |0    |0   |0   |0     
44  |River5                      |R5    |0  |0  |-9   |0    |0  |0  |1   |0   |0    |0   |0   |0     
45  |Ambient Sound               |S1    |0  |0  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
46  |Crate                       |CT    |1  |1  |0    |0    |2  |2  |1   |0   |0    |0   |0   |0     
47  |Andariel's Door             |AD    |7  |1  |1    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
48  |RogueTorch                  |T1    |2  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
49  |RogueTorch                  |T2    |1  |2  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
50  |CasketR                     |C1    |5  |3  |9    |0    |0  |0  |1   |0   |0    |0   |0   |0     
51  |CasketL                     |C2    |3  |5  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
52  |Urn #3                      |U3    |1  |1  |0    |0    |1  |1  |2   |0   |0    |0   |0   |0     
53  |Casket                      |C4    |5  |3  |4    |0    |5  |5  |1   |0   |0    |0   |0   |0     
54  |Rogue Corpse 1              |Z1    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
55  |Rogue Corpse 2              |Z2    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
56  |Rolling Rogue Corpse        |Z5    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
57  |Rogue On A Stick 1          |Z3    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
58  |Rogue On A Stick 2          |Z4    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
59  |Town Portal                 |TP    |4  |4  |0    |0    |0  |0  |15  |-40 |-100 |80  |110 |0     
60  |Permanent Town Portal       |PP    |1  |1  |0    |0    |0  |0  |15  |-40 |-100 |80  |110 |0     
61  |Invis Object                |SS    |5  |5  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
62  |Door Cathedral L            |D9    |1  |4  |1    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
63  |Door Cathedral R            |DA    |4  |1  |1    |1    |0  |0  |1   |-20 |-80  |40  |40  |0     
64  |Door Wooden L #2            |DB    |1  |4  |4    |-1   |0  |0  |1   |-20 |-80  |40  |40  |0     
65  |Invis River Sound1          |X1    |0  |32 |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
66  |Invis River Sound2          |X2    |32 |0  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
67  |Ripple                      |1R    |1  |1  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
68  |Ripple                      |2R    |1  |1  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
69  |Ripple                      |3R    |1  |1  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
70  |Ripple                      |4R    |1  |1  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
71  |Forest Night Sound #1       |F1    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
72  |Forest Night Sound #2       |F2    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
73  |Yeti Dung                   |YD    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
74  |Trap Door                   |TD    |3  |3  |0    |0    |0  |0  |2   |0   |0    |0   |0   |223   
75  |Door By Dock                |DD    |1  |3  |0    |0    |0  |0  |2   |-20 |-80  |40  |40  |0     
76  |Sewer Drip                  |SZ    |5  |5  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
77  |Healthorama                 |SH    |3  |3  |0    |0    |0  |0  |1   |1   |84   |0   |0   |310   
78  |Invis Town Sound            |TA    |0  |0  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
79  |Casket #3                   |C3    |4  |6  |-4   |0    |6  |8  |1   |0   |0    |0   |0   |0     
80  |Obelisk                     |OB    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
81  |Forest Altar                |AF    |3  |3  |0    |0    |0  |0  |1   |3   |84   |0   |0   |310   
82  |Pool Of Blood               |B2    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
83  |Shrine                      |HS    |3  |3  |0    |-20  |0  |0  |1   |3   |84   |0   |0   |310   
84  |HealingWell                 |HW    |3  |3  |0    |0    |0  |0  |1   |1   |84   |0   |0   |310   
85  |HealthShrine                |BC    |3  |3  |0    |0    |0  |0  |2   |1   |85   |0   |0   |310   
86  |Shrine                      |SG    |3  |3  |0    |0    |0  |0  |2   |3   |85   |0   |0   |310   
87  |Tombchest 1 Large L         |CA    |1  |3  |0    |0    |0  |0  |2   |20  |0    |0   |0   |0     
88  |Tombchest 2 Large R         |CB    |3  |1  |0    |0    |0  |0  |2   |20  |0    |0   |0   |0     
89  |Mummy CoffinL Tomb          |MC    |3  |5  |0    |0    |5  |5  |2   |0   |0    |0   |0   |0     
90  |Desert Obelisk              |DO    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
91  |Tomb Door L                 |TL    |1  |7  |-8   |-11  |0  |0  |2   |-20 |-80  |40  |40  |0     
92  |Tomb Door R                 |TR    |7  |1  |2    |18   |0  |0  |2   |-20 |-80  |40  |40  |0     
93  |ManaShrine                  |iz    |3  |3  |0    |0    |0  |0  |8   |2   |0    |0   |0   |310   
94  |Urn #4                      |U4    |1  |1  |0    |0    |1  |1  |2   |0   |0    |0   |0   |0     
95  |Urn #5                      |U5    |1  |1  |0    |0    |1  |1  |2   |0   |0    |0   |0   |0     
96  |HealthShrine                |iy    |3  |3  |0    |0    |0  |0  |8   |1   |96   |0   |0   |310   
97  |MagicShrine                 |ix    |4  |4  |0    |0    |0  |0  |8   |3   |0    |0   |0   |310   
98  |Tomb Door L 2               |TS    |1  |7  |0    |0    |0  |0  |2   |-20 |-80  |40  |40  |0     
99  |Tomb Door R 2               |TU    |7  |1  |0    |0    |0  |0  |2   |-20 |-80  |40  |40  |0     
100 |Portal To Duriel            |SJ    |1  |3  |-38  |-14  |0  |0  |2   |-40 |-80  |80  |80  |0     
101 |Brazier3                    |B3    |1  |1  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
102 |Floor Brazier               |FB    |1  |1  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
103 |Flies                       |FL    |1  |1  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
104 |Armor Stand 1R              |A3    |2  |1  |0    |0    |0  |0  |7   |0   |0    |0   |0   |0     
105 |Armor Stand 2L              |A4    |1  |2  |0    |0    |0  |0  |7   |0   |0    |0   |0   |0     
106 |Weapon Rack 1R              |W1    |2  |1  |0    |0    |0  |0  |7   |0   |0    |0   |0   |0     
107 |Weapon Rack 2L              |W2    |1  |2  |0    |0    |0  |0  |7   |0   |0    |0   |0   |0     
108 |Malus                       |HM    |2  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |316   
109 |Shrine HealthR              |P2    |3  |3  |0    |0    |0  |0  |2   |1   |109  |0   |0   |310   
110 |Drinker                     |n5    |0  |0  |-10  |-35  |0  |0  |0   |0   |0    |0   |0   |0     
111 |Fountain 1                  |F3    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |309   
112 |Gesturer                    |n6    |0  |0  |10   |0    |0  |0  |0   |0   |0    |0   |0   |0     
113 |Fountain 2 Well             |F4    |3  |3  |0    |0    |0  |0  |2   |0   |0    |0   |0   |309   
114 |Turner                      |n7    |0  |0  |-5   |-5   |0  |0  |0   |0   |0    |0   |0   |0     
115 |Fountain 3                  |F5    |3  |3  |0    |0    |0  |0  |1   |0   |0    |0   |0   |309   
116 |Snakewoman Shrine           |SN    |3  |3  |0    |0    |0  |0  |2   |3   |109  |0   |0   |310   
117 |Jungle Torch                |JT    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
118 |Fountain 4                  |F6    |3  |3  |0    |0    |0  |0  |5   |0   |0    |0   |0   |309   
119 |Waypoint Portal             |wp    |5  |5  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
120 |Healthshrine Dungeun        |dj    |3  |3  |0    |0    |0  |0  |1   |1   |120  |0   |0   |310   
121 |Placeholder #1              |ss    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
122 |Placeholder #2              |ss    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
123 |Innershrinehell2            |iw    |3  |3  |0    |0    |0  |0  |8   |3   |96   |0   |0   |310   
124 |Innershrinehell3            |iv    |4  |3  |0    |0    |0  |0  |8   |3   |96   |0   |0   |310   
125 |Ihobject3 Inner Hell        |iu    |1  |1  |0    |0    |0  |0  |8   |18  |0    |0   |0   |0     
126 |Skullpile Inner Hell        |is    |1  |1  |0    |0    |0  |0  |8   |18  |0    |0   |0   |0     
127 |Ihobject5 Inner Hell        |ir    |4  |4  |0    |0    |0  |0  |8   |18  |0    |0   |0   |0     
128 |Hobject4 Inner Hell         |hg    |1  |1  |0    |0    |0  |0  |8   |18  |0    |0   |0   |0     
129 |Secret Door 1               |h2    |1  |5  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
130 |Pool Wilderness             |zw    |3  |3  |0    |0    |0  |0  |1   |750 |128  |1   |3   |309   
131 |Vile Dog Afterglow          |9b    |0  |0  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
132 |Cathedralwell Inside        |zc    |3  |3  |0    |0    |0  |0  |3   |750 |128  |1   |3   |309   
133 |Shrine                      |xx    |3  |3  |0    |0    |0  |0  |1   |3   |85   |0   |0   |310   
134 |Shrine                      |zs    |3  |4  |0    |0    |0  |0  |2   |3   |85   |0   |0   |310   
135 |Shrine                      |zr    |2  |2  |0    |0    |0  |0  |2   |3   |85   |0   |0   |310   
136 |Shrine                      |zd    |6  |3  |0    |0    |0  |0  |2   |3   |85   |0   |0   |310   
137 |Desertwell Well Desert Tomb |zl    |3  |3  |0    |0    |0  |0  |2   |750 |128  |1   |3   |309   
138 |Cavewell Caves              |zy    |4  |4  |0    |0    |0  |0  |1   |750 |128  |1   |3   |309   
139 |Chest Large R               |q1    |3  |2  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
140 |Chest Tall R                |q2    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
141 |Chest Med R                 |q3    |3  |2  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
142 |Jug1 Desert                 |q4    |1  |1  |0    |0    |0  |0  |2   |18  |0    |0   |0   |0     
143 |Jug2 Desert                 |q5    |1  |1  |0    |0    |0  |0  |2   |18  |0    |0   |0   |0     
144 |Chest1 L                    |q6    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
145 |Waypointi Inner Hell        |wi    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
146 |Chest2 R Chest Med L        |q9    |3  |1  |0    |0    |0  |0  |3   |18  |0    |0   |0   |0     
147 |Chest R Chest Large R       |q7    |3  |1  |0    |0    |0  |0  |3   |18  |0    |0   |0   |0     
148 |Chest L Tomb Chest L Large  |q8    |2  |2  |0    |0    |0  |0  |3   |18  |0    |0   |0   |0     
149 |Sun Altar Quest             |za    |4  |2  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
150 |Shrine1                     |zv    |5  |5  |0    |0    |0  |0  |2   |3   |85   |0   |0   |310   
151 |Shrine4                     |ze    |5  |4  |0    |0    |0  |0  |2   |3   |85   |0   |0   |310   
152 |Holder For Horadric Staff   |HA    |3  |3  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
153 |Tyrael's Door               |DX    |1  |5  |-18  |-8   |0  |0  |2   |-20 |-80  |40  |40  |0     
154 |Guard Corpse                |GC    |3  |3  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
155 |Rock Wilderness             |c7    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
156 |Waypoint                    |wm    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
157 |WildernessWaypoint          |wn    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
158 |Corpse                      |cp    |3  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
159 |Rockb Wilderness            |cq    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
160 |Fire Small                  |FX    |0  |0  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
161 |Fire Medium                 |FY    |0  |0  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
162 |Fire Large                  |FZ    |0  |0  |0    |0    |0  |0  |15  |1   |0    |0   |0   |0     
163 |Cliff Wilderness            |cf    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
164 |Mana Well1                  |MB    |3  |3  |0    |0    |0  |0  |1   |2   |85   |0   |0   |310   
165 |Mana Well2                  |MD    |3  |3  |0    |0    |0  |0  |1   |2   |77   |0   |0   |310   
166 |Mana Well3 Tomb             |MF    |3  |3  |0    |0    |0  |0  |2   |2   |85   |0   |0   |310   
167 |Mana Well4 Harom            |MH    |3  |3  |0    |0    |0  |0  |2   |2   |85   |0   |0   |310   
168 |Mana Well5                  |MJ    |3  |3  |0    |0    |0  |0  |8   |2   |85   |0   |0   |310   
169 |Log                         |cz    |5  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
170 |Jungle Healwell             |JH    |3  |3  |0    |0    |0  |0  |4   |1   |170  |0   |0   |310   
171 |Corpseb                     |sx    |3  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
172 |Health Well/shrine Desert   |Mk    |2  |2  |0    |0    |0  |0  |2   |1   |172  |0   |0   |310   
173 |Mana Well/shrine Desert     |Mi    |2  |2  |0    |0    |0  |0  |2   |2   |172  |0   |0   |310   
174 |Rockc Wilderness            |RY    |1  |1  |0    |0    |0  |0  |1   |-18 |-20  |36  |30  |0     
175 |Rockd Wilderness            |RZ    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
176 |Chest-L-med                 |c8    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
177 |Chest-L-large               |c9    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
178 |Guard On A Stick            |GS    |1  |1  |0    |0    |0  |0  |3   |0   |0    |0   |0   |0     
179 |Bookshelf1                  |b4    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
180 |Bookshelf2                  |b5    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
181 |Jungle Chest                |JC    |3  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
182 |Tombcoffin                  |tm    |1  |1  |0    |0    |0  |0  |2   |18  |0    |0   |0   |0     
183 |Chest-L-med Jungle          |jz    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
184 |Jungle Shrine2              |jy    |3  |3  |0    |0    |0  |0  |4   |3   |184  |0   |0   |310   
185 |Jungle Object Act3          |jx    |2  |2  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
186 |Jungle Object Act3          |jw    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
187 |Jungle Object Act3          |jv    |2  |2  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
188 |Jungle Object Act3          |ju    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
189 |Cain Portal                 |tP    |0  |0  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
190 |Jungle Shrine3              |js    |3  |4  |0    |0    |0  |0  |4   |3   |184  |0   |0   |310   
191 |Jungle Shrine4              |jr    |3  |3  |0    |0    |0  |0  |4   |3   |184  |0   |0   |310   
192 |Tele Pad                    |7h    |1  |1  |0    |0    |0  |0  |2   |-30 |-80  |60  |80  |0     
193 |Lam Esen's Tome             |ab    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |427   
194 |Stairsl                     |sl    |6  |10 |0    |0    |0  |0  |15  |0   |0    |0   |0   |694   
195 |Stairsr                     |sv    |10 |6  |0    |0    |0  |0  |15  |0   |0    |0   |0   |693   
196 |Test Data Floortrap         |a5    |1  |1  |-18  |2    |0  |0  |15  |0   |0    |0   |0   |0     
197 |Jungleshrine                |jq    |3  |3  |0    |0    |0  |0  |4   |3   |184  |0   |0   |310   
198 |Chest General L             |c0    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
199 |Mafistoshrine               |mz    |3  |4  |0    |0    |0  |0  |4   |3   |206  |0   |0   |310   
200 |Mafistoshrine               |my    |5  |3  |0    |0    |0  |0  |4   |3   |206  |0   |0   |310   
201 |Mafistoshrine               |mx    |4  |4  |0    |0    |0  |0  |4   |3   |206  |0   |0   |310   
202 |Mafistomana                 |mw    |3  |4  |0    |0    |0  |0  |4   |2   |206  |0   |0   |310   
203 |Mafistolair                 |mv    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
204 |Box                         |mu    |1  |3  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
205 |Altar                       |mt    |2  |2  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
206 |Mafistohealth               |mr    |3  |4  |0    |0    |0  |0  |1   |1   |206  |0   |0   |310   
207 |Water Rocks In Wrok         |rw    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
208 |Basket 1                    |bd    |1  |1  |0    |0    |1  |1  |4   |0   |0    |0   |0   |0     
209 |Basket 2                    |bj    |1  |1  |0    |0    |1  |1  |4   |0   |0    |0   |0   |0     
210 |Water Logs In Ne Logw       |lw    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
211 |Water Rocks Girl In Wrob    |wb    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
212 |Bubbles In Act3 Water       |yb    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
213 |Water Logs In Logx          |wd    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
214 |Water Rocks In Rokb         |wc    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
215 |Water Rocks Girl In Watc    |we    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
216 |Water Rocks In Waty         |wy    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
217 |Water Logs In Logz          |lx    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
218 |Web Covered Tree 1          |w3    |3  |9  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
219 |Web Covered Tree 2          |w4    |9  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
220 |Web Covered Tree 3          |w5    |3  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
221 |Web Covered Tree 4          |w6    |3  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
222 |Hobject1                    |70    |2  |2  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
223 |Cacoon                      |CN    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
224 |Cacoon 2                    |CC    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
225 |Hobject1                    |ib    |1  |1  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
226 |Outershrinehell             |ia    |3  |4  |0    |0    |0  |0  |8   |3   |96   |0   |0   |310   
227 |Water Rock Girl Nw Blgb     |QX    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
228 |Big Log Sw Blga             |qw    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
229 |Slimedoor1                  |SQ    |7  |1  |5    |20   |0  |0  |2   |0   |0    |0   |0   |0     
230 |Slimedoor2                  |SY    |1  |7  |3    |-23  |0  |0  |2   |0   |0    |0   |0   |0     
231 |Outershrinehell2            |ht    |3  |4  |0    |0    |0  |0  |8   |3   |96   |0   |0   |310   
232 |Outershrinehell3            |hq    |4  |4  |0    |0    |0  |0  |8   |3   |96   |0   |0   |310   
233 |Hobject2                    |hv    |3  |3  |0    |0    |0  |0  |8   |18  |0    |0   |0   |0     
234 |Big Log Se Blgc             |Qy    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
235 |Big Log Nw Blgd             |Qz    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
236 |Health Wellforhell          |ho    |3  |3  |0    |0    |0  |0  |8   |18  |0    |0   |0   |310   
237 |Act3Waypoint Town           |wz    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
238 |Waypointh                   |wv    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
239 |Burning Town                |bz    |3  |3  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
240 |Chest1 L                    |cy    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
241 |Chest2 R                    |cx    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
242 |Chest3 R                    |cu    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
243 |Chest3 L                    |cd    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
244 |Sewers                      |rn    |1  |1  |0    |0    |0  |0  |3   |18  |0    |0   |0   |0     
245 |Burning Town                |by    |1  |1  |0    |0    |0  |0  |1   |1   |0    |0   |0   |0     
246 |Sewers                      |ra    |1  |1  |0    |0    |0  |0  |3   |18  |0    |0   |0   |0     
247 |Bed                         |qa    |4  |2  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
248 |Bed                         |qb    |2  |4  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
249 |HellManaWell                |hn    |3  |3  |0    |0    |0  |0  |8   |2   |96   |0   |0   |310   
250 |Exploding Cow / Rare        |ew    |3  |1  |0    |0    |0  |0  |5   |18  |0    |0   |0   |0     
251 |Gidbinn Altar               |ga    |3  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
252 |Gidbinn Decoy               |gd    |3  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |315   
253 |Diablo R Light              |11    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
254 |Diablo L Light              |12    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
255 |Diablo Start Point          |ss    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
256 |Stool For Cabin             |s9    |3  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
257 |Wood For Cabin              |wg    |3  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
258 |More Wood For Cabin         |wh    |3  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
259 |Skeleton Spawn Hell/nw      |QS    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
260 |Holyshrine                  |HL    |1  |1  |0    |0    |0  |0  |1   |3   |77   |0   |0   |310   
261 |Spikes For Tombs Floortrap  |A7    |1  |1  |-15  |5    |0  |0  |2   |0   |0    |0   |0   |0     
262 | Cathedral                  |s0    |3  |3  |0    |0    |0  |0  |1   |3   |77   |0   |0   |310   
263 | Jail                       |jb    |3  |3  |0    |0    |0  |0  |1   |3   |77   |0   |0   |310   
264 | Jail                       |jd    |3  |3  |0    |0    |0  |0  |1   |1   |264  |0   |0   |310   
265 | Jail                       |jf    |3  |3  |0    |0    |0  |0  |1   |2   |264  |0   |0   |310   
266 |Goo Pile                    |GP    |1  |1  |0    |0    |0  |0  |2   |18  |0    |0   |0   |0     
267 |Bank                        |b6    |1  |1  |0    |0    |0  |0  |15  |1   |0    |0   |0   |319   
268 |Wirt's Body                 |BP    |1  |1  |0    |0    |0  |0  |1   |18  |0    |0   |0   |0     
269 |Gold Placeholder            |1g    |0  |0  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
270 |Guard Corpse 2              |GF    |3  |3  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
271 |Dead Villager 1             |dg    |3  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
272 |Dead Villager 2             |df    |3  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
273 |Flame / No Damage           |f8    |1  |1  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
274 |Tiny Pixel Shaped Thingie   |f9    |0  |0  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
275 |Health Shrine               |ce    |3  |3  |0    |0    |0  |0  |1   |1   |275  |0   |0   |310   
276 |Mana Shrine                 |cg    |3  |3  |0    |0    |0  |0  |1   |2   |275  |0   |0   |310   
277 |Magic Shrine                |cg    |3  |3  |0    |0    |0  |0  |1   |3   |275  |0   |0   |310   
278 |Mana Shrine                 |de    |3  |3  |0    |0    |0  |0  |4   |2   |120  |0   |0   |310   
279 |Magic Shrine                |wj    |2  |2  |0    |0    |0  |0  |4   |3   |282  |0   |0   |310   
280 |Healthwell                  |wk    |3  |4  |0    |0    |0  |0  |4   |1   |282  |0   |0   |310   
281 |Manawell                    |wl    |3  |4  |0    |0    |0  |0  |4   |2   |282  |0   |0   |310   
282 |Shrine                      |ws    |3  |3  |0    |0    |0  |0  |4   |3   |282  |0   |0   |310   
283 |Brazier Celler              |bi    |1  |1  |0    |0    |0  |0  |1   |1   |0    |0   |0   |0     
284 |Anubis Coffin               |qc    |3  |5  |0    |0    |5  |5  |2   |0   |0    |0   |0   |0     
285 |Brazier General Sewers      |bm    |1  |1  |0    |0    |0  |0  |1   |1   |0    |0   |0   |0     
286 |Brazier Tall                |bo    |3  |3  |0    |0    |0  |0  |1   |1   |0    |0   |0   |0     
287 |Brazier Small               |bq    |2  |2  |0    |0    |0  |0  |1   |1   |0    |0   |0   |0     
288 |Waypoint Celler             |w7    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
289 |Bed                         |ub    |5  |5  |0    |0    |0  |0  |1   |-50 |0    |100 |80  |0     
290 |IronGrateDoor L             |dv    |1  |3  |-5   |-8   |0  |0  |1   |-20 |-80  |40  |40  |0     
291 |IronGrateDoor R             |dn    |3  |1  |0    |8    |0  |0  |1   |-20 |-80  |40  |40  |0     
292 |Wooden Grate Door L         |dp    |1  |3  |-5   |-9   |0  |0  |1   |-20 |-80  |40  |40  |0     
293 |Wooden Grate Door R         |dt    |3  |1  |-3   |8    |0  |0  |1   |-20 |-80  |40  |40  |0     
294 |Wooden Door L               |dk    |1  |3  |-3   |-10  |0  |0  |1   |-20 |-80  |40  |40  |0     
295 |Wooden Door R               |dl    |3  |1  |0    |7    |0  |0  |1   |-20 |-80  |40  |40  |0     
296 |Wall Torch L                |qd    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
297 |Wall Torch R                |qe    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
298 |Arcane Portal               |ay    |5  |2  |0    |0    |0  |0  |2   |-30 |-80  |60  |80  |339   
299 |MagicShrine                 |hb    |3  |3  |0    |0    |0  |0  |4   |3   |301  |0   |0   |310   
300 |MagicShrine                 |hc    |3  |3  |0    |0    |0  |0  |4   |3   |301  |0   |0   |310   
301 |HealthWell                  |qf    |1  |1  |0    |0    |0  |0  |1   |1   |301  |0   |0   |310   
302 |ManaWell                    |qg    |1  |1  |0    |0    |0  |0  |1   |2   |301  |0   |0   |310   
303 |MagicShrine                 |hd    |3  |3  |0    |0    |0  |0  |4   |3   |301  |60  |80  |310   
304 |Telepad                     |7h    |1  |1  |0    |0    |0  |0  |2   |-30 |-80  |60  |80  |0     
305 |Telepad                     |aa    |1  |1  |0    |0    |0  |0  |2   |-30 |-80  |60  |80  |0     
306 |Telepad                     |aa    |1  |1  |0    |0    |0  |0  |2   |-30 |-80  |60  |80  |0     
307 |Arcane Thing                |7a    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
308 |Arcane Thing                |7b    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
309 |Arcane Thing                |7c    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
310 |Arcane Thing                |7d    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
311 |Arcane Thing                |7e    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
312 |Arcane Thing                |7f    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
313 |Arcane Thing                |7g    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
314 |Harem Guard 1               |qh    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
315 |Harem Guard 2               |qi    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
316 |Harem Guard 3               |qj    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
317 |Harem Guard 4               |qk    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
318 |Harem Blocker               |ss    |1  |7  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
319 |HealthWell                  |ax    |2  |2  |0    |0    |0  |0  |2   |1   |282  |0   |0   |310   
320 |HealthWell                  |au    |2  |2  |0    |0    |0  |0  |2   |1   |282  |0   |0   |310   
321 |Test Data                   |pp    |0  |0  |0    |0    |0  |0  |0   |0   |0    |0   |0   |0     
322 |TombWell                    |hu    |3  |3  |0    |0    |0  |0  |2   |750 |128  |1   |3   |309   
323 |SewerWaypoint               |qm    |1  |1  |0    |0    |0  |0  |2   |0   |0    |0   |0   |0     
324 |TravincalWaypoint           |ql    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
325 |MagicShrine                 |qn    |3  |3  |0    |0    |0  |0  |4   |3   |301  |0   |0   |310   
326 |DeadBody                    |qo    |3  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
327 |Torch (sewer)               |V1    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
328 |Torch (kurast)              |V2    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
329 |Maf Chest Large L           |xb    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
330 |Maf Chest Large R           |xc    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
331 |Maf Chest Mid L             |xd    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
332 |Maf Chest Mid R             |xe    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
333 |Lair Chest Large L          |xf    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
334 |Lair Chestt L               |xg    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
335 |Lair Chest Mid R            |xh    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
336 |Lair Chest R                |xi    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
337 |Steeg Stone                 |y6    |2  |2  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
338 |Guild Vault                 |y4    |3  |3  |0    |0    |0  |0  |15  |1   |0    |0   |0   |0     
339 |Trophy Case                 |y2    |2  |3  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
340 |Message Board               |y3    |2  |3  |0    |0    |0  |0  |15  |0   |0    |0   |0   |0     
341 |Mephisto Bridge             |xj    |11 |5  |-20  |-45  |0  |0  |4   |18  |0    |0   |0   |0     
342 |Hellgate                    |1y    |1  |1  |0    |0    |0  |0  |12  |-40 |-80  |80  |80  |339   
343 |ManaWell                    |xl    |2  |2  |0    |0    |0  |0  |4   |1   |282  |0   |0   |310   
344 |HealthWell                  |xm    |2  |2  |0    |0    |0  |0  |4   |1   |282  |0   |0   |310   
345 |Hellfire1                   |e3    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
346 |Hellfire2                   |e4    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
347 |Hellfire3                   |e5    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
348 |Helllava1                   |e6    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
349 |Helllava2                   |e7    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
350 |Helllava3                   |e8    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
351 |Lightsource1                |ss    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
352 |Lightsource1                |ss    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
353 |Lightsource1                |ss    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
354 |Horadric Cube Chest         |xk    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |318   
355 |Horadric Scroll Chest       |xk    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |318   
356 |Staff Of Kings Chest        |xk    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |318   
357 |Yet Another Tome            |TT    |1  |1  |0    |0    |0  |0  |1   |0   |0    |0   |0   |427   
358 |Hell Brazier                |E1    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
359 |Hell Brazier                |E2    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
360 |Rockpile                    |xn    |2  |2  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
361 |MagicShrine                 |qo    |3  |3  |0    |0    |0  |0  |4   |3   |301  |0   |0   |310   
362 |Basket                      |xp    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
363 |HugeSkeleton                |jw    |4  |4  |0    |0    |0  |0  |4   |18  |0    |0   |0   |0     
364 |Guy For Dungeon             |ea    |2  |1  |0    |0    |0  |0  |14  |18  |0    |0   |0   |0     
365 |Casket                      |vb    |5  |3  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
366 |Sewer Quest Stairs          |ve    |5  |5  |0    |0    |0  |0  |4   |0   |0    |0   |0   |223   
367 |Sewer Quest Lever           |vf    |3  |5  |0    |0    |0  |0  |4   |0   |0    |0   |0   |304   
368 |Start Position              |ss    |0  |0  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
369 |Trapped Soul                |ss    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
370 |Torch                       |VG    |1  |1  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
371 |LargeChestR                 |L1    |1  |1  |0    |0    |0  |0  |15  |15  |0    |0   |0   |0     
372 |Bonepile                    |y1    |1  |1  |0    |0    |0  |0  |8   |18  |0    |0   |0   |0     
373 |Skeleton Spawn, Ne          |Qt    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
374 |Fog Water Rfga              |ud    |1  |1  |0    |0    |0  |0  |12  |0   |0    |0   |0   |0     
375 |Not Used                    |xx    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
376 |Forge Hell                  |ux    |3  |3  |0    |-10  |0  |0  |8   |0   |0    |0   |0   |0     
377 |Portal To Guild             |PP    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
378 |Hratli Start                |ss    |0  |0  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
379 |Hratli End                  |ss    |0  |0  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
380 |Burning Guy                 |uy    |2  |2  |20   |-3   |0  |0  |8   |0   |0    |0   |0   |0     
381 |Burning Guy                 |15    |2  |2  |20   |-3   |0  |0  |8   |0   |0    |0   |0   |0     
382 |Natalya Start               |ss    |0  |0  |0    |0    |0  |0  |4   |0   |0    |0   |0   |0     
383 |Guy Stuck In Hell           |18    |2  |2  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
384 |Guy Stuck In Hell           |19    |2  |2  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
385 |Cain Start Position         |ss    |0  |0  |0    |0    |0  |0  |1   |0   |0    |0   |0   |0     
386 |Stairsr                     |sv    |10 |6  |0    |0    |0  |0  |15  |0   |0    |0   |0   |693   
387 |ArcanebigchestL             |y7    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
388 |ArcaneCasket                |y8    |1  |3  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
389 |ChestBig R                  |y9    |3  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
390 |ChestSmall L                |ya    |1  |2  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
391 |ChestSmall R                |yc    |2  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
392 |Diablo Seal1                |30    |5  |5  |0    |0    |0  |0  |8   |0   |0    |0   |0   |306   
393 |Diablo Seal2                |31    |5  |5  |0    |0    |0  |0  |8   |0   |0    |0   |0   |306   
394 |Diablo Seal3                |32    |5  |5  |0    |0    |0  |0  |8   |0   |0    |0   |0   |306   
395 |Diablo Seal4                |33    |5  |5  |0    |0    |0  |0  |8   |0   |0    |0   |0   |306   
396 |Diablo Seal5                |34    |5  |5  |0    |0    |0  |0  |8   |0   |0    |0   |0   |306   
397 |Sparklychest                |yf    |2  |2  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
398 |PandamoniaWaypoint          |yg    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
399 |Fissure For Inner Hell      |fh    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
400 |Brazier For Hell            |he    |2  |2  |0    |0    |0  |0  |8   |1   |0    |0   |0   |0     
401 |Smoke                       |35    |0  |0  |0    |0    |0  |0  |8   |0   |0    |0   |0   |0     
402 |VallyWaypoint               |yi    |1  |1  |0    |0    |0  |0  |8   |0   |0    |0   |0   |307   
403 |Hell Brazier                |9f    |2  |2  |0    |0    |0  |0  |8   |1   |0    |0   |0   |0     
404 |Compelling Orb              |55    |3  |3  |0    |0    |0  |0  |8   |1   |0    |0   |0   |305   
405 |Khalim Chest                |xk    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |318   
406 |Khalim Chest                |xk    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |318   
407 |Khalim Chest                |xk    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |318   
408 |Fortress Brazier #1         |98    |2  |2  |0    |0    |0  |0  |8   |1   |0    |0   |0   |0     
409 |Fortress Brazier #2         |99    |1  |1  |0    |0    |0  |0  |8   |1   |0    |0   |0   |0     
408 |Siege Control               |zq    |1  |1  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
409 |PotOTorch(level 1)          |px    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
410 |FirePit(level 1)            |py    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
413 |Chest R                     |6q    |2  |2  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
414 |Shrine                      |6r    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
415 |Shrine                      |6s    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
416 |HiddenStash                 |3w    |1  |3  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
417 |WildernessFlag              |ym    |3  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
418 |Barrel                      |yn    |1  |1  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
419 |Barrel2                     |6t    |1  |1  |0    |0    |2  |2  |16  |0   |0    |0   |0   |0     
420 |Wooden Chest L              |yp    |1  |3  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
421 |Shrine 3                    |yq    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
422 |Mana Shrine                 |yr    |3  |3  |0    |0    |0  |0  |16  |2   |172  |0   |0   |310   
423 |Health Shrine               |ys    |3  |3  |0    |0    |0  |0  |16  |1   |282  |0   |0   |310   
424 |BurialChest L               |yt    |2  |3  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
425 |BurialChest R               |ys    |3  |2  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
426 |Well                        |yv    |4  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |309   
427 |Shrine2                     |yw    |3  |3  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
428 |Shrine2                     |yx    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
429 |Waypoint                    |yy    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
430 |Chest L                     |yz    |1  |2  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
431 |Woodchest R                 |6a    |2  |1  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
432 |Chest SL                    |6b    |1  |2  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
433 |Chest SR                    |6c    |2  |1  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
434 |Torch 1                     |6d    |2  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
435 |Camp Fire                   |2w    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
436 |Town Torch                  |2x    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
437 |Torch 2                     |6e    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
438 |Burning Bodies              |6f    |2  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
439 |Burning Pit                 |6g    |3  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
440 |Tribal Flag                 |6h    |3  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
441 |Town Flag                   |2y    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
442 |Chandeleir                  |2z    |1  |1  |-130 |0    |0  |0  |16  |0   |0    |0   |0   |0     
443 |Jar 1                       |6i    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
444 |Jar 2                       |6j    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
445 |Jar 3                       |6k    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
446 |SwingingHeads               |6L    |5  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
447 |Pole                        |6m    |4  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
448 |Skill W/ Rockpile           |6n    |5  |3  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
449 |Town Main Gate              |2v    |1  |7  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
450 |Skull And Rocks             |6o    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
451 |Hellgate                    |6p    |3  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
452 |Banner 1                    |ao    |1  |1  |0    |0    |0  |0  |16  |1   |0    |0   |0   |0     
453 |Banner 2                    |ap    |1  |1  |0    |0    |0  |0  |16  |1   |0    |0   |0   |0     
454 |Exploding Chest             |6t    |1  |3  |0    |0    |2  |2  |16  |0   |0    |0   |0   |0     
455 |Special Chest               |6u    |2  |1  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
456 |DeathPole R                 |6v    |3  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
457 |DeathPole L                 |6w    |3  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
458 |Temple Altar                |6x    |2  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
459 |Drehya In Town              |ss    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
460 |Drehya Outside Town         |ss    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
461 |Nihlathak In Town           |ss    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
462 |Nihlathak Outside Town      |ss    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
463 |Hidden Stash                |6y    |1  |1  |0    |0    |0  |0  |15  |18  |0    |0   |0   |0     
464 |Health Shrine               |8a    |2  |2  |0    |0    |0  |0  |16  |1   |282  |0   |0   |310   
465 |Mana Shrine                 |8b    |2  |2  |0    |0    |0  |0  |16  |2   |172  |0   |0   |310   
466 |Evil Urn                    |8c    |1  |1  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
467 |IcecaveJar1                 |8d    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
468 |IcecaveJar2                 |8e    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
469 |IcecaveJar3                 |8f    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
470 |IcecaveJar4                 |8g    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
471 |IcecaveJar5                 |8h    |1  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
472 |IcecaveShrine2              |8i    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
473 |Caged Fellow                |60    |3  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |310   
474 |Statue 3                    |60    |3  |3  |-5   |-5   |0  |0  |16  |0   |0    |0   |0   |0     
475 |Statue 1                    |61    |3  |3  |-5   |-5   |0  |0  |16  |0   |0    |0   |0   |0     
476 |Statue 2                    |62    |3  |3  |-10  |-8   |0  |0  |16  |0   |0    |0   |0   |0     
477 |Dead Barbarian              |8j    |2  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
478 |Client Smoke                |oz    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
479 |IcecaveShrine2              |8k    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
480 |IcecaveTorch1               |8L    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
481 |IcecaveTorch2               |8m    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
482 |Expansion Tiki Torch        |2p    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
483 |ManaShrine                  |8n    |2  |2  |0    |0    |0  |0  |16  |2   |172  |0   |0   |310   
484 |BaalHealthShrine            |8o    |2  |2  |0    |0    |0  |0  |16  |2   |172  |0   |0   |310   
485 |Baal's Lair                 |8p    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
486 |Baal's Lair                 |8q    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
487 |Baal's Lair                 |8r    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
488 |BaalMagicShrine             |8s    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
489 |Torch1                      |8t    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
490 |Torch2                      |8u    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
491 |ManaShrine                  |8v    |3  |3  |0    |0    |0  |0  |16  |2   |172  |0   |0   |310   
492 |HealthShrine                |8w    |3  |3  |0    |0    |0  |0  |16  |1   |282  |0   |0   |310   
493 |Well                        |8x    |4  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |309   
494 |BaalWaypoint                |8y    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |307   
495 |Shrine3                     |8z    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
496 |WildernessWaypoint          |5a    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |307   
497 |Shrine3                     |5b    |3  |3  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
498 |BaalWell                    |5c    |3  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |309   
499 |BaalMagicShrine2            |5d    |2  |4  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
500 |Object1                     |5e    |2  |2  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
501 |Woodchest L                 |5f    |1  |3  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
502 |Woodchest R                 |5g    |3  |1  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
503 |BaalMagicShrine3            |5h    |3  |3  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
504 |WoodChest L                 |5f    |2  |3  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
505 |WoodChest 2                 |5f    |3  |2  |0    |0    |0  |0  |16  |20  |0    |0   |0   |0     
506 |SwingingHeads               |5k    |5  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
507 |Debris                      |5l    |4  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
508 |Pen Door                    |2q    |1  |7  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
509 |TempleMagicShrine           |5h    |4  |3  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
510 |Pole                        |5k    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
511 |IcecaveWaypoint             |5a    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |307   
512 |TempleMagicShrine2          |5t    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
513 |TempleWell                  |5q    |4  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |309   
514 |Torch1                      |5r    |1  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
515 |Torch2                      |5s    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
516 |Object1                     |5u    |1  |1  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
517 |Object2                     |5v    |2  |2  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
518 |BaalMrBox                   |5w    |3  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
519 |IcecaveWell                 |5x    |3  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |309   
520 |TempleMagicShrine3          |5y    |2  |2  |0    |0    |0  |0  |16  |3   |206  |0   |0   |310   
521 |TempleHealthShrine          |5z    |3  |3  |0    |0    |0  |0  |16  |1   |282  |0   |0   |310   
522 |TempleManaShrine            |3a    |3  |3  |0    |0    |0  |0  |16  |2   |172  |0   |0   |310   
523 | Blacksmith                 |ss    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
524 |Baal's Lair Tomb1           |3b    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
525 |Baal's Lair Tomb2           |3c    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
526 |Baal's Lair Tomb3           |3d    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
527 |Ice Cave BubblesU 01        |2u    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
528 |Ice Cave BubblesS 01        |2s    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
529 |Redbaal's Lair Tomb1        |3f    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
530 |Redbaal's Lair Tomb1L       |3g    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
531 |Redbaal's Lair Tomb2        |3h    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
532 |Redbaal's Lair Tomb2L       |3i    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
533 |Redbaal's Lair Tomb3        |3j    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
534 |Redbaal's Lair Tomb3L       |3k    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
535 |RedbaalsMrBox               |3L    |3  |1  |0    |0    |1  |1  |16  |0   |0    |0   |0   |0     
536 |Redbaal's Torch1            |3m    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
537 |Redbaal's Torch2            |3n    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
538 |TempleCandles               |3o    |2  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
539 |TempleWaypoint              |3p    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |307   
540 |DeadPerson                  |3q    |2  |2  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
541 |GroundTomb                  |3s    |5  |3  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
542 |Larzuk Greeting             |ss    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
543 |Larzuk Standard             |ss    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
544 |GroundTombL                 |3t    |3  |5  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
545 |DeadPerson2                 |3u    |2  |2  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
546 |AncientsAltar               |4a    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |1467 
547 |Worldstone Level1           |4b    |5  |8  |-47  |17   |0  |0  |16  |-30 |-100 |70  |100 |0     
548 |WeaponrackR                 |3x    |2  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
549 |WeaponrackL                 |3y    |1  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
550 |ArmourrackR                 |3z    |2  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
551 |ArmourrackL                 |4c    |1  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
552 |SummitTorch2                |9g    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
553 |FuneralPire                 |9h    |3  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
554 |BurningLogs                 |9i    |3  |4  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
555 |Ice Cave Steam              |2o    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
556 |DeadPerson3                 |3v    |2  |2  |0    |0    |0  |0  |16  |18  |0    |0   |0   |0     
557 |Baal's Lair                 |ss    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
558 |Frozen Anya                 |2n    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |1468 
559 |BBQ Bunny                   |29    |3  |3  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
560 |Baal Torch Big              |25    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
561 |Invisible Ancient           |ss    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
562 |Invisible Base              |ss    |5  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
563 |Worldstone Chamber          |4x    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
564 |GlacialCaves Level1         |4u    |0  |0  |0    |-33  |0  |0  |16  |0   |0    |0   |0   |0     
565 |Last Cinematic              |pp    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
566 |Harrogath LastPortal        |pp    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
567 |Zoo                         |ss    |0  |0  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
568 |Keeper                      |7z    |2  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
569 |ThroneOfDest Portal         |4x    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
570 |FireplaceGuy                |7y    |1  |1  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
571 |DoorBlocker                 |ss    |5  |2  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
572 |DoorBlocker2                |ss    |2  |5  |0    |0    |0  |0  |16  |0   |0    |0   |0   |0     
[/code]
;)
July 21, 2006, 6:48 PM
ShadowDancer
[code]
0x21 Skill Granted From Item
Length = 11 + Header
0x21 - 00 00 | 61 38 E4 07 | 2F 00 | 00 | 12 | 00
                      ^ PlayerID    ^Skill          ^Level
(WORD)  Unknown
(DWORD) PlayerID
(WORD) Skill
(BYTE)  Unknown
(BYTE)  SkillLevel
(BYTE)  Unknown

Notes:

This displays the Skill Name, and Level of skill you recieve
only from an item.  If you have multiple items (a set for
example) that give you the skill, this seems to trigger once
for each of the items.
[/code]

it is a skill spot notify.... will tell you changes to the skills spot. Will receive it if u assign one skill.
July 27, 2006, 11:17 PM
phantomcircuit
GS: 0x58 XX XX XX XX 06 00

XX XX XX XX == UID for charsi

This packet is sent after you imbue an item with charsi
September 8, 2008, 11:59 PM
Ringo
An entity simply means *somthing* with in the game, that is not floor graphic/related.

An entity can have the following TYPE's;
0x00 = The Entity Is A Player.
0x01 = The Entity Is A Computer Controlled Player, Such As A NPC, Monster, Merc, etc.
0x02 = The Entity Is A Object, Such As A Stash, Shrine, Chest, etc.
0x03 = Thought To Be Missile's.
0x04 = The Entity Is A Item.
0x05 = The Entity Is A Door Way.

Every entity type, has a unique *Code*
When an entity comes into view, what ever type it maybe, it is going to have a class.
For player's, you have the following code's/class's;
0 = Amazon
1 = Sorceress
2 = Necromancer
3 = Paladin
4 = Barbarian
5 = Druid
6 = Assassin
For NPC's, you have following code's/class's;
Click for list of NPC code's
Up-to-date list's can be found with in Diablo II's MPQ files, in "excel" folder, in monstats.txt/monstats.bin
For Object's, you have the following code's/class's;
Click for list of Object code's
Up-to-date list's can be found with in Diablo II's MPQ files, in "excel" folder, in objects.txt/objects.bin
For Item's, see the related txt/bin files, with in the "excel" folder.
For Door's, see the lvlwarp.txt/lvlwarp.bin with in the "excel" folder.

Now you know what type of entity somthing is and what class the entity is, with in it's type.
As we all know, there can be more than 1 of the same type/class entity's around at the same time, so how do you tell them apart?
Entity's have ID's asigned to them, allowing you to tell apart 2 differnt entitys of the same type and class, ie; 2 fallens.
January 12, 2010, 4:38 AM
Ringo
[code]
##### Act 1 ####################
01 00 = Rogue Encampment
02 00 = Blood Moor
08 00 = Den Of Evil
03 00 = Cold Plains
09 00 = Cave Level 1
0D 00 = Cave Level 2
11 00 = Burial Grounds
12 00 = Crypt
13 00 = Mausolem
04 00 = Stony Fields
26 00 = Tristram
0A 00 = Under Ground Passage Level 1
0E 00 = Under Ground Passage Level 2
05 00 = Dark Wood
06 00 = Black Marsh
0B 00 = The Hole Level 1
0F 00 = The Hole Level 2
14 00 = Forgotten Tower
15 00 = Town Cellar Level 1
16 00 = Town Cellar Level 2
17 00 = Town Cellar Level 3
18 00 = Town Cellar Level 4
19 00 = Town Cellar Level 5
07 00 = Tamoe Highlands
0C 00 = Pit Level 1
10 00 = Pit Level 2
1A 00 = Monastry gate
1B 00 = Outer Cloister
1C 00 = Barracks
1D 00 = Jail Level 1
1E 00 = Jail Level 2
1F 00 = Jail Level 3
20 00 = Inner Cloister
21 00 = Cathedral
22 00 = CataCombs Level 1
23 00 = CataCombs Level 2
24 00 = CataCombs Level 3
25 00 = CataCombs Level 4
27 00 = The Secret Cow Level
##### Act 2 ####################
28 00 = Lut Gholein
2F 00 = Sewers Level 1
30 00 = Sewers Level 2
31 00 = Sewers Level 3
29 00 = Rocky Waste
37 00 = Stony Tomb Level 1
3B 00 = Stony Tomb Level 2
2A 00 = Dry Hills
38 00 = Halls Of The Dead Level 1
39 00 = Halls Of The Dead Level 2
3C 00 = Halls Of The Dead Level 3
2B 00 = Far Oasis
3E 00 = Maggot Lair Level 1
3F 00 = Maggot Lair Level 2
40 00 = Maggot Lair Level 3
2C 00 = Lost City
41 00 = Ancient Tunnles
2D 00 = Valley Of The Snakes
3A 00 = Claw Viper Temple Level 1
3D 00 = Claw Viper Temple Level 2
32 00 = Harem Level 1
33 00 = Harem Level 2
34 00 = Palace Cellar Level 1
35 00 = Palace Cellar Level 2
36 00 = Palace Cellar Level 3
4A 00 = Arcain Sanctuary
2E 00 = Canyon Of The Magi
45 00 = Tal Rasha's Tomb FAKE 1
44 00 = Tal Rasha's Tomb FAKE 2
43 00 = Tal Rasha's Tomb FAKE 3
42 00 = Tal Rasha's Tomb FAKE 4
46 00 = Tal Rasha's Tomb FAKE 5
47 00 = Tal Rasha's Tomb FAKE 6
48 00 = Tal Rasha's Tomb
49 00 = Tal Rasha's Chamber
##### Act 3 ####################
4B 00 = Kurast Docks
4C 00 = Spider Forest
55 00 = Spider Cavern
54 00 = Arachnid Lair
4D 00 = Great Marsh
4E 00 = Flayer Jungle
58 00 = Flayer Dungeon Level 1
59 00 = Flayer Dungeon Level 2
5B 00 = Flayer Dungeon Level 3
56 00 = Swampy Pit Level 1
57 00 = Swampy Pit Level 2
5A 00 = Swampy Pit Level 3
4F 00 = Lower Kurast
50 00 = Kurast Bazaar
5E 00 = Ruined Temple
5F 00 = Disused Fane
5C 00 = Sewers Level 1
5D 00 = Sewers Level 2
51 00 = Upper Kurast
60 00 = Forgotten Reliquary
61 00 = Forgotten Temple
52 00 = Kurast Casueway
62 00 = Ruined Fane
63 00 = Disused Reliquary
53 00 = Travincal
64 00 = Durance Of Hate Level 1
65 00 = Durance Of Hate Level 2
66 00 = Durance Of Hate Level 3
##### Act 4 ####################
67 00 = The Pandeminoum Fortress
68 00 = Outer Steppers
69 00 = Plains Of Despair
6A 00 = City Of The Damned
6B 00 = River Of Flame
6C 00 = The Chaos Sanctuary
##### Act 5 ####################
6D 00 = Harrogath
6E 00 = Bloody Foothills
6F 00 = Frigid Highlands
7D 00 = Abaddon
70 00 = Arreat Plateau
7E 00 = Pit Of Acheron
71 00 = Crystalline Passage
72 00 - Frozen River
73 00 = Glacial Trail
74 00 = Drifter Caverns
75 00 = Frozen Tundra
7F 00 = Infernal Pit
77 00 = Ice Cellar
79 00 = Nihlathak's Temple
7A 00 = Hall Of Anguish
7B 00 = Halls Of Pain
7C 00 = Halls Of Vaught
76 00 = The Ancient's Way
78 00 = Arreat Summit
80 00 = Worldstone Keep Level 1
81 00 = Worldstone Keep Level 2
82 00 = Worldstone Keep Level 3
83 00 = Throne Of Destruction
84 00 = The Worldstone Chamber
[/code]
January 12, 2010, 4:40 AM
Ringo
Known/Valid STATE code's for player's (Entity 0);
0x06 = get hit
0x07 = stop
0x08 = Die
0x09 = invisible death
0x12 = Nothing?
0x13 = get hit (no animation)
0x14 = get hit
0x15 = face up (char turns towards bottom left of d2 screen, *shrugs*)
0x16 = nothing?
0x17 = nothing?
0x19 = Dodge

Known/Valid STATE code's for NPC's (Entity 1);
0x00 = Nothing (X/Y Must be 0)
0x01 = Walks To X/Y
0x02 = Stops walking (X/Y N/A)
0x03 = Stops walking (X/Y N/A)
0x04 = ? (NPC went invisible)
0x05 = ? (NPC went invisible, X/Y Must be 0)
0x06 = Takes Hit (animations useable, X/Y N/A)
0x07 = Walks To X/Y (And auto stops)
0x08 = Dieing (animations useable, X/Y N/A)
0x09 = Dead (X/Y N/A)
0x0A = Attack (X/Y Must be 0)
0x0B = Attack At location X/Y
0x0C = Resurrect (X/Y N/A)
0x0D = ? (NPC went invisible, X/Y Must be 0, Resurrect sound)
0x0E = ? (NPC went invisible)
0x0F = ? (NPC went invisible, X/Y Must be 0)
0x11 = Cast At Location X/Y
0x12 = Dodge attack (X/Y Must be 0)
0x13 = Get hit with no effect (X is the animation byte)
-> higher states are just strange and effect the layout of the packet body


State GRAPHIC Codes;
0x00 = Normal
0x01 = Stab1
0x02 = Stab2
0x03 = Stab3
0x04 = Stab4
0x05 = Stab5
0x06 = Stab6
0x07 = Stab7
0x08 = Wooden1 (like from staffs etc)
0x08 = Wooden2
0x0A = Arrow1
0x0B = Arrow2
0x0C = Arrow3
0x0D = Normal?
0x0E = Normal?
0x0F = Normal?

State SOUND Code's;
0x01 = Magic sound
0x02 = Fire sound
0x03 = Cold sound
0x04 = Lightning sound
0x05 = Posion sound
0x06 = Wobble sound?
0x07 = Knock back sound
0x08 = Stun sound?
0x09 = Redemtion sound?
January 12, 2010, 7:31 AM
Ringo
Party Relation Flags;
0x01 = Looting
0x02 = Chat Blocking
0x04 = Squelching
0x08 = Hostileing

Party Relation States;
0x00 = Not in any party or wanting to party.
0x01 = Is in a party.
0x02 = Is waiting for you to accept.
January 12, 2010, 8:18 AM
Ringo
Line number states the ID/Index of a given aura.
[code]
STATE_NONE
STATE_FREEZE
STATE_POISON
STATE_RESISTFIRE
STATE_RESISTCOLD
STATE_RESISTLIGHT
STATE_RESISTMAGIC
STATE_PLAYERBODY
STATE_RESISTALL
STATE_AMPLIFYDAMAGE
STATE_FROZENARMOR
STATE_COLD
STATE_INFERNO
STATE_BLAZE
STATE_BONEARMOR
STATE_CONCENTRATE
STATE_ENCHANT
STATE_INNERSIGHT
STATE_SKILL_MOVE
STATE_WEAKEN
STATE_CHILLINGARMOR
STATE_STUNNED
STATE_SPIDERLAY
STATE_DIMVISION
STATE_SLOWED
STATE_FETISHAURA
STATE_SHOUT
STATE_TAUNT
STATE_CONVICTION
STATE_CONVICTED
STATE_ENERGYSHIELD
STATE_VENOMCLAWS
STATE_BATTLEORDERS
STATE_MIGHT
STATE_PRAYER
STATE_HOLYFIRE
STATE_THORNS
STATE_DEFIANCE
STATE_THUNDERSTORM
STATE_LIGHTNINGBOLT
STATE_BLESSEDAIM
STATE_STAMINA
STATE_CONCENTRATION
STATE_HOLYWIND
STATE_HOLYWINDCOLD
STATE_CLEANSING
STATE_HOLYSHOCK
STATE_SANCTUARY
STATE_MEDITATION
STATE_FANATICISM
STATE_REDEMPTION
STATE_BATTLECOMMAND
STATE_PREVENTHEAL
STATE_CONVERSION
STATE_UNINTERRUPTABLE
STATE_IRONMAIDEN
STATE_TERROR
STATE_ATTRACT
STATE_LIFETAP
STATE_CONFUSE
STATE_DECREPIFY
STATE_LOWERRESIST
STATE_OPENWOUNDS
STATE_DOPPLEZON
STATE_CRITICALSTRIKE
STATE_DODGE
STATE_AVOID
STATE_PENETRATE
STATE_EVADE
STATE_PIERCE
STATE_WARMTH
STATE_FIREMASTERY
STATE_LIGHTNINGMASTERY
STATE_COLDMASTERY
STATE_SWORDMASTERY
STATE_AXEMASTERY
STATE_MACEMASTERY
STATE_POLEARMMASTERY
STATE_THROWINGMASTERY
STATE_SPEARMASTERY
STATE_INCREASEDSTAMINA
STATE_IRONSKIN
STATE_INCREASEDSPEED
STATE_NATURALRESISTANCE
STATE_FINGERMAGECURSE
STATE_NOMANAREGEN
STATE_JUSTHIT
STATE_SLOWMISSILES
STATE_SHIVERARMOR
STATE_BATTLECRY
STATE_BLUE
STATE_RED
STATE_DEATH_DELAY
STATE_VALKYRIE
STATE_FRENZY
STATE_BERSERK
STATE_REVIVE
STATE_ITEMFULLSET
STATE_SOURCEUNIT
STATE_REDEEMED
STATE_HEALTHPOT
STATE_HOLYSHIELD
STATE_JUST_PORTALED
STATE_MONFRENZY
STATE_CORPSE_NODRAW
STATE_ALIGNMENT
STATE_MANAPOT
STATE_SHATTER
STATE_SYNC_WARPED
STATE_CONVERSION_SAVE
STATE_PREGNANT
STATE_111
STATE_RABIES
STATE_DEFENSE_CURSE
STATE_BLOOD_MANA
STATE_BURNING
STATE_DRAGONFLIGHT
STATE_MAUL
STATE_CORPSE_NOSELECT
STATE_SHADOWWARRIOR
STATE_FERALRAGE
STATE_SKILLDELAY
STATE_PROGRESSIVE_DAMAGE
STATE_PROGRESSIVE_STEAL
STATE_PROGRESSIVE_OTHER
STATE_PROGRESSIVE_FIRE
STATE_PROGRESSIVE_COLD
STATE_PROGRESSIVE_LIGHTNING
STATE_SHRINE_ARMOR
STATE_SHRINE_COMBAT
STATE_SHRINE_RESIST_LIGHTNING
STATE_SHRINE_RESIST_FIRE
STATE_SHRINE_RESIST_COLD
STATE_SHRINE_RESIST_POISON
STATE_SHRINE_SKILL
STATE_SHRINE_MANA_REGEN
STATE_SHRINE_STAMINA
STATE_SHRINE_EXPERIENCE
STATE_FENRIS_RAGE
STATE_WOLF
STATE_BEAR
STATE_BLOODLUST
STATE_CHANGECLASS
STATE_ATTACHED
STATE_HURRICANE
STATE_ARMAGEDDON
STATE_INVIS
STATE_BARBS
STATE_WOLVERINE
STATE_OAKSAGE
STATE_VINE_BEAST
STATE_CYCLONEARMOR
STATE_CLAWMASTERY
STATE_CLOAK_OF_SHADOWS
STATE_RECYCLED
STATE_WEAPONBLOCK
STATE_CLOAKED
STATE_QUICKNESS
STATE_BLADESHIELD
STATE_FADE
[/code]
January 12, 2010, 12:30 PM
Zoo
Would anyone have anything on 0xAC?

The unkown packets (stats/reward list in ring0's research) kinda confuse me.

If someone could give me a heads up on how to extract the data out of them or even a hint of what they really are, I'd be grateful.

Some examples to clarify why this confuses me:

Act 1 merc, Rogue2
[code]
GS: 0xAC AssignNPC; UID: 197831368; ID: Rogue2; X: 5253; Y: 6318; Life: 128; Unknown13: 11 60 20 98 00 00 00 08 ac aa bc 09
[/code]
It's always: 11 xx 20 98 00 00 00 xx xx xx xx xx

Town vendors : 01
Returned monsters made by merc's faith: xx xx xx xx 40 50 01 00 00 00

Some randoms:
Act2Female 91 02 00 00
Act2Female 31 02 00 00
Act2Male 11 04 03 00
Act2Male 31 05 08 00

Some monsters:
[code]
GS: 0xAC AssignNPC; UID: 495752551; ID: Fallen; X: 5170; Y: 5728; Life: 128; Unknown13: 11 48 00 00
GS: 17  ac 67 95 8c 1d 13 00 32 14 60 16 80 11 11 48 00 00
GS: 0xAC AssignNPC; UID: 991505102; ID: Fallen; X: 5166; Y: 5730; Life: 128; Unknown13: 11 48 00 00
GS: 17  ac ce 2a 19 3b 13 00 2e 14 62 16 80 11 11 48 00 00
GS: 0xAC AssignNPC; UID: 1983026588; ID: Fallen; X: 5168; Y: 5730; Life: 128; Unknown13: 11 c4 00 00
GS: 17  ac 9c 95 32 76 13 00 30 14 62 16 80 11 11 c4 00 00
GS: 0xAC AssignNPC; UID: 3966053176; ID: Fallen; X: 5170; Y: 5726; Life: 128; Unknown13: 11 48 00 00
GS: 17  ac 38 2b 65 ec 13 00 32 14 5e 16 80 11 11 48 00 00
GS: 0xAC AssignNPC; UID: 4174026353; ID: FallenShaman; X: 5167; Y: 5727; Life: 128; Unknown13: 01
GS: 14  ac 71 96 ca f8 3a 00 2f 14 5f 16 80 0e 01
GS: 0xAC AssignNPC; UID: 3516214499; ID: DarkHunter; X: 5164; Y: 5735; Life: 128; Unknown13: 91 02 a2 08 00
GS: 18  ac e3 2c 95 d1 2b 00 2c 14 67 16 80 12 91 02 a2 08 00
GS: 0xAC AssignNPC; UID: 2200607175; ID: DarkHunter; X: 5170; Y: 5732; Life: 128; Unknown13: 91 02 a2 08 00
GS: 18  ac c7 99 2a 83 2b 00 32 14 64 16 80 12 91 02 a2 08 00
GS: 0xAC AssignNPC; UID: 643117967; ID: DarkHunter; X: 5170; Y: 5736; Life: 128; Unknown13: 91 02 a2 08 00
[/code]
January 17, 2010, 11:17 PM

Search