1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#ifndef TPROTOCOL_H
#define TPROTOCOL_H
#include <global_types.h>
#include <string.h>
#include <pso/macros.h>
#include <pso/forward.h>
#include <pso/protocol.h>
#include <pso/PSOV3EncryptionTCP.h>
#include <pso/TArray.h>
#include <pso/TMainTask.h>
#include <pso/TMenuList.h>
#include <pso/TObject.h>
#include <pso/TPlyGuildCardTag.h>
#include <pso/TSocket.h>
#include <pso/TTcpSocket.h>
class TPlySmth {
TArray<u8, 4> m_smth;
TArray<u8, 4> m_smth1;
};
struct packet {
packet_header header;
TArray<u8, 0x7fbc> data;
};
typedef void (*recv_packet_handler)(packet &pkt);
class TProtocol : public TTcpSocket {
private:
TPlySmth m_smth;
TPlyGuildCardTag m_guildcard_tag;
u16 sub_version;
int m_login_response_state;
int m_connected;
int m_joined_game;
int m_has_meet_user_settings;
int m_buffer_ready;
int m_entry_count;
int m_unused;
int m_lobby_list_count;
int m_unused2;
int m_udp_disabled;
int m_language;
TArray<u8, 80> m_unused3;
TPlyCharData m_character_data;
u32 m_unused4;
TArray<TMenuListEntry<GameMenuEntry>, 64> m_game_entries;
TArray<TMenuListEntry<GameMenuEntry>, 64> m_game_entries2;
TArray<TMenuListEntry<LobbyListEntry>, 16> m_lobby_entries;
TArray<TMenuListEntry<QuestMenuEntry>, 30> m_quest_entries;
TArray<u8, 128> m_unused5;
TArray<char, 17> m_serial_number3;
TArray<char, 17> m_password2;
TArray<char, 48> m_serial_number;
TArray<char, 48> m_access_key;
TArray<char, 64> m_password;
TArray<char, 16> m_player_name;
TArray<char, 17> m_serial_number2;
TArray<char, 17> m_access_key2;
TPlyClientConfig m_client_config;
int m_packet_offset;
int m_packet_size;
packet m_packet;
TArray<recv_packet_handler, 52> m_recv_handlers;
public:
TProtocol(TObject *parent = nullptr, u16 sub_version, int language, char *serial_number, char *access_key, char *password);
virtual ~TProtocol();
virtual run_task();
virtual send(u8 *data, size_t size);
int handle_command(packet *pkt);
PRIVATE_MEMBER_ACCESSORS(TPlySmth, smth);
PRIVATE_MEMBER_ACCESSORS(TPlyGuildCardTag, guildcard_tag);
PRIVATE_MEMBER_ACCESSORS(u16, sub_version);
PRIVATE_MEMBER_ACCESSORS(int, login_response_state);
PRIVATE_MEMBER_ACCESSORS(int, connected);
PRIVATE_MEMBER_ACCESSORS(int, joined_game);
PRIVATE_MEMBER_ACCESSORS(int, has_meet_user_settings);
PRIVATE_MEMBER_ACCESSORS(int, buffer_ready);
PRIVATE_MEMBER_ACCESSORS(int, entry_count);
PRIVATE_MEMBER_ACCESSORS(int, unused);
PRIVATE_MEMBER_ACCESSORS(int, lobby_list_count);
PRIVATE_MEMBER_ACCESSORS(int, unused2);
PRIVATE_MEMBER_ACCESSORS(int, udp_disabled);
PRIVATE_MEMBER_ACCESSORS(int, language);
PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, unused3, 80);
PRIVATE_MEMBER_ACCESSORS(TPlyCharData, character_data);
PRIVATE_MEMBER_ACCESSORS(u32, unused4);
PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<GameListEntry>, game_entries, 64);
PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<GameListEntry>, game_entries2, 64);
PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<LobbyListEntry>, lobby_entries, 16);
PRIVATE_MEMBER_ACCESSORS_ARRAY(TMenuListEntry<QuestMenuEntry>, quest_entries, 30);
PRIVATE_MEMBER_ACCESSORS_ARRAY(u8, unused5, 128);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_serial_number3, 17);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_password2, 17);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_serial_number, 48);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_access_key, 48);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_password, 64);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_player_name, 16);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_serial_number2, 17);
PRIVATE_MEMBER_ACCESSORS_ARRAY(char, m_access_key2, 17);
PRIVATE_MEMBER_ACCESSORS(int, packet_offset);
PRIVATE_MEMBER_ACCESSORS(int, packet_size);
PRIVATE_MEMBER_ACCESSORS(packet, packet);
PRIVATE_MEMBER_ACCESSORS_ARRAY(recv_packet_handler, recv_handlers, 52);
};
#endif
|