Lineage2 Protocal

Lineage II Protocol

Author : TechnoWiz@rd 
Last edited : November 23, 2007

Content

1. General information 
2. Client -> Login Server packages 
3. Login Server -> Client packages 
4. Game Server -> Client packages 
5. Client -> Game Server packages


1. General information

   Each packet consists of a packet size (2 bytes), a packet type (1 byte), and a parameter block (variable length). In addition, server packets
authorization, a checksum is added at the end and padded with zeros so that the packet size is a multiple of 8 bytes. The checksum can
be calculated by the following function:

unsigned long checksum( unsigned char *packet, int count )
{
   long chksum = 0L;
    for ( int i = 0; i < count; i += 4 ) chksum ^= *((unsigned long *)&raw[i]);
    return chksum;
};


The lineage protocol uses 6 different data types:

char    – can take a value from -128 to 127. Has a length of 1 byte
 short   – can take a value from -32768 to 32767. Has a length of 2 bytes
 int     – can take a value from -2147483648 to 2147483647. Has a length of 4 bytes
 int64   – can take a value from -9223372036854775808 to 9223372036854775807. Has a length of 8 bytes.
 float   – can take a value from 2.22507e-308 to 1.79769e+308. Has a length of 8 bytes
 string – text string in Unicode (UTF8). Each letter is represented by two bytes, the first byte is the letter code, and the second is
	 Code table number. The end-of-line indicator is the character with code 0.

 
Note : For those unfamiliar with the principle of storing data in PC memory, I will clarify that the bytes go in reverse order. That is, if we need to write
into the package the number 10 represented by the int type, then we must:

1) convert it to hexadecimal notation – we get 00 00 00 0a
2) reverse the byte order in the word – we get 0a 00 00 00

   Authorization server packets are encrypted using the Blowfish algorithm. The default key is in four chronicles:
5F 3B 35 2E 5D 39 34 2D 33 31 3D 3D 2D 25 78 54 21 5E 5B 24 . A symbol with the code 0 is added to the end of the key. In Interlude, the encryption type was changed - the
 Init packet contains a dynamic Blowfish key randomly generated for each client. This packet is first encrypted using the XOR algorithm (the key is generated
randomly and placed at the end of the packet), and then encrypted using the Blowfish algorithm with a static key. By default, the static key is
6B 60 CB 5B 82 CE 90 B1 CC 2B 6C 55 6C 6C 6C 6C . All subsequent packets will be encrypted with a dynamic Blowfish key. LoginRequest packet additionally
encrypted using the RSA algorithm. The key consists of the following parts: B = 1024, E = 65537, N = transmitted in the Init packet. Together, these three parts make up the entire RSA key.
key. The N bytes in the packet are encrypted using the function:

void scrambleMod( char *n )
{
      typedef unsigned char byte;
       int i;

      for ( i=0; i<4; i++ ) {
            byte temp = n[0x00 + i];
            n[0x00 + i] = n[0x4d + i];
            n[0x4d + i] = temp;
      };

      // step 2 xor first 0x40 bytes with last 0x40 bytes 
      for ( i=0; i<0x40; i++ ) {
            n[i] = (byte)(n[i] ^ n[0x40 + i]);
      };
 
      // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38 
      for ( i=0; i<4; i++ ) {
            n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]);
      };

      // step 4 xor last 0x40 bytes with first 0x40 bytes 
      for ( i=0; i<0x40; i++ ) {
            n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]);
      };
};

To decrypt, you can use the following function:

void unscrambleMod( char *n )
{
      typedef unsigned char byte;
       int i;

      // step 4 xor last 0x40 bytes with first 0x40 bytes 
      for ( i=0; i<0x40; i++ ) {
            n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]);
      };

      // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38 
      for ( i=0; i<4; i++ ) {
            n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]);
      };

      // step 2 xor first 0x40 bytes with last 0x40 bytes 
      for ( i=0; i<0x40; i++ ) {
            n[i] = (byte)(n[i] ^ n[0x40 + i]);
      };

      for ( i=0; i<4; i++ ) {
            byte temp = n[0x00 + i];
            n[0x00 + i] = n[0x4d + i];
            n[0x4d + i] = temp;
      };
};


   There are also servers using the old authorization protocol (revision 785a ), which does not encrypt the Init packet , and the rest are encrypted by Blowfish.
with a 21-byte key. The LoginRequest packet is encrypted using the Blowfish algorithm only, without additional RSA encryption .
   The XOR algorithm is used to encrypt game server packets. The XOR key is randomly generated and transmitted to the client in the CryptInit packet . Functions
encryption and decryption are given below:
 
/* Decodes data */ 
void decrypt( unsigned char *data, unsigned int len, unsigned char *Key )
{

        int temp = 0;

        for ( unsigned int i = 0; i < len; ++i ) {
                int temp2 = data[i] & 0xff;
               data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp);
               temp = temp2;
        };

        

        int old = Key[8] & 0xff;
        old |= (Key[9] << 0x08) & 0xff00;
        old |= (Key[10] << 0x10) & 0xff0000;
        old |= (Key[11] << 0x18) & 0xff000000;

        old += len;

        Key[8] = old &0xff;
        Key[9] = (old >> 0x08) & 0xff;
        Key[10] = (old >> 0x10) & 0xff;
        Key[11] = (old >> 0x18) & 0xff;
};

/* Encodes data */ 
void encrypt( unsigned char *data, unsigned int len, unsigned char *Key )
{
        int temp = 0;

        for ( unsigned int i = 0; i < len; i++) {
               int temp2 = data[i] & 0xff;
               data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp);
               temp = data[i];
        };

        int old = Key[8] & 0xff;
        old |= (Key[9] << 0x08) & 0xff00;
        old |= (Key[10] << 0x10) & 0xff0000;
        old |= (Key[11] << 0x18) & 0xff000000;

        old += len;

        Key[8] = old &0xff;
        Key[9] = (old >> 0x08) & 0xff;
        Key[10] = (old >> 0x10) & 0xff;
        Key[11] = (old >> 0x18) & 0xff;
};


   With each encoded/decoded packet the key changes by the length of the packet, so two separate copies of the key must be used – one for
encryption of outgoing packets, the second for decrypting incoming ones.
   All packets are encrypted starting from the 3rd byte, i.e. the packet size is never encrypted.

Authorization procedure on the login server


First of all, I would like to point out that there are two protocol revisions currently in use (there may be more, but I don’t know about them) - c621 and 785a .
The difference is that the c621 uses additional encryption and GameGuard authorization . The Init and RequestAuthLogin packets are also different.
The version can be determined by the size of the Init packet ; for revision 785a it is 11 bytes, for c621 – 170.

1. Immediately after establishing a connection, the server sends an Init packet to the client. 
2. In response, the client sends a RequestGGAuth packet (in protocol revision 785a, this packet is not sent).
3. The server responds with a GGAuth packet (in protocol revision 785a this packet is not sent)
4. If the server responded that authorization was successful, the client sends a RequestAuthLogin packet containing the login and password.
5. Checking the login and password, in case of failure, the server sends a LoginFail packet containing the reason for the failure, and then a LoginOk packet is sent containing
session key #1.
6. Next, the client requests a list of servers using the RequestServerList packet 
. 7. In response to this packet, the server sends the client a ServerList , which contains a list of servers and their IP addresses with port numbers.
8. After selecting the game server and clicking OK, the client sends a RequestServerLogin packet
9. The authorization server checks the maximum number of players, server availability, etc. If all checks are passed, it sends a packet
PlayOk , containing session key #2. This key is generated from the current system time in milliseconds, the socket number, and some other nonsense. After this, the client
disconnects from the login server and connects to the game server.

