diff options
Diffstat (limited to 'context.h')
| -rw-r--r-- | context.h | 80 | 
1 files changed, 69 insertions, 11 deletions
@@ -188,7 +188,7 @@ typedef long ptrdiff_t;  	o(handle_66_recv_exit_game, int client_id, int leader_id, int disable_udp) \  	o(handle_68_recv_burst_lobby, TPlyJoinLobbyEntry *entries, int leader_id) \  	o(handle_69_recv_exit_lobby, int client_id, int leader_id) \ -	o(handle_18_90_9A_login_response_packet, void) \ +	o(handle_18_90_9A_recv_pso_regist_check, u8 state) \  	o(handle_92_9C_register_response_packet, void) \  	o(unused10, void) \  	o(handle_95_request_character_data_packet, void) \ @@ -898,6 +898,27 @@ struct send_buffs {  };  // pso/packet_classes.h +#define _gc_tag_packet_templ(name, members)	\ +template<bool has_gc_tag = false>		\ +struct name {					\ +	packet_header header;			\ +	members					\ +};						\ +						\ +template<>					\ +struct name<true> {				\ +	packet_header header;			\ +	TPlyGuildCardTag tag;			\ +	members					\ +} + +_gc_tag_packet_templ(regist, +	TPlySmth smth; +	u32 sub_version; +	u8 is_extended; +	u8 language; +); +  struct game_command_header {  	char command;  	char size; @@ -1467,6 +1488,45 @@ public:  	};  }; +class TSendPsoRegist : public regist<false> { +public: +	char serial_number[48]; +	char access_key[48]; +	char password[48]; +public: +	void bswap() { +		header.bswap(); +		smth.bswap(); +		bswap_32(&sub_version); +	}; +}; + +class TSendPsoRegistConnect { +public: +	packet_header header; +	char serial_number[17]; +	char access_key[17]; +	u16 padding; +public: +	void bswap() { +		header.bswap(); +	}; +}; + +class TRecvPsoRegistConnect { +public: +	packet_header header; +	char copyright[64]; +	u32 server_key; +	u32 client_key; +public: +	void bswap() { +		header.bswap(); +		bswap_32(&server_key); +		bswap_32(&client_key); +	}; +}; +  template<bool is_lobby>  class TRecvExit {  public: @@ -1480,14 +1540,8 @@ public:  	};  }; -class TRegister { +class TRegister : public regist<false> {  public: -	packet_header header; -	TPlySmth smth; -	u32 sub_version; -	u8 is_extended; -	u8 language; -	u16 unknown;  	char serial_number[16];  	char access_key[16];  public: @@ -1792,7 +1846,7 @@ public:  	TPlySmth m_smth;  	TPlyGuildCardTag m_guildcard_tag;  	u16 m_sub_version; -	int m_login_response_state; +	int m_regist_state;  	int m_connected;  	int m_joined_game;  	int m_has_meet_user_settings; @@ -1811,8 +1865,8 @@ public:  	LobbyListEntry m_lobby_entries[16];  	QuestListEntry m_quest_entries[30];  	u8 m_unused5[128]; -	char m_serial_number3[17]; -	char m_password2[17]; +	char m_serial_number_v1[17]; +	char m_access_key_v1[17];  	char m_serial_number[48];  	char m_access_key[48];  	char m_password[64]; @@ -1917,6 +1971,10 @@ public:  	void recv_burst_lobby(packet &pkt);  	// 0x69  	void recv_exit_lobby(packet &pkt); +	// 0x91 +	void recv_pso_regist_connect(packet &pkt); +	// 0x18/0x90 +	void recv_pso_regist_check(packet &pkt);  	// Send command handlers.  	// 0x03  | 
