Register for your free account! | Forgot your password?

You last visited: Today at 06:15

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[INFO] Client/Server Pakete

Discussion on [INFO] Client/Server Pakete within the GW Exploits, Hacks, Bots, Tools & Macros forum part of the Guild Wars category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2006
Posts: 26
Received Thanks: 47
[INFO] Client/Server Pakete

All credits to the GWLP Developement Team:
-l3j
-saracen
-pablo24

Code:
ACCEPT_PARTY_INVITE

======Introduction======
This packet is sent by the client to the Game Server whenever you accept a party invite.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8c00 | The variable header for the packet. |
| UnknownID | [[short]] | varies | Some ID of the player who you want to accept (not localid). |
======How To Find======
1) Login on GW
2) Tell a player to invite you
3) Start the packet capture
4) Accept the invite
This packet is 4 bytes in size.

Code:
ACCOUNT_INFO

======Introduction======
This packet contains some account information. Nothing is known about the specifics of this packet.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0005 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Length | [[short]] | Varies | Length of the following data. |

  1600 0200 0000 9401 0800 6611 0008 3843 
  7FDE 688E F513 0842 55DE 0000 2011 6B15 
  000A 5858 6096 6197 6298 6399 649A 659B 
  669C 679D 68C6 730B 0005 0801 0306 0502 
  0407 0000 7608 0004 0000 000F 0880 0077 
  4A01 0C60 0003 C0FF 4F18 00FB AFFA 0153 
  D800 3801 4E68 419B 00CA 012B 2006 8E01 
  5802 1D00 A101 6000 0000 0006 AA04 E400 
  2C01 5D01 0631 02AA 0100 00C0 0306 6E01 
  6101 6C00 7802 060E 0259 0200 0073 0306 
  5703 EF00 5300 AC02 06D5 00EF 001D 0062 
  0206 7504 1901 BD02 D100 0600 0083 01E5 
  005B 0206 6303 E600 3900 3503 06EC 01EB 
  0100 000C 0307 4E01 9501 3200 1C01 0693 
  03E3 00F4 0060 0126 51EF 1F01 8601 0610 
  0185 0200 00B3 0247 A603 C700 1CE5 06F5 
  01E1 017F 0005 0207 C301 6801 0000 1202 
  0782 01F4 0134 0158 0106 F001 1402 D400 
  4602 6100 0000 0007 0000 2E01 B301 6800 
  0600 002E 014A 0268 0007 0000 2E01 0901 
  6800 0786 0081 018C 0029 0260 0000 0000 
  6100 0000 0061 0000 0000 0759 0385 018F 
  009F 0219 AA00 2C01 9B00 FA00 063F 01E4 
  0288 0058 0207 2A00 2201 1301 7C01 6000 
  0000 0060 0000 0000 6000 0000 0060 0000 
  0000 6000 0000 0060 0000 0000 

Note: You can set length to 0 and have an empty packet for this:
  1600 0200 0000 0000


======How To Find======
  -Find the [[CHARACTER_INFO]] packets and this packet is immediately after those in the stream.
Code:
ACCOUNT_DATA_FROM_CC

======Introduction======
This packet is sent with the current account info in it just after sending the desired name for character creation.

FIXME: This packet needs to be renamed. It contains the interface positioning data. The packet "accountinfo1" used for loading to character selection uses POINTER(data+10) of this data.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1600 | The variable header for the packet. |

  2100 0400 0000 0502 0000 2000 0400 0000 
  0002 0800 6619 000C 3843 7FDE 688E F593 
  FF1F 0000 0842 659E 0000 0010 001C 0000 
  6B19 000C 0289 0B89 4141 6096 6197 6298 
  6399 649A 659B 669C 679D 68C6 7307 0003 
  0402 0300 0000 7608 0004 0000 000F 0840 
  0077 B301 0CFB 3F17 E3FF 7D9F 01FB 9FFA 
  032D 04F5 0A00 0D01 7907 BF0E 3B03 0000 
  2802 3F01 4002 51EA 00A5 016A 2211 EA00 
  3C01 A900 6800 0108 0129 0275 FF21 0047 
  0000 F501 0021 458F 0008 0106 2C45 6FFF 
  3800 0A25 51E1 00C2 0104 3851 E800 D001 
  430D 51E9 00CD 0150 1567 10CC 6410 6000 
  0000 0060 0000 0000 7352 1823 1879 F518 
  F518 730E 182F 1879 F518 F518 7300 5402 
  1526 09FB D800 3701 06E8 0054 0147 0093 
  0106 3000 E501 1F00 9802 0649 015B 0200 
  0076 0206 0C03 F000 2300 4902 06D5 00EF 
  001D 0062 0206 AF03 4901 EA01 9601 0606 
  0008 0151 0038 0206 6303 E600 3900 3503 
  0624 01AC 0100 0002 0307 A600 9501 EE00 
  1C01 2744 EFBD 0068 0106 7602 D601 1800 
  DE01 3168 BAB6 0026 0021 61CC 4CFF 1400 
  463F 03C7 001C E527 11FA 8C00 3A00 6100 
  0000 0061 0000 0000 06F5 0191 017F 00F4 
  0160 0000 0000 2567 CDBE 0032 0067 08DE 
  7868 6100 0000 0006 E301 1202 A800 4402 
  6100 0000 0060 0000 0000 6000 0000 0060 
  0000 0000 6100 0000 0060 0000 0000 6000 
  0000 0060 0000 0000 6000 0000 0005 D600 
  D201 8E00 D000 06C7 00E5 0200 0058 0260 
  0000 0000 6000 0000 0060 0000 0000 6000 
  0000 0060 0000 0000 6000 0000 0060 0000 
  0000 2000 0400 0000 0500 6000 0000 00

======How To Find======
  -Get to the last step of character creation and enter a name not in use.
  -Start the capture
  -Click Create
  -Close GW at the loading screen

This packet should be the second packet captured.
Code:
ACCOUNT_FRIENDLIST_END

======Introduction======
This packet is found in streams. It seems to come before account info and after friends. 

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1400 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Data | [[long]] | 1 | Static? |


======How To Find======
  *Read [[Analyzing Streams]]  

  -Get to the character selection screen
  -Click on a character that is not already selected
  -Start the capture
  -Click Play and close GW as soon as you see the loading screen

It should be in the second packet captured. The first 10 bytes are this packet.
Code:
ACCOUNT_LOGIN

====== Introduction ======
This packet is used to authenticate the client on the server. The account holders email address and password (hashed and encrypted) are transmitted.

====== Packet Format ======
^ Name          ^ Size         ^ Value  ^ Description
| Header        | [[short]]    | 4      | ACCOUNT_LOGIN
| [[Stream ID]] | [[short]]    | Varies | 
| Password      | [[char]][24] | Varies | Value increments with each new client build
| Email Address | [[Unicode]]  | Varies | Email Address
| Unknown       | [[short]]    | 0      | ???

====== How To Find ======
Code:
ACCOUNT_LOGIN_AUTO

======Introduction======
This packet is sent when the client tries to login from the character selection screen after being disconnected. This signals the server to perform an automatic login. See the code for how this is handled.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2300 | The variable header for the packet. |
| ??? | [[long]] | Varies | Random data |

======How To Find======
There isn't a way to explain how to find this packet. Just that it is sent in certain circumstances when trying to do actions at the character selection screen after a disconnect.
Code:
ACCOUNT_LOGIN_FAIL

======Introduction======
This packet is sent if the login fails for some reason. It is the packet that tells the client to display an error.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0005 | The variable header for the packet. |
| # Logins | [[long]] | Varies | =/ |
| Error Code | [[long]] | Varies | See [[Login Server Error Codes]] for more codes. |


======How To Find======
  -Let GW load to the login screen
  -Start the capture
  -Enter an incorrect password
  -When you get an error box, close GW

This packet should be the second to last packet and is 10 bytes in size.
Code:
ACCOUNT_LOGOUT

======Introduction======
This packet is sent when the player logs out from the character selection screen.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0D00 | The variable header for the packet. |
| Unknown | [[long]] | 0 | ??? |


======How To Find======
  -Get to the character selection screen in GW.
  -Start the capture
  -Logout
  -Close GW

This packet is 6 bytes in length and should be the first packet captured.
Code:
ACCOUNT_PERMISSIONS

======Introduction======
This packet contains information about what the account is allowed access to.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1100 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Territory | [[long]] | Varies | Number representing the territory of account, 02 = Europe, 00 = America |
| Territory Changes | [[long]] | Varies | How many territory changes the account has remaining |
| Campaigns Unlocked | [[char]] | Varies | Bits: 1=proph,2=factions,3=nightfall |
| Unknown | [[long]] | Varies | 00 00 00 00 ?? |
| Bitfield | [[char]][4] | Varies | [[Account Permissions Bitfield]] |
| Unknown | [[long]] | Varies | 00 00 00 00 ?? |
| Unknown | [[char]][32] | Varies | Looks like it could be a hash |
| Can Edit Acc | [[long]] | Varies | 02 = Can change things like email, password, mailing address etc in-game. |
| Length | [[short]] | Varies | Length of the data that follows (04 * number of keys) |
| Repeat For Each Key{ ||| [[Account Permissions Added Keys]] |
| Key ID | [[short]] | Varies | Key ID, 0x01 -> 0x18, (Should be more with GW:EN) |
| Key Value | [[short]] | Varies | Value, Usually 01 to say that the key is added |
| } ||||
| EULA Accepted? | [[byte]] | 0x09 | This byte changes if the EULA changes. |

<html>
	<body bgcolor="#FFFFFF">
<pre><code>
<font color="#000000">0000034F </font><font color="#0000FF">1100 </font><font color="#000080">0200 </font><font color="#0000FF">0000 </font><font color="#000080">0000 </font><font color="#0000FF">0000 </font><font color="#000080">0400 </font><font color="#0000FF">0000 </font><font color="#000080">3F00 </font><font color="#000000">..............?.
0000035F </font><font color="#0000FF">0000 </font><font color="#000080">0000 </font><font color="#0000FF">0000 </font><font color="#000080">00C0 </font><font color="#0000FF">E311 </font><font color="#000080">0000 </font><font color="#0000FF">0016 </font><font color="#000080">A93A </font><font color="#000000">...............:
0000036F </font><font color="#0000FF">E9C8 </font><font color="#000080">DCFD </font><font color="#0000FF">5A44 </font><font color="#000080">985A </font><font color="#0000FF">17BA </font><font color="#000080">7EC0 </font><font color="#0000FF">879A </font><font color="#000080">4721 </font><font color="#000000">....ZD.Z..~...G!
0000037F </font><font color="#0000FF">6A1F </font><font color="#000080">4C42 </font><font color="#0000FF">7F40 </font><font color="#000080">A963 </font><font color="#0000FF">5910 </font><font color="#000080">B827 </font><font color="#0000FF">657C </font><font color="#000080">0300 </font><font color="#000000">[email protected]..'e|..
0000038F </font><font color="#0000FF">0000 </font><font color="#000080">0800 </font><font color="#0000FF">0100 </font><font color="#000080">0500 </font><font color="#0000FF">1000 </font><font color="#000080">0100 </font><font color="#0000FF">09   </font><font color="#000080">     </font><font color="#000000">.............   
</font>
</code></pre>
	</body>
</html>

======How To Find======
  -Find the [[ACCOUNT_FRIENDSLIST_END]] packet and the one following should be this packet.
Code:
ACTION_COMPLETE

======Introduction======
This packet is sent once you add a key to your account, create an account or buy something from the GW Store.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1100 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| Unknown | [[char]][0x3F] | Varies | 0x00 seems to work fine for this. |

  1100 0200 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 00         

======How To Find======
  -Can't remember..
Code:
ACTION_VALID

======Introduction======
This packet is sent once you add a key to your account, create an account or buy something from the GW Store.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1400 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| Unknown | [[long]] | 0x00 | Static 0x00? |

  1400 0200 0000 0000 0000    

======How To Find======
  -Can't remember..
Code:
ADD_SERIAL

======Introduction======
This packet is sent at the last stage of adding a key to your account.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1E00 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| Unknown | [[long]] | 0x00 | Static 0x00? |
| Serial Key | [[unicode]] | Varies | Unicode string containing the serial key |

  1E00 1E00 0000 0000 0000 1900 3100 3300 
  3300 3300 3300 3300 3300 3300 3300 3300 
  3300 3300 3300 3300 3300 3300 3300 3300 
  3300 3300 3300 3300 3300 3300 3700      

======How To Find======
  -Load Guild Wars
  -Click 'Create Account or Add Access Key'
  -Click 'Add the Access Key to an Existing Guild Wars Account'
  -Enter a serial key like '13333 33333 33333 33333 33337'
  -Click Next
  -Start the capture with packet dump
  -Click Add Key
  -Close GW
Code:
AGENT_ITEM

======Introduction======
This packet is sent when spawning another player. Probably NPC's as well.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x4001 | The variable header for the packet. |
| Item Ref ID | [[long]] | Varies | Probably unique to instance. |
| Item ID | [[short]] | Varies | |
| Static? | [[short]] | 0 | |
| Item::UpgradeComponent | [[byte]] | Varies | |
| Item Color | [[byte]][3] | Varies | |
| U 1-3 | [[byte]][3] | Varies | |
| Uniqueness | [[byte]] | Varies | |
| U 4 | [[byte]] | Varies | |
| Rarity | [[byte]] | Varies | |
| U 5-9 | [[byte]][5] | Varies | |

  4001 DB01 0000 9500 0000 0707 0900 0000 
  0006 1000 2000 0000 00


======How To Find======
  -Log the capture of a new pre-searing character.
  -Find this capture by finding the [[SET_PLAYER_APPEARANCE]] packet.
  -Search through this captured packet for known armor Item IDs.

There are 4 bytes between the packet header and the item ID. The entire packet is 25 bytes in size.
Code:
AGENT_TAKE_DAMAGE

======Introduction======
This packet immediately follows a UGV packet with Skill Damage.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x9300 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | |
| HP Lost | [[float]] | Varies| The percentage of the agent's max HP lost. See note for more info. |

Notes:
<code>
I have 500 HP and I take 250 damage.
I lost 50% of my health. So -50.0%
</code>

======How To Find======
  -Find an [[UPDATE_GENERIC_VALUE]] with Skill Damage

This packet follows immediately after.
Code:
AVAILABLE_SKILLS