Authorization procedure on the game server


1. After establishing a connection, the client sends a ProtocolVersion packet containing the protocol version.
2. The server sends a CryptInit packet containing the XOR key that will be used to encrypt all subsequent packets.
3. The client sends an AuthLogin packet to the selected server, containing session key #1, session key #2, and login. If these keys and login do not match,
What is stored on the authorization server the client is disconnected.
4. The server sends a CharList packet containing a list of all the characters on the account.
5. Here is the process of creating/deleting and selecting a character. After the character is selected and the Start button is pressed, the client sends a CharacterSelected packet 
. 6. The client sends two packets - RequestQuestList and RequestExManorList . 7. The server sends an ExSendManorList 
packet . 8. The server sends a QuestList 
packet . 9. The client sends an EnterWorld 
packet 
. 10. The server sends a UserInfo packet , which also serves as a signal that the download is complete.11. We're all in the game. The server sends a NetPingRequest 
packet every 60 seconds , to which the client must respond with a NetPing packet.

   In the description of packages you will find ObjectID and ItemID . ItemID is the identifier of the item type, for example, for Avadon Robe it is 2406. And ObjectID is
A unique identifier for the item itself in the game. For example, if two characters have an Avadon robe, the ItemID for each robe will be the same—2406.
how the ObjectID will be unique.

2. Packets from the client to the server (Login Server)

00 - RequestAuthLogin 
02 - RequestServerLogin 
05 - RequestServerList 
07 - RequestGGAuth

RequestAuthLogin



Purpose : requests authorization on the login server.
 Format for revision 0x785a :
00
XX XX XX XX 00		 // The string containing the login. It is 14 bytes long and is stored in ASCII format, not UNICODE!!! 
XX XX XX XX 00		 // The string containing the password. It is 16 bytes long and is stored in ASCII format, not UNICODE!!! 
08			 // The end marker of the login/password section 
00 00 00 00		 // Not used 
00 00 00 00		 // Not used

Format for revision 0xc621 :
00
00 00 00 00 ...		 // Beginning of an array of 128 bytes containing the login and password, encrypted using the RSA algorithm 
... (bytes 94-107)	 // a string containing the login. It is 14 bytes long and stored in ASCII format, not UNICODE!!! 
... (bytes 108-124)	 // a string containing the password. It is 16 bytes long and stored in ASCII format, not UNICODE!!! 
... 00 00 00 00		 // not used. End of array

Note : Some servers check login and password as data arrays and not as strings, i.e. the bytes contained behind the character with the code are checked
0 (end of line indicator), so make sure that unused bytes of variables where login and password are stored contain zeros.


RequestServerLogin



Purpose : requests connection to a game server
 Format :
02
XX XX XX XX		 // SessionKey1 first part 
XX XX XX XX		 // SessionKey1 second part 
XX			 // server number


RequestServerList



Purpose : Requests a list of game servers
 Format :
05
XX XX XX XX		 // SessionKey1 part 1 
XX XX XX XX		 // SessionKey1 part 2 
04 00 00 00		 // xs


RequestGGAuth



Purpose : requests Game Guard authorization
 Format :
07
XX XX XX XX		 // Session ID 
XX XX XX XX		 // unknown 
XX XX XX XX		 // unknown 
XX XX XX XX		 // unknown 
XX XX XX XX		 // unknown




3. Packets from the server to the client (Login Server)

00 - Init 
01 - LoginFail 
02 - AccountKicked 
03 - LoginOk 
04 - ServerList 
06 - PlayFail 
07 - PlayOk 
0B - GGAuth

Init


Purpose : transmits the session number and connection number to the client; in case of revision c621, the RSA key modulus and dynamic token are also transmitted.
(Used in Interlude, but should also be possible in older versions of the chronicles)
Format for protocol revision 0x785a :
00
XX XX XX XX	 // Session ID 
XX XX XX XX	 // Protocol version 0x785a

Format for protocol revision 0xc621 :
00
XX XX XX XX	 // Session ID 
XX XX XX XX	 // Protocol version 0xc621 
XX XX XX XX ...	 // 128 bytes of the public key, which the client subsequently uses to encrypt the RequestAuthLogin packet 
29 DD 95 4E      // \ 
77 C3 9C FC      // | idk what 
97 AD B6 20      // | 
07 BD E0 F7      // / 
XX XX XX XX ... // 16 bytes of the blowfish key, which is used to encrypt all subsequent packets
00
XX XX XX XX	 // packet checksum

The packet for Interlude contains an additional 4 bytes :
XX XX XX XX	 // XOR key used to encrypt the packet

LoginFail



Purpose : reports an unsuccessful attempt to connect to the login server
 Format :
01
XX XX XX XX	 // reason for failure:
		// 0x01 - system error
		// 0x02 - incorrect password
		// 0x03 - login or password is incorrect
		// 0x04 - access denied
		// 0x05 - the account information is incorrect (I don't know, maybe it means a database error)
		// 0x07 - account is already in use
		// 0x09 - account banned
		// 0x10 - the server is undergoing maintenance
		// 0x12 - expired
		// 0x13 - there is no more time left on the account (apparently NCSoft is planning or was planning to introduce hourly pay as well :)



AccountKicked



Purpose : Notifies the client that the account has been blocked
 Format :
02
XX XX XX XX	 // reason for failure:
		// 0x01 - data stealer
		// 0x08 - generic violation
		// 0x10 - 7 days have passed (for trial accounts?)
		// 0x20 - Account banned

LoginOk



Purpose : Sent as confirmation to the RequestAuthLogin packet if the login and password are successfully verified.
 Format :
03
XX XX XX XX	 // SessionKey1 first part 
XX XX XX XX	 // SessionKey1 second part
00 00 00 00
00 00 00 00
EA 03 00 00
00 00 00 00
00 00 00 00
02 00 00 00
XX XX XX XX ... // array of 16 bytes, purpose unknown

ServerList



Purpose : Sends a list of servers and their status to the client
 Format :
04
XX		 // number of servers in the list 
00		 // unused or reserved

// The next block is repeated for each server in the list 
XX		 // Server ID 
XX XX XX XX	 // Game server IP address 
XX XX XX XX	 // Server port 
XX		 // Age limit 
XX		 // PVP server: 00 - no, 01 - yes 
XX XX		 // Number of players online 
XX XX		 // Maximum number of players 
XX		 // Test server: 00 - no, 01 - yes 
// End of repeating block


PlayFail



Purpose : response to authorization request on the game server
 Format :
06
XX XX XX XX	 // reason for refusal
		// 0x00000003 - The password does not match the account
		// 0x00000004 - Access failed. Please try later
		// 0x0000000f - Too many users


PlayOk



Purpose : response to authorization request on the game server
 Format :
07
XX XX XX XX	 // SessionKey2 first part 
XX XX XX XX	 // SessionKey2 second part


GGAuth



