当前位置: 首页 > news >正文

Lineage2 Protocal - SD

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 byteshort   – can take a value from -32768 to 32767. Has a length of 2 bytesint     – can take a value from -2147483648 to 2147483647. Has a length of 4 bytesint64   – 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 bytesstring – text string in Unicode (UTF8). Each letter is represented by two bytes, the first byte is the letter code, and the second isCode 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 - theInit 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 usedFormat 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 arrayNote : 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 serverFormat :
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 serversFormat :
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 authorizationFormat :
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 0x785aFormat 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 checksumThe 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 serverFormat :
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 blockedFormat :
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 clientFormat :
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 serverFormat :
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 serverFormat :
07
XX XX XX XX	 // SessionKey2 first part 
XX XX XX XX	 // SessionKey2 second part

GGAuth

Purpose : response to GameGuard authorization requestFormat :
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 clientFormat :
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 movedFormat :
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 statsFormat :
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 statsFormat :
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 blockNote: 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 accountFormat :
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 completedFormat :
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 successfulFormat :
23

CharDeleteFail


Purpose : Notifies the client that the character deletion failedFormat :
24

ActionFailed


Purpose : Notifies the client that its latest request cannot be satisfiedFormat :
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 typeFormat :
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 itemsFormat :
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 connectionFormat :
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 downFormat :
E1
XX XX XX XX	 // Object ID 
XX XX XX XX	 // Static object ID

ExSendManorList

Purpose : informs the client of the manor zoneFormat :
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 serverFormat :
00
XX XX XX XX		 // Protocol version

MoveBackwardToLocation

Purpose : Request to move a characterFormat :
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 playersFormat :
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 worldFormat :
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 serverFormat :
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 gameFormat :
09

AttackRequest

Purpose : Attack RequestFormat :
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 characterFormat :
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 deleteFormat :
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 characterFormat :
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 itemFormat :
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 runningFormat :
1C
XX XX XX XX		 // 0 - running off, 1 - running on

ChangeWaitType

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

RequestTargetCanceld

Purpose : Cancels targetFormat :
1D

RequestSellItem

Purpose : Request for sale of itemsFormat :
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 itemsFormat :
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 clanFormat :
25
XX XX XX XX		 // answer: 00 - no, 01 - yes

RequestWithdrawalPledge

Purpose : leave the clanFormat :
26

RequestOustPledgeMember

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

RequestJoinParty

Purpose : to invite to join a partyFormat :
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 partyFormat :
2A
XX XX XX XX		 // answer: 00 - no, 01 - yes

RequestWithDrawalParty

Purpose : leave the partyFormat :
2B

RequestOustPartyMember

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

RequestMagicSkillUse

Purpose : to use magic skillFormat :
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 playersFormat :
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 membersFormat :
3C

RequestSkillList

Purpose : Requests a list of learned skillsFormat :
3F

AnswerTradeRequest

Purpose : response to tradeFormat :
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 menuFormat :
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 axisFormat :
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 axisFormat :
4B
XX XX XX XX		 // Unknown 
XX XX XX XX		 // Unknown

RequestStartPledgeWar

Purpose : to start a clan warFormat :
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 warFormat :
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 itemFormat :
59
XX XX XX XX		 // Item ID 
XX XX XX XX		 // number of items?

RequestFriendInvite

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

RequestAnswerFriendInvite

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

RequestFriendList

Purpose : friend list requestFormat :
60

RequestFriendDel

Purpose : request to remove a character from a friend listFormat :
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 characterFormat :
62
XX XX XX XX		 // slot number with character

RequestQuestList

Purpose : Request a list of questsFormat :
63

RequestQuestAbort

Purpose : to interrupt the questFormat :
64
XX XX XX XX		 // Quest ID

CharacterRestore

Purpose : Request information about a clanFormat :
66
XX XX XX XX		 // Clan ID

RequestPledgeCrest

Purpose : sets the clan iconFormat :
68
XX XX XX XX		 // Icon ID

RequestRide

Purpose : to climb/dismount a strider/virnFormat :
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 skillFormat :
6B
XX XX XX XX		 // Skill ID 
XX XX XX XX		 // Skill level

RequestAquireSkill

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

RequestRestartPoint

Purpose : Requests a restart after the character's deathFormat :
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 commandFormat :
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 windowFormat :
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 partyFormat :
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 partyFormat :
71
XX XX XX XX		 // Character ID

RequestCrystallizeItem

Purpose : Request for crystallization of an itemFormat :
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 PrivateStoreFormat :
77
XX XX XX XX 00 00	 // string with message

RequestGmList

Purpose : Request a list of GMsFormat :
81

RequestJoinAlly