======Introduction======
This packet contains all the skills that will be shown on the player's skill list. 



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xc500 | The variable header for the packet. |
| Long Count | [[short]] | Varies | The length of the packet in longs (So its length / 4 basically.) |
| Giant Bitfield | [[byte]][Length Varies] | Varies | Each bit is a skill. |

  C800 3900 0400 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 FF5F E799 6DDB 1F7B EF0A 0000 0000 
  0000 0000 80FD FD9B C0FF BFD9 FFFF FB1D 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 4000 
  0000 0000 0000 0000 0000 0400 0200 0000 
  2000 0000 0000 0000 0000 0000 0000 0004 
  0000 0000 0000 0000 00F0 0108 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0064 0300 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0008 0000 8040 0000 0000 
  0000 0000 0000 C000 


======How To Find======
  -Find the [[UPDATE_MY_PRIVATE_STATS]] packet
  -This packet follows the [[MAP_DATA]] packet
  -This packet comes immediately before it. The size may vary.
  -It is best to try and find this packet on a new character that just has a few skills available.
Code:
BEGIN_MY_CHARACTER_INFO

======Introduction======
This packet is always found before important data about my character sent.



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xdb00 | The variable header for the packet. |
| Static | [[char]][4] | 0x79616C70 | "yalp" is what is appears as. |

  D80079616C70  

======How To Find======
  -Find the stream that [[INSTANCE_START_STREAM]] is in.
  -Search the ASCII string "yalp"
  -It should be above the middle
  -The two bytes before follow the following format
  XX00 where XX is any byte value. The two bytes following also have this format.
Code:
CANCEL_PARTY_INVITE

======Introduction======
This packet is sent by the client to the Game Server whenever you cancel a party invite.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8D00 | The variable header for the packet. |
| UnknownID | [[short]] | varies | Some ID of the player to uninvite (not localid). |
======How To Find======
1) Login on GW
2) Invite a player
3) Start the packet capture
4) Cancel the invite
This packet is 4 bytes in size.
Code:
CHANGE_MAILING_ADDRESS

======Introduction======
This packet is sent when you change your mailing address or when you create an account

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2800 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| First Name | [[unicode]] | Varies | First Name |
| Last Name | [[unicode]] | Varies | Last Name |
| Address 1 | [[unicode]] | Varies | Address 1 |
| Address 2 | [[unicode]] | Varies | Address 2 |
| Post Code | [[unicode]] | Varies | Post Code |
| City | [[unicode]] | Varies | City |
| Country | [[unicode]] | Varies | Country |

  2800 1A00 0000 0900 4600 6900 7200 7300 
  7400 4E00 6100 6D00 6500 0800 4C00 6100 
  7300 7400 4E00 6100 6D00 6500 0800 4100 
  6400 6400 7200 6500 7300 7300 3100 0800 
  4100 6400 6400 7200 6500 7300 7300 3200 
  0800 5000 6F00 7300 7400 4300 6F00 6400 
  6500 0400 4300 6900 7400 7900 0E00 5500 
  6E00 6900 7400 6500 6400 2000 4B00 6900 
  6E00 6700 6400 6F00 6D00                


======How To Find======
  -Load to the login screen
  -Click Edit Account
  -Choose Change Mailing Address
  -Start the capture with packet dump
  -Click Change
  -Close GW
Code:
CHARACTER_DELETE

======Introduction======
This packet is sent from the client when the player requests deletion of a character.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0700 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Character Name | [[unicode]] | Varies | The name of character to be deleted. |


======How To Find======
  -Login and go to the character selection
  -Start the capture and delete a character
  -Close GW

This packet should be the first packet captured.
Code:
CHARACTER_INFO


======Introduction======
This packet contains information for characters at character selection. One for each character.





======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0005 | The variable header for the packet. |
| #logins | [[long]] | Varies | =/ |
| MD5 Hash | [[char]][16] | Varies | ??? |
| Unknown | [[long]] | ??? | ??? |
| Character Name | [[unicode]] | Varies | Read the name. |
| Unknown | [[long]] | 3e 00 | ??? |
| Unknown | [[short]] | 06 00 | ??? |
| Character Location | [[short]] | Varies | Current location of this character |
| Unknown | [[short]] | 38 34 | ??? |
| Unknown | [[short]] | 31 30 | ??? |
| Height and Sex | [[char]] | Varies | Height << 4 + Sex |
| Hair and Skin Color| [[char]] | Varies | Hair << 4 + Skin |
| Profession and Hair Style | [[char]] | Varies | Profession<<4 + Hair |
| Campaign and Face | [[char]] | Varies | Campaign<<4 + Face (1=Proph,2=Factions,3=Nightfall) |
| Unknown | [[long]][4] | ??? | 00 00 00 00??? |
| Level/Campaign | [[byte]] | Varies | (level << 4) + campaign IF level > 15 you need to set the level bit in the next byte! | 
| Lots Of Stuff -> | [[byte]] | Varies | Bit: 1=level>15, 2=PvP only, 3-7=SecondProf, 8=show helm |
| Unknown | [[char]][7] | ??? | ??? |
| Repeat 5 Times{ ||||
| GW Item ID | [[short]] | Varies | The id of the graphic to use for this armor |
| Armor Piece Color | [[char]][3] | Varies | The three values that make up the items color. |
| } ||||

Bleh...not going to fill the rest out now. Check the code.


  0700 0100 0000 1746 1D7A 27B2 7648 B5E7 
  5F6D 0F3E B529 0000 0000 0F00 5400 6700 
  7000 6C00 6400 6600 7400 2000 4100 6F00 
  6700 6100 7900 6700 6600 3E00 0600 9400 
  3834 3130 1100 2307 0000 0000 0000 0000 
  0000 0000 0000 0000 11C0 DDDD 05DD DDDD  
  DD8F 0009 0007 9500 0900 0796 0009 0007 
  9700 0900 0794 0009 0007 

======How To Find======
  -Get to the login screen
  -Start the capture
  -Log-in
  -Close GW when at character selection

This packet should be the first packet of the stream.
Code:
CHARACTER_PLAYINFO

======Introduction======
This packet is sent whenever Play is clicked. Although the order differs depending on if [[CHARACTER_PLAYNAME]] was sent or not.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0e00 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Unknown | [[char]][26] | ??? | ??? |

  0E00 0100 0000 2900 0300 0000 0300 0000 
  2400 0000 0000 0000 0200 0000 FFFF FFFF 


======How To Find======
  -Login to character selection
  -Start the capture
  -Click "Play" (You should not have selected a character.)
  -Close GW when you see the loading screen

This packet should be the first packet captured.
Code:
CHARACTER_PLAYNAME

======Introduction======
This packet is sent when the player clicks "Play" but only if the selected character is not the default selected character.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1600 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Character Name | [[unicode]] | Varies | The name of the selected character for Play |

======How To Find======
  -Get to the character selection screen.
  -Select a character other than the character currently selected.
  -Start the capture
  -Click "Play"
  -Close GW when at the loading screen

This packet should be the first packet captured.
Code:
CHARCREATE_ACKNOWLEDGEMENT

======Introduction======
This packet is 4th packet captured when capturing character creation.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7700 | The variable header for the packet. |


======How To Find======
  -Get to the character selection screen
  -Click Create
  -Start the capture
  -Click Next
  -Close GW when the campaign select screen shows and the downloading indicator is gone.

This packet should be the forth captured. It is only 2 bytes in size.
Code:
CHARCREATE_DEFAULT_DYE

======Introduction======
This packet contains the default dye used for character creation.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7800 | The variable header for the packet. |

  7800 5000 0301 7200 0409 7200 0209 7200 
  0309 7200 0609 7200 0509 7200 0009 7200 
  0109 

======How To Find======
  -Get to the character selection screen
  -Click Create
  -Start the capture
  -Click Next
  -Close GW when the campaign select screen shows and the download indicator is gone

This packet should be the only 34 byte packet. It should be the third packet sent by the client.
Code:
CHARCREATE_DEST_ZONE

======Introduction======
This packet is sent containing the destination zone id to load into after character creation is complete.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8600 | The variable header for the packet. |
| Zone ID | [[short]] | Varies | |
| Static? | [[byte]] | 0 | |

  8600 9400 00

======How To Find======
  -Start the capture at the last step of character creation
  -Close GW when the loading screen appears

This packet should be the second packet captured. It is 5 bytes in size.
Code:
CHARCREATE_DYE_INFO

======Introduction======
This packet is sent when the player clicks on a dye color.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7200 | The variable header for the packet. |
| Body Part | [[byte]] | Varies | The body part that should be dyed. |
| Dye Color | [[byte]] | Varies | The dye color that was selected. |


======How To Find======
  -Get to the dye selection screen of character creation
  -Start the capture
  -Click a dye that is not already selected.
  -Close GW when the armor piece changes color.

This packet should be 4 bytes in size and should be the first packet captured.
Code:
CHARCREATE_ERROR

======Introduction======
This packet is sent if the server encounters an error during character creation. 

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x6b01 | The variable header for the packet. |
| Error Code | [[long]] | Varies | The error code for the error. =/ |

  6801 1D00 0000 

======How To Find======
  -Start the capture at the last step of character creation
  -Enter a name already in use
  -Close GW when you get an error message

This packet should be the third one captured. It is 6 bytes in size. It should contain error code 29
Code:
CHARCREATE_ITEM_BODYPART

======Introduction======
This packet contains which body part the item belongs on. It is used only during character creation?

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2f01 | The variable header for the packet. |
| Stream ID | [[short]] | Varies | The ID of the current Stream. |
| Item Agent Stream ID | [[long]] | Varies | Go look at [[GENERAL_ITEM]] =/ |
| Body Part Stream ID | [[short]] | Varies | Known as BodyPartGlue in server. |
| Body Part | [[byte]] | Varies | Uhhh...look at the code. |

  2C01 0E00 A403 0000 0F01 02

======How To Find======
  -Find the [[ITEM_LOCATION]] packet.

This packet should immediately follow that one.
Code:
CHARCREATE_ITEM_PROFESSION_BIND

======Introduction======
This packet used to be a divider between the items with locations and without. However, now it is at the top of the stream.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xa300 | The variable header for the packet. |
| Profession Bind Glue | [[long]] | Varies | Is extracted from one of the replayed packets. |
| Profession | [[byte]] | Varies | Currently selected profession. |
| Unknown | [[short]] | Varies | ??? |
| Unknown | [[long]] | Varies | ??? |

  0x9E,0x00,0x26,0x00,0x00,0x00,0x02,0x00,0x00,0xC5,0x00,0x00,0x00

======How To Find======
  -Find the [[CHARCREATE_PREVIOUS_ITEMS]] packets.

This packet immediately follows the last [[CHARCREATE_PREVIOUS_ITEMS]] packet.
Code:
CHARCREATE_ITEM_STREAM_TERMINATOR

======Introduction======
This appears to terminate item streams during character creation. It only occurs on the last set of 5 items.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3f01 | The variable header for the packet. |
| Item Agent Stream ID | [[long]] | Varies | |
| Item Agent Stream ID | [[long]] | Varies | |

  3C01 0A00 0000 0A00 0000 

======How To Find======
  -Find the [[ITEM_PROFESSION]] packet header
  -Search that file for all instances of that packet header.

This packet should be at the end of the last [[ITEM_PROFESSION]] packet.
Code:
CHARCREATE_PREVIOUS_ITEMS

======Introduction======
This packet is sent five times at the beginning of the stream. It contains information pertaining to the previous items used in the replayed data and if applicable previous items used in previous renditions of this stream.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3401 | The variable header for the packet. |
| Stream ID | [[short]] | Varies | The unique stream ID for this stream. |
| Item Glue | [[short]] | Varies | The unique previous ID to an item. |
| Static?   | [[short]] | 0      | Always zero? |

  2E01 0E00 1D01 0000 

======How To Find======
  -Find the [[CHARCREATE_PROFESSION]] packet
  -The packet containing this should be the next packet.
  -The first eight bytes should be this packet.
Code:
CHARCREATE_PROFESSION

