Server messages (server -> game client)
Client messages (game client -> server)
Messages from game client to server is coded. Since I don't know actual code, primary target of research is server messages and known messages descriptions not full.
Often server->client and client->server are same format, but client->server is coded.
Descriptions
cl-c100Public speachserver -> game client | | | player name, padded with 0x00 | | speach text | | | len | msg ID | name | | text | | c1 | xx | 00 | | 00 | | 00 | 1 | 1 | 1 | 10 | 1 | length - 15 | 1 | If 'text' started with '@' sign, text message appeared in green (guild message) cl-c10dText message from serverserver -> game client | | | 0-normal, 1-blue | | | | len | msgID | color | text | | c1 | xx | 0d | | | 00 | 1 | 1 | 1 | 1 | length - 5 | 1 | cl-c111PC or NPC damagedserver -> game client | | | PC or NPC ID | damage recived by this living | | | len | msg ID | livingID | damage | type | c1 | xx | 11 | | | | 1 | 1 | 1 | 2 | 2 | 1 | 'type' field:- 0 - ordinar damage
- 3 - critical damage (blue number)
cl-c117Deathserver -> game client | | | living who die | | living who kill | | len | msg ID | livingID | | killerID | c1 | xx | 17 | | 00 | | 1 | 1 | 1 | 2 | 1 | 2 | cl-c132Put item in inventoryserver -> game client | | | where item is placed | item code | lvl+opts | | len | msg ID | position | item | options | c1 | xx | 32 | | | | 1 | 1 | 1 | 1 | 1 | 3 | Position:
- 0 = weapon left
- 1 = weapon right
- 2 = helm
- 3 = body
- 4 = pants
- 5 = guants
- 6 = boots
- 7 = wings
- 8 = Angel/Satan/Horn Slot
- 9 = Pendant
- 10 = Ring 1
- 11 = Ring 2
- 12 and so on - inventory (12 - top left corner)
cl-c137Trader infoInfo about PC you trade withserver -> game client | | | ?? | PC name | PC level | guild ID (or 0x0000) | | len | msg ID | | name | level | guild | c1 | xx | 37 | 01 | | | | 1 | 1 | 1 | 1 | 10 | 2 | 2 | cl-c155Open 'create gulid' windowserver -> game client | | | | len | msg ID | c1 | 03 | 55 | 1 | 1 | 1 | cl-c182Open 'vault' windowserver -> game client | | | | len | msg ID | c1 | 03 | 82 | 1 | 1 | 1 | cl-c1d4Object stand (stop moving)Объект стоит (прекратил движение)server -> game client | | | PC or NPC ID | | | rotate? sitting? | | len | msg ID | living ID | X pos | Y pos | (?) arg | c1 | xx | d4 | | | | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | cl-c1f1Player position setupserver -> game client | | | map number? | | | | len | msg ID | | this player ID | | c1 | xx | f1 | 0001 | | ?? | 1 | 1 | 1 | 2 | 1 | 5 | cl-c1f3Character menuHeaderserver -> game client | | | | number of chars | | | len | msg ID | | num | | c1 | xx | f3 | 00 | | | 1 | 1 | 1 | 1 | 1 | num * char | + this block repeated number of characters times: cl-c1f3-2Character menuCharacter | | if 0A - last selected? | | weared items | serial number | name | | level | | | | 00/0A | | | 1 | 10 | 1 | 1 | 13 | cl-c212Meet playerserver -> game client | | | Num. of players | | len | msg ID | num | c2 | xxxx | 12 | | 1 | 2 | 1 | 1 | + this block repeated number of players times: cl-c212-2PC ID | | | | | | | | | | | | | | Item levels(color)? | player name, padded with 0x00 | | | | ID | X1 | Y1 | class | pose | LHand | RHand | helm | armor | pants | gloves | boots | pet? | wind? | ?? | name | X2 | Y2 | ?? | | | | | | | | | | | | | | | | | | | | 2 | 1 | 1 | 4bit | 4bit | 1 | 1 | 4bit | 4bit | 4bit | 4bit | 4bit | 4bit | 4bit | 6.5 | 10 | 1 | 1 | 6 | Field description:
- X1,Y1 -> X2,Y2 - player moved. If x1y1 == x2y2 - player stand
- class
- 0 - Dark Wizard
- 1 - MEGA Dark Wizard ?
- 2 - Dark Knight
- 3 - Night Blade
- 4 - Elf
- 5 - Muse Elf
- 6 - Magic Gladiator
- pose - stand style
- 0 - stand
- 1 - UNKNOWN
- 2 - sit
- 3 - at wall
- 4 - "hanged" (in Noria)
- LHand, RHand - itemID held in left and right hands
- helm..boots - item type (lether, silk...)
- pet - satan, angel, horn, maybe wings
- wing - wings ?
cl-c213Meet monsterserver -> game client | | | Num. of NPCs | | len | msg ID | num | c2 | xxxx | 13 | | 1 | 2 | 1 | 1 | + this block repeated number of NPCs times: cl-c213-2NPC ID | | | ID | (?) NPC description | separator | | | 00 | 2 | 8 | 1 |
cl-c231Shop contentheaderserver -> game client | | Number of items | | | len | num | | c2 | xxxx | | shop item * num | 1 | 2 | 2 | | + this block repeated number of items times: cl-c231-2Shop contentbodypos in window | | | XY | type? | ?? | | | | 1 | 1 | 3 | cl-c252(your) Guild infoheaderserver -> game client | | | ?? | number of guild members | | ?? | | | len | msgID | | num | guildID | | | c2 | xxxx | 52 | | | | | guild member * num | 1 | 2 | 1 | 1 | 1 | 2 | 8 | | + this block repeated number of members times: cl-c252-2(your) Guild infomember | member position. FFFF if offline | name | server+where | | | 10 | 1 | cl-c25aGuild descriprionheaderserver -> game client | | | number of guilds | | | len | msgID | num | | c2 | xxxx | 5a | | guild body * num | 1 | 2 | 1 | 1 | | + this block repeated number of guilds times: cl-c25a-2Guild descriprionbody | | | guildID | name | flag | | | | 2 | 8 | 36 | cl-c25bBing player to guildserver -> game client | | | number of binds | | | | | len | msgID | num | playerID | guildID | | c2 | xxxx | 5b | | | | playerID+guildID repeated num times | 1 | 2 | 1 | 1 | 2 | 2 | | cl-c2c0Friendlistheaderserver -> game client | | | ?? | number of friends | | len | msgID | | num | c2 | xxxx | c0 | xxxx | | 1 | 2 | 1 | 2 | 1 | + this block repeated number of friends times: cl-c2c0-2Friendlistfriend | FF = offline | name | server number | | | 10 | 1 | cl-c2f4Servers statusheaderserver -> game client | | | number of server groups | total number of servers | | | len | msgID | groupNum | servNum | | c2 | xxxx | f4 | | | | 1 | 2 | 1 | 1 | 1 | servNum*server | + this block repeated number of servers times: cl-c2f4-2Servers statusserverfor second group - +20h | separator? | FF = offline | %, 1..100 | ?? | position? | | server number | load | | | 00 | | | CC | 1 | 1 | 1 | 1 | 1 |
|