Purpose : to propose joining an allianceFormat :
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 allianceFormat :
83
XX XX XX XX		 // answer: 00 - no, 01 - yes

AllyLeave

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

AllyDismiss

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

RequestAllyCrest

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

RequestChangePetName

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

RequestPetUseItem

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

RequestGiveItemToPet

Purpose : Move an item from your inventory to the pit's inventoryFormat :
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 inventoryFormat :
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 PrivateStoreFormat :
94
XX XX XX XX 00 00	 // string with message

RequestStartAllianceWar

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

RequestStopAllianceWar

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

RequestBlock

Purpose : Request an operation on a blacklistFormat :
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 listFormat :
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 bookFormat :
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 bookFormat :
AS

RequestEvaluate

Purpose : Request for player recommendationFormat :
B9
XX XX XX XX		 // Target ID

RequestHennaList

Purpose : Request a list of available tattoosFormat :
BA
XX XX XX XX		 // unknown

RequestHennaItemInfo

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

RequestHennaEquip

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

RequestMakeMacro

Purpose : Request to create a macroFormat :
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 macroFormat :
C2
XX XX XX XX		 // Macro ID

RequestAutoSoulShot

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

RequestExEnchantSkillInfo

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

RequestExEnchantSkill

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

RequestExManorList

Purpose : request skill sharpeningFormat :
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 clanFormat :
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 serverFormat :
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 partyFormat :
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

http://www.jsqmd.com/news/693477/

相关文章:

  • 从‘画图’到‘设计’:聊聊AutoCAD Electrical插件如何帮你迈出电气设计自动化的第一步
  • 2026武功山美食探店:老萍巷武功山店实地体验实录 - 资讯焦点
  • 告别命令行:5分钟掌握Another Redis Desktop Manager可视化数据库管理
  • 3大核心优势:MPC Video Renderer如何让DirectShow视频播放焕发新生
  • 从恐龙书习题看面试:操作系统高频考点与解题思路全解析(附第九版答案)
  • 2026最新:西安化妆学校避坑必看!正规院校口碑榜,零基础也能躺赢就业 - 深度智识库
  • 微信小程序预约系统实战指南:从零到商业落地的完整解决方案
  • 5G ISAC多目标跟踪技术:原理与工业应用实践
  • 告别手动装软件!用MDT+ADK给新电脑批量预装Office和Chrome的保姆级教程
  • 2026热门NMN抗衰老产品哪个牌子最好?NMN产品榜单更新推荐,综合评分靠前TOP10品牌 - 资讯焦点
  • 黑龙江地区无缝焊接系统窗厂家综合实力排行盘点 - 资讯焦点
  • 从无人机到扫地机:聊聊机器人‘眼睛’(图像传感器)为什么怕抖?全局快门与卷帘快门选型指南
  • 仅剩180天!ISO/IEC 9899:2026正式生效倒计时,你的代码已通过__attribute__((safe_mem))校验了吗?
  • 福州美容机构如何选?专业与安心,才是变美核心 - 品牌2026
  • 手把手教你用Docker在Ubuntu上部署KMS服务器(避坑指南)
  • Kotlin老手看过来:用你熟悉的Compose UI,30分钟给Android应用加个Desktop版
  • 2026年游乐设备生产厂家深度解析:以专业标准引领行业升级 - 深度智识库
  • 从“神奇开关”到智能家居:双向可控硅在智能灯控、风扇调速里的那些坑与最佳实践
  • # 分区表练好就够了,别动不动就上分库分表
  • STM32H7独立看门狗(IWDG)的窗口模式与低功耗场景实战解析
  • OFD转PDF终极指南:免费开源工具Ofd2Pdf完整使用教程
  • 相亲网站数据预测实战:手把手用Python随机森林模型判断‘见面意愿’(附数据集划分与结果分析避坑指南)
  • 别再乱画了!EPLAN电气制图新手避坑指南:从元件库到端子图的全流程规范
  • 【CSP】CSP-J 2019真题 | 公交换乘 luogu-P5661 (适合GESP四级及以上考生练习)
  • 四强同台!DeepSeek-V4-Pro / GPT-5.5 / GLM-5.1 / MiniMax M2.7 横评:到底该选谁?
  • 从ACPI到udev:拆解Linux内核如何用_UPC和_PLD给你的USB端口‘贴标签’
  • LeRobot机器人学习框架:3大突破让你5分钟从零到真实世界部署
  • 免费终极指南:MPC Video Renderer 5分钟快速上手
  • 别再手动算颜色了!用C语言位运算实现RGB与十六进制互转(附完整代码)
  • GPX Studio完全指南:3步掌握免费在线GPX轨迹编辑的终极技巧