Author | Message | Time |
---|---|---|
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 |