Purpose : response to GameGuard authorization request
 Format :
0B
XX XX XX XX	 // answer:
		// 0x0B - Skip authorization




4. Packets from the server to the client (Game Server)

00 - CryptInit 
01 - MoveToLocation 
04 - UserInfo 
0E - StatusUpdate 
13 - CharList 
14 - AuthLoginFail 
19 - CharCreateOk 
1A - CharCreateFail 
23 - CharDeleteOk 
24 - CharDeleteFail 
25 - ActionFailed 
2F - ChangeWaitType 
38 - TeleportToLocation 
3E - ChangeMoveType 
7E - LogoutOK 
80 - QuestList 
D3 - NetPingRequest 
AF - ServerSocketClose 
E1 - ChairSit 
FE:1B - ExSendManorList

CryptInit



Purpose : transmits the encryption key (XOR) to the client
 Format :
00
01 		 // unknown 
XX XX XX XX ...	 // 16-byte array - XOR key 
01 00 00 00	 // unknown 
01 00 00 00	 // unknown


MoveToLocation



Purpose : Notifies the client that the character has moved
 Format :
01
XX XX XX XX	 // Object ID 
XX XX XX XX	 // Destination Point X 
XX XX XX XX	 // Destination Point Y 
XX XX XX XX	 // Destination Point Z 
XX XX XX XX	 // Current Position X 
XX XX XX XX	 // Current Position Y 
XX XX XX XX	 // Current Position Z


UserInfo



Purpose : Tells the client the character's stats
 Format :
04
XX XX XX XX	   	 // Character's x-coordinate 
XX XX XX XX	   	 // Character's y-coordinate 
XX XX XX XX	   	 // Character's z-coordinate 
XX XX XX XX	   	 // Head rotation angle 
XX XX XX XX	   	 // Character's ObjectID 
XX XX XX XX 00 00  	 // Character's name string 
XX XX XX XX	   	 // Race ID 
XX XX XX XX	   	 // Character's gender 0 - Male 1 - Female 
XX XX XX XX	   	 // Class ID 
XX XX XX XX	   	 // Level 
XX XX XX XX	   	 // Exp 
XX	   	 
XX XX XX	  	 // STR 
XX XX XX XX	  	 // DEX 
XX XX XX XX	   	 // CON XX 
XX XX XX	   	 // INT XX XX XX XX // WIT 
XX XX XX XX	   	 // MEN 
XX XX XX XX	  	 // Max HP 
XX XX XX XX	   	 // Current HP 
XX XX XX XX	   	 // Maximum MP 
XX XX XX XX	   	 // Current MP 
XX XX XX XX	   	 // SP 
XX XX XX XX	   	 // Current load weight 
XX XX XX XX	   	 // Maximum load weight 
28 00 00 00	   	 // unknown 
XX XX XX XX	   	 // ObjectID Underware 
XX XX XX XX	   	 // ObjectID Rear 
XX XX XX XX	  	 // ObjectID Left rear 
XX XX XX XX	   	 // ObjectID Neckless 
XX XX XX XX	  	 // ObjectID Right ring 
XX XX XX XX	   	 // ObjectID Left ring 
XX XX XX XX	   	 // ObjectID Helmate 
XX XX XX XX	   	 // ObjectID Right hand 
XX XX XX XX	   	 // ObjectID Left hand 
XX XX XX XX	   	 // ObjectID Gloves 
XX XX XX XX	   	 // ObjectID Main armor 
XX XX XX XX	   	 // ObjectID Leggings 
XX XX XX XX	   	 // ObjectID Boots 
XX XX XX XX	   	 // ObjectID Back 
XX XX XX XX	   	 // ObjectID Left right hand 
XX XX XX XX	   	 // ObjectID Hair 
XX XX XX XX	   	 // ObjectID Face 
XX XX XX XX	   	 // ItemID Underware 
XX XX XX XX	   	 // ItemID Rear 
XX XX XX XX	   	 // ItemID Left rear 
XX XX XX XX	   	 // ItemID Neckless 
XX XX XX XX	   	 // ItemID Right ring 
XX XX XX XX	   	 // ItemID Left ring 
XX XX XX XX	   	 // ItemID Helmate
XX XX XX XX	   	 // ItemID Right hand 
XX XX XX XX	   	 // ItemID Left hand 
XX XX XX XX	   	 // ItemID Gloves 
XX XX XX XX	   	 // ItemID Main armor 
XX XX XX XX	   	 // ItemID Leggings 
XX XX XX XX	   	 // ItemID Boots 
XX XX XX XX	   	 // ItemID Back 
XX XX XX XX	  	 // ItemID Left right hand 
XX XX XX XX	  	 // ItemID Hair 
XX XX XX XX	 	 // ItemID Face 
...		 	 // array of 136 zeros, purpose unknown 
XX XX XX XX	 	 // PAtk 
XX XX XX XX	 	 // PAtk speed 
XX XX XX XX	  	 // PDef 
XX XX XX XX	  	 // Evasion 
XX XX XX XX	 	 // Accuracy 
XX XX XX XX	 	 // Critical 
XX XX XX XX	  	 // MAtk 
XX XX XX XX	 	 // CastSpeed 
​​XX XX XX XX	  	 // Atk speed (?) 
XX XX XX XX	  	 // MDef 
XX XX XX XX	 	 // PVP state (0=unflagged 1=flagged) 
XX XX XX XX	 	 // Karma 
XX XX XX XX	 	 // Run speed 
XX XX XX XX	 	 // Walk speed 
XX XX XX XX		 // Swim speed with run mode enabled 
XX XX XX XX	 	 // Swim speed with walk mode enabled 
XX XX XX XX	 	 // _flRunSpd 
XX XX XX XX	   	 // _flWalkSpd 
XX XX XX XX	 	 // Fly speed with run mode enabled 
XX XX XX XX	   	 // Fly speed with walk mode enabled 
XX XX XX XX XX XX XX XX // Move x (float type) 
XX XX XX XX XX XX XX XX // Atk speed x (float type) 
XX XX XX XX XX XX XX XX // Character radius - this value is used by the server to check for collisions with other objects (float type) 
XX XX XX XX XX XX XX XX // Character height - this value is used by the server to check for collisions with other objects (float type) 
XX XX XX XX	   	 // Hair style 
XX XX XX XX	   	 // Hair color 
XX XX XX XX	   	 // Face type 
XX XX XX XX	   	 // Access level (0 - normal character, 1 and above - GM) 
XX XX XX XX 00 00  	 // Character title string 
XX XX XX XX	   	 // Clan ID 
XX XX XX XX	   	 // Clan badge ID 
XX XX XX XX	   	 // Alliance ID 
XX XX XX XX	   	 // Alliance badge ID 
XX XX XX XX	   	// Siege flags 
XX XX XX XX	   	 // 0=no 1=on strider 2=on wyvern 
XX XX XX XX	   	 // Shop type (Private Store Type) 
XX XX XX XX	   	 // Can the character craft items? (0=no, 1=yes) 
XX XX XX XX	   	 // Number of PK 
XX XX XX XX	   	 // Number of PVP 
XX XX			 // Number of crafted cubes

// This block is repeated depending on the number of cubes 
XX XX			 // Cube ID 
// end of repeating block