======Introduction======
This packet is sent when the player clicks on a Profession to create. 

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x5000 | The variable header for the packet. |
| Campaign | [[byte]] | Varies | 1=Proph,2=Factions,3=Nightfall     |
| Profession | [[byte]] | Varies | 1-10                             |
| Repeat 7{ |           |        |                                  |
| Possible Header? | [[short]] | 0x7200 | Possibly packet header? Even if so, don't care about. |
| Item Slot For Dye | [[byte]] | Varies | Item the color is for. Armor, offhand, shield?        |
| Primary Color     | [[byte]] | Varies | The default color of this item. Usually the same for every slot |

  5000 0201 7200 0404 7200 0204 7200 0304 
  7200 0604 7200 0504 7200 0004 7200 0104 


======How To Find======
  -Get to the Character Creation: Campaign Select screen. 
  -Start the capture
  -Click on a campaign not already selected.
  -Close GW after a few seconds.

This packet should be the first packet captured. It is 32 bytes in size.
Code:
CHAT_MESSAGE

======Introduction======
This packet is sent from the client after a message is entered into any of the chat channels.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x5500 | The variable header for the packet. |
| Message | [[unicode]] | Varies | In front of the message is the channel ID. '@' for Guild, '#' for Team, etc. |

  5300 0500 2100 7400 6500 7300 7400 

======How To Find======
  -Go into an empty instance.
  -Calculate the size the packet should be when you say something...Ex. I say "test" total packet size is
  2+2+2+(4*2)=14 Where 4 is the number of characters in the string you typed.
  -Start the capture
  -Say what you are going to say in All chat
  -Close GW

This packet should be the size you calculated. It should be followed by a medium sized packet.
Code:
CLICK_LOCATION

======Introduction======
This packet is sent from the client when a spot on the ground is clicked. It contains the position of the click.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3100 | The variable header for the packet. |
| X Pos | [[float]] | Varies | The X position of the clicked location. |
| Y Pos | [[float]] | Varies | The Y position of the clicked location. |
| Z Pos? | [[float]] | Usually 0 | It is not known if this is the Z coordinate. |

======How To Find======
  -Load into an empty instance
  -Start the capture
  -Click a valid location to move to.
  -Stop the capture when you reach your destination.

This packet should be 14 bytes in size.
Code:
CLIENT_IM_HERE

======Introduction======
This packet is sent twice each second. It seems to inform the client that the server is still there and the client can continue instead of stopping everything.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1100 | The variable header for the packet. |
| Unknown | [[long]] | Varies | Time since last CIH packet? |

  1100 C002 0000 

======How To Find======
  -Load into an empty zone
  -Start the capture
  -Wait without doing anything for a minute.
  -Close GW

This packet is sent a lot and is 6 bytes in size. It is difficult to miss.
Code:
CLIENT_SEED

======Introduction======
This packet is used for generating the encryption key.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0042 | The variable header for the packet. |
| Data | [[char]][64] | Varies | Data used for generating the key. |

======How To Find======
  -Use a network packet sniffer and start the capture
  -Load GW
  -Close GW at the login screen
  
This packet should be 66 bytes in length. It comes immediately after [[CLIENT_VERSION]]
Code:
CLIENT_VERSION

====== Introduction ======
This is the first packet sent from the client (not including the download utility) to the server.

It includes the current version of the client, therefore has been internally named CLIENT_VERSION.

====== Packet Format ======
^ Name           ^ Size      ^ Value  ^ Description
| Header         | [[short]] | 1024   | CLIENT_VERSION
| Packet Length  | [[short]] | 12     | Value may change in future builds
| Client Version | [[long]]  | Varies | Value increments with each new client build
| Unknown        | [[long]]  | 1      | ???
| Unknown        | [[long]]  | 4      | ???

====== How To Find ======
Code:
COMPUTER_INFO_REPLY

======Introduction======
This packet is sent as acknowledgment to the computer information packet([[computer_user]]). 

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0100 | The variable header for the packet. |
| Unknown | [[long]] | 0x0FF112A8 | ??? |
| Unknown | [[long]] | 0 | ??? | 


======How To Find======

  -Load GW
  -Start the capture ASAP
  -Close GW when you have been at the login screen for about 20 seconds.
 
This packet should be the second packet captured.
Code:
COMPUTER_USER

======Introduction======
This packet is the first encrypted packet sent to the server. It contains computer information probably used for verification of reconnects.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0100 | The variable header for the packet. |
| Computer Username | [[unicode]] | Varies | The current Windows user |
| Computer Name | [[unicode]] | Varies | The name of the current computer according to Windows |
| Unknown | [[short]] | Varies | ??? |
| Unknown | [[long]] | Varies | ??? |
| Hash? | [[char]][16] | Varies | ??? |

======How To Find======
  -Start GW and start the capture ASAP
  -Close GW when at the login screen

This packet should be the very first packet captured.
Code:
CPU_INFO

======Introduction======
This packet contains the CPU info of the player's computer.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0F00 | The variable header for the packet. |

  0F00 5C00 0300 5C00 0200 DA03 660C 410F 
  4765 6E75 696E 6549 6E74 656C 0501 FF07 
  0400 0000 F200 0000 D024 0000 DE10 0000 
  F500 2090 556E 6B6E 6F77 6E20 4465 7669 
  6365 0000 0000 0000 0000 0000 556E 6B6E 
  6F77 6E20 5665 6E64 6F72 0000 0002 2000 
  BE8B F213 37DF 2F42 AAA1 609C 91EA FA77 


======How To Find======
  -Load up GW to the login screen
  -Start the capture
  -Log in
  -When at the character selection screen close GW

This packet should be the 2nd to last packet. It is around 112 bytes in size.
Code:
CREATE_ACCOUNT

======Introduction======
This packet is sent at the last stage of creating an account.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0300 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| E-Mail | [[unicode]] | Varies | Unicode string containing the e-mail used to create account |
| Hash | [[char]][20] | Varies | Unknown, assumed to be password hash |
| Serial Key | [[unicode]] | Varies | Unicode string containing the serial key |

  0300 1600 0000 1800 6A00 6100 6D00 6500 
  7300 2E00 6900 7300 2E00 6700 6100 7900 
  4000 6700 6100 7900 6D00 6100 6900 6C00 
  2E00 6300 6F00 6D00 498F D7AE EEC8 F48A 
  4A33 B9F8 343A 17D3 6472 6196 1900 3100 
  3300 3300 3300 3300 3300 3300 3300 3300 
  3300 3300 3300 3300 3300 3300 3300 3300 
  3300 3300 3300 3300 3300 3300 3300 3300 

======How To Find======
  -Load Guild Wars
  -Click 'Create Account or Add Access Key'
  -Click 'Create a new Guild Wars Account'
  -Enter a serial key like '13333 33333 33333 33333 33337'
  -Click Next
  -Click Next
  -Fill in the crap
  -Click Next
  -Fill in more crap
  -Start the capture with packet dump
  -Click Create
  -Close GW
Code:
CREATE_CHARACTER

======Introduction======
This packet is sent at the last step of character creation. You enter the name of the new character and click "Create"

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7900 | The variable header for the packet. |
| Character Name | [[unicode]] | Varies | The desired character name. |
| Appearance| [[byte]][4] | Varies | Character appearance attributes. |
| Unknown | [[byte]][4] | 0? | ? |

  7900 0F00 5000 6F00 6200 6C00 6500 6600 
  6200 2000 4A00 6C00 7700 6200 7900 7300 
  7600 B130 440E 0000 0000 

======How To Find======
  -Get to the last step of character creation
  -Start the capture
  -Create a character
  -Close GW when the loading screen appears

This packet should be the first packet captured. It is at least 8 bytes in size.
Code:
DESTROY_AGENT

======Introduction======
This packet destroys an agent, i.e. a Player or an NPC

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1400 | The variable header for the packet. |
| AgentID | [[long]] | Varies | The AgentID of which agent to destroy. |


======How To Find======
  -Load into game
  -Summon a minipet
  -Start packet dump
  -Hide your minipet
  -Glose Guild Wars
Code:
DISPATCH

======Introduction======
This packet directs the client to another game server.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8701 | The variable header for the packet. |
| ?? | [[short]] | 2 | ?? |
| Game Server Port | [[short]] | 6112 | |
| Game Server IP | [[byte]][4] | Varies | The IP address of the destination game server. |
| Character GUID | [[byte]][16] | Varies | |
| Transfer ID1 | [[long]] | Varies | We use the auth server networkID of the client for this. |
| Region | [[byte]] | Varies | What region the destination district is. 0=America|
| Zone ID | [[short]] | Varies | |
| ??? | [[byte]] | 1 | |
| Transfer ID2 | [[long]] | Varies | |



======How To Find======
FIXME: This section needs to be verified and completed.

Ummm...capture map travel and search for the IP of the destination server within the packets.
Code:
UNLOCKED_SKILL_CAMPAIGNS

======Introduction======
This packet is the first packet sent from the game server when loading into an instance. 

Notes:

This packet has no need of being implemented on the server. It just complicates the code to transfer the available campaigns over from the login server when the client already knows.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] |  | The variable header for the packet. |
| Campaigns | [[byte]] | | What campaigns you have available. See below for more details. |
| Campaigns | [[byte]] | | Same as above. |

^ Bit ^ Campaign ^
| 1 | Core skills, although core skills are always unlocked. |
| 2 | Prophecies campaign |
| 4 | Factions Campaign |
| 8 | Nightfall |
| 16 | GW: EN |


======How To Find======
  -Capture logging into an instance.
  -This packet is a packet or two before the first 4 byte packet from the client.
Code:
EXIT_GAME

======Introduction======
This packet is sent when the game is about to close. 

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0E00 | This is the entire exit packet. It contains nothing else. |

======How To Find======
  -Load GW up to the login screen
  -Start the capture (packet dump)
  -Click the X button in GW to close it.

This packet should be 2 bytes in length and should be the last packet captured.
Code:
FADE_INTO_MAP

======Introduction======
This packet instructs the client to fade from the loading screen into the map.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1500 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | |
| Static? | [[long]] |0x03000000 | |

  1500 4600 0000 0300 0000
 
======How To Find======
  -Search for AgentID+03000000
Code:
FS_COMPLETE

======Introduction======
This packet is sent upon successful completion of the requested file.

======Packet Format======

^ Name        ^ Size        ^ Value (Hex - Little Endian) ^ Description ^
| Op Code     | [[short]]   | F2 07                       | Op Code |
| Length      | [[short]]   | 08 00 00 00                 | Length of packet |
| File Length | [[long]]    | Varies                      | The length of the data received for the requested file |

======Packet Example======

  F2 07 08 00 00 00 FF FF FF FF
Code:
FS_CONNECT

======Introduction======
This packet initialises the connection to the file server. It is prefixed with 5 bytes.




======Packet Format======

^ Name    ^ Size        ^ Value (Hex - Little Endian) ^ Description ^
| Prefix  | [[char]][5] | 01 00 00 00 00              | Unknown - Has been known to also start with 00 |
| Op Code | [[short]]   | F1 00                       | Op Code |
| Length  | [[short]]   | 10 00 00 00                 | Length of packet |
| Unknown | [[long]]    | 01 00 00 00                 | Unknown |
| Unknown | [[long]]    | 00 00 00 00                 | Unknown |
| Unknown | [[long]]    | 00 00 00 00                 | Unknown |


======Packet Example======

  01 00 00 00 00 F1 00 10 00 01 00 00 00 00 00 00
  00 00 00 00 00
Code:
FS_DETAILS

======Introduction======
This packet is sent in response to a file request from the client. It contains information about the file requested, and will be followed by the files data (See [[FS_RESPONSE]]).

======Packet Format======

^ Name        ^ Size        ^ Value (Hex - Little Endian) ^ Description ^
| Op Code     | [[short]]   | F2 05                       | Op Code |
| Length      | [[short]]   | 14 00                       | Length of packet |
| File Hash   | [[long]]    | Varies                      | Requested File Hash |
| File Length | [[long]]    | Varies                      | Uncompressed Length of file |
| File Length | [[long]]    | Varies                      | Compressed Length of file |
| Unnknown    | [[long]]    | Varies                      | Unknown (CRC?) |

======Packet Example======

  F2 05 14 00 02 10 00 00 01 00 00 00 02 00 00 00
  FF FF FF FF
Code:
FS_NOTFOUND

======Introduction======
This packet is sent in response to a file request which doesn't exist on the server.

======Packet Format======

^ Name      ^ Size        ^ Value (Hex - Little Endian) ^ Description ^
| Op Code   | [[short]]   | F2 04                       | Op Code |
| Length    | [[short]]   | 08 00                       | Length of packet |
| File Hash | [[long]]    | Varies                      | Requested File Hash |

======Packet Example======

  F2 04 08 00 02 10 00 00
Code:
FS_REQUEST

======Introduction======
This packet is sent to request a file from the file server.

======Packet Format======

^ Name      ^ Size        ^ Value (Hex - Little Endian) ^ Description ^
| Op Code   | [[short]]   | F2 03                       | Op Code |
| Length    | [[short]]   | Varies                      | Length of packet |
| File Hash | [[long]]    | Varies                      | Requested File Hash |
| File Hash | [[long]]    | Varies                      | (Optional - Use a value of 0 if requesting only one file) |

Note: Multiple file hashs can be appended to this packet, but a minimum of two is always required.


======Packet Example======

  F2 03 0C 00 02 10 00 00 00 00 00 00
Code:
FS_REQUEST_MORE

======Introduction======
This packet is sent from the client, when the file data received (either from [[FS_RESPONSE]] or [[FS_RESPONSE_MORE]]) doesn't equal the length of the file requested. Hence the name, "request more".

======Packet Format======

^ Name        ^ Size                 ^ Value (Hex - Little Endian) ^ Description ^
| Op Code     | [[short]]            | F3 07                       | Op Code |
| Length      | [[short]]            | 08 00                       | Length of packet |
| Data Length | [[long]]             | Varies                      | The length of the data last received from either [[FS_RESPONSE]] or [[FS_RESPONSE_MORE]] |


======Packet Example======

  F3 07 08 00 FF FF FF FF
Code:
FS_RESPONSE

======Introduction======
This packet is sent in response to a file request. It contains the requested files data (sometimes, only part of it).

If the requested file is larger than 0xFFFB (The length of this packet minus its header) than a [[FS_REQUEST_MORE]] packet must be sent from the client to the file server.

======Packet Format======

^ Name      ^ Size                 ^ Value (Hex - Little Endian) ^ Description ^
| Op Code   | [[short]]            | F2 06                       | Op Code |
| Length    | [[short]]            | Varies                      | Length of packet |
| File Data | [[char]][Length - 4] | Varies                      | Requested File Data |

Note: What is sent should be a power of 2
Code:
FS_RESPONSE_MORE

======Introduction======
This packet is sent in response to a [[FS_REQUEST_MORE]] packet. It contains more of the requested files data.

If the requested file is larger than 0xFFFB (The length of this packet minus its header) than a [[FS_REQUEST_MORE]] packet must be sent from the client to the file server.

======Packet Format======

^ Name      ^ Size                 ^ Value (Hex - Little Endian) ^ Description ^
| Op Code   | [[short]]            | F3 06                       | Op Code |
| Length    | [[short]]            | Varies                      | Length of packet |
| File Data | [[char]][Length - 4] | Varies                      | Requested File Data |
Code:
FS_UPDATE

======Introduction======
This is the first packet sent from the file server to the client. It somehow tells guild wars what files it should be downloading.

One theory is that a hash increments for each build. If the client doesn't have that hash file in it's local DAT file, it will request it.

======Packet Format======

^ Name      ^ Size        ^ Value (Hex - Little Endian) ^ Description ^
| Op Code   | [[short]]   | F2 01                       | Op Code |
| Length    | [[short]]   | Varies                      | Length of packet |
| File Hash | [[long]]    | Varies                      | File Hash(s)... |

Note: Multiple file hashs can be (and are) appended to this packet.


======Packet Example======

  F1 02 18 00 DC 20 05 00 4F 21 05 00 59 21 05 00 5A 21 05 00 5B 21 05 00
Code:
GENERAL_CHAT

======Introduction======
This packet is sent in reply to [[CHAT_MESSAGE]] and should be sent to all applicable players. This packet only covers the general (instance specific) chat channels. Local, Team, and Trade.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x4f00 | The variable header for the packet. |
| Length of Remainder | [[short]] | Varies | This specifies the length of the rest of the packet as multibyte characters. |
| Unknown | [[long]] | Varies | ??? |
| Message | [[unicode]] | Varies | NOTE: This does not include the size. The size is figured out from Length of Remainder |
| Terminating Character? | [[short]] | Varies | This appears to be a terminating character. Crashes client in the text parser when changed. |

  4F00 0700 0801 0701 7400 6500 7300 7400 
  0100

Note: This packet does not specify who the message is from. 

When the data would be over 256 bytes or greater than 119 characters an addition packet is sent.

  4F00 0200 7300 0100 
It seems this can only be sent when the first is maxed.
======How To Find======
  -Find an empty instance
  -Start the capture
  -Say "testingmyohmy" in all or team chat.
  -Close GW
  -Search for that string among the files captured

