diff options
Diffstat (limited to 'include/pso/packet_classes.h')
-rw-r--r-- | include/pso/packet_classes.h | 68 |
1 files changed, 61 insertions, 7 deletions
diff --git a/include/pso/packet_classes.h b/include/pso/packet_classes.h index 9cd9800..f0e2fcc 100644 --- a/include/pso/packet_classes.h +++ b/include/pso/packet_classes.h @@ -14,6 +14,27 @@ #include <pso/TPlyGuildCardTag.h> #include <pso/TPlySmth.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; +); + template<size_t size> struct TPlyText { packet_header header; @@ -233,6 +254,45 @@ _TSendAction(3, #undef _TSendAction #endif +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: @@ -246,14 +306,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: |