XX			 // 1-find party members? 
XX XX XX XX	   	 // Character status flag set (Abnormal effect) 
00			 // 
XX XX XX XX	   	 // Clan privileges 
XX XX			 // Number of remaining recommendations 
XX XX			 // Number of recommendation points for a character 
00 00 00 00		 // 
XX XX XX XX		 // Inventory size (maximum number of items) 
XX XX XX XX		 // Character class ID 
XX XX XX XX		 // Effect around player 
XX XX XX XX		 // Maximum CP 
XX XX XX XX		 // CP 
XX			 // Enhancement level 
XX			 // Team indicating circle around player (0=none, 1=blue, 1=red) 
XX XX XX XX		 // Large clan icon ID (used on clan shields) 
XX			 // Noblesse ? 
XX			 // Heroism ? 
XX			 // Fishing ? 
XX XX XX XX		 // Fish x 
XX XX XX XX		 // Fish y 
XX XX XX XX		 // Fish z 
XX XX XX XX		 // Name color in RGB format (0x00 RR GG BB , where R is the level of red, G is green, and B is blue) 
XX			 // Running enabled ? 
XX XX XX XX		 // Clan class 
00 00 00 00		 // 
XX XX XX XX		 // Title color in RGB format (0x00 RR GG BB , where R is the level of red, G is green, and B is blue) 
XX XX XX XX		 // Cursed weapon level



StatusUpdate



Purpose : Notifies the client about a change in the object's stats
 Format :
0E
XX XX XX XX	 // ID of the object whose stats have changed 
XX XX XX XX	 // number of stats in the list

// The next block is repeated as many times as there are stats in the list 
XX XX XX XX	 // stat identifier, can take the following values:
		// 0x00000001 - Level
		// 0x00000002 - Exp
		// 0x00000003 - STR
		// 0x00000004 - DEX
		// 0x00000005 - CON
		// 0x00000006 - INT
		// 0x00000007 - WIT
		// 0x00000008 - MEN
		// 0x00000009 - Current HP
		// 0x0000000a - Maximum HP
		// 0x0000000b - Current MP
		// 0x0000000c - Maximum MP
		// 0x0000000d - SP
		// 0x0000000e - Current carry weight level
		// 0x0000000f - Maximum carry weight
		// 0x00000010 - ?
		// 0x00000011 - PAtk
		// 0x00000012 - Patk Speed
		// 0x00000013 - PDef
		// 0x00000014 - Evasion
		// 0x00000015 - Accuracy
		// 0x00000016 - Critical
		// 0x00000017 - MAtk
		// 0x00000018 - Cast speed
		// 0x00000019 - MDef
		// 0x0000001a - PVP flag
		// 0x0000001b - Karma
		// 0x00000021 - Current CP
		// 0x00000022 - Maximum CP 
XX XX XX XX	 // New stat value 
// end of repeating block


Note: For the client to update stats, you need to send at least 2 parameters (tested on the Interlude client)


AuthLoginFail



Purpose : Notifies the client that the game server has rejected the connection request.
 Format :
14		 // and/or 12 ??? 
XX XX XX XX	 // Reason:
		// 0x00 - No text
		// 0x01 - System error
		// 0x02 - The password doesn't match the account (what does the game server have to do with this??? It doesn't even send the password to it Oo)
		// 0x03 - Password doesn't match the account (25 again, Koreans, damn)
		// 0x04 - Access attempt failed, please try again later.
		// 0x05 - Invalid account, contact support
		// 0x06 - Access attempt failed, try again later. (They seem to have too many codes for one error.)
		// 0x07 - Account is already in use (the login server should also check this)
		// 0x08 - Access attempt failed, please try again later.
		// 0x09 - Access attempt failed, please try again later.
		// 0x10 - Access attempt failed, try again later.


CharList



Purpose : Contains a list of all the charms on the account
 Format :
13
XX XX XX XX		 // Number of charms on the account

			// <<<<< The next block is repeated as many times as there are characters on the account. 
XX XX XX XX 00 00	 // string containing character's nickname 
XX XX XX XX		 // Character ID 
XX XX XX XX 00 00	 // string with login 
XX XX XX XX		 // Character ID 
XX XX XX XX		 // SessionID 
XX XX XX XX		 // Clan ID 
00 00 00 00		 // unknown 
XX XX XX XX		 // gender (0x00 - male, 0x01 - female 
XX XX XX XX		 // race 
XX XX XX XX		 // class 
XX XX XX XX		 // active.(?) 
XX XX XX XX		 // X - not used 
XX XX XX XX		 // Y - not used 
XX XX XX XX		 // Z - not used 
XX XX XX XX XX XX XX XX	 // current HP (the number is stored in double format) 
XX XX XX XX XX XX XX XX	 // current MP (number stored in double format) 
XX XX XX XX		 // SP 
XX XX XX XX XX XX XX XX	 // EXP (type __int64) 
XX XX XX XX		 // level 
XX XX XX XX		 // karma 
XX XX XX XX ...		 // array of 36 zeros, purpose unknown 
XX XX XX XX		 // ItemObjectID Under 
XX XX XX XX		 // ItemObjectID REar 
XX XX XX XX		 // ItemObjectID LEar 
XX XX XX XX		 // ItemObjectID Neck 
XX XX XX XX		 // ItemObjectID RFinger 
XX XX XX XX		 // ItemObjectID LFinger 
XX XX XX XX		 // ItemObjectID Head 
XX XX XX XX		 // ItemObjectID RHand 
XX XX XX XX		 // ItemObjectID LHand 
XX XX XX XX		 // ItemObjectID Gloves 
XX XX XX XX		 // ItemObjectID Chest 
XX XX XX XX		 // ItemObjectID Legs 
XX XX XX XX		 // ItemObjectID Feet 
XX XX XX XX		 // ItemObjectID Back 
XX XX XX XX		 // ItemObjectID LRHand 
XX XX XX XX		 // ItemObjectID Hair 
XX XX XX XX		 // ItemID Under 
XX XX XX XX		 // ItemID REar 
XX XX XX XX		 // ItemID LEar 
XX XX XX XX		 // ItemID Neck 
XX XX XX XX		 // ItemID RFinger 
XX XX XX XX		 // ItemID LFinger 
XX XX XX XX		 // ItemID Head 
XX XX XX XX		 // ItemID RHand 
XX XX XX XX		 // ItemID LHand 
XX XX XX XX		 // ItemID Gloves 
XX XX XX XX		 // ItemID Chest 
XX XX XX XX		// ItemID Legs 
XX XX XX XX		 // ItemID Feet 
XX XX XX XX		 // ItemID Back 
XX XX XX XX		 // ItemID LRHand 
XX XX XX XX		 // ItemID Hair 
XX XX XX XX		 // hairstyle 
XX XX XX XX		 // hair color 
XX XX XX XX		 // face type 
XX XX XX XX XX XX XX XX	 // maximum HP (the number is stored in double format) 
XX XX XX XX XX XX XX XX	 // maximum MP (the number is stored in double format) 
XX XX XX XX		 // time before deleting the character in seconds. If 0, then the character is not set for deletion 
XX XX XX XX		 // Class ID (base?) 
XX XX XX XX		 // used by the client to determine the character who last logged in, he has 1 here, the rest have 0 
XX			 // gun sharpening level 
XX XX XX XX		 // augmentation id