This packet should be the one sent from the server. It will be the first packet within the file.
Code:
GENERAL_CHAT_NO_OWNER

======Introduction======
This packet is sent directly following [[GENERAL_CHAT]] it contains the color of the message and the local id 0.



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x5000| The variable header for the packet. |
| Local ID | [[short]] | 0x0000 | Local ID 0 |
| Color | [[byte]] | Varies | This determines the color of the text. There are 15 colors. |

**Color Table** (taken from [[GENERAL_CHAT_OWNER]])
^ Color # ^ Sender Color ^ Message Color ^ Official Used for? ^ Toggles ^ Screen Shot ^
| 0 | Orange | White | Alliance Chat | Yes (Alliance) | {{alliancechat.png|}} |
| 1 | Blue(Ally) | White | Two Party Mission Chat? | Yes (Team) | {{allychat.png|}} |
| 2 | Light Blue | Light Blue | Broadcasts | No | {{lbchat.png|}} |
| 3 | Yellow | White | All Chat Channel | Yes (All) | {{allchat.png|}} |
| 4 | Gray | Dark Gray | ??? | No | {{graychat.png}} |
| 5 | Purple | Light Purple| Gaile's chat color | No | {{devchat.png|}} |
| 6 | White | White | Emotes | Yes (Emote) | {{emotechat.png|}} |
| 7 | Not visible | Not Visible | ??? | ??? | |
| 8 | Gray | Yellow | The Frog | No | {{grayyellchat.png}} |
| 9 | Green | White | Guild Chat Channel | Yes (Guild) | {{guildchat.png}} |
| 10 | Light Green | Light Green | Announcements | No | {{annchat.png}} |
| 11 | Blue | White | Team Chat Channel | Yes (Team) | {{teamchat.png}} |
| 12 | Light Pink | Light Pink | Trade Chat Channel | Yes (Trade) | {{tradechat.png}} |
| 13 | Dark Orange | Dark Orange | "No one hears you." and GM command result ("You used a test command") | No | {{warnchat.png}} |
| 14 | Blue | White | NPC speaks in party chat? | No | {{permchat.png}} |

Notes: It's odd that <tags> that exist are not shown client side when using this packet. Here are some known tags, none of them produce any visible effect:
  *a
  *quote
  *object
  *i

**Compilation** (taken from [[GENERAL_CHAT_OWNER]])

{{chatcomp.png|}}

======How To Find======
  -Find the [[GENERAL_CHAT]] packet.
 
This packet should follow that packet immediately.
Code:
GENERAL_CHAT_OWNER

======Introduction======
This packet is sent directly following [[GENERAL_CHAT]] it contains the owner local ID and what channel the chat message is for.






======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x5300| The variable header for the packet. |
| Local ID | [[short]] | Varies | The local ID of the player this came from? |
| Chat Channel (Color) | [[byte]] | Varies | This determines the color of the text. There are 15 colors.|

**Color Table**
^ Color # ^ Sender Color ^ Message Color ^ Official Used for? ^ Toggles ^ Screen Shot ^
| 0 | Orange | White | Alliance Chat | Yes (Alliance) | {{alliancechat.png|}} |
| 1 | Blue(Ally) | White | Two Party Mission Chat? | Yes (Team) | {{allychat.png|}} |
| 2 | Light Blue | Light Blue | Broadcasts | No | {{lbchat.png|}} |
| 3 | Yellow | White | All Chat Channel | Yes (All) | {{allchat.png|}} |
| 4 | Gray | Dark Gray | ??? | No | {{graychat.png}} |
| 5 | Purple | Light Purple| Gaile's chat color | No | {{devchat.png|}} |
| 6 | White | White | Emotes | Yes (Emote) | {{emotechat.png|}} |
| 7 | Not visible | Not Visible | ??? | ??? | |
| 8 | Gray | Yellow | The Frog | No | {{grayyellchat.png}} |
| 9 | Green | White | Guild Chat Channel | Yes (Guild) | {{guildchat.png}} |
| 10 | Light Green | Light Green | Announcements | No | {{annchat.png}} |
| 11 | Blue | White | Team Chat Channel | Yes (Team) | {{teamchat.png}} |
| 12 | Light Pink | Light Pink | Trade Chat Channel | Yes (Trade) | {{tradechat.png}} |
| 13 | Dark Orange | Dark Orange | "No one hears you." and GM command result ("You used a test command") | No | {{warnchat.png}} |
| 14 | Blue | White | NPC speaks in party chat? | No | {{permchat.png}} |

**Compilation**

{{chatcomp.png|}}


======How To Find======
  -Find the [[GENERAL_CHAT]] packet.
 
This packet should follow that packet immediately. Search for the local ID to be sure.
Code:
GENERAL_ITEM

======Introduction======
This packet is used when sending items to the client. It contains the bulk of the data required for an item. Excluding special stuff.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x4801 | The variable header for the packet. |
To be continued...

  4201 A403 0000 B200 0080 0703 0B00 0000 
  0006 1000 2000 0000 00BC 2700 0001 0000 
  0001 0052 5503 0019 C8A3 0000 4080 000A 
  F8A0 

======How To Find======
  -Get to the dye customization screen of the character creation process.
  -Start the capture
  -Click a different dye than the one selected
  -Close GW when the armor color changes

The first byte of the second packet captured should be the this packet.

Code:
GOTO_LOCATION

======Introduction======
This packet is sent in reply to the [[CLICK_LOCATION]] packet. It contains the location the player is trying to get to. The server authorizes that this location is OK by sending this packet.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1c00 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | The agent ID of the target to move. |
| X Pos | [[float]] | Varies | |
| Y Pos | [[float]] | Varies | |
| Z Pos? | [[float]] | Varies | |

  1C00 1700 0000 2B72 1DC6 02E2 3646 0000 
  0000

======How To Find======
  -Find the [[CLICK_LOCATION]] packet.

This packet should immediately follow that one. Note: The first 6 bytes of this file are probably [[CLIENT_IM_HERE]] This packet is sandwiched between two of those packets.
Code:
GS_LOGOUT

======Introduction======
This packet is sent from the game server when the user logs out to either login screen or the character selection screen.

:!: This packet is known as LOGOUT on the game server.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0100 | The variable header for the packet. |

  0100

======How To Find======
You must a have working version of the game server to easily find this packet. Although it is unlikely to change.
  -Login to an instance
  -Logout

This packet should appear as an unknown packet if it has changed.
Code:
GWSTORE_CHECKOUT_COMPLETE

======Introduction======
This packet is sent when you finish the checkout process.



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2C00 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| Unknown | [[long]] | 0x0000 | Always 0x00? |
| Credit Card Type | [[long]] | Varies | Type of Credit Card used, i.e. Visa |
| Unknown | [[long]] | 0x0000 | Always 0x00? |
| Unknown | [[long]] | 0x0000 | Always 0x00? |
| Unknown | [[long]] | 0x0000 | Always 0x00? |
| Credit Card Number | [[unicode]] | Varies | Credit Card Number |
| Name | [[unicode]] | Varies | Name |
| Address 1 | [[unicode]] | Varies | Address 1 Field |
| Address 2 | [[unicode]] | Varies | Address 2 Field |
| City  | [[unicode]] | Varies | City |
| Unknown | [[unicode]] | Varies | Unknown |
| Country | [[unicode]] | Varies | Country |
| Zip/Postal Code | [[unicode]] | Varies | Zip/Postal Code |
| Credit Card Expire Date | [[unicode]] | Varies | Credit Card Expire Date |
| Unknown | [[long]] | 0x0000 | Always 0x00? |
| Unknown | [[long]] | 0x0000 | Always 0x00? |
| Unknown | [[short]] | 0x0000 | Always 0x00? |
| Security Code (CCV) | [[unicode]] | Varies | Credit Card Security Code |
| Product Buy Count | [[short]] | Varies | Product Buy Count |
| For Each Product { ||||
| Product ID | [[long]] | Varies | Product ID |
| } ||||
| Product Buy Count | [[short]] | Varies | Product Buy Count |
| For Each Product { ||||
| Quantity | [[long]] | Varies | Quantity for relative product |
| } ||||

  2C00 0B00 0000 0000 0000 0200 0000 0000 
  0000 0000 0000 0000 0000 1300 3100 3200 
  3300 3400 3500 3600 3700 3800 3900 3100 
  3200 3300 3400 3500 3600 3700 3800 3900 
  3100 0400 4E00 6100 6D00 6500 1300 4100 
  6400 6400 7200 6500 7300 7300 2000 3100 
  0A00 4100 6400 6400 7200 6500 7300 7300 
  2000 3200 0400 4300 6900 7400 7900 0200 
  4F00 7400 0200 4700 4200 0300 5A00 6900 
  7000 0700 3000 3200 2F00 3200 3000 3000 
  3800 0000 0000 0000 0000 0000 0300 3100 
  3200 3300 0200 1700 0000 1500 0000 0200 
  0100 0000 0100 0000                     

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Enter the Guild Wars Store
  -Add a product to your basket
  -Start the capture with packet dump
  -Checkout
  -Close GW
Code:
GWSTORE_CHECKOUT_START

======Introduction======
This packet is sent when you start the checkout process, it requests the total price of all the items that you have added to the shopping cart.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2B00 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| Product Buy Count | [[short]] | Varies | Product Buy Count |
| For Each Product { ||||
| Product ID | [[long]] | Varies | Product ID |
| } ||||
| Product Buy Count | [[short]] | Varies | Product Buy Count |
| For Each Product { ||||
| Quantity | [[long]] | Varies | Quantity for relative product |
| } ||||

  2B00 0800 0000 0100 0D00 0000 0100 0100 
  0000

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Enter the Guild Wars Store
  -Add a product to your basket
  -Start the capture with packet dump
  -Press the Checkout Button
  -Close GW
Code:
GWSTORE_CONNECT

======Introduction======
This packet is sent when you enter the Guild Wars store. The response to this packet is [[stream_terminator]]

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1D00 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | This must match the long in [[stream_terminator]] |

  1d 00 21 00 00 00 

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Click Enter Store
  -Close GW

This should be the first packet from client to server.
Code:
GWSTORE_CURRENCY

======Introduction======
This packet is a response to the [[gwstore_get_data]], it comes after the [[gwstore_product]] packets.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1D00 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | The currency to show in the store, 0x03 = Show all (USD, EURO & GBP) |
| Unknown | [[long]] | 0x0000 | Always 0x0000? |

  1d 00 28 00 00 00 03 00 00 00 00 00 00 00 

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Click Enter Store
  -Close GW
Code:
GWSTORE_GET_DATA

======Introduction======
This packet is sent when you enter the Guild Wars store, after the connect packets have been sent.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2700 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | This must match the long in [[gwstore_product]], [[gwstore_currency]] and [[stream_terminator]] |

  27 00 22 00 00 00 

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Click Enter Store
  -Close GW
This should be the second packet from client to server.
Code:
GWSTORE_PRODUCT

======Introduction======
This packet is a response to the [[gwstore_get_data]]


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2300 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | This must match the long in [[gwstore_get_data]] |
| Product ID | [[long]] | Varies | ID of product to add to store |
| Unk Price | [[long]] | Varies | Price of product, dunno what currency |
| USD Price | [[long]] | Varies | Price of product in USD |
| Euro Price | [[long]] | Varies | Price of product in Euros |
| GBP Price | [[long]] | Varies | Price of product in GBP |
| Unknown | [[short]][17] | 0x0000 | Always 0x0000? |

  2300 2800 0000 0000 0000 85EB 3541 85EB 
  4541 85EB 5541 85EB 6541 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000           

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Click Enter Store
  -Close GW
Code:
INCOMING_WHISPER

======Introduction======
This packet is sent by the game server when the players gets a whisper.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0C00 | The variable header for the packet. |
| Const0 | [[long]] | 0 | Always 0 |
| NameLen | [[short]] | Varies | (Length of the character's name in bytes including these two bytes)/2 |
| Name | [[unicode]] | Varies | Name of the character who sent the whisper. |
| TextLen | [[short]] | Varies | (Length in bytes of the whisper text excluding these two bytes)/2 |
| Text | [[unicode]] | Varies | The text contained in the whisper. |

  Server> Unhandled packet 23017
  Size 48b
  Time since last packet 328b
  Data
  0C 00 00 00 00 00 0F 00 4C 00 65 00 67 00 65 00 |      ☼ L e g e n
  6E 00 64 00 61 00 72 00 79 00 20 00 44 00 65 00 |  d a r y   D e i
  69 00 74 00 79 00 04 00 74 00 65 00 73 00 74 00 | ²

======How To Find======
  -Load into an empty zone
  -Start the capture
  -Tell someone to send you a whisper
  -Close GW

Search for the unicode string of what the other person whispered you.
Code:
INSTANCE_GUI_TOGGLES

======Introduction======
This packet controls what user interface elements are displayed in this zone.

NOTE: This packet may be entirely incorrect. Verify.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3600 | The variable header for the packet. |
| ??? | [[char]][220] | Varies | ??? |

  0601 0084 0001 0000 0012 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 2010 
  0000 2002 0121 0A02 268C 1F36 0002 0040 
  1305 8108 0000 1340 8008 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0000 9000 
  0000 0000 0000 0000 0010 0000 0C00 4000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 8000 0B00 0000 

This packet is also accepted if all 220 bytes are zero. (Not confirmed with latest builds)
======How To Find======
  -Find the [[INSTANCE_START_STREAM]] packet.

This packet should start immediately following.

Notes: You can find the end of this packet by finding the $ in the next packet and going back 8 bytes.
Code:
INSTANCE_LOAD_AVAILABLE_CAMPAIGNS

======Introduction======
This packet is the first packet sent from the game server when loading into an instance. 

Notes:

This packet has no need of being implemented on the server. It just complicates the code to transfer the available campaigns over from the login server when the client already knows.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] |  | The variable header for the packet. |
| Campaigns | [[byte]] | | What campaigns you have available. See below for more details. |
| Campaigns | [[byte]] | | Same as above. |

^ Bit ^ Campaign ^
| 1 | Core skills, although core skills are always unlocked. |
| 2 | Prophecies campaign |
| 4 | Factions Campaign |
| 8 | Nightfall |
| 16 | GW: EN |


======How To Find======
  -Capture logging into an instance.
  -This packet is a packet or two before the first 4 byte packet from the client.
Code:
INSTANCE_LOAD_CHARACTER_NAME

