WorldServer¶
-
class
WAR_WorldServer.
WorldTCPHandler
(request, client_address, server)¶ -
handle_F_DUMP_ARENAS_LARGE
(opcode_entry, packet_client_header, packet_data)¶ Opcode 0x35 can be sent in WAR.exe from:
- 0x004BFEF2, size = 0x00000002
Server must answer with F_WORLD_ENTER (0x19)
-
handle_F_ENCRYPTKEY
(opcode_entry, packet_client_header, packet_data)¶ First packet received from the client after connection. If the field key_present is NULL, server has to answer with F_RECEIVE_ENCRYPTKEY (0x8A). If the field key_present is not NULL, RC4 key (256 bytes) is present a the end of packet.
Opcode 0x5C can be sent from two methods in WAR.exe:
- 0x004B1819, size = 0x00000006 : key_present is NULL
- 0x004B2C1B, size = 0x00000106 : RC4 key present
-
handle_F_INIT_PLAYER
(opcode_entry, packet_client_header, packet_data)¶ Opcode 0x7C can be sent from:
- 0x004C6D11, size = 0x00000016
-
handle_F_INTERFACE_COMMAND
(opcode_entry, packet_client_header, packet_data)¶ This opcode can be sent from methods:
- 0x004B6DC0, size = 0x00000006,
- 0x004B6E03, size = ??????????
TODO CHECK NO RESPONSE?
-
handle_F_OPEN_GAME
(opcode_entry, packet_client_header, packet_data)¶ Opcode 0x17 can be sent in WAR.exe from:
- 0x004BFF5D, size = 0x00000002
Server must answer with S_GAME_OPENED (0x85)
-
handle_F_PING
(opcode_entry, packet_client_header, packet_data)¶ This packet is sent from method in WAR.exe:
- 0x004B2F33, size = 0x00000014
Server has to answer with S_PONG (0x81).
-
handle_F_PLAYER_ENTER_FULL
(opcode_entry, packet_client_header, packet_data)¶ TODO
-
handle_F_SWITCH_ATTACK_MODE
(opcode_entry, packet_client_header, packet_data)¶ F_SWITCH_ATTACK_MODE (0xDC) This packet is sent from method in WAR.exe:
- 0x004B4B96, size = 0x00000004
-
handle_F_TEXT
(opcode_entry, packet_client_header, packet_data)¶ This packet is sent from method in WAR.exe:
- 0x004B39AC, size = 0xFFFFFFFF
-
reponse_F_GET_ITEM
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_GET_ITEM (0xAA)
Packet handling is done:
- 0x4D64A2
-
response_F_BAG_INFO
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_BAG_INFO (0x95)
Packet handling is done:
- 0x4C00D6
/!Little endian /! First byte is a command that can have the value:
- 0x16:
- 0x17:
- 0x18:
- 0x19:
- 0x1A:
- 0x1D:
- 0x1E:
- 0x1F:
- 0x0B:
- 0x0D:
- 0x0E:
- 0x0C:
- 0x05:
- 0x09:
- 0x04:
-
response_F_CHARACTER_INFO
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_CHARACTER_INFO (0xBE) Packet handling is done:
- 0x004E20E7
First byte is a command that can have the value:
- 0x00:
- 0x01: This command is for sending abilities informations (Handled by 0x4E2194)
- 0x02:
- ... ?
-
response_F_CHAT
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_CHAT (0x06) Packet handling is done in:
- 0x004D19CF
TODO
-
response_F_MAX_VELOCITY
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Velocity * 0.0099999998 Packet handling is done:
- 0x4DCF59
Size packet is 0x00000002.
-
response_F_PLAYER_EXPERIENCE
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_PLAYER_EXPERIENCE (0x39) Packet handling is done:
- 0x4DD006
Size Packet is 0x0000000D (?)
-
response_F_PLAYER_HEALTH
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_PLAYER_HEALTH (0x05) Packet handling is done:
- 0x4DBBB0
Size packet is 0x00000010 (?)
-
response_F_PLAYER_INIT_COMPLETE
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_PLAYER_INIT_COMPLETE (0xEF) Packet handling is done:
- 0x4DCFDD
Size packet is 0x00000002 Packet data are ignored
Check if Player->field_255 (0x3FC) is NULL, if True send packet F_CLIENT_DATA In all case send packet F_INTERFACE_COMMAND
-
response_F_PLAYER_RANK_UPDATE
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_PLAYER_RANK_UPDATE (0xF4) Packet handling is done: * 0x4DD5E4
Size Packet is 0x00000004
-
response_F_PLAYER_RENOWN
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_PLAYER_RENOWN (0x4E) Packet handling is done:
- 0x4DD10F
Size Packet is 0x00000009 (?)
-
response_F_PLAYER_WEALTH
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Send GameData.Player.money Packet handling is done at basic block 0x004C3BB8. Size packet is 0x00000008.
-
response_F_RECEIVE_ENCRYPTKEY
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Response sent when packet F_ENCRYPTKEY received with key_present is NULL. Packet handler check if (WORD)field_0x1CC is not null, and packet is handled in WAR.exe by:
- 0x004C8883: if send_key is not null, RC4 will be generated and sent with packet F_ENCRYPTKEY
-
response_F_TRADE_SKILL_UPDATE
(opcode_entry, packet_client_header, packet_client, packet_data)¶ F_TRADE_SKILL_UPDATE (0xF9) Packet handling is done:
- 0x004DEF40
Size packet is 0x00000003 tradeskill_id can be found in data/gamedata/tradeskilldata.csv (0x7F9B4526CBAEF58B)
-
response_F_WORLD_ENTER
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Response of packet F_DUMP_ARENAS_LARGE (0x35).
-
response_S_CONNECTED
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Response sent after receiving F_CONNECT packet. Packet handling is done in WAR.exe by:
- 0x004C88F9: username and server_name are PascalString, protocol is normaly equal to 0xEB8DB21.
-
response_S_GAME_OPENED
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Opcode handled by basic block at 0x004C40F7
-
response_S_PLAYER_INITTED
(opcode_entry, packet_client_header, packet_client, packet_data)¶ S_PLAYER_INITTED (0x88) Function 0x4C6346 will convert all Big Endian field to Little Endian. Then packet data is handled by 0x004DE151.
For region ID, refer to file 0x5B701C61C34ABF61 “zones/zones.dat” in world.myp
-
response_S_PONG
(opcode_entry, packet_client_header, packet_client, packet_data)¶ response sent when packet F_PING has been received. Packet handling is done in the basick block at 0x004C403B. Answer have to reuse the timestamp sent by the client, and put a QWORD of the actual timestamp and increment the sequence number
-
response_item
()¶ 0x2A87C15DF8425A8C data/gamedata/itemdata.csv
-
response_player_init
(opcode_entry, packet_client_header, packet_client, packet_data)¶ Send all informations related to player initialization
-