CharCreateOk



Purpose : Notifies the client that the character creation has been successfully completed
 Format :
19
01


CharCreateFail



Purpose : Notifies the client that an attempt to create a character has failed.
 Format :
1A
XX XX XX XX	 // Reason:
		// Creation Failed
		// Too many charms on the account
		// The character name already exists
		// The name is too long or contains illegal characters


CharDeleteOk



Purpose : Notifies the client that the character deletion was successful
 Format :
23


CharDeleteFail


Purpose : Notifies the client that the character deletion failed
 Format :
24


ActionFailed


Purpose : Notifies the client that its latest request cannot be satisfied
 Format :
25


ChangeWaitType



Purpose : informs the client that the character has changed the wait type (I don’t know how best to translate this into Russian :-/ In short, the parameters make it clear what it is)
 Format :
2F
XX XX XX XX	 // Character ID 
XX XX XX XX	 // wait type:
		// 00 - sit
		// 01 - stand
		// 02 - fake death
		// 03 - cancel fake death 
XX XX XX XX	 // X 
XX XX XX XX	 // Y 
XX XX XX XX	 // Z


TeleportToLocation



Purpose : Notifies the client that the character has teleported.

Format :
38
XX XX XX XX	 // Character ID 
XX XX XX XX	 // X 
XX XX XX XX	 // Y 
XX XX XX XX	 // Z


ChangeMoveType



Purpose : Notifies the client that the character has changed the movement type
 Format :
3E
XX XX XX XX	 // Character ID 
XX XX XX XX	 // 00 - walking, 01 - running 
00 00 00 00	 // C2


LogoutOK



Purpose : Notifies the client that permission to leave the game has been granted. Serves as a response to the client's Logout packet. 
Format :
7E

QuestList



Purpose : Tells the client a list of quests and quest items
 Format :
80
XX XX		 // Number of quests

// This block is repeated as many times as the character has quests 
XX XX XX XX	 // Quest ID 
00 00 00 00	 // number showing the stage of execution the quest is at 
// end of repeating block

XX XX		 // Number of quest items

// This block is repeated as many times as the character has quest items 
XX XX XX XX	 // ItemID of the item 
XX XX XX XX	 // ObjectID of the item 
XX XX XX XX	 // Number of items of this type 
05 00 00 00	 // unknown 
// end of repeating block


ServerSocketClose



Purpose : Notifies the client that the server is closing the connection
 Format :
AF
00 00 00 00	 //



NetPingRequest



Purpose : Pings the client. Approximately once per minute, if the client does not respond to this packet, the client disconnects with a NetPing packet .
 Format :
D3
XX XX XX XX	 // Ping ID. Seems to be randomly generated.

ChairSit



Purpose : informs the client that the char has sat down
 Format :
E1
XX XX XX XX	 // Object ID 
XX XX XX XX	 // Static object ID


ExSendManorList



Purpose : informs the client of the manor zone
 Format :
FE
1B 00
XX XX XX XX	 // Number of manor zones

// The next block is repeated as many times as there are manor zones 
XX XX XX XX		 // Manor zone ID 
XX XX XX XX 00 00	 // A string containing the name of the manor zone 
// end of the repeating block



5. Packets from the client to the server (Game Server)

00 - ProtocolVersion 
01 - MoveBackwardToLocation 
02 - Say 
03 - EnterWorld 
04 - Action 
08 - AuthRequest 
09 - Logout 
0A - AttackRequest 
0B - CharacterCreate 
0C - CharacterDelete 
0D - CharacterSelected 
0F - RequestItemList 
11 - RequestUnEquipItem 
12 - RequestDropItem 
14 - UseItem 
15 - TradeRequest 
16 - AddTradeItem 
17 - TradeDone 
1B - RequestSocialAction 
1C - ChangeMoveType 		// deprecated. Now used ' RequestActionUse ' 
1D - ChangeWaitType 		// deprecated. Now ' RequestActionUse ' is used 
1E - RequestSellItem 
1F - RequestBuyItem 
21 - RequestBypassToServer 
24 - RequestJoinPledge 
25 - RequestAnswerJoinPledge 
26 - RequestWithdrawalPledge 
27 - RequestOustPledgeMember 
29 - RequestJoinParty 
2A - RequestAnswerJoinParty 
2B - RequestWithDrawalParty 
2C - RequestOustPartyMember 
2F - RequestMagicSkillUse 
30 - Appearing 
33 - RequestShortCutReg 
35 - RequestShortCutDel 
37 - RequestTargetCanceld 
38 - Say2 
3C - RequestPledgeMemberList 
3F - RequestSkillList 
40 - AnswerTradeRequest 
45 - RequestActionUse 
46 - RequestRestart 
48 - ValidatePosition 
4A - StartRotating 
4B - FinishRotating 
4D - RequestStartPledgeWar 
4F - RequestStopPledgeWar 
55 - RequestGiveNickName 
58 - RequestEnchantItem 
59 - RequestDestroyItem 
5E - RequestFriendInvite 
5F - RequestAnswerFriendInvite 
60 - RequestFriendList 
61 - RequestFriendDel 
62 - CharacterRestore 
63 - RequestQuestList 
64 - RequestQuestAbort 
66 - RequestPledgeInfo 
68 - RequestPledgeCrest 
6A - RequestRide 
6B - RequestAquireSkillInfo 
6C - RequestAquireSkill 
6D - RequestRestartPoint 
6E - RequestGMCommand 
6F - RequestPartyMatchConfig 
70 - RequestPartyMatchList 
71 - RequestPartyMatchDetail 
72 - RequestCrystallizeItem 
77 - SetPrivateStoreMsgSell 
81 - RequestGmList 
82 - RequestJoinAlly 
83 - RequestAnswerJoinAlly 
84 - AllyLeave 
85 - AllyDismiss 
88 - RequestAllyCrest 
89 - RequestChangePetName 
8A - RequestPetUseItem 
8B - RequestGiveItemToPet 
8C - RequestGetItemFromPet 
8E - RequestAllyInfo 
8F - RequestPetGetItem
94 - SetPrivateStoreMsgBuy 
98 - RequestStartAllianceWar 
9А - RequestStopAllianceWar 
A0 - RequestBlock 
A2 - RequestSiegeAttackerList 
A4 - RequestJoinSiege 
A8 - NetPing 
AC - RequestRecipeBookOpen 
B9 - RequestEvaluate 
BA - RequestHennaList 
BB - RequestHennaItemInfo 
BC - RequestHennaEquip 
C1 - RequestMakeMacro 
C2 - RequestDeleteMacro 
CF - RequestAutoSoulShot 
D0:06 - RequestExEnchantSkillInfo 
D0:07 - RequestExEnchantSkill 
D0:08 - RequestExManorList 
D0:10 - RequestExPledgeCrestLarge 
D0:11 - RequestExSetPledgeCrestLarge 
EE - RequestChangePartyLeader

ProtocolVersion



Purpose : conveys the protocol version used by the client to the server
 Format :
00
XX XX XX XX		 // Protocol version


MoveBackwardToLocation



Purpose : Request to move a character
 Format :