======Introduction======
This packet is sent just before the district information packet when loading into an instance. It contains the character name selected for play.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x6401 | The variable header for the packet. |
| Character Name | [[unicode]] | Varies | The character name of the character selected for Play. |


  5E01 1200 4800 6100 6D00 6100 7400 6100 
  6E00 6C00 6100 2000 5400 7300 7500 6D00 
  6E00 6100 6D00 6900 

======How To Find======
  -Get the to the character selection screen
  -Start the capture
  -Click Play
  -Close GW when loaded into the town

This packet comes immediately after packets that contain names of characters on your friends list. The start of this packet is 6 bytes in. The first 6 bytes are an unknown packet.
Code:
INSTANCE_LOAD_CHARINFO_HEAD1

======Introduction======
This is the first packet of the stream. It contains the spawn ID?


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2b01 | The variable header for the packet. |
| Spawn ID | [[short]] | Varies | |
| Static | [[byte]] | 0 | |

  2501 8F00 00


======How To Find======
  -Find the [[INSTANCE_LOAD_REQUEST_ITEMS]] packet.
  -Open the packet that follows

The first 5 bytes of the file is this packet.
Code:
INSTANCE_LOAD_CHARINFO_HEAD2

======Introduction======
This packet defines the spawn id for another thing?


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2f01 | The variable header for the packet. |
| Spawn ID | [[short]] | Varies | |
| Static | [[byte]] | 0 | |

  2901 8F00 00

======How To Find======
  -Find the [[INSTANCE_LOAD_CHARINFO_HEAD1]] packet

This packet directly follows that packet.
Code:
INSTANCE_LOAD_CHARINFO_TERMINATOR

======Introduction======
This packet terminates the instance loading charinfo. Sets the progress bar to 100% and allows the client to carry on with loading into a zone.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7701 | The variable header for the packet. |
| Static? | [[byte]] | 0 | |
| Zone ID | [[short ]] | Varies | The zone id (map id?) for the zone being loaded into. |
| Unknown | [[char]][4] | Varues | Seems to be static 0 for outposts only |

  7301 0094 0000 0000 00                  s........       


======How To Find======
  -Last 9 bytes of the Load_Instance_CharInfo stream.
Code:
INSTANCE_LOAD_DISTRICT_INFO

======Introduction======
This is packet is sent directly after the [[INSTANCE_LOAD_CHARACTER_NAME]]


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7c01 | The variable header for the packet. |
| Local ID | [[long]] | Varies | The local ID of the current player. This number is unique. |
| Zone ID | [[short]] | Varies | The zone id for the current map. |
| Show District | [[byte]] | Varies | 0 = Outpost, 1 = Instanced Zone, 3 = Client crash |
| District # | [[short]] | Varies | The maximum value of this is unknown. It is assumed to be a short. |
| District Language | [[short]] | 0 | (Client crash if != 0)? 0 = English, 1 = Korean, 2 = French, 3 = German, 4 = Italian, 5 = Spanish, 6 = Traditional Chinese, 7 = Simplifed Chinese, 8 = Japanese, 9 = Polish, 10 = Russian, 11 = |
| ??? | [[byte]] | 0 | No crash if the value is altered, but no noticeable change??? |
| Observer Mode | [[byte]] | Varies | 0 = Normal Mode, 1+ = Observer Mode |

  7501 0400 0000 8B00 0001 0000 0000 00

======How To Find======
  -Find the [[INSTANCE_LOAD_CHARACTER_NAME]] packet

This packet should immediately follow it.
Code:
INSTANCE_LOAD_GUI_INFO

======Introduction======
This is sent in during the loading screen (progress< 100%)  Not much is known about this large packet. Is not user interface positioning.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2701 | The variable header for the packet. |
| Stream ID | [[short]] | Varies | |
| Unknown | ? | ? | ? |

  2201 8F00 AF52 0100 D300 1027 0000 2300 "....R.....'..#.
  0000 0000 0000 0000 0000 E803 0000 0000 ................
  0000 0000 0000 0000 0000 8600 9400 0086 ................
  0138 3431 3074 0100 7201 1200 0B00 8E00 .8410t..r.......
  0000 0000 0300 0000 1401 00FE E105 7401 ..............t.
  0172 0177 0044 0043 3800 00FE ED14 FE58 .r.w.D.C8......X
  0D09 FF75 0901 0001 00FE 2F4E 0200 FE31 ...u....../N...1
  1201 0301 0301 2501 FEA6 1809 FEB1 1101 ......%.........
  0101 0101 0101 0101 0101 0101 0101 FE86 ................
  1DFE 8B3C 0000 160C 0202 FE1C 07FE 4810 ...<..........H.
  86FE 7B17 00FE 2829 FE00 0204 FE1A 6BFE ..{...()......k.
  4206 0100 1407 FE3A 0912 FE0B 55F7 FEC8 B......:....U...
  87FE 112C 02FE 1110 0BFE 902E 7301 02CC ...,........s...
  0200 0000 0074 0101 7201 3D01 B000 3621 .....t..r.=...6!
  0000 5366 1A0C C7FE C400 0243 021C 040F ..Sf.......C....
  0214 FE7F 0AFE F101 FE19 0001 2AFE 3402 ............*.4.
  0513 08FE 4A01 19FE B600 FEC1 02FE C602 ....J...........
  FE59 05FE 9501 0207 0202 FE36 0001 FE84 .Y.........6....
  0D02 FECE 0309 17FE B70C FEB7 01FE D907 ................
  FE70 0100 05FE 8014 1009 FEEE 0402 FE0E .p..............
  0102 790D FEE5 03FE 4503 0011 02FE 1103 ..y.....E.......
  FE55 0DFE 1B07 FEF4 18FE 4C0C FE5E 1002 .U........L..^..
  FE89 2BFE 4D0C FEF7 0002 0502 0202 9B01 ..+.M...........
  FE47 00FE 1204 FEE0 08FE 8A0C 0000 0000 .G..............
  0000 0000 0000 0000 0100 FEC0 0129 024B .............).K
  FE76 0702 05EF FEB7 06FE FD01 FE78 01FE .v...........x..
  9500 FE9C 01FE B301 0223 FE35 09FE 5518 .........#.5..U.
  FEB1 1D68 0C46 FEF0 01BC FE85 0B01 0094 ...h.F..........
  FE34 000D 0417 0D07 0404 003C FEAA 15FE .4.........<....
  3502 19FE 9411 FE0A 011B FE11 02FE 7D00 5.............}.
  0007 250D FE49 01FE 0615 FE3A 0EFE 8F03 ..%..I.....:....
  0300 FE73 01E5 FE64 0802 0302 02FE C61E ...s...d........
  0300 0000 0302 FE41 5800 FE03 0004 0404 .......AX.......
  FEB5 51FF DD40 0100 01                  ..Q..@...       


======How To Find======
  -Find the [[INSTANCE_LOAD_CHARINFO_CONFIRM_ITEMS]] packet

This packet should start immediately after the last [[INSTANCE_LOAD_CHARINFO_CONFIRM_ITEMS]] packet. It should last until 9 bytes from the end.
Code:
INSTANCE_LOAD_REQUEST_ITEMS

======Introduction======
This packet is sent to the server asking for the storage/inventory/equipped/other items stream.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7f00 | The variable header for the packet. |
| Static? | [[short]] | 0 | |

  7F00 0000 

======How To Find======
  -Get to the character selection screen
  -Start the capture
  -Click Play
  -Close GW when loaded into the town

This packet is 4 bytes in size. Look for the first 4 byte packet in order of packets captured.
Code:
INSTANCE_LOAD_REQUEST_SPAWN_POINT

======Introduction======
This packet is sent after the charinfo stream. It requests the zone spawn information from the server.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7600 | The variable header for the packet. |

  7600

======How To Find======
  -Find the [[INSTANCE_LOAD_REQUEST_ITEMS]] packet

This packet should be the next packet that comes from the client.
Code:
INSTANCE_LOAD_REQUEST_ZONE_DATA

======Introduction======
This packet is sent from the client indicating a request that the server begin the zone stream.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7e00 | The variable header for the packet. |

  7e00

======How To Find======
  -Find the [[INSTANCE_LOAD_SPAWN_POINT]] packet.

This packet should occur immediately after the [[INSTANCE_LOAD_SPAWN_POINT]] packet. It is 2 bytes in size.
Code:
INSTANCE_LOAD_SPAWN_POINT

======Introduction======
This packet contains the location and spawn point of the zone???





======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7801 | The variable header for the packet. |
| Map ID | [[short]] | Varies | ??? |
| Campaign | [[short]] | Varies | 0 = Prophecies, 1 = Pre-Searing, 2 = Faction, 3 = Nightfall, 4 = GW:EN |
| SpawnX | [[float]]? | Varies | ??? |
| SpawnY | [[float]]? | Varies | ??? |
| ??? | [[short]] | 0 | |
| ? | [[short]] | Varies | |

  7101 7DB9 0100 2745 1846 9924 F545 0000 
  A300 

======How To Find======
  -Find the [[INSTANCE_LOAD_REQUEST_SPAWN_POINT]] packet.

This packet comes immediately afterward. It is 18 bytes in size.
Code:
INSTANCE_LOAD_WEAPON_BAR_SLOT

======Introduction======
This packet seems to be sent at the end of items streams. I think it confirms and closes the client from accepting any more items in this format.



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2a01 | The variable header for the packet. |
| Stream ID | [[short]] | Varies | |
| Page # | [[byte]] | Varies | Only used when not the first one. |
| First Equipped | [[long]] | Varies | Item Agent Stream ID for the first item sent when loading onto the character. |
| Static | [[char]][6] | 0 | |

NOT CONFIRMED
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | | |
| Stream ID | [[short]] | Varies | |
| Weapon Slot # | [[byte]] | Varies | |
| Equipped Weapon for slot | [[long]] | Varies | |
| Equipped Offhand for slot| [[long]] | Varies | | 


  2801 8F00 00F7 0D00 0000 0000 00        (............   

This packet seems to be sent one for enabled slot on the Weapons bar. When the First Equipped is an armor, that armor shows in Weapon Slot 1.

======How To Find======
  -Find the last [[ITEM_LOCATION]] packet in the stream.

This packet should follow immediately after. (Note: This is when loading into the pre-searing the second time on a newly created character.)
Code:
INSTANCE_START_STREAM

======Introduction======
This packet signals the start of the Instance Stream.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1000 | The variable header for the packet. |

  1000
======How To Find======
  -Find the stream after [[INSTANCE_LOAD_SPAWN_POINT]]

This should be the first two bytes of the start.
Code:
INTERACT_AGENT

======Introduction======
This packet is sent by the client when the player clicks an agent.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2C00 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | The agent ID of the target. |

  2C00 0900 0000                          |,.....   

======How To Find======
  -Load into an empty instance with things to target
  -Start the capture
  -Target something
  -Close GW

This packet is from the client and is 6 bytes in size.
Code:
INTERACT_NPC

======Introduction======
This packet is sent by the client to the Game Server whenever you click an NPC.

======Packet Format======

^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2c00 | The variable header for the packet. |
| AgentID | [[long]] | varies |  The agentid of the NPC (unique in the instance). |

======How To Find======

1) Login on GW
2) Start the packet capture
3) Click an NPC

This packet is 6 bytes in size.
Code:
INTERACT_PLAYER

======Introduction======
This packet is sent by the client when the player clicks an other player. This packet is also used when clicking on pets.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2600 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | The agent ID of the target. |

  2600 0900 0000                          |,.....   

======How To Find======
  -Load into an empty instance with things to target
  -Start the capture
  -Target something
  -Close GW

This packet is from the client and is 6 bytes in size.
Code:
ITEM_LOCATION

======Introduction======
This packet tells the current location of the item. It is used for Items sent during Character Creation and when loading into an Instance. Ex. Location of an item in inventory.



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2501 | The variable header for the packet. |
| Stream ID | [[short]] | Varies | The ID of the current stream this appears in. |
| Item Agent Stream ID | [[long]] | Varies | AKA the 4 bytes after the [[GENERAL_ITEM]] packet header. |
| Page | [[short]] | Varies | The page the item is on. Such as On person, In inventory, Storage, etc. |
| Slot | [[byte]] | Varies | What slot this is in. Such as chest slot, inventory slot number, etc. |

  1F01 0E00 A403 0000 BC01 00

======How To Find======
  -Find the [[ITEM_PROFESSION]] packet.

This packet should come immediately after.
Code:
ITEM_OWNER_NAME

======Introduction======
This packet is sent following an item packet. This is only if the item is customized.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2101 | The variable header for the packet. |
| Item Agent Stream ID | [[long]] | Varies | The 4 bytes after the packet header in the associated item packet. |
| Character Name(Owner name) | [[unicode]] | Varies | |

  1B01 7B11 0000 0B00 4200 7200 6500 7300 
  2000 4200 7400 6800 6500 6500 6100 

======How To Find======
  -Make sure you know the updated [[GENERAL_ITEM]] packet header.
  -Find an item packet with a character name appearing shortly afterward. 
  -Find the first character of this name.
  -From there go backward 8 bytes

You should now be on the header for this packet.
pablo24 is offline  
Thanks
7 Users
Old 03/07/2009, 08:03   #2
 
elite*gold: 0
Join Date: May 2006
Posts: 26
Received Thanks: 47
Code:
ITEM_PAGE_PACKET

======Introduction======
This packet is sent to signify the start of a new item page. Such as an item page for equipped items, inventory, storage, etc.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2601 | The variable header for the packet. |
| Spawn ID? | [[short]] | Varies | ? |
| Page Location | [[short]] | Varies | Seems to be a value that specifies what page it is. Such as equipped, storage, etc. |
| Page Stream ID | [[short]] | Varies | Is unique. No other page packet can use this value if it has already been used. |
| ??? | [[byte]] | See Notes | Static depending on the page location. |
| Item Agent Stream ID | [[long]] | Varies | If this page is bound to an item, that item's stream agent id should go here. |