01
XX XX XX XX		 // X coordinate of the destination point 
XX XX XX XX		 // Y coordinate of the destination point 
XX XX XX XX		 // Z coordinate of the destination point 
XX XX XX XX		 // X coordinate of the character's current position 
XX XX XX XX		 // Y coordinate of the character's current position 
XX XX XX XX		 // Z coordinate of the character's current position 
XX XX XX XX		 // 00 - use keyboard for movement, 01 - use mouse for movement


Say



Purpose : Sends a message to other players
 Format :
02
XX XX XX XX 00 00	 // Message string 
XX XX XX XX		 // Message type
			// 0x00 - ALL
			// 0x01 - SHOUT ( ! )
			// 0x02 - TELL ( " )
			// 0x03 - PARTY ( # )
			// 0x04 - CLAN ( @ )
			// 0x05 - GM
			// 0x06 - PETITION_PLAYER
			// 0x07 - PETITION_GM
			// 0x08 - TRADE ( + )
			// 0x09 - ALLIANCE ( $ )
			// 0x0A - ANNOUNCEMENT
			// 0x0F - PARTYROOM_ALL ( yellow )
			// 0x10 - PARTYROOM_COMMANDER (blue)
			// 0x11 - Hero's voice 
XX XX XX XX 00 00	 // For private messages. Contains the nickname of the character to whom the message is intended.


EnterWorld



Purpose : A packet sent by the client when the client has finished loading the world
 Format :
03


Action



Purpose : A packet that is sent by the client when clicking on an NPC or another character
 . Format :

04
XX XX XX XX		 // Object ID 
XX XX XX XX		 // Character's X coordinate 
XX XX XX XX		 // Character's Y coordinate 
XX XX XX XX		 // Character's Z coordinate 
XX			 // 00 - just click, 01 - click with shift pressed


AuthRequest



Purpose : authorization request on the game server
 Format :
08
XX XX XX XX		 // SessionKey2 part 2 (given by the server login) 
XX XX XX XX		 // SessionKey2 part 1 (given by the server login) 
XX XX XX XX		 // SessionKey1 part 2 (given by the server login) 
XX XX XX XX		 // SessionKey1 part 1 (given by the server login)


Logout



Purpose : Requests permission from the server to leave the game
 Format :
09


AttackRequest



Purpose : Attack Request
 Format :
0A
XX XX XX XX		 // ID of the character we are going to attack 
XX XX XX XX		 // X coordinate of the character's position 
XX XX XX XX		 // Y coordinate of the character's position 
XX XX XX XX		 // Z coordinate of the character's position 
XX XX XX XX		 // 0 - Ctrl is not pressed, 1 - Ctrl is pressed


CharacterCreate



Purpose : Request to create a character
 Format :
0B
XX XX XX XX 00 00	 // Line with the character's name 
XX XX XX XX		 // Race 
XX XX XX XX		 // Gender 
XX XX XX XX		 // Class 
XX XX XX XX		 // INT 
XX XX XX XX		 // STR 
XX XX		 
XX XX		 // CON XX XX XX XX // MEN 
XX XX XX XX		 // DEX 
XX XX XX XX		 // WIT 
XX XX XX XX		 // Hair style 
XX XX XX XX		 // Hair color 
XX XX XX XX		 // Face type


CharacterDelete



Purpose : sets the character to delete
 Format :
0C
XX XX XX XX		 // Slot number with character


CharacterSelected



Purpose : Selects a character. Sent when clicking on a character in the character selection menu.
 Format :
0D
XX XX XX XX		 // Slot number with character


RequestItemList



Purpose : Request a list of items in the inventory. (The client opens the inventory when the server sends this list.)
 Format :
0F


RequestUnEquipItem



Purpose : Removes equipment from a character
 Format :
11
XX XX XX XX		 // Slot number


RequestDropItem



Purpose : Request for item drop. Sent by the client when attempting to drop an item from inventory.
 Format :
12
XX XX XX XX		 // ID of the item we want to throw away 
XX XX XX XX		 // Number of items we want to throw away 
XX XX XX XX		 // X coordinate of the place where we throw the item 
XX XX XX XX		 // Y coordinate of the place where we throw the item 
XX XX XX XX		 // Z coordinate of the place where we throw the item


UseItem



Purpose : request to use an item
 Format :
14
XX XX XX XX		 // Object ID


TradeRequest



Purpose : Trade request.
 Format :
15
XX XX XX XX		 // ID of the object we want to trade with


AddTradeItem



Purpose : Adds an item to the trade list.
 Format :
16
XX XX XX XX		 // Trade ID 
XX XX XX XX		 // Object ID 
XX XX XX XX		 // Quantity


TradeDone



Purpose : Request to close a trade.
 Format :
17
XX XX XX XX		 // 0 - cancel the transaction, 1 - confirm the transaction


RequestSocialAction



Purpose : Causes animation of social actions such as laughter, etc.
 Format :
1B
XX XX XX XX		 // Action number
			// 0x02 - Greeting
			// 0x03 - Victory
			// 0x04 - Advance
			// 0x05 - No
			// 0x06 - Yes
			// 0x07 - Bow
			// 0x08 - Unaware
			// 0x09 - Social Waiting
			// 0x0A - Laugh
			// 0x0B - Applaud
			// 0x0C - Dance
			// 0x0D - Sorrow
			// 0x0F - Animation as with lvl-up
			// 0x10 - Hero animation


ChangeMoveType



Purpose : turns on/off running
 Format :
1C
XX XX XX XX		 // 0 - running off, 1 - running on


ChangeWaitType



Purpose : sit/stand
 Format :
1D
XX XX XX XX		 // 0 - sit, 1 - stand


RequestTargetCanceld



Purpose : Cancels target
 Format :
1D


RequestSellItem



Purpose : Request for sale of items
 Format :
1E
XX XX XX XX		 // Shopping list ID (list id) 
XX XX XX XX		 // Number of items to sell

// <<< The block is repeated as many times as there are different things to buy 
XX XX XX XX		 // ObjectID of the item to be sold 
XX XX XX XX		 // ItemID of the item to be sold 
XX XX XX XX		 // number of items to be sold 
// end of repeating block

RequestBuyItem



Purpose : Request for purchase of items
 Format :
1F
XX XX XX XX		 // Shopping Cart ID 
XX XX XX XX		 // Number of items to buy

// <<< The block is repeated as many times as there are different things to buy 
XX XX XX XX		 // ID of the item to buy 
XX XX XX XX		 // number of items to buy
...

RequestBypassToServer



Purpose : Bypasses a command (contained in HTML) to the server.
 Format :
21
XX XX XX XX 00 00	 // line with command


RequestJoinPledge



Purpose : Sends a character an invitation to join a clan.
 Format :
24
XX XX XX XX		 // ID of the character to whom the offer is sent


RequestAnswerJoinPledge



Purpose : response to an offer to join a clan
 Format :
25
XX XX XX XX		 // answer: 00 - no, 01 - yes


RequestWithdrawalPledge



Purpose : leave the clan
 Format :
26


RequestOustPledgeMember



Purpose : remove a character from a clan
 Format :
27
XX XX XX XX 00 00	 // string with the character name


RequestJoinParty



Purpose : to invite to join a party
 Format :
29
XX XX XX XX 00 00	 // nickname of the character to whom the offer is sent 
XX XX XX XX		 // type of item distribution:
			// 0x00 - the drop goes to the character who picked it up, the spoiler gets the drop
			// 0x01 - the drop is distributed randomly, spoiler - goes to the spoiler
			// 0x02 - drop and spoil, distributed randomly
			// 0x03 - the drop is given to the characters in turn, the spoiler gets the drop
			// 0x04 - drop and spoil, given to characters in turn


RequestAnswerJoinParty



Purpose : response to an invitation to join a party
 Format :
2A
XX XX XX XX		 // answer: 00 - no, 01 - yes


RequestWithDrawalParty



Purpose : leave the party
 Format :
2B


RequestOustPartyMember



Purpose : remove a character from a party
 Format :
2C
XX XX XX XX 00 00	 // string with the name of the character that should be deleted


RequestMagicSkillUse



Purpose : to use magic skill
 Format :
2F
XX XX XX XX		 // Skill ID 
XX XX XX XX		 // CTRL state: 00 - released, 01 - pressed 
XX XX XX XX		 // SHIFT state: 00 - released, 01 - pressed


Appearing



Purpose : Requests the character's resurrection after death. Called after the RequestRestartPoint and ValidatePosition packets. 
Format :
30

RequestShortCutReg



Purpose : Registers a shortcut on the Quick Access Toolbar.
 Format :
33
XX XX XX XX		 // Label type
			// 0x01 - item
			// 0x02 - skill
			// 0x03 - action
			// 0x04 - macro 
XX XX XX XX		 // identifier of the object placed on the panel 
XX XX XX XX		 // slot number 
XX XX XX XX		 // bookmark number 
XX XX XX XX		 // unknown


RequestShortCutDel



Purpose : Removes a shortcut from the Quick Access Toolbar.
 Format :
35
XX XX XX XX		 // slot number 
XX XX XX XX		 // bookmark number

Say2



Purpose : Sends a message to other players
 Format :
38
XX XX XX XX 00 00	 // Message string 
XX XX XX XX		 // Message type
			// 0x00 - ALL
			// 0x01 - SHOUT ( ! )
			// 0x02 - TELL ( " )
			// 0x03 - PARTY ( # )
			// 0x04 - CLAN ( @ )
			// 0x05 - GM
			// 0x06 - PETITION_PLAYER
			// 0x07 - PETITION_GM
			// 0x08 - TRADE ( + )
			// 0x09 - ALLIANCE ( $ )
			// 0x0A - ANNOUNCEMENT
			// 0x0F - PARTYROOM_ALL ( yellow )
			// 0x10 - PARTYROOM_COMMANDER (blue)
			// 0x11 - Hero's voice 
XX XX XX XX 00 00	 // For private messages. Contains the nickname of the character to whom the message is intended.


RequestPledgeMemberList



Purpose : Request a list of clan members
 Format :
3C


RequestSkillList



Purpose : Requests a list of learned skills
 Format :
3F


AnswerTradeRequest



Purpose : response to trade
 Format :
40
XX XX XX XX		 // Trade response: 00 - reject, 01 - confirm


RequestActionUse



Purpose : Performs an action 
 Format :
45
XX XX XX XX		 // Action ID (the list is not complete, there are a ton of actions)
			// 0x00 - Sit/stand
			// 0x01 - Walk/Run
			// 0x19 - Ensemble pet
			// 0x33 - General manufacture
			// 0x38 - Get on/off the strider (virna ???) 
XX XX XX XX		 // 00 - CTRL not pressed, 01 - CTRL pressed 
XX			 // 01 - SHIFT not pressed, 01 - SHIFT pressed


RequestRestart



Purpose : returns to the character selection menu
 Format :
46


ValidatePosition



Purpose : Causes a reset of data, NPCs, other players, etc. Effectively, it causes teleportation to the player's current coordinates.
 Format :
48
XX XX XX XX		 // X 
XX XX XX XX		 // Y 
XX XX XX XX		 // Z 
XX XX XX XX		 // Direction of view 
XX XX XX XX		 // ???


StartRotating



Purpose : Enables the rotation of the character around its axis
 Format :
4A
XX XX XX XX		 // Angle (takes values ​​from 0 to 65535) 
XX XX XX XX		 // side ( 01 00 00 00 - rotation to the right, FF FF FF FF - rotation to the left )


FinishRotating



Purpose : stops the character from rotating around its axis
 Format :
4B
XX XX XX XX		 // Unknown 
XX XX XX XX		 // Unknown


RequestStartPledgeWar



Purpose : to start a clan war
 Format :
4D
XX XX XX XX 00 00	 // a string with the name of the clan to which the clan war is declared


RequestStartPledgeWar



Purpose : to finish the clan war
 Format :
4F
XX XX XX XX 00 00	 // string with clan name


RequestGiveNickName



Purpose : to set the title.
 Format :
55
XX XX XX XX 00 00	 // string containing the nickname of the character who needs to set the title 
XX XX XX XX 00 00	 // string containing the title


RequestEnchantItem



Purpose : Requests an enchat topic.
 Format :
58
XX XX XX XX		 // ID of the item we want to finish


RequestDestroyItem



Purpose : Request to destroy an item
 Format :
59
XX XX XX XX		 // Item ID 
XX XX XX XX		 // number of items?


RequestFriendInvite



Purpose : add a character to your friend list
 Format :
5E
XX XX XX XX 00 00	 // string with the name of the character to be added


RequestAnswerFriendInvite



Purpose : response to a friend request
 Format :
5F
XX XX XX XX		 // 00 - no, 01 - yes


RequestFriendList



Purpose : friend list request
 Format :
60


RequestFriendDel



Purpose : request to remove a character from a friend list
 Format :
61
XX XX XX XX 00 00 	 // string with the name of the character that should be deleted


CharacterRestore



Purpose : cancels the deletion of a character
 Format :
62
XX XX XX XX		 // slot number with character


RequestQuestList



Purpose : Request a list of quests
 Format :
63


RequestQuestAbort



Purpose : to interrupt the quest
 Format :
64
XX XX XX XX		 // Quest ID


CharacterRestore



Purpose : Request information about a clan
 Format :
66
XX XX XX XX		 // Clan ID


RequestPledgeCrest



Purpose : sets the clan icon
 Format :
68
XX XX XX XX		 // Icon ID


RequestRide



Purpose : to climb/dismount a strider/virn
 Format :
6A
XX XX XX XX		 // 0 - get off, 1 - get on 
XX XX XX XX		 // 1 - strider, 2 - viviren


RequestAquireSkillInfo



Purpose : Request information about a skill
 Format :
6B
XX XX XX XX		 // Skill ID 
XX XX XX XX		 // Skill level


RequestAquireSkill



Purpose : request to learn a skill
 Format :
6C
XX XX XX XX		 // Skill ID 
XX XX XX XX		 // Skill level


RequestRestartPoint



Purpose : Requests a restart after the character's death
 Format :
6D
XX XX XX XX		 // the point to which the player will be returned
			// 0x00 - City
			// 0x01 - Clan Hall
			// 0x02 - Castle
			// 0x03 - Flag (during a castle siege)
			// 0x04 - Res at the place where the player died, used at the festival


RequestGMCommand



Purpose : sends a request to the GM command
 Format :