Backpack : 0100  14
  2001 8F00 0100 5403 147B 1100 00         .....T..{...   

Equipped Items : 020A  07
  2001 8F00 020A CD02 0700 0000 00         ............   

Storage Page 1? : 0406  14
  2001 8F00 0406 4703 1400 0000 00         .....G......   

Theories:

======How To Find======
  -Find the first [[ITEM_OWNER_NAME]] packet in the instance load character info stream
  -Find the last character of the name. Remember, unicode characters in English are two bytes each.
The next byte should be the start of this packet.
Code:
ITEM_PROFESSION

======Introduction======
This packet contains the profession this item is for. Used for binding when customized and for armor and other profession specific items. Usually comes after the [[GENERAL_ITEM]] packet.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x4101 | The variable header for the packet. |
| Item Agent ID | [[long]] | Varies | Is unique to the stream. Known as glue within the server code. |
| Profession | [[byte]] | Varies | 1-10 | 

  3B01 A403 0000 01

======How To Find======
  -Make sure you already know the new [[GENERAL_ITEM]] packet header.
  -Get to the the Character Creation: Campaign Select screen
  -Start the capture
  -Click on a campaign
  -Close GW when the download indicator disappears.
  -Open the large packet captured. If any smaller ones were captured, ignore them.
  -Find all the item packet headers and bookmark them.
  -Then search for the Item Agent Stream ID which is the 4 bytes after the item packet header.

The first place the Item Agent Stream ID appears is within the item packet. This packet should start two bytes before the second appearance of this ID in relation to the [[GENERAL_ITEM]].
Code:
KEEP_ALIVE

======Introduction======
This packet is sent in two minute intervals while idling at the login screen. It may be asking for updates for background downloading but that is unconfirmed.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0000 | The variable header for the packet. |
| Uknown | [[long]] | Varies | ??? |

======How To Find======
  -Load to the login screen
  -Start the capture with packet dump
  -Leave for 8 minutes
  -Close GW

This packet should have occurred multiple times. (This assumes you have a fully updated client, including -image) It is six bytes in size.
Code:
KEYBOARD_MOVE

======Introduction======
This packet is sent from the client when the player starts moving by using the keyboard.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3000 | The variable header for the packet. |
| X Pos | [[float]] | Varies | The current X position of the player when this was sent. |
| Y Pos | [[float]] | Varies | The current Y position of the player when this was sent. |
| Z Pos | [[float]] | Varies | The current Z position of the player when this was sent. |
| Delta X | [[float]] | Varies | The current X delta of the player. |
| Delta Y | [[float]] | Varies | The current Y delta of the player. |
| Delta Z | [[float]] | Varies | The current Z delta of the player. |



======How To Find======
  -Get into an empty instance
  -Start the capture
  -Walk forward using the keyboard.
  -Close GW

This packet is 26 bytes in size.
Code:
KEYBOARD_MOVE_CLIENT_STOP

======Introduction======
This packet is sent when the player lets up on the movement keys.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3a00 | The variable header for the packet. |
| Pos X | [[float]] | Varies | |
| Pos Y | [[float]] | Varies | |
| Pos Z | [[float]] | Varies | |

  3A00 96D1 1EC6 6F34 3B46 0000 0000      :.....o4;F....  



======How To Find======
  -Load into an empty instance
  -Start the capture
  -Move forward for a bit and then stop
  -Close GW

This packet should be the last packet within the 6 byte packet spam and is 14 bytes in size from the client.
Code:
KEYBOARD_MOVE_START

======Introduction======
This packet is sent just before [[GOTO_LOCATION]] when starting to move with the keyboard.

This packet controls the direction the player is looking on the remote client side. It is rather complicated from what I can tell. 
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1800 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | |
| Delta X | [[float]] | Varies | |
| Delta Y| [[float]] | Varies | |
| CRPL | [[byte]] | 1 | Camera Rotate Position Lock :: This byte appears to control whether holding the right mouse button will lock the camera and allow direction rotation of the controlled character. |

 1800 0900 0000 B6F2 66BF F76D DCBE 01 |........f..m... 

======How To Find======
  -Find the [[GOTO_LOCATION]] packet first.
  -Open GW and load into an empty instance
  -Start the capture
  -Walk forward about 10 steps, just press and hold the Up Arrow or W 
  -Close GW

This packet is 15 bytes in size.
Code:
KEYBOARD_MOVE_STOP

======Introduction======
This packet is sent from the server in reply to [[KEYBOARD_MOVE_CLIENT_STOP]]

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1e00 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | |
| Unknown | [[long]] | 0000 803f | |
| ??? | [[byte]] | 9 | |

  1E00 0900 0000 0000 803F 09             .........?.     
======How To Find======
  -Find the [[KEYBOARD_MOVE_CLIENT_STOP]] packet
  -This packet should come immediately after. 
  -There is probably a [[CLIENT_IM_HERE]] packet before this packet.
 
This packet is 11 bytes in size. A [[GOTO_LOCATION]] packet follows it.
Code:
KEYBOARD_ROTATE

======Introduction======
This packet is sent when the player is standing still and rotating his/her character. This is done by standing still and using the arrow keys without hold the right mouse button down.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3300 | The variable header for the packet. |
| Rotation | [[float]] | Varies | The rotation amount. In radians? |
| Rotation??? | [[float]] | 1.0 | Seems to be a static rotation. Question is, what axis? |

  3300 0BFF F13F 0000 803F                3....?...?      
======How To Find======
  -Load into an empty instance
  -Start the capture
  -Press A to rotate left. Hold it for a bit.
  -Close GW

This packet is from the client and is 10 bytes in size.
Code:
LAST_CHARACTER_INFO

======Introduction======
This packet is sent when the player logs out to character selection.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0900 | The variable header for the packet. |
| Unknown | ? | ? | ? |

  09 00 0D 00 00 00 0C 00 4D 00 75 00 61 00 68 00 |.........M.u.a.h
  61 00 68 00 61 00 68 00 20 00 48 00 61 00 68 00 |.a.h.a.h...H.a.h
  39 00 06 00 94 00 38 34 31 30 61 87 99 21 00 00 |.9.....8410a..!.
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 |................
  00 00 04 00 00 00 00 40 06 09 00 0D 41 06 09 00 |[email protected]..
  0D 42 06 09 00 0D 3F 06 09 00 0D 0E 00 00 00 00 |..B....?........
  00 0D 00 00 00 00 00 |.......

NOTE: Server does not process this. It just disconnects the player and waits for them to reconnect.

======How To Find======
  -Record a capture of logging out to character selection.

This packet should contain the character name somewhere.
Code:
LEAVE_PARTY

======Introduction======
This packet is sent by the client to the Game Server whenever you leave your party
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x9200 | The variable header for the packet. |
======How To Find======
1) Login on GW
2) Invite someone to your party
3) Start the packet capture
4) Leave your party
This packet is 2 bytes in size.
Code:
MAP_DATA

======Introduction======
This packet immediately follows [[PREPARE_FOR_MAP_DATA]] This packet contains the map data. It is not known how this works at this time.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7700 | The variable header for the packet. |
| Unknown | [[long]] | 0x08000000 | ??? |
| Remainder Length | [[short]] | Varies | # of two-byte characters of the data remaining. So if 4 bytes are remaining. This would be 2. |
| Unknown | [[char]][] | Varies | ??? |

  7700 0800 0000 1000 DF02 3C03 3B03 3B03 
  3B03 3C02 3C02 FF9D 0000 0000 0000 0000 
  0000 0000 C500 0000 

======How To Find======
  -Find the [[PREPARE_FOR_MAP_DATA]] packet.

This packet should immediately follow. The [[UPDATE_MY_PRIVATE_STATS]] packet follows this packet.
Code:
NO_UPDATES

======Introduction======
This packet is sent from the server. It tells the client that there is no update available.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0005 | The variable header for the packet. |
| Unknown | [[char]][22] | Varies | No clue what this is for. Reverse engineer it sometime? |


======How To Find======
  -Use a packet sniffer
  -Start the capture and load GW
  -Close GW at login screen

This packet should be the second packet captured. It is 24 bytes in size.
Code:
NPC_CLICK_OPTION

======Introduction======
This packet is sent by the client to the Game Server whenever you select an option from an NPC.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2e00 | The variable header for the packet. |
| DialogueID | [[long]] | varies | ID of the dialogue. |
======How To Find======
1) Login on GW
2) Talk to a Xunlai Agent so you see the Show My Storage button
3) Start the packet capture
4) Click Show My Storage button
This packet is 6 bytes in size.
Code:
OUTGOING_WHISPER

======Introduction======
This packet is sent by the game server when the players whispers someone.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0400 | The variable header for the packet. |
| Const | [[long]] | 0x02 | ? |
| Const | [[long]] | 0 | Always 0 |
| NameLen | [[short]] | Varies | (Length of the character's name in bytes including these two bytes)/2 |
| Name | [[unicode]] | Varies | Name of the character. |
| TextLen | [[short]] | Varies | (Length in bytes of the whisper text excluding these two bytes)/2 |
| Text | [[unicode]] | Varies | The text contained in the whisper. |

  Server> Unhandled packet 23018
  Size 58b
  Time since last packet 36b
  Data
  04 00 02 00 00 00 00 00 00 00 0F 00 4C 00 65 00 |  ☻       ☼ L e g
  67 00 65 00 6E 00 64 00 61 00 72 00 79 00 20 00 |  e n d a r y   D
  44 00 65 00 69 00 74 00 79 00 04 00 74 00 65 00 |  e i t y ♦ t e s
  73 00 74 00 11 00 68 01 00 00 | s t ◄ h☺  ²

======How To Find======
  -Load into an empty zone
  -Start the capture
  -Whisper "test" to someone
  -Close GW

Search for the unicode string "test".
Code:
P12B_BASE

======Introduction======
We have no idea what this packet does. But it is 12 bytes in size. The packet following is ten.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0 | The variable header for the packet. |
| Some ID | [[long]] | Varies | The [[P12B_REPLY]] needs to use this. |
| Unknown | [[short]] | Varies | Seems to be a packet header. But I don't care about it. |
| Unknown | [[long]] | ??? | ??? |

NOTE: This packet is actually two packets but is treated as one for simplicity. 0000 is six bytes in size. This packet is 4 bytes in size.

======How To Find======
Data packets that are sent to and from the Guild Wars server are usually encrypted. Follow the instructions below to capture the packets in their decrypted form for analysis.

The packets will be divided in to individual files, located in the Dump directory at the root of your Guild Wars instalion.

  -Read Analyzing Packets first.
  -Open the GWLP Client
  -Press Packet Dump
  -Input the options:
  -Launch Guild Wars
  -Load Guild Wars
  -Wait until the login screen is loaded
  -Quit Guild Wars 

This packet is 12 bytes in size. Should be easy to find.
Code:
P12B_REPLY

======Introduction======
This packet is a response to the [[P12B_BASE]]

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0005 | The variable header for the packet. |
| Data | [[long]] | Varies | Take this value from "Some ID?" |
| Unknown | [[long]] | 0x17 | Must be here or the first login attempt will throw an error 7 |


======How To Find======
Data packets that are sent to and from the Guild Wars server are usually encrypted. Follow the instructions below to capture the packets in their decrypted form for analysis.

The packets will be divided in to individual files, located in the Dump directory at the root of your Guild Wars instalion.

  -Read Analyzing Packets first.
  -Open the GWLP Client
  -Press Packet Dump
  -Input the options:
  -Launch Guild Wars
  -Load Guild Wars
  -Wait until the login screen is loaded
  -Quit Guild Wars 

Find a 12 byte packet, the packet you desire is immediately after.
Code:
PARTY_KICK_PLAYER

======Introduction======
This packet is sent by the client to the Game Server whenever you kick a player from your party.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x9900 | The variable header for the packet. |
| LocalID | [[short]] | varies | Local ID of the player to kick. |
======How To Find======
1) Login on GW
2) Select a player in your party
3) Start the packet capture
4) Kick the player
This packet is 4 bytes in size.
Code:
PARTY_WINDOW

======Introduction======
This packet shows the party window on the client's display. Nothing is known about this packet. >< Changing almost anything in it results in a crash.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x9d00 | The variable header for the packet. |
| Local ID | [[short]] | Varies | The player's local id |
| Local ID | [[short]] | Varies | |
| ? | [[char]][8] | ? | ? |
| Local ID | [[short]] | Varies | |
| ? | [[char]][14] | ? | ? |

This hex is for the pre-searing party window. 1/2 in the party.(0b00=local id)
  9D00 0B00 0B00 B101 0100 AA01 0100 0B00 
  01B2 0101 0091 0101 0001 BD01 0000 



New capture with 1/6, hard mode option, hero options:(0400=local id) Does not work on server. >_> Even with header and whatnot changed.
  A000 0400 0400 B401 0500 AD01 0500 0400 
  01B5 0105 0094 0105 0001 C001 0000 

  A000 1400 1400 B501 0B00 AE01 0B00 1400 ................
  01B6 010B 0095 010B 0001 C101 0000      ..............  


======How To Find======
  -This packet comes after guild information
  -It is near the end of the stream
  -Search for your local ID (as a short) it should occur three times within this packet. It will occur once before this packet as well.

This packet is 30 bytes in size. May vary?
Code:
PING

======Introduction======
This packet is sent from the server or client. It asks the client to respond with the same packet ASAP. Or is the response from the client.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0200 | The variable header for the packet. |

  0200
======How To Find======
  -Load into an empty instance. (No activity)
  -Start the capture
  -Wait for a minute
  -Close GW

This packet should have the same header as the 2 byte packets from the client. A 12 byte packet follows these two byte packets.
Code:
PING_REPLY

======Introduction======
This packet contains the amount of time the ping request took. It is sent once a ping response is received from the server.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0300 | The variable header for the packet. |
| Ping Time | [[long]] | Varies | This might only be used as a short. |

  0300 CB00 0000 

======How To Find======
  -Find the [[PING]] packet.
  -The start of the 12 byte packets is this packet.
Code:
PLAYCREATE_CHARACTER

======Introduction======
This packet is sent from the client to the server indicating the player wants to Create a character.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1600 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |

  2900 0200 0000 0B00 0000 0000 0000 0000 
  0000 0200 0000 0000 0000

This is sent when auto logging in to play the same character that was played previously.
  2900 1300 0000 0300 0000 9400 0000 0000 |ý)..............
  0000 0000 0000 0000 0000 |..........  

======How To Find======
  -Login to character selection.
  -Start the capture
  -Click Create
  -Click Next
  -Close GW when you see the campaign select.

This packet should be the first packet captured.
Code:
PREPARE_FOR_MAP_DATA

======Introduction======
This packet is sent immediately before the map data is sent. There is very little known about the map fog system.

Note: The information below was gathered using a newly created PvE character. It was taken when loading into Pre-searing Ascalon City.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x7800 | The variable header for the packet. |
| Unknown | [[long]] | 0x40000000 | Is different for other maps. |
| Unknown | [[long]] | 0x80000000 | ??? |
| #bytes of data | [[long]] | Varies | Seems to be the number of bytes of data. Shortly after the header in the [[MAP_DATA]] packet. |

  7800 4000 0000 8000 0000 2000 0000 