6E
XX XX XX XX 00 00	 // string with the name of the target character 
XX XX XX XX		 // command identifier
			// 0x01 - player status
			// 0x02 - player's clan
			// 0x03 - player skills
			// 0x04 - player quests
			// 0x05 - player inventory
			// 0x06 - player's warhouse 
XX XX XX XX		 // unknown


RequestPartyMatchConfig



Purpose : open the party search window
 Format :
6F
XX XX XX XX		 // automatic registration: 00 - no, 01 - yes 
XX XX XX XX		 // show level: 00 - no, 01 - yes 
XX XX XX XX		 // show class: 00 - no, 01 - yes


RequestPartyMatchList



Purpose : Request a list of characters seeking a party
 Format :
70
XX XX XX XX		 // the status can be 1 and 3. What "for sure" means, I don't know.


RequestPartyMatchDetail



Purpose : Request detailed information about a character looking for a party
 Format :
71
XX XX XX XX		 // Character ID


RequestCrystallizeItem



Purpose : Request for crystallization of an item
 Format :
72
XX XX XX XX		 // ID of the item to be crystallized 
XX XX XX XX		 // Number of items to be crystallized


SetPrivateStoreMsgSell



Purpose : Sets the sale message for PrivateStore
 Format :
77
XX XX XX XX 00 00	 // string with message


RequestGmList



Purpose : Request a list of GMs
 Format :
81


RequestJoinAlly



Purpose : to propose joining an alliance
 Format :
82
XX XX XX XX		 // ID of the clan leader who is being invited to the alliance


RequestAnswerJoinAlly



Purpose : response to an offer to join the alliance
 Format :
83
XX XX XX XX		 // answer: 00 - no, 01 - yes


AllyLeave



Purpose : leave the alliance
 Format :
84
XX XX XX XX 00 00	 // string with clan name


AllyDismiss



Purpose : Request to dissolve the alliance
 Format :
85
XX XX XX XX 00 00	 // string with the clan name


RequestAllyCrest



Purpose : request to install an alliance icon
 Format :
88
XX XX XX XX		 // Icon ID


RequestChangePetName



Purpose : changes the pet's name
 Format :
89
XX XX XX XX 00 00	 // string with the new name of the food


RequestPetUseItem



Purpose : command to use item
 Format :
8A
XX XX XX XX		 // IDs of the object to be used


RequestGiveItemToPet



Purpose : Move an item from your inventory to the pit's inventory
 Format :
8B
XX XX XX XX		 // Item ID 
XX XX XX XX		 // quantity


RequestGetItemFromPet



Purpose : move an item from the pit's inventory to your own inventory
 Format :
8C
XX XX XX XX		 // Item ID 
XX XX XX XX		 // Quantity 
XX XX XX XX		 // Who knows. In most cases - 0


RequestAllyInfo



Purpose : Request information about the alliance.
 Format :
8E


RequestPetGetItem



Purpose : command pitu to pick up an item.
 Format :
8F
XX XX XX XX		 // ID to be raised


SetPrivateStoreMsgBuy



Purpose : Sets the purchase message for PrivateStore
 Format :
94
XX XX XX XX 00 00	 // string with message


RequestStartAllianceWar



Purpose : to announce alli var
 Format :
98
XX XX XX XX 00 00	 // string with the alliance name


RequestStopAllianceWar



Purpose : request to terminate alli var'a
 Format :
9A
XX XX XX XX 00 00	 // string with the alliance name


RequestBlock



Purpose : Request an operation on a blacklist
 Format :
A0
XX XX XX XX		 // request type:
			// 0x00 - add character to ignore list
			// 0x01 - remove character from ignore list
			// 0x02 - Displays a list of ignored characters
			// 0x03 - ignore all
			// 0x04 - cancel ignoring all 
XX XX XX XX 00 00	 // string with the name of the character that needs to be ignored


RequestSiegeAttackerList



Purpose : Requests a list of attacking clans registered for the castle siege.
 Format :
A2
XX XX XX XX		 // Lock ID


RequestJoinSiege



Purpose : add/remove a clan to the castle siege list
 Format :
A4
XX XX XX XX		 // Castle ID 
XX XX XX XX		 // 00 - join defenders, 01 - join attackers 
XX XX XX XX		 // 00 - remove clan from list, 01 - add clan to list


RequestRecipeBookOpen



Purpose : open the recipe book
 Format :
AS


NetPing



Purpose : Responds to a RequestNetPing server packet 
Format :
A8
XX XX XX XX		 // This number is taken from the RequestNetPing packet sent by the server 
XX XX XX XX		 // Ping

RequestRecipeBookOpen



Purpose : open the recipe book
 Format :
AS


RequestEvaluate



Purpose : Request for player recommendation
 Format :
B9
XX XX XX XX		 // Target ID


RequestHennaList



Purpose : Request a list of available tattoos
 Format :
BA
XX XX XX XX		 // unknown


RequestHennaItemInfo



Purpose : to get information about a tattoo
 Format :
BB
XX XX XX XX		 // Tattoo ID


RequestHennaEquip



Purpose : request for a tattoo
 Format :
BC
XX XX XX XX		 // ID of the tattoo to be applied


RequestMakeMacro



Purpose : Request to create a macro
 Format :
C1
XX XX XX XX		 // Macro ID 
XX XX XX XX 00 00	 // String containing the macro name 
XX XX XX XX 00 00	 // String with the macro description 
XX XX XX XX 00 00	 // String with the text on the icon 
XX			 // Icon ID 
XX			 // Number of strings

// <<<<< The next block is repeated as many times as there are lines in the macro. 
XX			 // line 
XX			 // type 
XX			 // skill ID 
XX			 // shortcut ID on the panel 
XX XX XX XX 00 00	 // command name 
// end of repeating block


RequestDeleteMacro



Purpose : Request to delete a macro
 Format :
C2
XX XX XX XX		 // Macro ID


RequestAutoSoulShot



Purpose : enables/disables the use of AutoSS
 Format :
CF
XX XX XX XX		 // item identifier 
XX XX XX XX		 // 1 - enable : 0 - disable


RequestExEnchantSkillInfo



Purpose : request information about sharpening a skill
 Format :
D0
06
00
XX XX XX XX		 // Skill ID 
XX XX XX XX		 // Skill level


RequestExEnchantSkill



Purpose : request skill sharpening
 Format :
D0
07
00
XX XX XX XX		 // Skill ID 
XX XX XX XX		 // Skill level


RequestExManorList



Purpose : request skill sharpening
 Format :
D0
08
00


RequestExPledgeCrestLarge



Purpose : Request data for the image of a large clan icon (those that are placed on clan items such as shields) of a clan
 Format :
D0
10
XX XX XX XX		 // Icon ID


RequestExSetPledgeCrestLarge



Purpose : send image data of a large clan icon (those that are placed on clan items such as shields) to the server
 Format :
D0
11
XX XX XX XX		 // data size

// <<<<< The next block is repeated as many times as there are bytes in the image data 
XX			 // image data 
// end of repeating block



RequestChangePartyLeader



Purpose : transfers leadership in the party
 Format :
EE
XX XX XX XX 00 00	 // string with the name of the character to whom leadership is transferred



Copyright (C) 2006-2007 by TechnoWiz@rd



posted @ 2026-04-24 16:39  SD-KT007  阅读(25)  评论(0)    收藏  举报