======How To Find======
  -Find the [[SET_MORALE]] packet.
  -This packet should immediately follow. 

If not, create a new character in Prophecies and capture the log in to Ascalon city. Search for the default values of the unknown values. This packet is 14 bytes in size.
Code:
REFER_TO_GAMESERV

======Introduction======
FIXME: Suggested name: GAMESERVER_DISPATCH or variants 

This packet directs the client to connect to the specified game server.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 9 | The variable header for the packet. |
| #Login attempts    | [[long]] | Varies | =/ |
| Transfer ID1 | [[long]] | 0x8F413CF4 | See [[VERIFY_CLIENT]] |
| Zone ID | [[short]] | Varies | The zone id. Is used to choose which loading screen to show.|
| Unknown | [[long]] | ??? | ??? |
| Game Server Port | [[short]] | 6112 or 80 | NOTE: Big endian |
| Game Server IP | [[char]][4] | Varies | Each character is one piece of the IP address |
| Unknown | [[char]][16] | ??? | ??? |
| Transfer ID2 | [[long]] | 0xAE55F3D5 | See [[VERIFY_CLIENT]] |

Used when Playing a character


  Offset     0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  00000000  09 00 03 00 00 00 8F 41 3C F4 94 00 00 00 02 00   .......A<.......
  00000010  17 E0 CE 7F 92 6A 00 00 00 00 00 00 00 00 00 00   .....j..........
  00000020  00 00 00 00 00 00 AE 55 F3 D5                     .......U..


Note: Hover over highlighted bytes for name.

Used when Creating a character

  Offset     0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
  00000000  09 00 09 00 00 00 B1 85 AB F3 00 00 00 00 02 00   ................
  00000010  17 E0 CE 7F 92 6A 00 00 00 00 55 55 55 55 00 00   .....j....UUUU..
  00000020  00 00 00 00 00 00 12 64 E8 93                     .......d..





======How To Find======
This data packet is not encrypted for client-server communication.

To find this packet, load up your favourite Packet Sniffing program.

  -Begin to capture packets (Guild Wars uses either port 6112 (Default) or 80)
  -Load Guild Wars
  -Wait until the login screen is loaded
  -Log-in
  -When at the character selection screen, start the capture
  -Stop the capture when you see the loading screen. 

This packet should be 42 bytes in size. It may occasionally be stuck to a "friends" packet.
Code:
REJECT_PARTY_INVITE

======Introduction======
This packet is sent by the client to the Game Server whenever you reject a party invite.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8e00 | The variable header for the packet. |
| UnknownID | [[short]] | varies | Some ID of the player who you want to accept (not localid). |
======How To Find======
1) Login on GW
2) Tell a player to invite you
3) Start the packet capture
4) Reject the invite
This packet is 4 bytes in size.
Code:
REQUEST_SERVER_IM_HERE

======Introduction======
This packet is sent to the server asking for [[CLIENT_IM_HERE]] packets.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0400 | The variable header for the packet. |

  0400

======How To Find======
This packet requires working instance loading to find.
  -Disable the [[CLIENT_IM_HERE]] from being sent
  -Watch for unknown packets of two bytes in size that occur repeatedly. This is the packet you are interested in.
Code:
ROTATE_AGENT

======Introduction======
This packet is used when a player is rotating. It may apply to any agent in the game though.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2100 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | |
| Rotation | [[float]] | Varies | |
| Unknown | [[char]][4] | 0x920A0640 | |

  2100 0600 0000 0000 807F 920A 0640      !............@  

======How To Find======
  -Find the [[KEYBOARD_ROTATE]] packet
  -This packet should come immediately afterward.

This packet is 14 bytes in size.
Code:
SEND_PARTY_INVITE

======Introduction======
This packet is sent by the client to the Game Server whenever you invite a party to merge with your party.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x9000 | The variable header for the packet. |
| LocalID | [[short]] | varies | Local ID of the player to invite. |
======How To Find======
1) Login on GW
2) Select a player
3) Start the packet capture
4) Invite the player to join your party
This packet is 4 bytes in size.
Code:
SERIAL_KEY_INFORMATION

======Introduction======
This packet is the response to [[verify_serial]]


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1500 | The variable header for the packet. |
| # Logins | [[long]] | Varies | Must match value in [[verify_serial]] |
| Campaigns | [[long]] | Varies | BitArray storing what campaigns this serial activates |
| Unknown | [[short]] | 0x00 | Does nothing when changed |
| Unknown | [[char]] | 0x00 | Does nothing when changed |
| Unknown | [[char]] | 0x00 | Something about Time Card in here |
| Unlocked Keys | [[long]] | 0x00 | Bit Array, unlocks similar things to the bitarray in [[account_permissions]] |
| Unknown | [[long]] | 0x00 | Does nothing when changed |
| Unlocked Keys| [[long]] | 0x00 | Bit Array, unlocks similar things to the loop at the end of [[account_permissions]] |
| Unknown | [[long]] | 0x02 | When changed from 0x02 key is invalid, I think this has something to do with territory |
| Unknown | [[long]] | 0x00 | When changed from 0x00 key is invalid, I think this has something to do with territory |

  1500 2A00 0000 0400 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0200 0000 0000 
  0000                                    

======How To Find======
  -Load Guild Wars
  -Click 'Create Account or Add Access Key'
  -Click Create A New Guild Wars Account
  -Enter a serial key like '13333 33333 33333 33333 33337'
  -Start the capture with packet dump
  -Click Next
  -Close GW
Code:
SERVER_SEED

======Introduction======
This packet is sent from the server after [[CLIENT_SEED]] It contains data from the server for use in generating the encryption key.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0116 | The variable header for the packet. |
| Data | [[char]][20] | Varies | The data for use in key generation |


======How To Find======

Find [[CLIENT_SEED]] and look at the packet immediately following. Should be 22 bytes in size.
Code:
SET_AGENT_SPEED

======Introduction======
This packet is sent by the server when the speed of an agent changes.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1A00 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | The agent ID of the target. |
| Speed | [[float]] | Varies | The new speed of the agent. 288.0f is normal speed |

  1A00 0900 0000 0000 D843                        


======How To Find======
  -Load into an empty instance
  -Start the capture
  -Use a running skill
  -Close GW

This packet comes after the 0x3900 packet from the client along with other spell effect stuff. It is 10 bytes in size.
Code:
SET_EQUIPPED_AGENT_ITEMS

======Introduction======
This packet is sent immediately after [[SET_MY_MISCCAPE]] it contains the stream id of each item my character has equipped.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x6000 | The variable header for the packet. |
| AgentID | [[long]] | Varies | |
| Weapon [[ISA]] | [[long]] | Varies | The ISA to the currently equipped weapon. |
| Offhand [[ISA]] | [[long]] | Varies | The ISA to the currently equipped offhand. |
| Chest Armor [[ISA]] | [[long]] | Varies | |
| Feet Armor [[ISA]] | [[long]] | Varies | |
| Legs Armor [[ISA]] | [[long]] | Varies | |
| Arms Armor [[ISA]] | [[long]] | Varies | |
| Head Piece [[ISA]] | [[long]] | Varies | |

  6000 4600 0000 0000 0000 0000 0000 BF00 
  0000 C000 0000 2403 0000 C100 0000 2203 
  0000 

======How To Find======
  -Find the [[SET_MY_MISCCAPE]] packet.

This packet should follow. Make sure you are looking at your character's info. This packet is 34 bytes in size.
Code:
SET_MORALE

======Introduction======
This packet is sent to update the morale boost or death penalty. It is always sent when loading into an instance. The default value is 100 which means no boost or penalty.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8900 | The variable header for the packet. |
| AgentID | [[long]] | Varies | The ID of the agent you are updating the morale for. |
| Morale Level | [[long]] | Default: 100 | X<100=Death Penalty, X>100=Morale Boost |

  89004600000064000000 

======How To Find======
  -You can find this packet by performing a hex bytes search of your AgentID+0x64000000
Ex. 4600000064000000

This packet is 10 bytes in size.
Code:
SET_MY_MISCCAPE

======Introduction======
This packet is sent after the [[UPDATE_PLAYER_VITAL_STATUS]] packet.








======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1300 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | Player's Agent ID |
| Local ID | [[short]] | Varies | Player's Local ID |
| Unknown | [[short]] | 0x0030 | |
| Unknown | [[short]] | 0x0105 | |
| X | [[float]] | Varies | Position X |
| Y | [[float]] | Varies | Position Y |
| Unknown | [[short]] | 0x0000 | Could be Z? |
| Unknown | [[float]] | 1 | |
| Rotation | [[float]] | Varies | The rotation of the agent |
| Unknown | [[char]] | 1 | |
| Movement Speed | [[float]] | 288 | The speed the player moves at |
| Unknown | [[float]] | 1 | |
| Unknown | [[float]] | 12 | |
| Unknown | [[long]] | Varies | |
| Unknown | [[char]][0x1C] | 0 | |
| Unknown | [[float]] | 1 | |
| Unknown | [[float]] | 1 | |
| Unknown | [[char]][0x06] | 0 | |
| Unknown | [[float]] | 1 | |
| Unknown | [[float]] | 1 | |
| Unknown | [[short]] | 0 | |

  1300 1000 0000 0100 0030 0105 D43C 1446 
  F1B0 9445 0000 0000 803F 0000 0000 0100 
  0090 4300 0080 3F00 0040 4179 616C 7000 
  0000 0000 0000 0000 0000 0000 0000 0000 
  0000 0000 0000 0000 0000 0000 0080 7F00 
  0080 7F00 0000 0000 0000 0080 7F00 0080 
  7F00 00                                 

======How To Find======
  -Find "Ayalp" after your character name.
  -The distance between the 'A' and the packet header is 40. 99 bytes in length
Code:
SET_PLAYER_APPEARANCE

======Introduction======
This packet is sent one for every player. It describes the appearance of the character.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x4b00 | The variable header for the packet. |
| Local ID | [[long]] | Varies | |
| Agent ID | [[long]] | Varies | This is the easiest to find Agent ID for. |
| Height/Sex | [[byte]] | Varies | Height and Sex of the character. |
| Hair/SkinColor | [[byte]] | Varies | The hair and skin color for the character. |
| Profession/Hair Style | [[byte]] | Varies | The profession and hair style for the character. |
| Campaign/Face | [[byte]] | Varies | The campaign of birth and the selected face for the character. |
| ? | [[short]] | 0 | ? |
| Show PvP Item Creator | [[byte]] | Varies | This is probably a bitfield. |
| ? | [[char]][6] | 0000 28DF 4D2F | ??? |
| Player Name (Character name) | [[unicode]] | Varies | |
 

  4B00 0E00 0000 4600 0000 6100 250A 0000 
  0000 0028 DF4D 2F0B 0041 0065 0065 0073 
  0020 0041 0062 0068 0065 006B 0061 00

======How To Find======
  -Find your character's name. (Do a unicode search)
  -The distance between the header and the first character of the name is 23.
Code:
SET_PUBLIC_PROFESSION_COMBO

======Introduction======
This packet sets what profession combination other players see. As well as what is shown on your bars.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x9300 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | ? |
| Primary Profession | [[byte]] | Varies | See [[Professions]] |
| Secondary Profession | [[byte]] | Varies | See [[Professions]] |

  9300 4600 0000 0204 
======How To Find======
  -Find and highlight the [[SET_PLAYER_APPEARANCE]] packet.
  -Then search for AgentID+[Primary Prof #]+[Secondary Prof #]
Ex.
  46000000+02+04
=
  460000000204

This packet should occur shortly after [[SET_PLAYER_APPEARANCE]]. This packet is 8 bytes in size.
Code:
SET_SKILL_BAR

======Introduction======
This packet is sent twice. One then another immediately afterward (this second packet contains an extra byte that is equal to 0x01 on the end). It contains the skills that are currently on the skill bar.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xc400 | The variable header for the packet. |
| AgentID | [[long]] | Varies | |
| Num Skills | [[short]] | 0x0800 | The variable header for the packet. |
| Skill #1 | [[long]] | Varies | The ID of the skill in slot 1 from left to right. |
| Skill #2 | [[long]] | Varies | |
| Skill #3 | [[long]] | Varies | |
| Skill #4 | [[long]] | Varies | |
| Skill #5 | [[long]] | Varies | |
| Skill #6 | [[long]] | Varies | |
| Skill #7 | [[long]] | Varies | |
| Skill #8 | [[long]] | Varies | |
| Num Skills | [[short]] | 0x0800 | The variable header for the packet. |
| Skill #1 | [[long]] | Varies | The ID of the skill in slot 1 from left to right. |
| Skill #2 | [[long]] | Varies | |
| Skill #3 | [[long]] | Varies | |
| Skill #4 | [[long]] | Varies | |
| Skill #5 | [[long]] | Varies | |
| Skill #6 | [[long]] | Varies | |
| Skill #7 | [[long]] | Varies | |
| Skill #8 | [[long]] | Varies | |
| Unknown  | [[byte]] | 1      | |

======How To Find======
  -AgentId + 0800 + skills
  -You can either search for skill id's if you know them or you can remove all the skills from your bar.
  -Search for 32 consecutive zeros. 

Packet headers should be on each end of these zeros. Total packet size is 34 bytes.
Code:
STREAM_TERMINATOR

======Introduction======
This packet is used to terminate streams of data.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0300 | The variable header for the packet. |
| #Logins | [[long]] | Varies | =/ |
| Unknown | [[long]] | 0 | Always zero |

======How To Find======
  -Load GW to the character selection screen
  -Start the capture with packet dump
  -Delete a character
  -Close GW

This packet should be the last 10 byte packet captured.
Code:
UPDATE_CHECK

======Introduction======
This is the very first packet sent from the client to the server. It asks if there are any updates available.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0000 | The variable header for the packet. |
| Data | [[char]][19] | ??? | ??? |

  0000 0000 F100 1000 0100 0000 0000 0000 
  0000 0000 

======How To Find======
  -Use a network sniffer
  -Start the capture
  -Start GW
  -Close GW at login screen

The very first packet sent from the client is the one you want. It is 21 bytes in length.
Code:
UPDATE_FREE_ATTRIB_POINTS

======Introduction======
This packet updates the number of free attribute points the character currently has. You can see this by pressing "K" in game.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x2a00 | The variable header for the packet. |
| AgentID | [[long]] | Varies | The AgentID of the current character. |
| #Free Attrib Points | [[byte]] | Varies | Max 255, normal max is 200 |
| Max Points? | [[byte]] | ? | ? Was at one time attribute refund points? |

  2A00 4600 0000 FF03 


======How To Find======
  -Set your attribute points to a number you are not likely to encounter in the stream.
  -Highlight all instances of the current character's AgentID
  -Search for all instances of your #of free attrib points
  -Examine each location found and compare to see if it is indeed this packet.
Code:
UPDATE_GENERIC_VALUE

======Introduction======
This packet is used for updating various values. Such as HP and Energy.














======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x8c00 | The variable header for the packet. |
| Stat to Update | [[long]] | Varies | See the table below for values. |
| Agent ID | [[long]] | Varies | Agent ID for the agent being updated. |
| New Value(s) | [[long]] | Varies | |

  8C00240000004600000006000000 

"Stat to Update" information table. Values are in little endian.
^ Stat Name ^ ID # ^ Allowed Values ^ Description ^
| Freeze Player | 0x07000000 | 1-? | Freeze Player (Value 01 = Freeze, 00 = Unfreeze) |
| Earthquake | 0x08000000 | 1-? | Makes the screen shake as if there is an earthquake |
| Marker Over Head | 0x0A000000 | 1-5 | Makes a marker over your head, 0 = Exclamation Mark, 1 = Weird Gem, 2 = Shield & Sword (Mission NPC), 3 = Downwards Arrow, 4 = Same as 3, 5 = Same as 0 |
| Remove Marker | 0x0B000000 | 0 | Removes any marker over your head from 0x0A |
| Apply Effect | 0x11000000 | 1-? | What effect to apply to user |
| Apply Effect | 0x12000000 | 1-? | Same as 0x11 but with different sounds |
| Show Rank | 0x16000000 | 3-12 | Shows the /rank special effect where Value = player's rank. (does this work correctly (yes ofcourse it does)) Requires: SetGenericValue(19,3107992886,AgentID); |
| Boss Glow | 0x18000000 | 0-10 | Applies a glow like a boss has. 0 = Yellow, 1 = Green, 2 = Blue, 3 = Green, 4 = Pink, 5 = Red, 6 = White/Pink, 7 = Light Blue, 8 = White, 9 = White/Yellow, 10 = Turqoise |
| Knockdown | 0x1E000000 | 1-? | Knocksdown your character |
| Publicly Displayed Level | 0x1f000000 | 1-? | The Agent's current level |
| Level Up | 0x20000000 | 1-? | Apply the level up effect to character (There is no level up text in chat box though, this also changes your level aswell as showing glow effect) |
| Fight Stance | 0x21000000 | 1-? | Puts character into a fight stance |
| Pickup Animation | 0x22000000 | 1-? | Makes character perform a pickup item animation |
| Current Energy | 0x24000000 | 1-? | The Agent's current energy |
| Current Health (HP) | 0x25000000 | 1-? | The Agent's current HP | 
| Cast Spell | 0x2B000000 | 1-? | Instantly casts spell, (Bugs character though, you cannot move afterwards) |
| Interupted | 0x2C000000 | 1-? | Interupted skill effect |
| Cast Spell | 0x2D000000 | 1-? | Cast spell, but without character model animation |
| Give Energy | 0x31000000 | 1-? | Gives character energy, like from Soul Reaping or Spirit of Failure |
| Cast Spell | 0x37000000 | 1-? | What spell the user should cast |
| Skill Damage | 0x09 | Skill ID | Shows what skill did damage and puts the user into fight stance? |

======How To Find======
  -This packet can be found by performing a search for 2-3 unsigned integers. You will probably want to use raw hex bytes though.
  -Combine your HP+AgentID+Current Values and perform a search of the stream.
Ex.
  *HP=0x25000000
  *AgentID=46000000
  *Current Value of this state=50000000
=
  0x250000004600000050000000

It is unlikely that duplicates will occur. However, if they do...use logic.
Code:
UPDATE_MY_PRIVATE_PROFESSION

======Introduction======
This packet is sent to Update the current profession combination selected on the "K" dialog.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xa300 | The variable header for the packet. |
| AgentID | [[long]] | Varies | |
| Primary Profession | [[byte]] | Varies | See [[Professions]] for the # |
| Secondary Profession | [[byte]] | Varies | See [[Professions]] for the # |
| ? | [[byte]] | ? | ? |

  A30046000000030400



======How To Find======
  -Set your profession combination to something odd. Like Dervish(10)/Paragon(9) or whatever. Something you think isn't likely to appear in the stream many places.
  -Highlight all instances of the current character's AgentID
  -Search for raw hex bytes. In the form of 0x[PrimaryProfession#][SecondaryProfession#] Ex. 0A09

Be sure the right AgentID comes directly before and that a zero follows after what you searched.
Code:
UPDATE_MY_PRIVATE_STATS

======Introduction======
This packet is sent to update stats that can viewed in-game by pressing "H"





======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xD200 | The variable header for the packet. |
| Experience (XP) | [[long]] | Varies | The current XP the character has. |
| Current Kurzick Faction | [[long]] | Varies | Kurzick Faction Remaining. |
| Total Kurzick Faction | [[long]] | Varies | Total Kurzick Faction you have earned. |
| Current Luxon Faction | [[long]] | Varies | Luxon Faction Remaining. |
| Total Luxon Faction  | [[long]] | Varies | Total Luxon Faction you have earned. |
| ? | [[long]] | 0 | ? |
| ? | [[long]] | 0 | ? |
| Current Level | [[long]] | Varies | The Agent's current level. |
| ? | [[long]] | 0x6400 0000  | ? |
| Current Balthazar Faction | [[long]] | Varies | Balthazar Faction Remaining. |
| Total Balthazar Faction | [[long]] | Varies | Total Balthazar Faction you have earned. |
| Skill Points Remaining | [[long]] | Varies | Skill Points Remaing. |
| Skill Points Earned | [[long]] | 0 | Total Skill Points earned. | 

 

  D200 FFFF FF00 0027 0000 C045 0400 F401 
  0000 E803 0000 0000 0000 0000 0000 F100 
  0000 6400 0000 C502 0000 E979 0000 0000 
  0000 0000 0000 

======How To Find======
  -You can find this packet by searching for any of the above values. Try and make the value something unique before searching though.

This packet is 54 bytes in size.
Code:
UPDATE_PLAYER_VITAL_STATS

======Introduction======
This packet contains a bitfield of the current status of a player. Such as what conditions are afflicting him/her, is hexed, etc.



======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0xd600 | The variable header for the packet. |
| Agent ID | [[long]] | Varies | |
| Bitfield | [[long]] | Varies | A bitfield see the table below for more info. |

^ Bit # ^ HTA ^ Description ^
| 0 | 0x01 | Condition: Bleeding, Health Bar becomes light red. |
| 1 | 0x02 | Show suffering from condition indicator on the health bars. |
| 2 | 0x04 | No visible effect. 2. Exploited Corpse? |
| 3 | 0x08 | Character moves as though crippled. |
| 4 | 0x10 | The character is dead. 0 HP 0 Energy. Lies on ground. >_> |
| 5 | 0x20 | Show Deep Wound, temporary HP loss on the bars. |
| 6 | 0x40 | Condition: Poisoned, Health Bar becomes green. |
| 7 | 0x80 | Enchantment: Upward facing yellow arrow appears on the HP bars. |
| Go to next byte ||| 
| 8 | 0x01 | Freeze player. Player cannot move. |
| 9 | 0x02 | Show GM (Game Master) sign above character. |
| 10 | 0x04 | Turns HP bar pink. Shows HP degen caused by hexes. |
| 11 | 0x08 | Display the pink downward pointing arrow on the HP bar. Used to indicated the player is hexed. |
| 12 | 0x10 | Forces the character to jump? |
| 13 | 0x20 | Forces the character to sit. |
| 14 | 0x40 | Same as above? |
| 15 | 0x80 | Shows a yellowish-green leaf on the HP bar. |
| Go to next byte |||
| 16 | 0x01 | No effect |
| 17 | 0x02 | No effect |
| 18 | 0x04 | No effect |


  D600 4600 0000 0002 0000 

======How To Find======
  -Search for AgentID+00000000

Packet headers should be on both ends of the packet. This packet is 10 bytes in size.
Code:
USE_ITEM

======Introduction======
This packet is sent by the client to the Game Server whenever you double click on a useable item.
======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x6e00 | The variable header for the packet. |
| ItemLocalID | [[long]] | varies |  The local id of the item (unique in each instance) |
======How To Find======
1) Login on GW
2) Start the packet capture
3) Double click a useable item
This packet is 6 bytes in size.
Code:
USE_SKILL

======Introduction======
This packet is sent by the client when the player clicks a spell.




======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x3900 | The variable header for the packet. |
| SkillID | [[long]] | Varies | ID of the skill clicked by the player. |
| Unknown1 | [[long]] | Varies | This has something to do with using echoed skills, further research needed. ??? |
| TargetAgent | [[long]] | Varies | AgentID of the target. 0 if spell can only be cast on the caster self.  |
| Unknown2 | [[byte]] | 0? | ??? |

  39 00 13 04 00 00 00 00 00 00 00 00 00 00 00       9..............                             

======How To Find======
  -Load into an empty instance
  -Start the capture
  -Click a Skill
  -Close GW

This packet is from the client and is 15 bytes in size.
Code:
VERIFY_CLIENT

======Introduction======

This packet is the very first packet sent by the client to the game server. It is used to verify the client is indeed logged in, I think.

======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x0005 | The variable header for the packet. |
| Zone ID? | [[short]] | ? | (Might be zone ID, but think i proved it wasn't. Requires checking) See [[REFER_TO_GAMESERV]]|
| Unknown | [[long]] | ? | ?? |
| Unknown | [[long]] | ? | ?? |
| Transfer ID1 | [[long]] | Varies | Transfer ID One - The value used from the transfer packet |
| Unknown | [[long]] | ? | ?? |
| Transfer ID2 | [[long]] | Varies | Transfer ID Two - The value used """ MEH See [[REFER_TO_GAMESERV]]|
| Account GUID | [[byte]][16] | Varies | Not used >< |
| Character GUID? | [[byte]][16] | Varies | Was not proven. |
| Unknown | [[long]] | ? | ?? |
| Character Type | [[long]] | Varies | PvP or PvE? |


  00 05 0C 00 89 58 00 00 01 00 00 00 CA 49 7B FA
  15 01 00 00 66 C0 57 8F A9 3A E9 C8 DC FD 5A 44
  98 5A 17 BA 7E C0 87 9A 47 21 6A 1F 4C 42 7F 40
  A9 63 59 10 B8 27 65 7C 00 00 00 00 00 00 00 00


======How To Find======

  -Load your favorite network sniffing program
  -Start GW
  -Get to the character selection screen
  -Click "Create" to create a character. Before clicking "Next" start sniffing packets.
  -This packet should be the first one sent to the game server. It is 64 bytes in size.
Code:
VERIFY_SERIAL

======Introduction======
This packet is sent when you enter the Guild Wars store, after the connect packets have been sent.


======Packet Format======
^ Name ^ Size ^ Value ^ Description ^
| Header | [[short]] | 0x1C00 | The variable header for the packet. |
| # Logins? | [[long]] | Varies | :/ |
| Serial Key | [[unicode]] | Varies | Unicode string containing the serial key |

  1C00 1B00 0000 1900 3100 3300 3300 3300 
  3300 3300 3300 3300 3300 3300 3300 3300 
  3300 3300 3300 3300 3300 3300 3300 3300 
  3300 3300 3300 3300 3700                

======How To Find======
  -Load Guild Wars
  -Click 'Create Account or Add Access Key'
  -Click Create A New Guild Wars Account
  -Enter a serial key like '13333 33333 33333 33333 33337'
  -Start the capture with packet dump
  -Click Next
  -Close GW
pablo24 is offline  
Thanks
10 Users
Old 03/07/2009, 08:04   #3
 
elite*gold: 0
Join Date: May 2006
Posts: 26
Received Thanks: 47
reserviert 2
pablo24 is offline  
Old 03/07/2009, 08:04   #4
 
elite*gold: 0
Join Date: May 2006
Posts: 26
Received Thanks: 47
reserviert 3
pablo24 is offline  
Old 03/07/2009, 08:04   #5
 
elite*gold: 0
Join Date: May 2006
Posts: 26
Received Thanks: 47
reserviert 4
pablo24 is offline  
Old 03/07/2009, 08:04   #6
 
elite*gold: 0
Join Date: May 2006
Posts: 26
Received Thanks: 47
reserviert 5
pablo24 is offline  
Old 03/07/2009, 22:22   #7
 
elite*gold: 0
Join Date: Dec 2008
Posts: 52
Received Thanks: 2
thx for all but i don't understand how all work
cause the realese doens't work " fatal error" ( failed to open GW)
DaVv09 is offline  
Reply


Similar Threads Similar Threads
[Hilfe] Pakete bei eigenem P Server einstellen
10/19/2009 - Metin2 PServer Guides & Strategies - 4 Replies
Hallo, kann iwer genau erklären wie man Pakete erstellt also zB 10er Switchen oder 10mal verstärken? Ich habe es nämlich bei shop_item@player umgestellt und es wird auch im Shop mit 10 mal anegzeigt( Preis is auch richtig) aber wenn ich das Item Kaufe habe ich kein 10er Paket im Inventar sondern nur 1 stk davon!:(
[Info]Fantasymt2 - Client
09/26/2009 - Metin2 Private Server - 10 Replies
Huhu Leutz.. Der Client für Fantasymt2 gibt es im Forum zudownloaden www.(Servername).foruml.biz @ Der Client ist Chinesisch :(
[HELP]Need info on client for pserver
07/31/2009 - Dekaron Private Server - 1 Replies
Hello all, I downloaded the private server files from: http://www.elitepvpers.com/forum/2moons-pserver-ho sting/256118-release-server-files-working-expediti on-siege-etc.html I followed this tutorial: http://www.elitepvpers.com/forum/2moons-pserver-ho sting/193549-making-private-server-video-english-h d.html At part 2 he starts editing data.pak and p-server connector.exe both from the client. At this part I ran into the problem that I didnt have any client other then my DekaronEU client...
Hey Need Info About No Dc Client 1.142
03/13/2008 - Say Hello - 9 Replies
Hey people ive jsuyt join and this seems like a kool site im all a bit confused as im kinda new 2 this whole botting experience i dont have a clue how 2 set one up and im still not 100% sure how 2 work a no dc lcient the only ones i see in this forum are on rapidshare and i dont feel like payin for a no dc client when i could probaly buy premium anyway lol ok thx for listening get back 2 me when u can JAMEZZZ



All times are GMT +1. The time now is 06:15.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.