diff --git a/src/client/component/demonware.cpp b/src/client/component/demonware.cpp index e0c4196b..e0a7477a 100644 --- a/src/client/component/demonware.cpp +++ b/src/client/component/demonware.cpp @@ -4,7 +4,10 @@ #include #include +#include "dvars.hpp" + #include "game/game.hpp" +#include "game/demonware/dw_include.hpp" #include "game/demonware/servers/lobby_server.hpp" #include "game/demonware/servers/auth3_server.hpp" #include "game/demonware/servers/stun_server.hpp" @@ -424,6 +427,7 @@ namespace demonware } } +#ifdef DW_DEBUG void bd_logger_stub(int /*type*/, const char* const /*channelName*/, const char* /*fileLoc*/, const char* const /*file*/, const char* const function, const unsigned int /*line*/, const char* const msg, ...) { @@ -433,22 +437,12 @@ namespace demonware va_start(ap, msg); vsnprintf_s(buffer, sizeof(buffer), _TRUNCATE, msg, ap); -#ifdef DW_DEBUG + printf("%s: %s\n", function, buffer); -#endif va_end(ap); } - - bool return_true() - { - return true; - } - - int get_patching_status_stub() - { - return 1; // complete - } +#endif } class component final : public component_interface @@ -506,8 +500,8 @@ namespace demonware void post_unpack() override { -#if defined(DEBUG) and defined(DW_DEBUG) - utils::hook::jump(0x1285040_b, bd_logger_stub, true); +#ifdef DW_DEBUG + //utils::hook::jump(0x1285040_b, bd_logger_stub, true); #endif utils::hook::set(0xB5BB96F_b, 0x0); // CURLOPT_SSL_VERIFYPEER @@ -523,21 +517,20 @@ namespace demonware utils::hook::copy_string(0x15E3600_b, "http://%s:%d/auth/"); // Skip bdAuth::validateResponseSignature - utils::hook::call(0x1245440_b, return_true); // bdRSAKey::importKey - utils::hook::call(0x1245472_b, return_true); // bdRSAKey::verifySignatureSHA256 + utils::hook::set(0x129D200_b, 0xC301B0); // bdRSAKey::importKey + utils::hook::set(0x129D360_b, 0xC300000001B8); // bdRSAKey::verifySignatureSHA256 - // Skip update check in Live_SyncOnlineDataFlags - utils::hook::set(0x52AB60_b, 0xC301B0); + // Remove Online_PatchStreamer checks utils::hook::set(0x52A6D0_b, 0xC3); - utils::hook::jump(0x52B800_b, get_patching_status_stub); + utils::hook::set(0x52AB60_b, 0xC300000001B8); + utils::hook::set(0x52B800_b, 0xC300000001B8); - // Skip some other thing in Live_SyncOnlineDataFlags - utils::hook::set(0x533390_b, 0xC301B0); + // Remove Online_Dailylogin check + utils::hook::set(0x533390_b, 0xC300000001B8); - utils::hook::set(0xDC0C00_b, 0xC3); // Live_CheckForFullDisconnect - - // isProfanity - utils::hook::set(0x9E3480_b, 0xC3C033); + // Increase Demonware connection timeouts + dvars::override::register_int("demonwareConsideredConnectedTime", 300000, 0, 0x7FFFFFFF, 0x0); // 5s -> 5min + dvars::override::register_int("dw_addrHandleTimeout", 300000, 0, 0x7FFFFFFF, 0x0); // 5s -> 5min } void pre_destroy() override diff --git a/src/client/game/demonware/bit_buffer.cpp b/src/client/game/demonware/bit_buffer.cpp deleted file mode 100644 index 2b65be2d..00000000 --- a/src/client/game/demonware/bit_buffer.cpp +++ /dev/null @@ -1,182 +0,0 @@ -#include -#include "bit_buffer.hpp" - -namespace demonware -{ - bool bit_buffer::read_bytes(const unsigned int bytes, unsigned char* output) - { - return this->read(bytes * 8, output); - } - - bool bit_buffer::read_bool(bool* output) - { - if (!this->read_data_type(1)) - { - return false; - } - - return this->read(1, output); - } - - bool bit_buffer::read_uint32(unsigned int* output) - { - if (!this->read_data_type(8)) - { - return false; - } - - return this->read(32, output); - } - - bool bit_buffer::read_data_type(const char expected) - { - char data_type = 0; - - if (!this->use_data_types_) return true; - if (this->read(5, &data_type)) - { - return (data_type == expected); - } - - return false; - } - - bool bit_buffer::write_bytes(const unsigned int bytes, const char* data) - { - return this->write_bytes(bytes, reinterpret_cast(data)); - } - - bool bit_buffer::write_bytes(const unsigned int bytes, const unsigned char* data) - { - return this->write(bytes * 8, data); - } - - bool bit_buffer::write_bool(bool data) - { - if (this->write_data_type(1)) - { - return this->write(1, &data); - } - - return false; - } - - bool bit_buffer::write_int32(int data) - { - if (this->write_data_type(7)) - { - return this->write(32, &data); - } - - return false; - } - - bool bit_buffer::write_uint32(unsigned int data) - { - if (this->write_data_type(8)) - { - return this->write(32, &data); - } - - return false; - } - - bool bit_buffer::write_data_type(char data) - { - if (!this->use_data_types_) - { - return true; - } - - return this->write(5, &data); - } - - bool bit_buffer::read(unsigned int bits, void* output) - { - if (bits == 0) return false; - if ((this->current_bit_ + bits) > (this->buffer_.size() * 8)) return false; - - int cur_byte = this->current_bit_ >> 3; - auto cur_out = 0; - - const char* bytes = this->buffer_.data(); - const auto output_bytes = static_cast(output); - - while (bits > 0) - { - const int min_bit = (bits < 8) ? bits : 8; - const auto this_byte = bytes[cur_byte++] & 0xFF; - const int remain = this->current_bit_ & 7; - - if ((min_bit + remain) <= 8) - { - output_bytes[cur_out] = BYTE((0xFF >> (8 - min_bit)) & (this_byte >> remain)); - } - else - { - output_bytes[cur_out] = BYTE( - (0xFF >> (8 - min_bit)) & (bytes[cur_byte] << (8 - remain)) | (this_byte >> remain)); - } - - cur_out++; - this->current_bit_ += min_bit; - bits -= min_bit; - } - - return true; - } - - bool bit_buffer::write(const unsigned int bits, const void* data) - { - if (bits == 0) return false; - this->buffer_.resize(this->buffer_.size() + (bits >> 3) + 1); - - int bit = bits; - const auto bytes = const_cast(this->buffer_.data()); - const auto* input_bytes = static_cast(data); - - while (bit > 0) - { - const int bit_pos = this->current_bit_ & 7; - auto rem_bit = 8 - bit_pos; - const auto this_write = (bit < rem_bit) ? bit : rem_bit; - - const BYTE mask = ((0xFF >> rem_bit) | (0xFF << (bit_pos + this_write))); - const int byte_pos = this->current_bit_ >> 3; - - const BYTE temp_byte = (mask & bytes[byte_pos]); - const BYTE this_bit = ((bits - bit) & 7); - const auto this_byte = (bits - bit) >> 3; - - auto this_data = input_bytes[this_byte]; - - const auto next_byte = (((bits - 1) >> 3) > this_byte) ? input_bytes[this_byte + 1] : 0; - - this_data = BYTE((next_byte << (8 - this_bit)) | (this_data >> this_bit)); - - const BYTE out_byte = (~mask & (this_data << bit_pos) | temp_byte); - bytes[byte_pos] = out_byte; - - this->current_bit_ += this_write; - bit -= this_write; - } - - return true; - } - - void bit_buffer::set_use_data_types(const bool use_data_types) - { - this->use_data_types_ = use_data_types; - } - - unsigned int bit_buffer::size() const - { - return this->current_bit_ / 8 + (this->current_bit_ % 8 ? 1 : 0); - } - - std::string& bit_buffer::get_buffer() - { - this->buffer_.resize(this->size()); - return this->buffer_; - } -} diff --git a/src/client/game/demonware/bit_buffer.hpp b/src/client/game/demonware/bit_buffer.hpp deleted file mode 100644 index f2fd5c09..00000000 --- a/src/client/game/demonware/bit_buffer.hpp +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -namespace demonware -{ - class bit_buffer final - { - public: - bit_buffer() = default; - - explicit bit_buffer(std::string buffer) : buffer_(std::move(buffer)) - { - } - - bool read_bytes(unsigned int bytes, unsigned char* output); - bool read_bool(bool* output); - bool read_uint32(unsigned int* output); - bool read_data_type(char expected); - - bool write_bytes(unsigned int bytes, const char* data); - bool write_bytes(unsigned int bytes, const unsigned char* data); - bool write_bool(bool data); - bool write_int32(int data); - bool write_uint32(unsigned int data); - bool write_data_type(char data); - - bool read(unsigned int bits, void* output); - bool write(unsigned int bits, const void* data); - - void set_use_data_types(bool use_data_types); - - unsigned int size() const; - - std::string& get_buffer(); - - private: - std::string buffer_{}; - unsigned int current_bit_ = 0; - bool use_data_types_ = true; - }; -} diff --git a/src/client/game/demonware/byte_buffer.cpp b/src/client/game/demonware/byte_buffer.cpp index af5bee9a..fd624d1d 100644 --- a/src/client/game/demonware/byte_buffer.cpp +++ b/src/client/game/demonware/byte_buffer.cpp @@ -1,65 +1,65 @@ #include -#include "byte_buffer.hpp" +#include "dw_include.hpp" namespace demonware { bool byte_buffer::read_bool(bool* output) { - if (!this->read_data_type(1)) return false; + if (!this->read_data_type(BD_BB_BOOL_TYPE)) return false; return this->read(1, output); } bool byte_buffer::read_byte(char* output) { - if (!this->read_data_type(2)) return false; + if (!this->read_data_type(BD_BB_SIGNED_CHAR8_TYPE)) return false; return this->read(1, output); } bool byte_buffer::read_ubyte(unsigned char* output) { - if (!this->read_data_type(3)) return false; + if (!this->read_data_type(BD_BB_UNSIGNED_CHAR8_TYPE)) return false; return this->read(1, output); } bool byte_buffer::read_int16(short* output) { - if (!this->read_data_type(5)) return false; + if (!this->read_data_type(BD_BB_SIGNED_INTEGER16_TYPE)) return false; return this->read(2, output); } bool byte_buffer::read_uint16(unsigned short* output) { - if (!this->read_data_type(6)) return false; + if (!this->read_data_type(BD_BB_UNSIGNED_INTEGER16_TYPE)) return false; return this->read(2, output); } bool byte_buffer::read_int32(int* output) { - if (!this->read_data_type(7)) return false; + if (!this->read_data_type(BD_BB_SIGNED_INTEGER32_TYPE)) return false; return this->read(4, output); } bool byte_buffer::read_uint32(unsigned int* output) { - if (!this->read_data_type(8)) return false; + if (!this->read_data_type(BD_BB_UNSIGNED_INTEGER32_TYPE)) return false; return this->read(4, output); } bool byte_buffer::read_int64(__int64* output) { - if (!this->read_data_type(9)) return false; + if (!this->read_data_type(BD_BB_SIGNED_INTEGER64_TYPE)) return false; return this->read(8, output); } bool byte_buffer::read_uint64(unsigned __int64* output) { - if (!this->read_data_type(10)) return false; + if (!this->read_data_type(BD_BB_UNSIGNED_INTEGER64_TYPE)) return false; return this->read(8, output); } bool byte_buffer::read_float(float* output) { - if (!this->read_data_type(13)) return false; + if (!this->read_data_type(BD_BB_FLOAT32_TYPE)) return false; return this->read(4, output); } @@ -78,7 +78,7 @@ namespace demonware bool byte_buffer::read_string(char** output) { - if (!this->read_data_type(16)) return false; + if (!this->read_data_type(BD_BB_SIGNED_CHAR8_STRING_TYPE)) return false; *output = const_cast(this->buffer_.data()) + this->current_byte_; this->current_byte_ += strlen(*output) + 1; @@ -88,7 +88,7 @@ namespace demonware bool byte_buffer::read_string(char* output, const int length) { - if (!this->read_data_type(16)) return false; + if (!this->read_data_type(BD_BB_SIGNED_CHAR8_STRING_TYPE)) return false; strcpy_s(output, length, const_cast(this->buffer_.data()) + this->current_byte_); this->current_byte_ += strlen(output) + 1; @@ -112,7 +112,7 @@ namespace demonware bool byte_buffer::read_blob(char** output, int* length) { - if (!this->read_data_type(0x13)) + if (!this->read_data_type(BD_BB_BLOB_TYPE)) { return false; } @@ -128,11 +128,11 @@ namespace demonware return true; } - bool byte_buffer::read_data_type(const char expected) + bool byte_buffer::read_data_type(const unsigned char expected) { if (!this->use_data_types_) return true; - char type; + unsigned char type; this->read(1, &type); return type == expected; } @@ -160,59 +160,59 @@ namespace demonware bool byte_buffer::write_bool(bool data) { - this->write_data_type(1); + this->write_data_type(BD_BB_BOOL_TYPE); return this->write(1, &data); } bool byte_buffer::write_byte(char data) { - this->write_data_type(2); + this->write_data_type(BD_BB_SIGNED_CHAR8_TYPE); return this->write(1, &data); } bool byte_buffer::write_ubyte(unsigned char data) { - this->write_data_type(3); + this->write_data_type(BD_BB_UNSIGNED_CHAR8_TYPE); return this->write(1, &data); } bool byte_buffer::write_int16(short data) { - this->write_data_type(5); + this->write_data_type(BD_BB_SIGNED_INTEGER16_TYPE); return this->write(2, &data); } bool byte_buffer::write_uint16(unsigned short data) { - this->write_data_type(6); + this->write_data_type(BD_BB_UNSIGNED_INTEGER16_TYPE); return this->write(2, &data); } bool byte_buffer::write_int32(int data) { - this->write_data_type(7); + this->write_data_type(BD_BB_SIGNED_INTEGER32_TYPE); return this->write(4, &data); } bool byte_buffer::write_uint32(unsigned int data) { - this->write_data_type(8); + this->write_data_type(BD_BB_UNSIGNED_INTEGER32_TYPE); return this->write(4, &data); } bool byte_buffer::write_int64(__int64 data) { - this->write_data_type(9); + this->write_data_type(BD_BB_SIGNED_INTEGER64_TYPE); return this->write(8, &data); } bool byte_buffer::write_uint64(unsigned __int64 data) { - this->write_data_type(10); + this->write_data_type(BD_BB_UNSIGNED_INTEGER64_TYPE); return this->write(8, &data); } - bool byte_buffer::write_data_type(char data) + bool byte_buffer::write_data_type(unsigned char data) { if (!this->use_data_types_) return true; return this->write(1, &data); @@ -220,7 +220,7 @@ namespace demonware bool byte_buffer::write_float(float data) { - this->write_data_type(13); + this->write_data_type(BD_BB_FLOAT32_TYPE); return this->write(4, &data); } @@ -231,7 +231,7 @@ namespace demonware bool byte_buffer::write_string(const char* data) { - this->write_data_type(16); + this->write_data_type(BD_BB_SIGNED_CHAR8_STRING_TYPE); return this->write(static_cast(strlen(data)) + 1, data); } @@ -242,7 +242,7 @@ namespace demonware bool byte_buffer::write_blob(const char* data, const int length) { - this->write_data_type(0x13); + this->write_data_type(BD_BB_BLOB_TYPE); this->write_uint32(length); return this->write(length, data); diff --git a/src/client/game/demonware/byte_buffer.hpp b/src/client/game/demonware/byte_buffer.hpp index 228c0aec..85f7d1a2 100644 --- a/src/client/game/demonware/byte_buffer.hpp +++ b/src/client/game/demonware/byte_buffer.hpp @@ -26,7 +26,7 @@ namespace demonware bool read_string(std::string* output); bool read_blob(char** output, int* length); bool read_blob(std::string* output); - bool read_data_type(char expected); + bool read_data_type(unsigned char expected); bool read_array_header(unsigned char expected, unsigned int* element_count, unsigned int* element_size = nullptr); @@ -40,7 +40,7 @@ namespace demonware bool write_uint32(unsigned int data); bool write_int64(__int64 data); bool write_uint64(unsigned __int64 data); - bool write_data_type(char data); + bool write_data_type(unsigned char data); bool write_float(float data); bool write_string(const char* data); bool write_string(const std::string& data); diff --git a/src/client/game/demonware/data_types.hpp b/src/client/game/demonware/data_types.hpp index 234414dc..e87b8faa 100644 --- a/src/client/game/demonware/data_types.hpp +++ b/src/client/game/demonware/data_types.hpp @@ -1,6 +1,5 @@ #pragma once - -#include "byte_buffer.hpp" +#include "dw_include.hpp" namespace demonware { @@ -38,6 +37,42 @@ namespace demonware } }; + class bdStringResult final : public bdTaskResult + { + public: + std::string buffer; + + explicit bdStringResult(std::string data) : buffer(std::move(data)) + { + } + + void serialize(byte_buffer* data) override + { + data->write_string(buffer); + } + + void deserialize(byte_buffer* data) override + { + data->read_string(&buffer); + } + }; + + class bdProfanityResult final : public bdTaskResult + { + public: + uint32_t isProfanity; + + void serialize(byte_buffer* buffer) override + { + buffer->write_uint32(this->isProfanity); + } + + void deserialize(byte_buffer* buffer) override + { + buffer->read_uint32(&this->isProfanity); + } + }; + struct bdFileInfo final : public bdTaskResult { uint64_t file_id; diff --git a/src/client/game/demonware/dw_include.hpp b/src/client/game/demonware/dw_include.hpp new file mode 100644 index 00000000..2df78a13 --- /dev/null +++ b/src/client/game/demonware/dw_include.hpp @@ -0,0 +1,16 @@ +#pragma once + +//#define DW_DEBUG + +#include "game/types/demonware.hpp" +using namespace game::demonware; + +#include "servers/service_server.hpp" + +#include "byte_buffer.hpp" +#include "data_types.hpp" +#include "keys.hpp" +#include "reply.hpp" +#include "service.hpp" + +#include "services.hpp" \ No newline at end of file diff --git a/src/client/game/demonware/keys.cpp b/src/client/game/demonware/keys.cpp index 645ef2d3..c64f917d 100644 --- a/src/client/game/demonware/keys.cpp +++ b/src/client/game/demonware/keys.cpp @@ -1,5 +1,5 @@ #include -#include "keys.hpp" +#include "dw_include.hpp" #include #include diff --git a/src/client/game/demonware/reply.cpp b/src/client/game/demonware/reply.cpp index f0670956..afaf5645 100644 --- a/src/client/game/demonware/reply.cpp +++ b/src/client/game/demonware/reply.cpp @@ -1,7 +1,5 @@ #include -#include "keys.hpp" -#include "reply.hpp" -#include "servers/service_server.hpp" +#include "dw_include.hpp" #include @@ -65,16 +63,6 @@ namespace demonware return response.get_buffer(); } - void remote_reply::send(bit_buffer* buffer, const bool encrypted) - { - std::unique_ptr reply; - - if (encrypted) reply = std::make_unique(this->type_, buffer); - else reply = std::make_unique(this->type_, buffer); - - this->server_->send_reply(reply.get()); - } - void remote_reply::send(byte_buffer* buffer, const bool encrypted) { std::unique_ptr reply; diff --git a/src/client/game/demonware/reply.hpp b/src/client/game/demonware/reply.hpp index ecf5eca4..246bda21 100644 --- a/src/client/game/demonware/reply.hpp +++ b/src/client/game/demonware/reply.hpp @@ -1,6 +1,5 @@ #pragma once -#include "bit_buffer.hpp" #include "byte_buffer.hpp" #include "data_types.hpp" @@ -55,11 +54,6 @@ namespace demonware class encrypted_reply final : public typed_reply { public: - encrypted_reply(const uint8_t type, bit_buffer* bbuffer) : typed_reply(type) - { - this->buffer_.append(bbuffer->get_buffer()); - } - encrypted_reply(const uint8_t type, byte_buffer* bbuffer) : typed_reply(type) { this->buffer_.append(bbuffer->get_buffer()); @@ -71,11 +65,6 @@ namespace demonware class unencrypted_reply final : public typed_reply { public: - unencrypted_reply(const uint8_t _type, bit_buffer* bbuffer) : typed_reply(_type) - { - this->buffer_.append(bbuffer->get_buffer()); - } - unencrypted_reply(const uint8_t _type, byte_buffer* bbuffer) : typed_reply(_type) { this->buffer_.append(bbuffer->get_buffer()); @@ -93,7 +82,6 @@ namespace demonware { } - void send(bit_buffer* buffer, bool encrypted); void send(byte_buffer* buffer, bool encrypted); uint8_t type() const { return this->type_; } @@ -123,10 +111,10 @@ namespace demonware if (!this->error_) { - buffer.write_uint32(uint32_t(this->objects_.size())); + buffer.write_uint32(static_cast(this->objects_.size())); if (!this->objects_.empty()) { - buffer.write_uint32(uint32_t(this->objects_.size())); + buffer.write_uint32(static_cast(this->objects_.size())); for (auto& object : this->objects_) { @@ -145,20 +133,17 @@ namespace demonware return transaction_id; } - void add(const std::shared_ptr& object) + template + void add(std::unique_ptr& object) { - this->objects_.push_back(object); - } - - void add(bdTaskResult* object) - { - this->add(std::shared_ptr(object)); + static_assert(std::is_base_of_v); + this->objects_.emplace_back(std::move(object)); } private: uint8_t type_; uint32_t error_; remote_reply reply_; - std::vector> objects_; + std::vector> objects_; }; } diff --git a/src/client/game/demonware/servers/auth3_server.cpp b/src/client/game/demonware/servers/auth3_server.cpp index 2fb2e8ab..db46a6a7 100644 --- a/src/client/game/demonware/servers/auth3_server.cpp +++ b/src/client/game/demonware/servers/auth3_server.cpp @@ -1,7 +1,7 @@ #include +#include "../dw_include.hpp" #include "auth3_server.hpp" -#include "../keys.hpp" #include #include diff --git a/src/client/game/demonware/servers/base_server.cpp b/src/client/game/demonware/servers/base_server.cpp index 727a36a6..11e9a450 100644 --- a/src/client/game/demonware/servers/base_server.cpp +++ b/src/client/game/demonware/servers/base_server.cpp @@ -1,4 +1,6 @@ #include +#include "../dw_include.hpp" + #include "base_server.hpp" #include diff --git a/src/client/game/demonware/servers/lobby_server.cpp b/src/client/game/demonware/servers/lobby_server.cpp index 14035c65..56c6ca98 100644 --- a/src/client/game/demonware/servers/lobby_server.cpp +++ b/src/client/game/demonware/servers/lobby_server.cpp @@ -1,8 +1,7 @@ #include -#include "lobby_server.hpp" +#include "../dw_include.hpp" -#include "../services.hpp" -#include "../keys.hpp" +#include "lobby_server.hpp" #include @@ -36,8 +35,6 @@ namespace demonware this->register_service(); this->register_service(); this->register_service(); - this->register_service(); - this->register_service(); this->register_service(); }; @@ -182,7 +179,7 @@ namespace demonware uint8_t task_id; buffer.read_ubyte(&task_id); - this->create_reply(task_id)->send(); + this->create_reply(task_id).send(); } } } diff --git a/src/client/game/demonware/servers/service_server.hpp b/src/client/game/demonware/servers/service_server.hpp index dcf40fe7..1697a462 100644 --- a/src/client/game/demonware/servers/service_server.hpp +++ b/src/client/game/demonware/servers/service_server.hpp @@ -9,17 +9,14 @@ namespace demonware public: virtual ~service_server() = default; - virtual std::shared_ptr create_message(uint8_t type) + virtual remote_reply create_message(uint8_t type) { - auto reply = std::make_shared(this, type); - return reply; + return remote_reply{ this, type }; } - - virtual std::shared_ptr create_reply(uint8_t type, uint32_t error = 0) + virtual service_reply create_reply(uint8_t type, uint32_t error = 0) { - auto reply = std::make_shared(this, type, error); - return reply; + return service_reply{ this, type, error }; } virtual void send_reply(reply* data) = 0; diff --git a/src/client/game/demonware/servers/stun_server.cpp b/src/client/game/demonware/servers/stun_server.cpp index 2c4ebd32..b6f2b85a 100644 --- a/src/client/game/demonware/servers/stun_server.cpp +++ b/src/client/game/demonware/servers/stun_server.cpp @@ -1,4 +1,6 @@ #include +#include "../dw_include.hpp" + #include "stun_server.hpp" #include "../byte_buffer.hpp" diff --git a/src/client/game/demonware/servers/tcp_server.cpp b/src/client/game/demonware/servers/tcp_server.cpp index 8e60d20a..9a80b2f4 100644 --- a/src/client/game/demonware/servers/tcp_server.cpp +++ b/src/client/game/demonware/servers/tcp_server.cpp @@ -1,4 +1,6 @@ #include +#include "../dw_include.hpp" + #include "tcp_server.hpp" namespace demonware diff --git a/src/client/game/demonware/servers/udp_server.cpp b/src/client/game/demonware/servers/udp_server.cpp index 019c3f84..6788a9ab 100644 --- a/src/client/game/demonware/servers/udp_server.cpp +++ b/src/client/game/demonware/servers/udp_server.cpp @@ -1,4 +1,6 @@ #include +#include "../dw_include.hpp" + #include "udp_server.hpp" namespace demonware diff --git a/src/client/game/demonware/servers/umbrella_server.cpp b/src/client/game/demonware/servers/umbrella_server.cpp index cadce9dd..3887ae4f 100644 --- a/src/client/game/demonware/servers/umbrella_server.cpp +++ b/src/client/game/demonware/servers/umbrella_server.cpp @@ -1,4 +1,5 @@ #include +#include "../dw_include.hpp" #include "umbrella_server.hpp" diff --git a/src/client/game/demonware/service.hpp b/src/client/game/demonware/service.hpp index 0e90b84c..c4393d50 100644 --- a/src/client/game/demonware/service.hpp +++ b/src/client/game/demonware/service.hpp @@ -62,7 +62,7 @@ namespace demonware printf("[DW] %s: missing task '%d'\n", name_.data(), this->task_id_); // return no error - server->create_reply(this->task_id_)->send(); + server->create_reply(this->task_id_).send(); } } diff --git a/src/client/game/demonware/services.hpp b/src/client/game/demonware/services.hpp index 460da689..4b4af14a 100644 --- a/src/client/game/demonware/services.hpp +++ b/src/client/game/demonware/services.hpp @@ -1,12 +1,5 @@ #pragma once -#include "bit_buffer.hpp" -#include "byte_buffer.hpp" -#include "data_types.hpp" -#include "reply.hpp" -#include "service.hpp" -#include "servers/service_server.hpp" - #include "services/bdTeams.hpp" // 3 #include "services/bdStats.hpp" // 4 //#include "services/bdMessaging.hpp" // 6 @@ -23,7 +16,6 @@ #include "services/bdAnticheat.hpp" // 38 #include "services/bdContentStreaming.hpp" // 50 //#include "services/bdTags.hpp" // 52 -#include "services/bdUNK63.hpp" // 63 #include "services/bdUserGroups.hpp" // 65 #include "services/bdEventLog.hpp" // 67 #include "services/bdRichPresence.hpp" // 68 @@ -37,7 +29,6 @@ // AccountLinking // 86 #include "services/bdPresence.hpp" // 103 #include "services/bdMarketingComms.hpp" // 104 -#include "services/bdUNK123.hpp" // 123 #include "services/bdMatchMaking.hpp" // 138 #include "services/bdReward.hpp" // 139 #include "services/bdAsyncMatchMaking.hpp" // 145 diff --git a/src/client/game/demonware/services/bdAnticheat.cpp b/src/client/game/demonware/services/bdAnticheat.cpp index 452b8422..661ec27a 100644 --- a/src/client/game/demonware/services/bdAnticheat.cpp +++ b/src/client/game/demonware/services/bdAnticheat.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -16,34 +16,34 @@ namespace demonware { // TODO: Read data as soon as needed auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdAnticheat::reportConsoleID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: Read data as soon as needed auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdAnticheat::reportConsoleDetails(service_server* server, byte_buffer* /*buffer*/) const { // TODO: Read data as soon as needed auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdAnticheat::answerTOTPChallenge(service_server* server, byte_buffer* /*buffer*/) const { // TODO: Read data as soon as needed auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdAnticheat::unk6(service_server* server, byte_buffer* /*buffer*/) const { // TODO: Read data as soon as needed auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdAsyncMatchMaking.cpp b/src/client/game/demonware/services/bdAsyncMatchMaking.cpp index f3459f4c..54780c1c 100644 --- a/src/client/game/demonware/services/bdAsyncMatchMaking.cpp +++ b/src/client/game/demonware/services/bdAsyncMatchMaking.cpp @@ -1,48 +1,32 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { bdAsyncMatchMaking::bdAsyncMatchMaking() : service(145, "bdAsyncMatchMaking") { - this->register_task(2, &bdAsyncMatchMaking::unk2); - this->register_task(3, &bdAsyncMatchMaking::unk3); - this->register_task(6, &bdAsyncMatchMaking::unk6); - this->register_task(7, &bdAsyncMatchMaking::unk7); + this->register_task(2, &bdAsyncMatchMaking::setPlayerInfo); + this->register_task(3, &bdAsyncMatchMaking::getMatchMakingPlayerToken); + this->register_task(6, &bdAsyncMatchMaking::initMatchMaking); + this->register_task(7, &bdAsyncMatchMaking::startMatchMaking); } - void bdAsyncMatchMaking::unk2(service_server* server, byte_buffer* /*buffer*/) const + void bdAsyncMatchMaking::setPlayerInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdAsyncMatchMaking::unk3(service_server* server, byte_buffer* /*buffer*/) const + void bdAsyncMatchMaking::getMatchMakingPlayerToken(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdAsyncMatchMaking::unk6(service_server* server, byte_buffer* /*buffer*/) const + void bdAsyncMatchMaking::initMatchMaking(service_server* server, byte_buffer* /*buffer*/) const { - class task6Result final : public bdTaskResult - { - public: - std::string jsondata; - - void serialize(byte_buffer* data) override - { - data->write_string(jsondata); - } - - void deserialize(byte_buffer* data) override - { - data->read_string(&jsondata); - } - }; - // TODO: auto reply = server->create_reply(this->task_id()); @@ -60,17 +44,16 @@ namespace demonware writer(s_buffer); response_json.Accept(writer); - auto response = new task6Result; - response->jsondata = std::string(s_buffer.GetString(), s_buffer.GetSize()); - reply->add(response); + auto response = std::make_unique(std::string(s_buffer.GetString(), s_buffer.GetSize())); + reply.add(response); - reply->send(); + reply.send(); } - void bdAsyncMatchMaking::unk7(service_server* server, byte_buffer* /*buffer*/) const + void bdAsyncMatchMaking::startMatchMaking(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdAsyncMatchMaking.hpp b/src/client/game/demonware/services/bdAsyncMatchMaking.hpp index 255370e9..ad82211e 100644 --- a/src/client/game/demonware/services/bdAsyncMatchMaking.hpp +++ b/src/client/game/demonware/services/bdAsyncMatchMaking.hpp @@ -8,9 +8,9 @@ namespace demonware bdAsyncMatchMaking(); private: - void unk2(service_server* server, byte_buffer* buffer) const; - void unk3(service_server* server, byte_buffer* buffer) const; - void unk6(service_server* server, byte_buffer* buffer) const; - void unk7(service_server* server, byte_buffer* buffer) const; + void setPlayerInfo(service_server* server, byte_buffer* buffer) const; + void getMatchMakingPlayerToken(service_server* server, byte_buffer* buffer) const; + void initMatchMaking(service_server* server, byte_buffer* buffer) const; + void startMatchMaking(service_server* server, byte_buffer* buffer) const; }; } diff --git a/src/client/game/demonware/services/bdBandwidthTest.cpp b/src/client/game/demonware/services/bdBandwidthTest.cpp index 2c41e4d2..dfe4f441 100644 --- a/src/client/game/demonware/services/bdBandwidthTest.cpp +++ b/src/client/game/demonware/services/bdBandwidthTest.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -22,6 +22,6 @@ namespace demonware buffer.write(sizeof bandwidth_iw6, bandwidth_iw6); auto reply = server->create_message(5); - reply->send(&buffer, true); + reply.send(&buffer, true); } } diff --git a/src/client/game/demonware/services/bdCMail.cpp b/src/client/game/demonware/services/bdCMail.cpp index 7cabf4aa..689881a5 100644 --- a/src/client/game/demonware/services/bdCMail.cpp +++ b/src/client/game/demonware/services/bdCMail.cpp @@ -1,17 +1,17 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { - bdCMail::bdCMail() : service(29, "bdCMail") + bdCMail::bdCMail() : service(29, "bdCMail") // bdMail { - this->register_task(10, &bdCMail::unk10); + this->register_task(10, &bdCMail::getMailInfo); } - void bdCMail::unk10(service_server* server, byte_buffer* /*buffer*/) const + void bdCMail::getMailInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdCMail.hpp b/src/client/game/demonware/services/bdCMail.hpp index e6258086..425276a1 100644 --- a/src/client/game/demonware/services/bdCMail.hpp +++ b/src/client/game/demonware/services/bdCMail.hpp @@ -8,6 +8,6 @@ namespace demonware bdCMail(); private: - void unk10(service_server* server, byte_buffer* buffer) const; + void getMailInfo(service_server* server, byte_buffer* buffer) const; }; } diff --git a/src/client/game/demonware/services/bdContentStreaming.cpp b/src/client/game/demonware/services/bdContentStreaming.cpp index efd4db18..1475bd67 100644 --- a/src/client/game/demonware/services/bdContentStreaming.cpp +++ b/src/client/game/demonware/services/bdContentStreaming.cpp @@ -1,25 +1,25 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { bdContentStreaming::bdContentStreaming() : service(50, "bdContentStreaming") { - this->register_task(2, &bdContentStreaming::unk2); - this->register_task(3, &bdContentStreaming::unk3); + this->register_task(2, &bdContentStreaming::listFilesByOwner); + this->register_task(3, &bdContentStreaming::listAllPublisherFiles); } - void bdContentStreaming::unk2(service_server* server, byte_buffer* /*buffer*/) const + void bdContentStreaming::listFilesByOwner(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdContentStreaming::unk3(service_server* server, byte_buffer* /*buffer*/) const + void bdContentStreaming::listAllPublisherFiles(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdContentStreaming.hpp b/src/client/game/demonware/services/bdContentStreaming.hpp index 68319662..0b69f1a8 100644 --- a/src/client/game/demonware/services/bdContentStreaming.hpp +++ b/src/client/game/demonware/services/bdContentStreaming.hpp @@ -8,7 +8,7 @@ namespace demonware bdContentStreaming(); private: - void unk2(service_server* server, byte_buffer* buffer) const; - void unk3(service_server* server, byte_buffer* buffer) const; + void listFilesByOwner(service_server* server, byte_buffer* buffer) const; + void listAllPublisherFiles(service_server* server, byte_buffer* buffer) const; }; } diff --git a/src/client/game/demonware/services/bdCounter.cpp b/src/client/game/demonware/services/bdCounter.cpp index ee190ade..da0728b5 100644 --- a/src/client/game/demonware/services/bdCounter.cpp +++ b/src/client/game/demonware/services/bdCounter.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -13,13 +13,13 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdCounter::getCounterTotals(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdDML.cpp b/src/client/game/demonware/services/bdDML.cpp index d2a9da4c..08aee84b 100644 --- a/src/client/game/demonware/services/bdDML.cpp +++ b/src/client/game/demonware/services/bdDML.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -15,12 +15,12 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdDML::getUserData(service_server* server, byte_buffer* /*buffer*/) const { - auto result = new bdDMLRawData; + auto result = std::make_unique(); result->country_code = "US"; result->country_code = "'Murica"; result->region = "New York"; @@ -32,21 +32,21 @@ namespace demonware result->timezone = "+01:00"; auto reply = server->create_reply(this->task_id()); - reply->add(result); - reply->send(); + reply.add(result); + reply.send(); } void bdDML::getUserHierarchicalData(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdDML::getUsersLastLogonData(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdEventLog.cpp b/src/client/game/demonware/services/bdEventLog.cpp index 8aa4127a..b2ca3542 100644 --- a/src/client/game/demonware/services/bdEventLog.cpp +++ b/src/client/game/demonware/services/bdEventLog.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -16,34 +16,34 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdEventLog::recordEventBin(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdEventLog::recordEvents(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdEventLog::recordEventsBin(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdEventLog::initializeFiltering(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdFacebook.cpp b/src/client/game/demonware/services/bdFacebook.cpp index ff01d58e..e560a4fc 100644 --- a/src/client/game/demonware/services/bdFacebook.cpp +++ b/src/client/game/demonware/services/bdFacebook.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -24,90 +24,90 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::post(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::unregisterAccount(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::isRegistered(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::getInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::getRegisteredAccounts(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::getFriends(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::getProfilePictures(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::uploadPhoto(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::registerToken(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::uploadVideo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::getFriendsByID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdFacebook::setLikeStatus(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdGroup.cpp b/src/client/game/demonware/services/bdGroup.cpp index 195d38f0..d4efc719 100644 --- a/src/client/game/demonware/services/bdGroup.cpp +++ b/src/client/game/demonware/services/bdGroup.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -15,27 +15,27 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdGroup::setGroupsForEntity(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdGroup::getEntityGroups(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdGroup::getGroupCounts(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdLeague.cpp b/src/client/game/demonware/services/bdLeague.cpp index add6d0d7..d94c3877 100644 --- a/src/client/game/demonware/services/bdLeague.cpp +++ b/src/client/game/demonware/services/bdLeague.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -22,76 +22,76 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getTeamIDsForUser(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getTeamSubdivisions(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::setTeamName(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::setTeamIcon(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getTeamInfos(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getTeamLeaguesAndSubdivisions(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getTeamMemberInfos(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::incrementGamesPlayedCount(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getSubdivisionInfos(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague::getTeamSubdivisionHistory(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } \ No newline at end of file diff --git a/src/client/game/demonware/services/bdLeague2.cpp b/src/client/game/demonware/services/bdLeague2.cpp index edb6a36e..b425a1cb 100644 --- a/src/client/game/demonware/services/bdLeague2.cpp +++ b/src/client/game/demonware/services/bdLeague2.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -15,27 +15,27 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague2::readStatsByTeamID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague2::readStatsByRank(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdLeague2::readStatsByPivot(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } \ No newline at end of file diff --git a/src/client/game/demonware/services/bdMarketingComms.cpp b/src/client/game/demonware/services/bdMarketingComms.cpp index 0bfc2635..9ac5f988 100644 --- a/src/client/game/demonware/services/bdMarketingComms.cpp +++ b/src/client/game/demonware/services/bdMarketingComms.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" #include "game/game.hpp" @@ -16,19 +16,19 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMarketingComms::reportFullMessagesViewed(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdMarketingComms::unk6(service_server* server, byte_buffer* buffer) const + void bdMarketingComms::unk6(service_server* server, byte_buffer* /*buffer*/) const { // TODO: - server->create_reply(this->task_id(), game::BD_NO_FILE)->send(); + server->create_reply(this->task_id(), BD_NO_FILE).send(); } } diff --git a/src/client/game/demonware/services/bdMarketplace.cpp b/src/client/game/demonware/services/bdMarketplace.cpp index eb40090f..ee05e7e8 100644 --- a/src/client/game/demonware/services/bdMarketplace.cpp +++ b/src/client/game/demonware/services/bdMarketplace.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" #include @@ -7,11 +7,12 @@ namespace demonware { bdMarketplace::bdMarketplace() : service(80, "bdMarketplace") { - this->register_task(42, &bdMarketplace::startExchangeTransaction); // COD POINTS purchase ? - //this->register_task(43, &bdMarketplace::purchaseOnSteamInitialize); // COD POINTS purchase ? + this->register_task(42, &bdMarketplace::startExchangeTransaction); + this->register_task(43, &bdMarketplace::purchaseOnSteamInitialize); + this->register_task(44, &bdMarketplace::purchaseOnSteamFinalize); this->register_task(49, &bdMarketplace::getExpiredInventoryItems); this->register_task(60, &bdMarketplace::steamProcessDurable); - this->register_task(85, &bdMarketplace::unk85); + this->register_task(85, &bdMarketplace::steamProcessDurableV2); this->register_task(122, &bdMarketplace::purchaseSkus); this->register_task(130, &bdMarketplace::getBalance); this->register_task(132, &bdMarketplace::getBalanceV2); @@ -20,80 +21,87 @@ namespace demonware this->register_task(232, &bdMarketplace::getEntitlements); } - void bdMarketplace::startExchangeTransaction(service_server* server, byte_buffer* buffer) const + void bdMarketplace::startExchangeTransaction(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdMarketplace::purchaseOnSteamInitialize(service_server* server, byte_buffer* buffer) const + void bdMarketplace::purchaseOnSteamInitialize(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); + } + + void bdMarketplace::purchaseOnSteamFinalize(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); } void bdMarketplace::getExpiredInventoryItems(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMarketplace::steamProcessDurable(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdMarketplace::unk85(service_server* server, byte_buffer* /*buffer*/) const + void bdMarketplace::steamProcessDurableV2(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdMarketplace::purchaseSkus(service_server* server, byte_buffer* buffer) const + void bdMarketplace::purchaseSkus(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdMarketplace::getBalance(service_server* server, byte_buffer* buffer) const + void bdMarketplace::getBalance(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } - void bdMarketplace::getBalanceV2(service_server* server, byte_buffer* buffer) const + void bdMarketplace::getBalanceV2(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMarketplace::getInventoryPaginated(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMarketplace::putPlayersInventoryItems(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMarketplace::getEntitlements(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdMarketplace.hpp b/src/client/game/demonware/services/bdMarketplace.hpp index bde1c312..8a578741 100644 --- a/src/client/game/demonware/services/bdMarketplace.hpp +++ b/src/client/game/demonware/services/bdMarketplace.hpp @@ -10,9 +10,10 @@ namespace demonware private: void startExchangeTransaction(service_server* server, byte_buffer* buffer) const; void purchaseOnSteamInitialize(service_server* server, byte_buffer* buffer) const; + void purchaseOnSteamFinalize(service_server* server, byte_buffer* buffer) const; void getExpiredInventoryItems(service_server* server, byte_buffer* buffer) const; void steamProcessDurable(service_server* server, byte_buffer* buffer) const; - void unk85(service_server* server, byte_buffer* buffer) const; + void steamProcessDurableV2(service_server* server, byte_buffer* buffer) const; void purchaseSkus(service_server* server, byte_buffer* buffer) const; void getBalance(service_server* server, byte_buffer* buffer) const; void getBalanceV2(service_server* server, byte_buffer* buffer) const; diff --git a/src/client/game/demonware/services/bdMatchMaking.cpp b/src/client/game/demonware/services/bdMatchMaking.cpp index 6b59d1eb..0b460ef2 100644 --- a/src/client/game/demonware/services/bdMatchMaking.cpp +++ b/src/client/game/demonware/services/bdMatchMaking.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -26,104 +26,104 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::updateSession(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::deleteSession(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::findSessionFromID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::findSessions(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::getPerformanceValues(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::getSessionInvites(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::updateSessionPlayers(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::submitPerformance(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::notifyJoin(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::inviteToSession(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::findSessionsPaged(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::findSessionsByEntityIDs(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::findSessionsFromIDs(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdMatchMaking::findSessionsTwoPass(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdPresence.cpp b/src/client/game/demonware/services/bdPresence.cpp index a043a169..2a22c67b 100644 --- a/src/client/game/demonware/services/bdPresence.cpp +++ b/src/client/game/demonware/services/bdPresence.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -13,13 +13,13 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdPresence::unk3(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdProfiles.cpp b/src/client/game/demonware/services/bdProfiles.cpp index ac7a466a..48963743 100644 --- a/src/client/game/demonware/services/bdProfiles.cpp +++ b/src/client/game/demonware/services/bdProfiles.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -19,55 +19,55 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::setPublicInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::getPrivateInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::setPrivateInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::deleteProfile(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::setPrivateInfoByUserID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::getPrivateInfoByUserID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdProfiles::setPublicInfoByUserID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdPublisherVariables.cpp b/src/client/game/demonware/services/bdPublisherVariables.cpp index 73df8a26..57365c63 100644 --- a/src/client/game/demonware/services/bdPublisherVariables.cpp +++ b/src/client/game/demonware/services/bdPublisherVariables.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -12,6 +12,6 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdReward.cpp b/src/client/game/demonware/services/bdReward.cpp index 86fe661b..e1592597 100644 --- a/src/client/game/demonware/services/bdReward.cpp +++ b/src/client/game/demonware/services/bdReward.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -15,27 +15,27 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdReward::claimRewardRoll(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdReward::claimClientAchievements(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdReward::reportRewardEvents(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdRichPresence.cpp b/src/client/game/demonware/services/bdRichPresence.cpp index adfb0fbb..30aed288 100644 --- a/src/client/game/demonware/services/bdRichPresence.cpp +++ b/src/client/game/demonware/services/bdRichPresence.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -13,13 +13,13 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdRichPresence::getInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdStats.cpp b/src/client/game/demonware/services/bdStats.cpp index 607545f8..7d84557a 100644 --- a/src/client/game/demonware/services/bdStats.cpp +++ b/src/client/game/demonware/services/bdStats.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -7,7 +7,7 @@ namespace demonware { this->register_task(1, &bdStats::writeStats); this->register_task(2, &bdStats::deleteStats); - this->register_task(3, &bdStats::unk3); // leaderboards + this->register_task(3, &bdStats::readStatsByEntityID); this->register_task(4, &bdStats::readStatsByRank); this->register_task(5, &bdStats::readStatsByPivot); this->register_task(6, &bdStats::readStatsByRating); @@ -16,7 +16,7 @@ namespace demonware this->register_task(10, &bdStats::readExternalTitleNamedStats); this->register_task(11, &bdStats::readStatsByLeaderboardIDsAndEntityIDs); this->register_task(12, &bdStats::readStatsByMultipleRatings); - this->register_task(13, &bdStats::readStatsByEntityID); + this->register_task(13, &bdStats::readStatsByEntityIDV2); this->register_task(14, &bdStats::writeServerValidatedStats); } @@ -24,90 +24,90 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats::deleteStats(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::unk3(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readStatsByRank(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readStatsByPivot(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readStatsByRating(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readStatsByMultipleRanks(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readExternalTitleStats(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readExternalTitleNamedStats(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readStatsByLeaderboardIDsAndEntityIDs(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } - - void bdStats::readStatsByMultipleRatings(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats::readStatsByEntityID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); + } + + void bdStats::readStatsByRank(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readStatsByPivot(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readStatsByRating(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readStatsByMultipleRanks(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readExternalTitleStats(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readExternalTitleNamedStats(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readStatsByLeaderboardIDsAndEntityIDs(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readStatsByMultipleRatings(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); + } + + void bdStats::readStatsByEntityIDV2(service_server* server, byte_buffer* /*buffer*/) const + { + // TODO: + auto reply = server->create_reply(this->task_id()); + reply.send(); } void bdStats::writeServerValidatedStats(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdStats.hpp b/src/client/game/demonware/services/bdStats.hpp index 86165775..40ea6433 100644 --- a/src/client/game/demonware/services/bdStats.hpp +++ b/src/client/game/demonware/services/bdStats.hpp @@ -10,7 +10,7 @@ namespace demonware private: void writeStats(service_server* server, byte_buffer* buffer) const; void deleteStats(service_server* server, byte_buffer* buffer) const; - void unk3(service_server* server, byte_buffer* buffer) const; + void readStatsByEntityID(service_server* server, byte_buffer* buffer) const; void readStatsByRank(service_server* server, byte_buffer* buffer) const; void readStatsByPivot(service_server* server, byte_buffer* buffer) const; void readStatsByRating(service_server* server, byte_buffer* buffer) const; @@ -19,7 +19,7 @@ namespace demonware void readExternalTitleNamedStats(service_server* server, byte_buffer* buffer) const; void readStatsByLeaderboardIDsAndEntityIDs(service_server* server, byte_buffer* buffer) const; void readStatsByMultipleRatings(service_server* server, byte_buffer* buffer) const; - void readStatsByEntityID(service_server* server, byte_buffer* buffer) const; + void readStatsByEntityIDV2(service_server* server, byte_buffer* buffer) const; void writeServerValidatedStats(service_server* server, byte_buffer* buffer) const; }; } diff --git a/src/client/game/demonware/services/bdStats2.cpp b/src/client/game/demonware/services/bdStats2.cpp index ee1f7e77..1664d1ae 100644 --- a/src/client/game/demonware/services/bdStats2.cpp +++ b/src/client/game/demonware/services/bdStats2.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -13,13 +13,13 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats2::writeArbitratedStats(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } \ No newline at end of file diff --git a/src/client/game/demonware/services/bdStats3.cpp b/src/client/game/demonware/services/bdStats3.cpp index 0916d488..7aabf3e7 100644 --- a/src/client/game/demonware/services/bdStats3.cpp +++ b/src/client/game/demonware/services/bdStats3.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -18,48 +18,48 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats3::readStatsByEntityID(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats3::readStatsByRank(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats3::readStatsByPivot(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats3::readStatsByRating(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats3::readStatsByMultipleRanks(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdStats3::readStatsByLeaderboardIDsAndEntityIDs(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } \ No newline at end of file diff --git a/src/client/game/demonware/services/bdStorage.cpp b/src/client/game/demonware/services/bdStorage.cpp index 9cf3eec2..85381404 100644 --- a/src/client/game/demonware/services/bdStorage.cpp +++ b/src/client/game/demonware/services/bdStorage.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" #include #include @@ -84,7 +84,7 @@ namespace demonware if (this->load_publisher_resource(filename, data)) { - auto* info = new bdFileInfo; + auto info = std::make_unique(); info->file_id = *reinterpret_cast(utils::cryptography::sha1::compute(filename).data()); info->filename = filename; @@ -95,10 +95,10 @@ namespace demonware info->visibility = false; info->checksum = "f5f1fb4ddd2d85e2ed9a28b3204125ec"; - reply->add(info); + reply.add(info); } - reply->send(); + reply.send(); } void bdStorage::getPublisherFile(service_server* server, byte_buffer* buffer) @@ -120,12 +120,13 @@ namespace demonware #endif auto reply = server->create_reply(this->task_id()); - reply->add(new bdFileData(data)); - reply->send(); + auto result = std::make_unique(data); + reply.add(result); + reply.send(); } else { - server->create_reply(this->task_id(), game::BD_NO_FILE)->send(); + server->create_reply(this->task_id(), BD_NO_FILE).send(); } } @@ -161,7 +162,7 @@ namespace demonware const auto path = get_user_file_path(filename); utils::io::write_file(path, data); - auto* info = new bdFile2; + auto info = std::make_unique(); info->unk1 = 0; info->unk2 = 0; @@ -176,10 +177,10 @@ namespace demonware printf("[DW]: [bdStorage]: set user file: %s\n", filename.data()); #endif - reply->add(info); + reply.add(info); } - reply->send(); + reply.send(); } void bdStorage::getFiles(service_server* server, byte_buffer* buffer) const @@ -218,14 +219,14 @@ namespace demonware continue; } - auto response = new bdFileQueryResult; + auto response = std::make_unique(); response->user_id = user_id; response->platform = platform; response->filename = filename; response->errorcode = 0; response->filedata = data; - reply->add(response); + reply.add(response); ++count; #ifdef DW_DEBUG @@ -233,13 +234,13 @@ namespace demonware #endif } - reply->send(); + reply.send(); } void bdStorage::getFile(service_server* server, byte_buffer* buffer) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdTeams.cpp b/src/client/game/demonware/services/bdTeams.cpp index 574cd013..336dbba5 100644 --- a/src/client/game/demonware/services/bdTeams.cpp +++ b/src/client/game/demonware/services/bdTeams.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -61,349 +61,349 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::updateTeamName(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::promoteMember(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::kickMember(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::leaveTeam(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::proposeMembership(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::rejectMembership(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::acceptMembership(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getPublicProfiles(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getPrivateProfile(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getPublicMemberProfiles(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getPrivateMemberProfiles(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::setPublicProfile(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::setPrivateProfile(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::setPublicMemberProfile(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::setPrivateMemberProfile(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMemberships(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembers(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getOutgoingProposals(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::withdrawProposal(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::demoteMember(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::promoteMemberToOwner(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getTeamInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getIncomingProposals(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::sendInstantMessage(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembershipsUser(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::sendInstantMessageToTeam(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::searchPublicTeamProfiles(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::addApplication(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getApplicationsByTeam(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::acceptApplication(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::rejectApplication(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::autoJoinTeam(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::createTeamWithProfiles(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::banMember(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::unbanMember(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::blockApplication(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::unblockApplication(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::updateTeamType(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::setOnline(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembershipsWithCounts(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembershipsWithCountsUser(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::searchTeams(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::createTeamWithProfilesAndTeamType(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembershipsWithCountsAndTeamTypeUser(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembershipsWithCountsAndTeamType(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getTeamInfoWithTeamType(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::setTeamAutoJoin(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getTeamAutoJoin(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdTeams::getMembersAndPrivileges(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdTitleUtilities.cpp b/src/client/game/demonware/services/bdTitleUtilities.cpp index d9daffb9..04d11b10 100644 --- a/src/client/game/demonware/services/bdTitleUtilities.cpp +++ b/src/client/game/demonware/services/bdTitleUtilities.cpp @@ -1,28 +1,34 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { bdTitleUtilities::bdTitleUtilities() : service(12, "bdTitleUtilities") { - this->register_task(1, &bdTitleUtilities::is_profanity); - this->register_task(6, &bdTitleUtilities::get_server_time); + this->register_task(1, &bdTitleUtilities::isProfanity); + this->register_task(6, &bdTitleUtilities::getServerTime); } - void bdTitleUtilities::is_profanity(service_server* server, byte_buffer* /*buffer*/) const + void bdTitleUtilities::isProfanity(service_server* server, byte_buffer* /*buffer*/) const { - // TODO: + //std::string text; + //buffer->read_string(&text) + + auto result = std::make_unique(); + result->isProfanity = 0; + auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.add(result); + reply.send(); } - void bdTitleUtilities::get_server_time(service_server* server, byte_buffer* /*buffer*/) const + void bdTitleUtilities::getServerTime(service_server* server, byte_buffer* /*buffer*/) const { - auto* const time_result = new bdTimeStamp; + auto time_result = std::make_unique(); time_result->unix_time = uint32_t(time(nullptr)); auto reply = server->create_reply(this->task_id()); - reply->add(time_result); - reply->send(); + reply.add(time_result); + reply.send(); } } diff --git a/src/client/game/demonware/services/bdTitleUtilities.hpp b/src/client/game/demonware/services/bdTitleUtilities.hpp index cb1ba4ea..f2521714 100644 --- a/src/client/game/demonware/services/bdTitleUtilities.hpp +++ b/src/client/game/demonware/services/bdTitleUtilities.hpp @@ -8,7 +8,7 @@ namespace demonware bdTitleUtilities(); private: - void is_profanity(service_server* server, byte_buffer* buffer) const; - void get_server_time(service_server* server, byte_buffer* buffer) const; + void isProfanity(service_server* server, byte_buffer* buffer) const; + void getServerTime(service_server* server, byte_buffer* buffer) const; }; } diff --git a/src/client/game/demonware/services/bdUNK123.cpp b/src/client/game/demonware/services/bdUNK123.cpp deleted file mode 100644 index 4853f3d8..00000000 --- a/src/client/game/demonware/services/bdUNK123.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include "../services.hpp" - -#include "game/game.hpp" - -namespace demonware -{ - bdUNK123::bdUNK123() : service(123, "bdUNK123") - { - this->register_task(1, &bdUNK123::unk1); - } - - void bdUNK123::unk1(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - server->create_reply(this->task_id(), game::BD_NO_FILE)->send(); - } -} diff --git a/src/client/game/demonware/services/bdUNK123.hpp b/src/client/game/demonware/services/bdUNK123.hpp deleted file mode 100644 index 04e4f0a6..00000000 --- a/src/client/game/demonware/services/bdUNK123.hpp +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -namespace demonware -{ - class bdUNK123 final : public service - { - public: - bdUNK123(); - - private: - void unk1(service_server* server, byte_buffer* buffer) const; - }; -} diff --git a/src/client/game/demonware/services/bdUNK63.cpp b/src/client/game/demonware/services/bdUNK63.cpp deleted file mode 100644 index e6f4945a..00000000 --- a/src/client/game/demonware/services/bdUNK63.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include "../services.hpp" - -namespace demonware -{ - bdUNK63::bdUNK63() : service(63, "bdUNK63") - { - //this->register_task(6, "unk6", &bdUNK63::unk6); - } - - void bdUNK63::unk(service_server* server, byte_buffer* /*buffer*/) const - { - // TODO: - auto reply = server->create_reply(this->task_id()); - reply->send(); - } -} diff --git a/src/client/game/demonware/services/bdUNK63.hpp b/src/client/game/demonware/services/bdUNK63.hpp deleted file mode 100644 index 85ed78bf..00000000 --- a/src/client/game/demonware/services/bdUNK63.hpp +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -namespace demonware -{ - class bdUNK63 final : public service - { - public: - bdUNK63(); - - private: - void unk(service_server* server, byte_buffer* buffer) const; - }; -} diff --git a/src/client/game/demonware/services/bdUserGroups.cpp b/src/client/game/demonware/services/bdUserGroups.cpp index 206bdcb7..694797ff 100644 --- a/src/client/game/demonware/services/bdUserGroups.cpp +++ b/src/client/game/demonware/services/bdUserGroups.cpp @@ -1,5 +1,5 @@ #include -#include "../services.hpp" +#include "../dw_include.hpp" namespace demonware { @@ -22,76 +22,76 @@ namespace demonware { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::deleteGroup(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::joinGroup(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::leaveGroup(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::getMembershipInfo(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::changeMemberType(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::getNumMembers(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::getMembers(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::getMemberships(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::readStatsByRank(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } void bdUserGroups::getGroupLists(service_server* server, byte_buffer* /*buffer*/) const { // TODO: auto reply = server->create_reply(this->task_id()); - reply->send(); + reply.send(); } } \ No newline at end of file diff --git a/src/client/game/structs.hpp b/src/client/game/structs.hpp index 8b5858ba..098873b3 100644 --- a/src/client/game/structs.hpp +++ b/src/client/game/structs.hpp @@ -1,9 +1,19 @@ #pragma once -#include "database.hpp" +#include "types/database.hpp" +#include "types/ddl.hpp" +#include "types/demonware.hpp" +#include "types/party.hpp" +#include "types/pmem.hpp" +#include "types/sv.hpp" namespace game { using namespace database; + using namespace ddl; + using namespace demonware; + using namespace party; + using namespace pmem; + using namespace sv; enum GameModeType : std::uint32_t { @@ -447,64 +457,6 @@ namespace game STATSGROUP_FIRST = 0x0, }; - namespace ddl - { - enum DDLType - { - DDL_INVALID_TYPE = 0xFFFFFFFF, - DDL_BYTE_TYPE = 0x0, - DDL_SHORT_TYPE = 0x1, - DDL_UINT_TYPE = 0x2, - DDL_INT_TYPE = 0x3, - DDL_UINT64_TYPE = 0x4, - DDL_FLOAT_TYPE = 0x5, - DDL_FIXEDPOINT_TYPE = 0x6, - DDL_STRING_TYPE = 0x7, - DDL_STRUCT_TYPE = 0x8, - DDL_ENUM_TYPE = 0x9, - }; - - union DDLValue - { - int intValue; - unsigned int uintValue; - unsigned __int64 uint64Value; - float floatValue; - float fixedPointValue; - const char* stringPtr; - }; - - struct DDLMember - { - const char* name; - int index; - int bitSize; - int limitSize; - int offset; - int type; - int externalIndex; - unsigned int rangeLimit; - bool isArray; - int arraySize; - int enumIndex; - }; - - struct DDLState - { - bool isValid; - int offset; - int arrayIndex; - DDLMember* member; - //const DDLDef* ddlDef; - }; - - struct DDLContext - { - - }; - } - using namespace ddl; - // made up struct connection_data { @@ -613,920 +565,6 @@ namespace game } using namespace entity; - namespace party - { - enum PartyPreloadMapStage : std::uint32_t - { - PRELOAD_MAP_IDLE = 0x0, - PRELOAD_MAP_INITIATED = 0x1, - PRELOAD_MAP_STARTED = 0x2, - PRELOAD_MAP_COUNT = 0x3, - }; - - struct PartyData - { - char __pad0[11444]; - PartyPreloadMapStage preloadingMapStage; - char __pad1[101]; - bool m_gameStartSkipCountdown; - char __pad2[110]; - int lobbyFlags; - bool gameStartRequested; - }; - static_assert(offsetof(PartyData, preloadingMapStage) == 11444); - static_assert(offsetof(PartyData, m_gameStartSkipCountdown) == 11549); - static_assert(offsetof(PartyData, lobbyFlags) == 11660); - static_assert(offsetof(PartyData, gameStartRequested) == 11664); - } - using namespace party; - - namespace sv - { - struct SvServerInitSettings - { - char mapName[64]; - char gameType[64]; - char serverHostName[64]; - bool hardcoreMode; - unsigned int maxClientCount; - unsigned int maxAgentCount; - bool isMapPreloaded; - bool isSaveGame; - bool isRestart; - bool isFrontEnd; - char __pad0[2]; - bool serverThreadStartup; - }; //static_assert(sizeof(SvServerInitSettings) == 212); - static_assert(offsetof(SvServerInitSettings, maxClientCount) == 196); - static_assert(offsetof(SvServerInitSettings, isMapPreloaded) == 204); - static_assert(offsetof(SvServerInitSettings, isFrontEnd) == 207); - static_assert(offsetof(SvServerInitSettings, serverThreadStartup) == 210); - } - using namespace sv; - - namespace demonware - { - enum DWOnlineStatus : std::int32_t - { - DW_LIVE_DISCONNECTED = 0x0, - DW_LIVE_UNKNOWN = 0x1, - DW_LIVE_CONNECTING = 0x2, - DW_LIVE_CONNECTED = 0x3, - }; - - enum DWNetStatus : std::int32_t - { - DW_NET_ERROR_START_FAILED = 0x0, - DW_NET_ERROR_NO_LOCAL_IP = 0x1, - DW_NET_NOT_STARTED = 0x2, - DW_NET_STARTING_LAN = 0x3, - DW_NET_STARTED_LAN = 0x4, - DW_NET_STARTING_ONLINE = 0x5, - DW_NET_STARTED_ONLINE = 0x6, - }; - - enum bdLobbyErrorCode : std::int32_t - { - BD_NO_ERROR = 0x0, - BD_TOO_MANY_TASKS = 0x1, - BD_NOT_CONNECTED = 0x2, - BD_SEND_FAILED = 0x3, - BD_HANDLE_TASK_FAILED = 0x4, - BD_START_TASK_FAILED = 0x5, - BD_RESULT_EXCEEDS_BUFFER_SIZE = 0x64, - BD_ACCESS_DENIED = 0x65, - BD_EXCEPTION_IN_DB = 0x66, - BD_MALFORMED_TASK_HEADER = 0x67, - BD_INVALID_ROW = 0x68, - BD_EMPTY_ARG_LIST = 0x69, - BD_PARAM_PARSE_ERROR = 0x6A, - BD_PARAM_MISMATCHED_TYPE = 0x6B, - BD_SERVICE_NOT_AVAILABLE = 0x6C, - BD_CONNECTION_RESET = 0x6D, - BD_INVALID_USER_ID = 0x6E, - BD_LOBBY_PROTOCOL_VERSION_FAILURE = 0x6F, - BD_LOBBY_INTERNAL_FAILURE = 0x70, - BD_LOBBY_PROTOCOL_ERROR = 0x71, - BD_LOBBY_FAILED_TO_DECODE_UTF8 = 0x72, - BD_LOBBY_ASCII_EXPECTED = 0x73, - BD_INVALID_CONTEXT = 0x74, - BD_LOBBY_METHOD_DISABLED = 0x75, - BD_LOBBY_MIGRATION_FAILURE = 0x76, - BD_ASYNCHRONOUS_ERROR = 0xC8, - BD_STREAMING_COMPLETE = 0xC9, - BD_MEMBER_NO_PROPOSAL = 0x12C, - BD_TEAMNAME_ALREADY_EXISTS = 0x12D, - BD_MAX_TEAM_MEMBERSHIPS_LIMITED = 0x12E, - BD_MAX_TEAM_OWNERSHIPS_LIMITED = 0x12F, - BD_NOT_A_TEAM_MEMBER = 0x130, - BD_INVALID_TEAM_ID = 0x131, - BD_INVALID_TEAM_NAME = 0x132, - BD_NOT_A_TEAM_OWNER = 0x133, - BD_NOT_AN_ADMIN_OR_OWNER = 0x134, - BD_MEMBER_PROPOSAL_EXISTS = 0x135, - BD_MEMBER_EXISTS = 0x136, - BD_TEAM_FULL = 0x137, - BD_VULGAR_TEAM_NAME = 0x138, - BD_TEAM_USERID_BANNED = 0x139, - BD_TEAM_EMPTY = 0x13A, - BD_INVALID_TEAM_PROFILE_QUERY_ID = 0x13B, - BD_TEAMNAME_TOO_SHORT = 0x13C, - BD_UNIQUE_PROFILE_DATA_EXISTS_ALREADY = 0x13D, - BD_APPLICATION_EXISTS = 0x13E, - BD_APPLICATIONS_MAX_EXCEEDED = 0x13F, - BD_PAGE_SIZE_LIMIT_EXCEEDED = 0x140, - BD_APPLICATION_REJECTED_EXISTS = 0x141, - BD_APPLICATION_WITHDRAWN_EXISTS = 0x142, - BD_APPLICATION_DOES_NOT_EXIST = 0x143, - BD_APPLICATION_INVALID_STATE = 0x144, - BD_MEMBER_BAN_EXISTS = 0x145, - BD_MEMBER_BAN_DOES_NOT_EXIST = 0x146, - BD_OWNER_BAN_FORBIDDEN = 0x147, - BD_INVALID_ACCOUNT_TYPE = 0x148, - BD_CONFIGURED_ACCOUNT_TYPE_NOT_FOUND = 0x149, - BD_OWNER_OF_NON_EMPTY_TEAM = 0x14A, - BD_CANNOT_APPLY_TO_PIRIVATE_TEAM = 0x14B, - BD_MEMBER_IS_OWNER = 0x15E, - BD_AUTO_JOINING_DISABLED = 0x15F, - BD_TEAM_SHOWCASE_DISABLED = 0x160, - BD_INVALID_FILTER = 0x162, - BD_INVALID_TEAM_LEADERBOARD = 0x163, - BD_TEAM_LEADERBOARD_LOADING = 0x164, - BD_TEAM_SHOWCASE_COUNT_EXCEEDED = 0x165, - BD_USER_ALREADY_TEAM_OWNER = 0x16A, - BD_UPPER_TEAM_MEMBER_LIMIT_EXCEEDED = 0x16C, - BD_TEAM_MEMBER_LIMIT_NOT_SUPPORTED = 0x16D, - BD_MISMATCHED_TEAM_PROFILE_COLLISION_FIELD = 0x16E, - BD_INVALID_LEADERBOARD_ID = 0x190, - BD_INVALID_STATS_SET = 0x191, - BD_EMPTY_STATS_SET_IGNORED = 0x193, - BD_NO_DIRECT_ACCESS_TO_ARBITRATED_LBS = 0x194, - BD_STATS_WRITE_PERMISSION_DENIED = 0x195, - BD_STATS_WRITE_TYPE_DATA_TYPE_MISMATCH = 0x196, - BD_NO_STATS_FOR_USER = 0x197, - BD_INVALID_ACCESS_TO_UNRANKED_LB = 0x198, - BD_INVALID_EXTERNAL_TITLE_ID = 0x199, - BD_DIFFERENT_LEADERBOARD_SCHEMAS = 0x19A, - BD_TOO_MANY_LEADERBOARDS_REQUESTED = 0x19B, - BD_ENTITLEMENTS_ERROR = 0x19C, - BD_ENTITLEMENTS_INVALID_TITLEID = 0x19D, - BD_ENTITLEMENTS_INVALID_LEADERBOARDID = 0x19E, - BD_ENTITLEMENTS_INVALID_GET_MODE_FOR_TITLE = 0x19F, - BD_ENTITLEMENTS_URL_CONNECTION_ERROR = 0x1A0, - BD_ENTITLEMENTS_CONFIG_ERROR = 0x1A1, - BD_ENTITLEMENTS_NAMED_PARENT_ERROR = 0x1A2, - BD_ENTITLEMENTS_NAMED_KEY_ERROR = 0x1A3, - BD_TOO_MANY_ENTITY_IDS_REQUESTED = 0x1A4, - BD_STATS_READ_FAILED = 0x1A5, - BD_STATS_INVALID_WRITE_TO_VIRTUAL_LEADERBOARD = 0x1A6, - BD_STATS_INVALID_WRITE_TYPE_TO_MULTIRANK_LB = 0x1A7, - BD_STATS_INVALID_EXCLUDED_COLUMN = 0x1A8, - BD_STATS_INVALID_INCLUDED_COLUMN = 0x1A9, - BD_STATS_WRITE_NO_SCRIPT_MODULE = 0x1AA, - BD_STATS_WRITE_SCRIPT_MODULE_ERROR = 0x1AB, - BD_NON_READ_ON_READ_ONLY_LEADERBOARD = 0x1AC, - BD_INVALID_TITLE_ID = 0x1F4, - BD_DOWN_FOR_MAINTENANCE = 0x1F5, - BD_MESSAGING_INVALID_MAIL_ID = 0x258, - BD_SELF_BLOCK_NOT_ALLOWED = 0x259, - BD_GLOBAL_MESSAGE_ACCESS_DENIED = 0x25A, - BD_GLOBAL_MESSAGES_USER_LIMIT_EXCEEDED = 0x25B, - BD_MESSAGING_SENDER_DOES_NOT_EXIST = 0x25C, - BD_AUTH_NO_ERROR = 0x2BC, - BD_AUTH_BAD_REQUEST = 0x2BD, - BD_AUTH_SERVER_CONFIG_ERROR = 0x2BE, - BD_AUTH_BAD_TITLE_ID = 0x2BF, - BD_AUTH_BAD_ACCOUNT = 0x2C0, - BD_AUTH_ILLEGAL_OPERATION = 0x2C1, - BD_AUTH_INCORRECT_LICENSE_CODE = 0x2C2, - BD_AUTH_CREATE_USERNAME_EXISTS = 0x2C3, - BD_AUTH_CREATE_USERNAME_ILLEGAL = 0x2C4, - BD_AUTH_CREATE_USERNAME_VULGAR = 0x2C5, - BD_AUTH_CREATE_MAX_ACC_EXCEEDED = 0x2C6, - BD_AUTH_MIGRATE_NOT_SUPPORTED = 0x2C7, - BD_AUTH_TITLE_DISABLED = 0x2C8, - BD_AUTH_ACCOUNT_EXPIRED = 0x2C9, - BD_AUTH_ACCOUNT_LOCKED = 0x2CA, - BD_AUTH_UNKNOWN_ERROR = 0x2CB, - BD_AUTH_INCORRECT_PASSWORD = 0x2CC, - BD_AUTH_IP_NOT_IN_ALLOWED_RANGE = 0x2CD, - BD_AUTH_WII_TOKEN_VERIFICATION_FAILED = 0x2CE, - BD_AUTH_WII_AUTHENTICATION_FAILED = 0x2CF, - BD_AUTH_IP_KEY_LIMIT_REACHED = 0x2D0, - BD_AUTH_INVALID_GSPID = 0x2D1, - BD_AUTH_INVALID_IP_RANGE_ID = 0x2D2, - BD_AUTH_3DS_TOKEN_VERIFICATION_FAILED = 0x2D1, - BD_AUTH_3DS_AUTHENTICATION_FAILED = 0x2D2, - BD_AUTH_STEAM_APP_ID_MISMATCH = 0x2D3, - BD_AUTH_ABACCOUNTS_APP_ID_MISMATCH = 0x2D4, - BD_AUTH_CODO_USERNAME_NOT_SET = 0x2D5, - BD_AUTH_WIIU_TOKEN_VERIFICATION_FAILED = 0x2D6, - BD_AUTH_WIIU_AUTHENTICATION_FAILED = 0x2D7, - BD_AUTH_CODO_USERNAME_NOT_BASE64 = 0x2D8, - BD_AUTH_CODO_USERNAME_NOT_UTF8 = 0x2D9, - BD_AUTH_TENCENT_TICKET_EXPIRED = 0x2DA, - BD_AUTH_PS3_SERVICE_ID_MISMATCH = 0x2DB, - BD_AUTH_CODOID_NOT_WHITELISTED = 0x2DC, - BD_AUTH_PLATFORM_TOKEN_RETRIEVAL_ERROR = 0x2DD, - BD_AUTH_JSON_FORMAT_ERROR = 0x2DE, - BD_AUTH_REPLY_CONTENT_ERROR = 0x2DF, - BD_AUTH_PLATFORM_TOKEN_EXPIRED = 0x2E0, - BD_AUTH_CONTINUING = 0x2E1, - BD_AUTH_PLATFORM_TOKEN_DECRYPTION_ERROR = 0x2E2, - BD_AUTH_PLATFORM_TOKEN_SIGNATURE_ERROR = 0x2E3, - BD_AUTH_DNS_RESOLUTION_ERROR = 0x2E4, - BD_AUTH_SSL_CERTIFICATE_ERROR = 0x2E5, - BD_AUTH_SERVER_UNAVAILABLE_ERROR = 0x2E6, - BD_AUTH_ENVIRONMENT_ERROR = 0x2E7, - BD_AUTH_PLATFORM_DEVICE_ID_ERROR = 0x2E8, - BD_AUTH_UNO_APP_ID_MISMATCH = 0x2E9, - BD_AUTH_UNICODE_DECODE_ERROR = 0x2EA, - BD_AUTH_STEAM_PUBLISHER_BAN = 0x2EB, - BD_AUTH_TICKET_DECRYPTION_ERROR = 0x2EC, - BD_AUTH_SIGNATURE_ERROR = 0x2ED, - BD_AUTH_REQUEST_TIMEOUT_ERROR = 0x2EE, - BD_AUTH_REQUEST_ABORTED_ERROR = 0x2EF, - BD_AUTH_SINGLE_IDENTITY_FLOW_DISABLED_ERROR = 0x2F0, - BD_AUTH_SINGLE_IDENTITY_TOKEN_MISSING_ERROR = 0x2F1, - BD_AUTH_SINGLE_IDENTITY_TOKEN_EXPIRED_ERROR = 0x2F2, - BD_AUTH_SINGLE_IDENTITY_TOKEN_INVALID_ERROR = 0x2F3, - BD_AUTH_SWITCH_TOKEN_VERIFICATION_FAILED = 0x2F4, - BD_AUTH_SWITCH_AUTHENTICATION_FAILED = 0x2F5, - BD_AUTH_BAD_DEVICE_KEY = 0x2F6, - BD_AUTH_BAD_DEVICE_TITLE_KEY = 0x2F7, - BD_AUTH_TSIG_EXPIRED = 0x2F8, - BD_AUTH_TOO_MANY_REQUESTS = 0x2F9, - BD_AUTH_COUNTRY_BLOCKED_ERROR = 0x30D, - BD_NO_PROFILE_INFO_EXISTS = 0x320, - BD_PROFILE_COLLISION_FIELD_MISMATCH = 0x321, - BD_FRIENDSHIP_NOT_REQUSTED = 0x384, - BD_NOT_A_FRIEND = 0x385, - BD_SELF_FRIENDSHIP_NOT_ALLOWED = 0x387, - BD_FRIENDSHIP_EXISTS = 0x388, - BD_PENDING_FRIENDSHIP_EXISTS = 0x389, - BD_USERID_BANNED = 0x38A, - BD_FRIENDS_FULL = 0x38C, - BD_FRIENDS_NO_RICH_PRESENCE = 0x38D, - BD_RICH_PRESENCE_TOO_LARGE = 0x38E, - BD_FRIENDS_REMOTE_FULL = 0x38F, - BD_NO_FILE = 0x3E8, - BD_PERMISSION_DENIED = 0x3E9, - BD_FILESIZE_LIMIT_EXCEEDED = 0x3EA, - BD_FILENAME_MAX_LENGTH_EXCEEDED = 0x3EB, - BD_EXTERNAL_STORAGE_SERVICE_ERROR = 0x3EC, - BD_VALIDATION_ERROR = 0x3ED, - BD_VALIDATION_TOKEN_ERROR = 0x3EE, - BD_VALIDATION_TOKEN_GENERATION_ERROR = 0x3EF, - BD_VALIDATION_TOKEN_VERIFICATION_ERROR = 0x3F0, - BD_STORAGE_SERVER_UNREACHABLE = 0x3F1, - BD_CHANNEL_DOES_NOT_EXIST = 0x44D, - BD_CHANNEL_ALREADY_SUBSCRIBED = 0x44E, - BD_CHANNEL_NOT_SUBSCRIBED = 0x44F, - BD_CHANNEL_FULL = 0x450, - BD_CHANNEL_SUBSCRIPTIONS_FULL = 0x451, - BD_CHANNEL_NO_SELF_WHISPERING = 0x452, - BD_CHANNEL_ADMIN_REQUIRED = 0x453, - BD_CHANNEL_TARGET_NOT_SUBSCRIBED = 0x454, - BD_CHANNEL_REQUIRES_PASSWORD = 0x455, - BD_CHANNEL_TARGET_IS_SELF = 0x456, - BD_CHANNEL_PUBLIC_BAN_NOT_ALLOWED = 0x457, - BD_CHANNEL_USER_BANNED = 0x458, - BD_CHANNEL_PUBLIC_PASSWORD_NOT_ALLOWED = 0x459, - BD_CHANNEL_PUBLIC_KICK_NOT_ALLOWED = 0x45A, - BD_CHANNEL_MUTED = 0x45B, - BD_CONTENT_UNLOCK_UNKNOWN_ERROR = 0x514, - BD_UNLOCK_KEY_INVALID = 0x515, - BD_UNLOCK_KEY_ALREADY_USED_UP = 0x516, - BD_CONTENT_UNLOCK_LIMIT_REACHED = 0x517, - BD_DIFFERENT_HARDWARE_ID = 0x518, - BD_INVALID_CONTENT_OWNER = 0x519, - BD_CONTENT_UNLOCK_INVALID_USER = 0x51A, - BD_CONTENT_UNLOCK_INVALID_CATEGORY = 0x51B, - BD_KEY_ARCHIVE_INVALID_WRITE_TYPE = 0x5DC, - BD_KEY_ARCHIVE_EXCEEDED_MAX_IDS_PER_REQUEST = 0x5DD, - BD_BANDWIDTH_TEST_TRY_AGAIN = 0x712, - BD_BANDWIDTH_TEST_STILL_IN_PROGRESS = 0x713, - BD_BANDWIDTH_TEST_NOT_PROGRESS = 0x714, - BD_BANDWIDTH_TEST_SOCKET_ERROR = 0x715, - BD_INVALID_SESSION_NONCE = 0x76D, - BD_ARBITRATION_FAILURE = 0x76F, - BD_ARBITRATION_USER_NOT_REGISTERED = 0x771, - BD_ARBITRATION_NOT_CONFIGURED = 0x772, - BD_CONTENTSTREAMING_FILE_NOT_AVAILABLE = 0x7D0, - BD_CONTENTSTREAMING_STORAGE_SPACE_EXCEEDED = 0x7D1, - BD_CONTENTSTREAMING_NUM_FILES_EXCEEDED = 0x7D2, - BD_CONTENTSTREAMING_UPLOAD_BANDWIDTH_EXCEEDED = 0x7D3, - BD_CONTENTSTREAMING_FILENAME_MAX_LENGTH_EXCEEDED = 0x7D4, - BD_CONTENTSTREAMING_MAX_THUMB_DATA_SIZE_EXCEEDED = 0x7D5, - BD_CONTENTSTREAMING_DOWNLOAD_BANDWIDTH_EXCEEDED = 0x7D6, - BD_CONTENTSTREAMING_NOT_ENOUGH_DOWNLOAD_BUFFER_SPACE = 0x7D7, - BD_CONTENTSTREAMING_SERVER_NOT_CONFIGURED = 0x7D8, - BD_CONTENTSTREAMING_INVALID_APPLE_RECEIPT = 0x7DA, - BD_CONTENTSTREAMING_APPLE_STORE_NOT_AVAILABLE = 0x7DB, - BD_CONTENTSTREAMING_APPLE_RECEIPT_FILENAME_MISMATCH = 0x7DC, - BD_CONTENTSTREAMING_BATCH_DOWNLOAD_PARTIAL_FAILURE = 0x7DD, - BD_CONTENTSTREAMING_HTTP_ERROR = 0x7E4, - BD_CONTENTSTREAMING_FAILED_TO_START_HTTP = 0x7E5, - BD_CONTENTSTREAMING_LOCALE_INVALID = 0x7E6, - BD_CONTENTSTREAMING_LOCALE_MISSING = 0x7E7, - BD_VOTERANK_ERROR_EMPTY_RATING_SUBMISSION = 0x7EE, - BD_VOTERANK_ERROR_MAX_VOTES_EXCEEDED = 0x7EF, - BD_VOTERANK_ERROR_INVALID_RATING = 0x7F0, - BD_MAX_NUM_TAGS_EXCEEDED = 0x82A, - BD_TAGGED_COLLECTION_DOES_NOT_EXIST = 0x82B, - BD_EMPTY_TAG_ARRAY = 0x82C, - BD_SEARCH_SERVER_UNREACHABLE = 0x82F, - BD_ENTITY_ID_NOT_SPECIFIED = 0x830, - BD_INVALID_QUERY_ID = 0x834, - BD_NO_ENTRY_TO_UPDATE = 0x835, - BD_SESSION_INVITE_EXISTS = 0x836, - BD_INVALID_SESSION_ID = 0x837, - BD_ATTACHMENT_TOO_LARGE = 0x838, - BD_INVALID_FIELD_VALUE = 0x839, - BD_REQUEST_SESSION_NOT_SUPPORTED = 0x83A, - BD_INVALID_GROUP_ID = 0xAF0, - BD_MAIL_INVALID_MAIL_ID_ERROR = 0xB55, - BD_MAIL_PERMISSION_DENIED_ERROR = 0xB56, - BD_TWITCH_SERVICE_ERROR = 0xC1D, - BD_TWITCH_ACCOUNT_ALREADY_LINKED = 0xC1E, - BD_TWITCH_NO_LINKED_ACCOUNT = 0xC1F, - BD_TWITTER_AUTH_ATTEMPT_FAILED = 0xDAD, - BD_TWITTER_AUTH_TOKEN_INVALID = 0xDAE, - BD_TWITTER_UPDATE_LIMIT_REACHED = 0xDAF, - BD_TWITTER_UNAVAILABLE = 0xDB0, - BD_TWITTER_ERROR = 0xDB1, - BD_TWITTER_TIMED_OUT = 0xDB2, - BD_TWITTER_ACCOUNT_AMBIGUOUS = 0xDB4, - BD_TWITTER_MAXIMUM_ACCOUNTS_REACHED = 0xDB5, - BD_TWITTER_ACCOUNT_NOT_REGISTERED = 0xDB6, - BD_TWITTER_DUPLICATE_STATUS = 0xDB7, - BD_TWITTER_ACCOUNT_ALREADY_REGISTERED = 0xE1C, - BD_FACEBOOK_AUTH_ATTEMPT_FAILED = 0xE11, - BD_FACEBOOK_AUTH_TOKEN_INVALID = 0xE12, - BD_FACEBOOK_PHOTO_DOES_NOT_EXIST = 0xE13, - BD_FACEBOOK_PHOTO_INVALID = 0xE14, - BD_FACEBOOK_PHOTO_ALBUM_FULL = 0xE15, - BD_FACEBOOK_UNAVAILABLE = 0xE16, - BD_FACEBOOK_ERROR = 0xE17, - BD_FACEBOOK_TIMED_OUT = 0xE18, - BD_FACEBOOK_DISABLED_FOR_USER = 0xE19, - BD_FACEBOOK_ACCOUNT_AMBIGUOUS = 0xE1A, - BD_FACEBOOK_MAXIMUM_ACCOUNTS_REACHED = 0xE1B, - BD_FACEBOOK_INVALID_NUM_PICTURES_REQUESTED = 0xE1C, - BD_FACEBOOK_VIDEO_DOES_NOT_EXIST = 0xE1D, - BD_FACEBOOK_ACCOUNT_ALREADY_REGISTERED = 0xE1E, - BD_FACEBOOK_TARGET_OBJECT_ID_INVALID = 0xE1F, - BD_FACEBOOK_NO_SUCH_ACCOUNT = 0xE20, - BD_APNS_INVALID_PAYLOAD = 0xE74, - BD_APNS_INVALID_TOKEN_LENGTH_ERROR = 0xE76, - BD_MAX_CONSOLEID_LENGTH_EXCEEDED = 0xEE1, - BD_MAX_WHITELIST_LENGTH_EXCEEDED = 0xEE2, - BD_TOTP_CHALLENGE_FAILED = 0xEE3, - BD_NO_TOTP_ACCOUNT = 0xEE4, - BD_EXTENDED_AUTH_INFO_ERROR = 0xEE5, - BD_EXTENDED_AUTH_INFO_LENGTH_EXCEEDED = 0xEE6, - BD_EXTENDED_AUTH_INFO_EXPIRED = 0xEE7, - BD_WHITELIST_TRAILING_WHITE_SPACE = 0xEE8, - BD_WHITELIST_MESSAGE_LENGTH_LIMIT_EXCEEDED = 0xEE9, - BD_BNET_SESSION_TOKEN_ERROR = 0xEEA, - BD_BNET_SESSION_CLAIMS_ERROR = 0xEEB, - BD_TRIAL_STATUS_ERROR = 0xEEC, - BD_TRIAL_STATUS_INVALID_DATA_ERROR = 0xEED, - BD_TRIAL_STATUS_UNAVAILABLE_ERROR = 0xEEE, - BD_LOGON_SCHEDULE_ERROR = 0xEF6, - BD_LOGON_SCHEDULE_INVALID_TIME_RANGE_ERROR = 0xEF7, - BD_LOGON_SCHEDULE_INVALID_DAY_ERROR = 0xEF8, - BD_LOGON_SCHEDULE_INVALID_UPDATE_TYPE_ERROR = 0xEF9, - BD_LOGON_SCHEDULE_UPDATE_FAILED_ERROR = 0xEFA, - BD_USERGROUP_NAME_ALREADY_EXISTS = 0x1770, - BD_INVALID_USERGROUP_ID = 0x1771, - BD_USER_ALREADY_IN_USERGROUP = 0x1772, - BD_USER_NOT_IN_USERGROUP = 0x1773, - BD_INVALID_USERGROUP_MEMBER_TYPE = 0x1774, - BD_TOO_MANY_MEMBERS_REQUESTED = 0x1775, - BD_USERGROUP_NAME_TOO_SHORT = 0x1776, - BD_RICH_PRESENCE_DATA_TOO_LARGE = 0x1A90, - BD_RICH_PRESENCE_TOO_MANY_USERS = 0x1A91, - BD_RICH_PRESENCE_ERROR = 0x1A92, - BD_RICH_PRESENCE_FEATURE_DISABLED_ERROR = 0x1A93, - BD_RICH_PRESENCE_TOO_MANY_UPDATES = 0x1A94, - BD_RICH_PRESENCE_SUBSCRIPTIONS_ERROR = 0x1A9A, - BD_RICH_PRESENCE_TOO_MANY_SUBSCRIPTIONS_ERROR = 0x1A9B, - BD_PRESENCE_DATA_TOO_LARGE = 0x283C, - BD_PRESENCE_TOO_MANY_USERS = 0x283D, - BD_USER_LOGGED_IN_OTHER_TITLE = 0x283E, - BD_USER_NOT_LOGGED_IN = 0x283F, - BD_PRESENCE_INVALID_PLATFORM = 0x2840, - BD_SUBSCRIPTION_TOO_MANY_USERS = 0x1B58, - BD_SUBSCRIPTION_TICKET_PARSE_ERROR = 0x1B59, - BD_CODO_ID_INVALID_DATA = 0x1BBC, - BD_INVALID_MESSAGE_FORMAT = 0x1BBD, - BD_TLOG_TOO_MANY_MESSAGES = 0x1BBE, - BD_CODO_ID_NOT_IN_WHITELIST = 0x1BBF, - BD_TLOG_MESSAGE_TRANSFORMATION_ERROR = 0x1BC0, - BD_REWARDS_NOT_ENABLED = 0x1BC1, - BD_REWARDS_INVALID_RULE = 0x1BC2, - BD_REDEEM_NAME_CHANGE_INTERNAL_ERROR = 0x1BC3, - BD_REDEEM_NAME_CHANGE_INVALID_ITEM = 0x1BC4, - BD_REDEEM_NAME_CHANGE_UNAVAILABLE_ITEM = 0x1BC5, - BD_REDEEM_NAME_CHANGE_IN_PROGRESS = 0x1BC6, - BD_REDEEM_NAME_CHANGE_INACTIVE_REQUEST = 0x1BC7, - BD_REDEEM_NAME_CHANGE_INVALID_NAME = 0x1BC8, - BD_REDEEM_NAME_CHANGE_SAME_NAME = 0x1BC9, - BD_REDEEM_NAME_CHANGE_DUPLICATE_NAME = 0x1BCA, - BD_TENCENT_NO_APPLICABLE_REWARDS = 0x1BCB, - BD_TLOG_MESSAGE_DECOMPRESSION_ERROR = 0x1BCC, - BD_REDEEM_TEAM_NAME_CHANGE_INTERNAL_ERROR = 0x1BCD, - BD_REDEEM_TEAM_NAME_CHANGE_INVALID_ITEM = 0x1BCE, - BD_REDEEM_TEAM_NAME_CHANGE_UNAVAILABLE_ITEM = 0x1BCF, - BD_TENCENT_REWARD_NOT_FOUND = 0x1BD0, - BD_MARKETPLACE_ERROR = 0x1F40, - BD_MARKETPLACE_RESOURCE_NOT_FOUND = 0x1F41, - BD_MARKETPLACE_INVALID_CURRENCY = 0x1F42, - BD_MARKETPLACE_INVALID_PARAMETER = 0x1F43, - BD_MARKETPLACE_RESOURCE_CONFLICT = 0x1F44, - BD_MARKETPLACE_STORAGE_ERROR = 0x1F45, - BD_MARKETPLACE_INTEGRITY_ERROR = 0x1F46, - BD_MARKETPLACE_INSUFFICIENT_FUNDS_ERROR = 0x1F47, - BD_MARKETPLACE_MMP_SERVICE_ERROR = 0x1F48, - BD_MARKETPLACE_PRECONDITION_REQUIRED = 0x1F49, - BD_MARKETPLACE_ITEM_MULTIPLE_PURCHASE_ERROR = 0x1F4A, - BD_MARKETPLACE_MISSING_REQUIRED_ENTITLEMENT = 0x1F4B, - BD_MARKETPLACE_VALIDATION_ERROR = 0x1F4C, - BD_MARKETPLACE_TENCENT_PAYMENT_ERROR = 0x1F4D, - BD_MARKETPLACE_SKU_NOT_COUPON_ENABLED_ERROR = 0x1F4E, - BD_MARKETPLACE_TRANSACTION_ERROR = 0x1F4F, - BD_MARKETPLACE_RECEIPT_USED = 0x1F50, - BD_MARKETPLACE_INVALID_RECEIPT = 0x1F51, - BD_MARKETPLACE_STEAM_REQUEST_FAILED = 0x1F52, - BD_MARKETPLACE_STEAM_NOT_APPROVED = 0x1F53, - BD_MARKETPLACE_PRODUCT_NOT_FOUND_IN_FP = 0x1F54, - BD_MARKETPLACE_STEAM_ALREADY_FINALIZED = 0x1F54, - BD_MARKETPLACE_STEAM_BAD_ORDER_ID = 0x1F55, - BD_MARKETPLACE_STEAM_CURRENCY_ERROR = 0x1F56, - BD_MARKETPLACE_PSN_INVALID_NP_TITLE_ID = 0x1F65, - BD_MARKETPLACE_PSN_INVALID_NP_AUTH_CODE = 0x1F57, - BD_MARKETPLACE_PSN_INVALID_ENTITLEMENT_ID = 0x1F58, - BD_MARKETPLACE_PSN_ENTITLEMENT_NOT_PRESENT = 0x1F59, - BD_MARKETPLACE_PSN_INTERNAL_ERROR = 0x1F5A, - BD_MARKETPLACE_XB1_UNAUTHORISED_ERROR = 0x1F5B, - BD_MARKETPLACE_XB1_REQUEST_REJECTED_ERROR = 0x1F5C, - BD_MARKETPLACE_XB1_INSUFFICIENT_QUANTITY_ERROR = 0x1F5D, - BD_MARKETPLACE_XB1_BAD_DELEGATION_TOKEN_ERROR = 0x1F5E, - BD_MARKETPLACE_XB1_REQUEST_FAILED_ERROR = 0x1F5F, - BD_MARKETPLACE_X360_REQUEST_FAILED = 0x1F60, - BD_MARKETPLACE_X360_ITEM_NOT_PRESENT = 0x1F61, - BD_MARKETPLACE_X360_CONNECTION_ERROR = 0x1F62, - BD_MARKETPLACE_USAGE_TIME_ERROR = 0x1F63, - BD_MARKETPLACE_DURABLE_ALREADY_GRANTED = 0x1F64, - BD_MARKETPLACE_FIRST_PARTY_DURABLE_EXISTS = 0x1F66, - BD_MARKETPLACE_ITEM_LIMIT_REACHED = 0x1F67, - BD_MARKETPLACE_OVER_ITEM_MAX_QUANTITY_ERROR = 0x1F69, - BD_MARKETPLACE_INSUFFICIENT_ITEM_QUANTITY = 0x1F6A, - BD_MARKETPLACE_ENTITY_NOT_ENABLED = 0x1F6B, - BD_MARKETPLACE_MISCONFIGURED = 0x1F6C, - BD_MARKETPLACE_COUPON_NOT_CLAIMED_OR_FOUND = 0x1F6D, - BD_MARKETPLACE_INVALID_DISCOUNT = 0x1F6E, - BD_MARKETPLACE_INVALID_STORE_VERSION = 0x1F6F, - BD_MARKETPLACE_SKU_SOLD_OUT = 0x1F72, - BD_MARKETPLACE_WIIU_AUTH_FAILED = 0x1F73, - BD_MARKETPLACE_WIIU_INVALID_PARAMETER = 0x1F74, - BD_MARKETPLACE_WIIU_TAX_LOCATION_NOT_SPECIFIED = 0x1F75, - BD_MARKETPLACE_WIIU_ACCOUNT_ERROR = 0x1F76, - BD_MARKETPLACE_WIIU_PURCHASING_ERROR = 0x1F77, - BD_MARKETPLACE_WIIU_BALANCE_ERROR = 0x1F78, - BD_MARKETPLACE_WIIU_SERVER_ERROR = 0x1F79, - BD_MARKETPLACE_WIIU_REQUEST_FAILED = 0x1F7A, - BD_MARKETPLACE_WIIU_SERVER_MAINTENANCE = 0x1F7B, - BD_MARKETPLACE_WIIU_SERVICE_TERMINATED = 0x1F7C, - BD_MARKETPLACE_WIIU_ITEM_NOT_PRESENT = 0x1F7D, - BD_MARKETPLACE_WIIU_TAX_LOCATION_INVALID = 0x1F7E, - BD_MARKETPLACE_XB1_DURABLE_NOT_PRESENT = 0x1F7F, - BD_MARKETPLACE_EXPECTED_PRICE_MISMATCH = 0x1F80, - BD_MARKETPLACE_ITEM_NOT_CONSUMABLE = 0x1F81, - BD_MARKETPLACE_IDEMPOTENT_REQUEST_COLLISION = 0x1F82, - BD_MARKETPLACE_COUPON_NOT_STARTED = 0x1F83, - BD_MARKETPLACE_MULTIPLE_OPERATIONS_ERROR = 0x1F84, - BD_MARKETPLACE_MISSING_PAYMENT_PROVIDER_CURRENCY_ERROR = 0x1F85, - BD_MARKETPLACE_WIIU_LANGUAGE_NOT_SUPPORTED = 0x1F86, - BD_MARKETPLACE_PAWN_CHOICE_EXPECTED = 0x1F87, - BD_MARKETPLACE_PAWN_CHOICE_UNSUPPORTED = 0x1F88, - BD_MARKETPLACE_INVALID_REWARD_ERROR = 0x1F89, - BD_MARKETPLACE_MISSING_REQUIRED_ITEMS_ERROR = 0x1F8A, - BD_MARKETPLACE_MISSING_REQUIRED_CURRENCY_BALANCES_ERROR = 0x1F8B, - BD_MARKETPLACE_MISSING_REQUIRED_ENTITLEMENTS_ERROR = 0x1F8C, - BD_MARKETPLACE_UNREACHABLE_ERROR = 0x1F8D, - BD_MARKETPLACE_ITEM_ALREADY_PERMANENTLY_OWNED = 0x1F97, - BD_MARKETPLACE_EXCEEDED_ITEM_MAX_USAGE_TIME = 0x1F98, - BD_MARKETPLACE_BNET_REQUEST_FAILED = 0x1F99, - BD_MARKETPLACE_WEGAME_SERVICE_ERROR = 0x1F9A, - BD_MARKETPLACE_WEGAME_REQUEST_FAILED = 0x1F9B, - BD_MARKETPLACE_SWITCH_SERVICE_ERROR = 0x1F9C, - BD_MARKETPLACE_SWITCH_REQUEST_FAILED = 0x1F9D, - BD_COMMS_SERVICE_NOT_AVAILABLE_ERROR = 0x28A0, - BD_COMMS_CLIENT_ERROR = 0x28A1, - BD_LEAGUE_INVALID_TEAM_SIZE = 0x1FA4, - BD_LEAGUE_INVALID_TEAM = 0x1FA5, - BD_LEAGUE_INVALID_SUBDIVISION = 0x1FA6, - BD_LEAGUE_INVALID_LEAGUE = 0x1FA7, - BD_LEAGUE_TOO_MANY_RESULTS_REQUESTED = 0x1FA8, - BD_LEAGUE_METADATA_TOO_LARGE = 0x1FA9, - BD_LEAGUE_TEAM_ICON_TOO_LARGE = 0x1FAA, - BD_LEAGUE_TEAM_NAME_TOO_LONG = 0x1FAB, - BD_LEAGUE_ARRAY_SIZE_MISMATCH = 0x1FAC, - BD_LEAGUE_SUBDIVISION_MISMATCH = 0x2008, - BD_LEAGUE_INVALID_WRITE_TYPE = 0x2009, - BD_LEAGUE_INVALID_STATS_DATA = 0x200A, - BD_LEAGUE_SUBDIVISION_UNRANKED = 0x200B, - BD_LEAGUE_CROSS_TEAM_STATS_WRITE_PREVENTED = 0x200C, - BD_LEAGUE_INVALID_STATS_SEASON = 0x200D, - BD_CONNECTION_COUNTER_ERROR = 0x20D0, - BD_LINKED_ACCOUNTS_INVALID_CONTEXT = 0x2198, - BD_LINKED_ACCOUNTS_INVALID_PLATFORM = 0x2199, - BD_LINKED_ACCOUNTS_LINKED_ACCOUNTS_FETCH_ERROR = 0x219A, - BD_LINKED_ACCOUNTS_INVALID_ACCOUNT = 0x219B, - BD_LINKED_ACCOUNTS_INVALID_TOKEN = 0x219C, - BD_QUEUED_MATCHING_ERROR = 0x2260, - BD_QUEUED_MATCHING_NOT_FOUND = 0x2261, - BD_QUEUED_MATCHING_WRONG_QUEUE_TYPE = 0x2262, - BD_QUEUED_MATCHING_INVALID_QUEUE_ID = 0x2263, - BD_LOGIN_QUEUE_NO_ERROR = 0x22C4, - BD_LOGIN_QUEUE_ENVIRONMENT_ERROR = 0x22C5, - BD_LOGIN_QUEUE_UNKNOWN_ERROR = 0x22C6, - BD_LOGIN_QUEUE_BAD_REQUEST = 0x22C7, - BD_LOGIN_QUEUE_SERVER_UNAVAILABLE_ERROR = 0x22C8, - BD_LOGIN_QUEUE_SSL_CERTIFICATE_ERROR = 0x22C9, - BD_LOGIN_QUEUE_DNS_RESOLUTION_ERROR = 0x22CA, - BD_LOGIN_QUEUE_JSON_FORMAT_ERROR = 0x22CB, - BD_LOGIN_QUEUE_TICKET_PARSE_ERROR = 0x22CC, - BD_LOGIN_QUEUE_INVALID_TITLE_ID = 0x22CD, - BD_LOGIN_QUEUE_INTERNAL_ERROR = 0x22CE, - BD_LOGIN_QUEUE_CLOSED_QUEUE = 0x22CF, - BD_LOGIN_QUEUE_INVALID_QUEUE_ID = 0x22D0, - BD_LOGIN_QUEUE_NOT_FOUND = 0x22D1, - BD_LOGIN_QUEUE_REPLY_CONTENT_ERROR = 0x22D2, - BD_LOGIN_QUEUE_TOO_MANY_REQUESTS = 0x22D3, - BD_VOTING_MAX_VALUE_EXCEEDED = 0x2328, - BD_VOTING_INVALID_GROUP_NAME = 0x2329, - BD_VOTING_IN_PROGRESS = 0x232A, - BD_VOTING_NON_EXISTENT_GROUP = 0x232B, - BD_USER_GENERATED_STATS_ERROR = 0x238C, - BD_INVALID_ACCESS_TO_USER_GENERATED_LB_ERROR = 0x238D, - BD_INVALID_ACCESS_TO_NON_USER_GENERATED_LB_ERROR = 0x238E, - BD_SUB_LEADERBOARD_ID_MISMATCH_ERROR = 0x238D, - BD_PUBLISHER_VARIABLES_SERVICE_ERROR = 0x251C, - BD_PUBLISHER_VARIABLES_NOT_FOUND = 0x251D, - BD_PUBLISHER_VARIABLES_INVALID_NAMESPACE = 0x251E, - BD_PUBLISHER_VARIABLES_INVALID_GROUP_ID = 0x251F, - BD_GMSG_INVALID_CATEGORY_ID = 0x27D8, - BD_GMSG_CATEGORY_MEMBERSHIPS_LIMIT = 0x27D9, - BD_GMSG_NONMEMBER_POST_DISALLOWED = 0x27DA, - BD_GMSG_CATEGORY_DISALLOWS_CLIENT_TYPE = 0x27DB, - BD_GMSG_PAYLOAD_TOO_BIG = 0x27DC, - BD_GMSG_MEMBER_POST_DISALLOWED = 0x27DD, - BD_GMSG_OVERLOADED = 0x27DE, - BD_GMSG_USER_PERCATEGORY_POST_RATE_EXCEEDED = 0x27DF, - BD_GMSG_USER_GLOBAL_POST_RATE_EXCEEDED = 0x27E0, - BD_GMSG_GROUP_POST_RATE_EXCEEDED = 0x27E1, - BD_GMSG_GROUP_LIMIT_REACHED = 0x27E2, - BD_GMSG_GROUP_MEMBERSHIP_LIMIT_REACHED = 0x27E3, - BD_SERVER_INVENTORY_SERVER_ERROR = 0x2904, - BD_SERVER_INVENTORY_SERVER_ALLOCATED = 0x2905, - BD_SERVER_INVENTORY_ENTRY_DOES_NOT_EXIST = 0x2906, - BD_SERVER_INVENTORY_DATA_LAYER_ERROR = 0x2907, - BD_SERVER_INVENTORY_NOT_ENABLED = 0x2908, - BD_SERVER_INVENTORY_NO_SERVER_ALLOCATED = 0x2909, - BD_SERVER_INVENTORY_MAX_REGISTRATION_LENGTH_EXCEEDED = 0x290A, - BD_SERVER_INVENTORY_REGISTRATION_INVALID_CHARACTERS = 0x290B, - BD_SERVER_INVENTORY_INVALID_PARAMETER = 0x290D, - BD_CODO_CLAN_NO_TEMP_RESERVATION = 0x2AF8, - BD_CODO_CLAN_TOO_MANY_MEMBERSHIPS = 0x2AF9, - BD_CODO_CLAN_UNEXPECTED_FOUNDATION_STATE = 0x2AFA, - BD_CODO_CLAN_UNABLE_TO_FIND_NAME = 0x2AFB, - BD_CODO_CLAN_INTERNAL_MARKETPLACE_ERROR = 0x2AFC, - BD_CODO_CLAN_INSUFFICIENT_FUNDS = 0x2AFD, - BD_CODO_CLAN_UNSATISFIED_PRECONDITION = 0x2AFE, - BD_CODO_CLAN_NO_CLAN = 0x2AFF, - BD_CODO_CLAN_NO_CHANNEL = 0x2B00, - BD_CODO_CLAN_NOT_A_CLAN_MEMBER = 0x2B01, - BD_CODO_CLAN_DISBAND_TOO_MANY_MEMBERS = 0x2B04, - BD_CODO_CLAN_DISBAND_TOO_SOON = 0x2B05, - BD_NO_SUCH_ROLE = 0x2EE0, - BD_NO_SUCH_PERMISSION = 0x2EE1, - BD_BAD_ROLE_SPECIFICATION = 0x2EE2, - BD_BAD_PERMISSION_SPECIFICATION = 0x2EE3, - BD_REDEEMABLE_CODE_REGISTRY_SERVICE_GENERIC_ERROR = 0x300D, - BD_REDEEMABLE_CODE_MARKETPLACE_SERVICE_GENERIC_ERROR = 0x300E, - BAD_PAYLOAD_ERROR = 0x300F, - INVALID_PAYLOAD_SIGNATURE_ERROR = 0x3010, - GENERATE_PAYLOAD_SIGNATURE_ERROR = 0x3011, - BD_REDEEMABLE_CODE_EXPIRED_CLIENT_TRANSACTION_ID = 0x3012, - BD_REDEEMABLE_CODE_NOT_FOUND = 0x3071, - BD_REDEEMABLE_CODE_USE_LIMIT_EXCEEDED = 0x3072, - BD_REDEEMABLE_CODE_ALREADY_USED_BY_USER = 0x3073, - BD_REDEEMABLE_CODE_EXPIRED = 0x3074, - INVALID_CLIENT_TRANSACTION_ID = 0x3075, - BD_ACHIEVEMENTS_ENGINE_CLIENT_ERROR = 0x30D5, - BD_ACHIEVEMENTS_ENGINE_SERVER_ERROR = 0x30D6, - BD_ACHIEVEMENTS_ENGINE_INSUFFICIENT_BALANCE_ERROR = 0x30D7, - BD_ACHIEVEMENTS_ENGINE_ACTIVATION_NOT_SCHEDULED_ERROR = 0x30D8, - BD_ACHIEVEMENTS_ENGINE_ACTIVE_LIMIT_EXCEEDED = 0x30D9, - BD_ACHIEVEMENTS_ENGINE_DUPLICATE_REQUEST_ID = 0x30DA, - BD_ACHIEVEMENTS_ENGINE_MULTI_STATUS = 0x30DB, - BD_MW4_BACKEND_SERVICE_NOT_AVAILABLE = 0x4CF5, - BD_MW4_BACKEND_RESOURCE_NOT_FOUND = 0x4CF6, - BD_MW4_BACKEND_BAD_REQUEST = 0x4CF7, - BD_CLANS_PROPOSAL_DOES_NOT_EXIST = 0x4D08, - BD_CLANS_GROUP_NAME_NOT_UNIQUE = 0x4D09, - BD_CLANS_MAX_GROUP_MEMBERSHIPS_REACHED = 0x4D0A, - BD_CLANS_MAX_GROUP_OWNERSHIPS_REACHED = 0x4D0B, - BD_CLANS_GROUP_DOES_NOT_EXIST = 0x4D0C, - BD_CLANS_GROUP_PERMISSION_DENIED = 0x4D0D, - BD_CLANS_VULGAR_GROUP_NAME = 0x4D0E, - BD_CLANS_GROUP_NAME_TOO_SHORT = 0x4D0F, - BD_CLANS_GROUP_ATTACHMENT_LIMIT_EXCEEDED = 0x4D10, - BD_CLANS_GROUP_FULL = 0x4D11, - BD_CLANS_MAX_OUTGOING_PROPOSALS_REACHED = 0x4D12, - BD_CLANS_MEMBER_BAN_EXISTS = 0x4D13, - BD_CLANS_GROUP_KIND_NOT_CONFIGURED = 0x4D14, - BD_CLANS_INVALID_ROOT_KIND = 0x4D15, - BD_CLANS_GROUP_FILE_DOES_NOT_EXIST = 0x4D16, - BD_CLANS_GROUP_FILE_COLLISION_FIELD_MISMATCH = 0x4D17, - BD_CLANS_BATCH_REQUEST_LIMIT_EXCEEDED = 0x4D18, - BD_CLANS_INVALID_PAGE_TOKEN = 0x4D19, - BD_CLANS_INVALID_GROUP_FILTER = 0x4D1A, - BD_CLANS_GROUP_TAG_NOT_UNIQUE = 0x4D1B, - BD_CLANS_GROUP_TAG_TOO_SHORT = 0x4D1C, - BD_CLANS_VULGAR_GROUP_TAG = 0x4D1D, - BD_REWARD_NO_REWARD_TOKEN_FOUND = 0x364C, - BD_REWARD_INVALID_ACHIEVEMENT_IDS_SPECIFIED = 0x364D, - BD_REWARD_CLIENT_ACHIEVEMENTS_NOT_ENABLED = 0x364E, - BD_REWARD_EVENTS_ERROR = 0x364F, - BD_REWARD_EVENTS_NOT_ENABLED = 0x3650, - BD_REWARD_EVENTS_RULES_ERROR = 0x3651, - BD_REWARD_EVENTS_DATA_ERROR = 0x3652, - BD_REWARD_EVENTS_TRANSACTION_ERROR = 0x3653, - BD_REWARD_CONFIGURATION_ERROR = 0x3654, - BD_REWARD_TOO_MANY_ACTIVE_CHALLENGES = 0x3655, - BD_REWARD_EVENTS_TRANSACTION_EXPIRED = 0x3656, - BD_REWARD_CHALLENGE_NOT_SCHEDULED = 0x3657, - BD_REWARD_CHALLENGE_ALREADY_COMPLETED = 0x3658, - BD_REWARD_CODO_TOO_MANY_REROLLS = 0x367E, - BD_REWARD_CODO_BAD_REROLL_PARAMS = 0x367F, - BD_UMBRELLA_PROVIDER_SERVER_ERROR = 0x36B0, - BD_UMBRELLA_PROVIDER_UNSUPPORTED_OPERATION = 0x36B1, - BD_UMBRELLA_ERROR = 0x36B2, - BD_UMBRELLA_INVALID_TITLE_ID = 0x36B3, - BD_UMBRELLA_INVALID_QUERY_STRING = 0x36B4, - BD_UMBRELLA_INVALID_DATA = 0x36B5, - BD_UMBRELLA_INVALID_CLIENT = 0x36B6, - BD_UMBRELLA_PROVIDER_NOT_SUPPORTED = 0x36B7, - BD_UMBRELLA_UNAUTHORIZED_ACCESS = 0x36B8, - BD_UMBRELLA_INVALID_TOKEN = 0x36B8, - BD_UMBRELLA_EXPIRED_PROVIDER_REFRESH_TOKEN = 0x36B9, - BD_UMBRELLA_NO_VALID_PROVIDER_TOKENS = 0x36BA, - BD_UMBRELLA_INVALID_LSG_TICKET = 0x36BB, - BD_UMBRELLA_TOKEN_NOT_FOUND = 0x36BC, - BD_UMBRELLA_USER_NOT_FOUND = 0x36BD, - BD_UMBRELLA_ACCOUNT_NOT_FOUND = 0x36BE, - BD_UMBRELLA_MERGE_CONFLICT = 0x36BF, - BD_UMBRELLA_PROVIDER_INACCESSIBLE = 0x36C0, - BD_UMBRELLA_MISSING_FIELD = 0x36C1, - BD_UMBRELLA_FIELD_INVALID = 0x36C2, - BD_UMBRELLA_PLAYER_BAN = 0x36C3, - BD_UMBRELLA_EXPIRED_TOKEN = 0x3719, - BD_UNO_ERROR = 0x3714, - BD_UNO_INVALID_DATA = 0x3715, - BD_UNO_INVALID_DATE_OF_BIRTH = 0x3716, - BD_UNO_UNAUTHORIZED_ACCESS = 0x3717, - BD_UNO_INVALID_TOKEN = 0x3718, - BD_UNO_EXPIRED_TOKEN = 0x3719, - BD_UNO_EMAIL_NOT_VERIFIED = 0x371A, - BD_UNO_TOS_VERSION_NOT_FOUND = 0x371B, - BD_UNO_TOS_CONTENT_NOT_FOUND = 0x371C, - BD_UNO_TOS_ALREADY_ACCEPTED = 0x371D, - BD_UNO_MISSING_FIELD = 0x371E, - BD_UNO_DNS_RESOLUTION_FAILED = 0x371F, - BD_UNO_FIELD_INVALID = 0x3720, - BD_UNO_INVALID_USERNAME = 0x3721, - BD_UNO_INVALID_PASSWORD = 0x3722, - BD_UNO_EMAIL_ALREADY_EXISTS = 0x3723, - BD_UNO_DESERIALIZATION_FAILURE = 0x3724, - BD_UMBRELLA_DESERIALIZATION_FAILURE = 0x3725, - BD_UNO_NO_RENAME_TOKENS = 0x3726, - BD_UNO_MARKETPLACE_ERROR = 0x3727, - BD_SI_ERROR = 0x3777, - BD_MATCH_SCHEDULER_ERROR = 0x3A98, - BD_MATCH_SCHEDULER_SCHEDULED_MATCH_DOES_NOT_EXIST = 0x3A99, - BD_MATCH_SCHEDULER_MAXIMUM_EVENTS_PER_MATCH_REACHED = 0x3A9A, - BD_MLG_ERROR = 0x3AFC, - BD_MLG_REMOTE_ERROR = 0x3AFD, - BD_CODO_AUTO_JOIN_LEVEL_NOT_MET = 0x4A9D, - BD_CODO_NOT_PERMITTED_TO_UPDATE_PROFILE_FIELD = 0x4A9E, - BD_CODO_INVALID_PROFILE_VALUE = 0x4A9F, - BD_CODO_PROFILE_COLUMN_DOES_NOT_EXIST = 0x4AA0, - BD_CODO_LOUDSPEAKER_INVALID_TOKEN = 0x4AA1, - BD_CODO_LOUDSPEAKER_INVALID_CATEGORY = 0x4AA2, - BD_CODO_RESETTABLE_STATS_NOT_CONFIGURED = 0x4AA3, - BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_INVALID_ITEM = 0x4AAB, - BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_INTERNAL_ERROR = 0x4AAC, - BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_UNAVAILABLE_ITEM = 0x4AAD, - BD_PLAYER_VOTE_REJECTED = 0x5EED, - BD_AMM_NOT_LOBBY_HOST = 0x38A4, - BD_AMM_NOT_PARTY_HOST = 0x38A5, - BD_AMM_NOT_LOBBY_MEMBER = 0x38A6, - BD_AMM_INVALID_MATCHMAKING_ID = 0x38A7, - BD_AMM_INVALID_LOBBY_ID = 0x38A8, - BD_AMM_SEARCH_IN_PROGRESS = 0x38A9, - BD_AMM_USER_ALREADY_MATCHMAKING = 0x38AA, - BD_AMM_INVALID_TOKEN = 0x38AB, - BD_AMM_INVALID_DOCUMENT_FORMAT = 0x38AC, - BD_AMM_PLAYER_INFO_UNAVAILABLE = 0x38AD, - BD_AMM_REQUEST_DESERIALIZATION_FAILED = 0x38AE, - BD_AMM_INVALID_QOS_TRANSACTION_ID = 0x38AF, - BD_AMM_INVALID_USER_ID_IN_GUEST_SLOTS = 0x38B0, - BD_AMM_NO_BUILD_NAME_SET = 0x38B1, - BD_AMM_LOBBY_MERGED = 0x38B2, - BD_AMM_BACKOFF_REQUESTED = 0x38B3, - BD_AMM_PLAYER_INFO_INCOMPATIBLE_BUILDS = 0x38B4, - BD_AMM_INVALID_DC_QOS_ADDRESS = 0x38B5, - BD_AMM_INVALID_PLAYER_INFO_DC_QOS_SETTINGS = 0x38B6, - BD_AMM_INVALID_PLAYER_INFO_LISTEN_SERVER_SETTINGS = 0x38B7, - BD_AMM_MIGRATION_NOT_PERMITTED = 0x38B8, - BD_AMM_INVALID_LOBBY_MEMBER_STATUS_TRANSITION = 0x38B9, - BD_AMM_LOBBY_MEMBER_STATUS_REPORTED_FOR_UNKNOWN_PLAYER = 0x38BA, - BD_AMM_DEDI_SHUTDOWN_NOT_PERMITTED = 0x38BB, - BD_AMM_INVALID_USER_ID_IN_PLAYER_RULESET_PAYLOADS = 0x38BC, - BD_AMM_INVALID_MAP_PACK = 0x38BD, - BD_AMM_TOURNAMENT_PLAYER_NOT_IN_TOURNAMENT = 0x38BE, - BD_AMM_TOURNAMENT_DUPLICATE_ACK_JOIN = 0x38BF, - BD_AMM_TOURNAMENT_INVALID_TOURNAMENT_STATUS = 0x38C0, - BD_AMM_TOURNAMENT_INVALID_TOURNAMENT_ID = 0x38C1, - BD_AMM_TOURNAMENT_LOBBY_NOT_IN_ROUND = 0x38C2, - BD_AMM_TOURNAMENT_TEAM_NOT_IN_MATCH = 0x38C3, - BD_AMM_TOURNAMENT_PLAYER_NOT_IN_ROUND = 0x38C4, - BD_AMM_TOURNAMENT_INVALID_LOBBY_DOC = 0x38C5, - BD_AMM_TOURNAMENT_ELIMINATED_PLAYER = 0x38C6, - BD_AMM_TOURNAMENT_LOBBY_ID_NOT_IN_TOURNAMENT = 0x38C7, - BD_AMM_TOURNAMENT_MATCH_ALREADY_HAS_RESULT = 0x38C8, - BD_AMM_TOURNAMENT_MATCH_IN_PROGRESS = 0x38C9, - BD_AMM_TOURNAMENT_FULL = 0x38CA, - BD_CROSS_PLATFORM_FRIENDS_UNKNOWN_ERROR = 0x3E80, - BD_CROSS_PLATFORM_FRIENDS_SELF_FRIENDSHIP_NOT_ALLOWED = 0x3E81, - BD_CROSS_PLATFORM_FRIENDS_CALLER_FRIENDS_LIST_FULL = 0x3E82, - BD_CROSS_PLATFORM_FRIENDS_OTHER_PLAYER_FRIENDS_LIST_FULL = 0x3E83, - BD_CROSS_PLATFORM_FRIENDS_CALLER_OUTGOING_FRIEND_REQUESTS_FULL = 0x3E84, - BD_CROSS_PLATFORM_FRIENDS_OTHER_PLAYER_INCOMING_FRIEND_REQUESTS_FULL = 0x3E85, - BD_CROSS_PLATFORM_FRIENDS_INVALID_PAGE_TOKEN = 0x3E86, - BD_CROSS_PLATFORM_FRIENDS_FRIENDSHIP_ALREADY_EXISTS = 0x3E87, - BD_CROSS_PLATFORM_FRIENDS_INVITE_ALREADY_EXISTS = 0x3E88, - BD_CROSS_PLATFORM_FRIENDS_BACKEND_UNAVAILABLE_ERROR = 0x3E89, - BD_CROSS_PLATFORM_FRIENDS_INVITED_USER_IS_BLOCKED = 0x3E8A, - BD_CROSS_PLATFORM_FRIENDS_CALLER_IS_BLOCKED = 0x3E8B, - BD_CROSS_PLATFORM_FRIENDS_BLOCKED_USER_LIST_FULL = 0x3E8C, - BD_CROSS_PLATFORM_FRIENDS_USER_IS_ALREADY_BLOCKED = 0x3E8D, - BD_CROSS_PLATFORM_USERLISTS_UNKNOWN_ERROR = 0x3F48, - BD_CROSS_PLATFORM_USERLISTS_LIST_DOES_NOT_EXIST = 0x3F49, - BD_CROSS_PLATFORM_USERLISTS_LIST_ALREADY_EXISTS = 0x3F4A, - BD_CROSS_PLATFORM_USERLISTS_INVALID_PAGE_TOKEN = 0x3F4B, - BD_CROSS_PLATFORM_PRESENCE_UNKNOWN_ERROR = 0x4010, - BD_CROSS_PLATFORM_PRESENCE_INVALID_PAGE_TOKEN = 0x4011, - BD_CROSS_PLATFORM_PRESENCE_SUBSCRIPTIONS_LIST_FULL = 0x4012, - BD_CROSS_PLATFORM_PRESENCE_SUBSCRIBERS_LIST_FULL = 0x4013, - BD_CROSS_PLATFORM_PRESENCE_INVALID_MAXIMUM_PAGE_SIZE = 0x4014, - BD_CROSS_PLATFORM_PRESENCE_EXCEEDED_MAX_USERS_IN_REQUEST = 0x4015, - BD_CROSS_TITLE_LOCALIZED_STRINGS_UNKNOWN_ERROR = 0x4074, - BD_CROSS_TITLE_LOCALIZED_STRINGS_STRING_SET_DOES_NOT_EXIST_ERROR = 0x4075, - BD_CROSS_TITLE_LOCALIZED_STRINGS_INVALID_FORMAT_STRING_ERROR = 0x4076, - BD_CROSS_TITLE_LOCALIZED_STRINGS_INVALID_STRING_REF_ERROR = 0x4077, - BD_CROSS_TITLE_LOCALIZED_STRINGS_NOT_ENOUGH_STRING_REFS_ERROR = 0x4078, - BD_OBJECTSTORE_PROXY_OBJECT_NOT_FOUND = 0x4E20, - BD_OBJECTSTORE_PROXY_INVALID_ACCESS = 0x4E21, - BD_OBJECTSTORE_PROXY_SERVICE_UNAVAILABLE = 0x4E22, - BD_OBJECTSTORE_PROXY_OBJECT_TOO_BIG_FOR_REMAINING_SIZE_WINDOW_SPACE_ERROR = 0x4E23, - BD_OBJECTSTORE_PROXY_OBJECT_TOO_BIG_FOR_SIZE_WINDOW_ERROR = 0x4E24, - BD_OBJECTSTORE_HTTP_ERROR = 0x4E84, - BD_OBJECTSTORE_FAILED_TO_START_HTTP = 0x4E85, - BD_AB_TESTING_OBJECT_NOT_FOUND = 0x4BC8, - BD_AB_TESTING_INVALID_ACCESS = 0x4BC9, - BD_AB_TESTING_SERVICE_UNAVAILABLE = 0x4BCA, - BD_REST_ERROR_TEMPORARY_REDIRECT = 0x639C, - BD_REST_ERROR_PERMANENT_REDIRECT = 0x639D, - BD_REST_ERROR_NOT_MODIFIED = 0x639E, - BD_REST_ERROR_BAD_REQUEST = 0x639F, - BD_REST_ERROR_UNAUTHORIZED = 0x63A0, - BD_REST_ERROR_FORBIDDEN = 0x63A1, - BD_REST_ERROR_NOT_FOUND = 0x63A2, - BD_REST_ERROR_METHOD_NOT_ALLOWED = 0x63A3, - BD_REST_ERROR_NOT_ACCEPTABLE = 0x63A4, - BD_REST_ERROR_REQUEST_TIMEOUT = 0x63A5, - BD_REST_ERROR_CONFLICT = 0x63A6, - BD_REST_ERROR_PRECONDITION_FAILED = 0x63A7, - BD_REST_ERROR_PAYLOAD_TOO_LARGE = 0x63A8, - BD_REST_ERROR_REQUEST_URI_TOO_LONG = 0x63A9, - BD_REST_ERROR_REQUESTED_RANGE_NOT_SATISFIABLE = 0x63AA, - BD_REST_ERROR_INTERNAL_SERVER_ERROR = 0x63AB, - BD_REST_ERROR_BAD_GATEWAY = 0x63AC, - BD_REST_ERROR_SERVICE_UNAVAILABLE = 0x63AD, - BD_REST_ERROR_GATEWAY_TIMEOUT = 0x63AE, - BD_REST_ERROR_REQUEST_CANCELLED = 0x63AF, - BD_LOGIN_UNKOWN_ERROR = 0x7724, - BD_MAX_ERROR_CODE = 0x7725, - }; - - enum bdNATType : uint8_t - { - BD_NAT_UNKNOWN = 0x0, - BD_NAT_OPEN = 0x1, - BD_NAT_MODERATE = 0x2, - BD_NAT_STRICT = 0x3, - }; - -#pragma pack(push, 1) - struct bdAuthTicket - { - unsigned int m_magicNumber; - char m_type; - unsigned int m_titleID; - unsigned int m_timeIssued; - unsigned int m_timeExpires; - unsigned long long m_licenseID; - unsigned long long m_userID; - char m_username[64]; - char m_sessionKey[24]; - char m_usingHashMagicNumber[3]; - char m_hash[4]; - }; -#pragma pack(pop) - } - using namespace demonware; - - namespace pmem - { - enum PMem_Stack : __int32 - { - PMEM_STACK_GAME = 0x0, - PMEM_STACK_RENDER_TARGETS = 0x1, - PMEM_STACK_MEM_VIRTUAL = 0x2, - PMEM_STACK_MEMCARD_LARGE_BUFFER = 0x3, - PMEM_STACK_SOUND = 0x4, - PMEM_STACK_STASHED_MEMORY = 0x5, - PMEM_STACK_CINEMATIC = 0x6, - PMEM_STACK_COUNT = 0x7, - }; - - enum PMem_Source - { - PMEM_SOURCE_EXTERNAL = 0x0, - PMEM_SOURCE_SCRIPT = 0x1, - }; - - enum PMem_Direction : __int32 - { - PHYS_ALLOC_LOW = 0x0, - PHYS_ALLOC_HIGH = 0x1, - PHYS_ALLOC_COUNT = 0x2, - }; - - enum Mem_PageID - { - }; - - struct Mem_PageRange - { - Mem_PageID firstPageID; - Mem_PageID lastPageID; - }; - - struct PhysicalMemoryAllocation - { - const char* name; - char* prev_buffer; - char* next_buffer; - unsigned __int64 pos; - Mem_PageRange pageRange; - }; - - struct PhysicalMemoryPrim - { - const char* name; - unsigned int allocListCount; - char __pad0[4]; - unsigned __int8* buf; - unsigned __int64 unk_pos; - int unk1; - char __pad2[4]; - unsigned __int64 pos; - PhysicalMemoryAllocation allocList[32]; - }; - - struct PhysicalMemory - { - PhysicalMemoryPrim prim[2]; - }; - } - using namespace pmem; - struct GfxFont { const char* fontName; diff --git a/src/client/game/database.hpp b/src/client/game/types/database.hpp similarity index 100% rename from src/client/game/database.hpp rename to src/client/game/types/database.hpp diff --git a/src/client/game/types/ddl.hpp b/src/client/game/types/ddl.hpp new file mode 100644 index 00000000..c0817645 --- /dev/null +++ b/src/client/game/types/ddl.hpp @@ -0,0 +1,58 @@ +#pragma once + +namespace game::ddl +{ + enum DDLType + { + DDL_INVALID_TYPE = 0xFFFFFFFF, + DDL_BYTE_TYPE = 0x0, + DDL_SHORT_TYPE = 0x1, + DDL_UINT_TYPE = 0x2, + DDL_INT_TYPE = 0x3, + DDL_UINT64_TYPE = 0x4, + DDL_FLOAT_TYPE = 0x5, + DDL_FIXEDPOINT_TYPE = 0x6, + DDL_STRING_TYPE = 0x7, + DDL_STRUCT_TYPE = 0x8, + DDL_ENUM_TYPE = 0x9, + }; + + union DDLValue + { + int intValue; + unsigned int uintValue; + unsigned __int64 uint64Value; + float floatValue; + float fixedPointValue; + const char* stringPtr; + }; + + struct DDLMember + { + const char* name; + int index; + int bitSize; + int limitSize; + int offset; + int type; + int externalIndex; + unsigned int rangeLimit; + bool isArray; + int arraySize; + int enumIndex; + }; + + struct DDLState + { + bool isValid; + int offset; + int arrayIndex; + DDLMember* member; + //const DDLDef* ddlDef; + }; + + struct DDLContext + { + + }; +} \ No newline at end of file diff --git a/src/client/game/types/demonware.hpp b/src/client/game/types/demonware.hpp new file mode 100644 index 00000000..4d1fd3af --- /dev/null +++ b/src/client/game/types/demonware.hpp @@ -0,0 +1,826 @@ +#pragma once + +namespace game::demonware +{ + enum DWOnlineStatus : std::int32_t + { + DW_LIVE_DISCONNECTED = 0x0, + DW_LIVE_UNKNOWN = 0x1, + DW_LIVE_CONNECTING = 0x2, + DW_LIVE_CONNECTED = 0x3, + }; + + enum DWNetStatus : std::int32_t + { + DW_NET_ERROR_START_FAILED = 0x0, + DW_NET_ERROR_NO_LOCAL_IP = 0x1, + DW_NET_NOT_STARTED = 0x2, + DW_NET_STARTING_LAN = 0x3, + DW_NET_STARTED_LAN = 0x4, + DW_NET_STARTING_ONLINE = 0x5, + DW_NET_STARTED_ONLINE = 0x6, + }; + + enum bdLobbyErrorCode : std::int32_t + { + BD_NO_ERROR = 0x0, + BD_TOO_MANY_TASKS = 0x1, + BD_NOT_CONNECTED = 0x2, + BD_SEND_FAILED = 0x3, + BD_HANDLE_TASK_FAILED = 0x4, + BD_START_TASK_FAILED = 0x5, + BD_RESULT_EXCEEDS_BUFFER_SIZE = 0x64, + BD_ACCESS_DENIED = 0x65, + BD_EXCEPTION_IN_DB = 0x66, + BD_MALFORMED_TASK_HEADER = 0x67, + BD_INVALID_ROW = 0x68, + BD_EMPTY_ARG_LIST = 0x69, + BD_PARAM_PARSE_ERROR = 0x6A, + BD_PARAM_MISMATCHED_TYPE = 0x6B, + BD_SERVICE_NOT_AVAILABLE = 0x6C, + BD_CONNECTION_RESET = 0x6D, + BD_INVALID_USER_ID = 0x6E, + BD_LOBBY_PROTOCOL_VERSION_FAILURE = 0x6F, + BD_LOBBY_INTERNAL_FAILURE = 0x70, + BD_LOBBY_PROTOCOL_ERROR = 0x71, + BD_LOBBY_FAILED_TO_DECODE_UTF8 = 0x72, + BD_LOBBY_ASCII_EXPECTED = 0x73, + BD_INVALID_CONTEXT = 0x74, + BD_LOBBY_METHOD_DISABLED = 0x75, + BD_LOBBY_MIGRATION_FAILURE = 0x76, + BD_ASYNCHRONOUS_ERROR = 0xC8, + BD_STREAMING_COMPLETE = 0xC9, + BD_MEMBER_NO_PROPOSAL = 0x12C, + BD_TEAMNAME_ALREADY_EXISTS = 0x12D, + BD_MAX_TEAM_MEMBERSHIPS_LIMITED = 0x12E, + BD_MAX_TEAM_OWNERSHIPS_LIMITED = 0x12F, + BD_NOT_A_TEAM_MEMBER = 0x130, + BD_INVALID_TEAM_ID = 0x131, + BD_INVALID_TEAM_NAME = 0x132, + BD_NOT_A_TEAM_OWNER = 0x133, + BD_NOT_AN_ADMIN_OR_OWNER = 0x134, + BD_MEMBER_PROPOSAL_EXISTS = 0x135, + BD_MEMBER_EXISTS = 0x136, + BD_TEAM_FULL = 0x137, + BD_VULGAR_TEAM_NAME = 0x138, + BD_TEAM_USERID_BANNED = 0x139, + BD_TEAM_EMPTY = 0x13A, + BD_INVALID_TEAM_PROFILE_QUERY_ID = 0x13B, + BD_TEAMNAME_TOO_SHORT = 0x13C, + BD_UNIQUE_PROFILE_DATA_EXISTS_ALREADY = 0x13D, + BD_APPLICATION_EXISTS = 0x13E, + BD_APPLICATIONS_MAX_EXCEEDED = 0x13F, + BD_PAGE_SIZE_LIMIT_EXCEEDED = 0x140, + BD_APPLICATION_REJECTED_EXISTS = 0x141, + BD_APPLICATION_WITHDRAWN_EXISTS = 0x142, + BD_APPLICATION_DOES_NOT_EXIST = 0x143, + BD_APPLICATION_INVALID_STATE = 0x144, + BD_MEMBER_BAN_EXISTS = 0x145, + BD_MEMBER_BAN_DOES_NOT_EXIST = 0x146, + BD_OWNER_BAN_FORBIDDEN = 0x147, + BD_INVALID_ACCOUNT_TYPE = 0x148, + BD_CONFIGURED_ACCOUNT_TYPE_NOT_FOUND = 0x149, + BD_OWNER_OF_NON_EMPTY_TEAM = 0x14A, + BD_CANNOT_APPLY_TO_PIRIVATE_TEAM = 0x14B, + BD_MEMBER_IS_OWNER = 0x15E, + BD_AUTO_JOINING_DISABLED = 0x15F, + BD_TEAM_SHOWCASE_DISABLED = 0x160, + BD_INVALID_FILTER = 0x162, + BD_INVALID_TEAM_LEADERBOARD = 0x163, + BD_TEAM_LEADERBOARD_LOADING = 0x164, + BD_TEAM_SHOWCASE_COUNT_EXCEEDED = 0x165, + BD_USER_ALREADY_TEAM_OWNER = 0x16A, + BD_UPPER_TEAM_MEMBER_LIMIT_EXCEEDED = 0x16C, + BD_TEAM_MEMBER_LIMIT_NOT_SUPPORTED = 0x16D, + BD_MISMATCHED_TEAM_PROFILE_COLLISION_FIELD = 0x16E, + BD_INVALID_LEADERBOARD_ID = 0x190, + BD_INVALID_STATS_SET = 0x191, + BD_EMPTY_STATS_SET_IGNORED = 0x193, + BD_NO_DIRECT_ACCESS_TO_ARBITRATED_LBS = 0x194, + BD_STATS_WRITE_PERMISSION_DENIED = 0x195, + BD_STATS_WRITE_TYPE_DATA_TYPE_MISMATCH = 0x196, + BD_NO_STATS_FOR_USER = 0x197, + BD_INVALID_ACCESS_TO_UNRANKED_LB = 0x198, + BD_INVALID_EXTERNAL_TITLE_ID = 0x199, + BD_DIFFERENT_LEADERBOARD_SCHEMAS = 0x19A, + BD_TOO_MANY_LEADERBOARDS_REQUESTED = 0x19B, + BD_ENTITLEMENTS_ERROR = 0x19C, + BD_ENTITLEMENTS_INVALID_TITLEID = 0x19D, + BD_ENTITLEMENTS_INVALID_LEADERBOARDID = 0x19E, + BD_ENTITLEMENTS_INVALID_GET_MODE_FOR_TITLE = 0x19F, + BD_ENTITLEMENTS_URL_CONNECTION_ERROR = 0x1A0, + BD_ENTITLEMENTS_CONFIG_ERROR = 0x1A1, + BD_ENTITLEMENTS_NAMED_PARENT_ERROR = 0x1A2, + BD_ENTITLEMENTS_NAMED_KEY_ERROR = 0x1A3, + BD_TOO_MANY_ENTITY_IDS_REQUESTED = 0x1A4, + BD_STATS_READ_FAILED = 0x1A5, + BD_STATS_INVALID_WRITE_TO_VIRTUAL_LEADERBOARD = 0x1A6, + BD_STATS_INVALID_WRITE_TYPE_TO_MULTIRANK_LB = 0x1A7, + BD_STATS_INVALID_EXCLUDED_COLUMN = 0x1A8, + BD_STATS_INVALID_INCLUDED_COLUMN = 0x1A9, + BD_STATS_WRITE_NO_SCRIPT_MODULE = 0x1AA, + BD_STATS_WRITE_SCRIPT_MODULE_ERROR = 0x1AB, + BD_NON_READ_ON_READ_ONLY_LEADERBOARD = 0x1AC, + BD_INVALID_TITLE_ID = 0x1F4, + BD_DOWN_FOR_MAINTENANCE = 0x1F5, + BD_MESSAGING_INVALID_MAIL_ID = 0x258, + BD_SELF_BLOCK_NOT_ALLOWED = 0x259, + BD_GLOBAL_MESSAGE_ACCESS_DENIED = 0x25A, + BD_GLOBAL_MESSAGES_USER_LIMIT_EXCEEDED = 0x25B, + BD_MESSAGING_SENDER_DOES_NOT_EXIST = 0x25C, + BD_AUTH_NO_ERROR = 0x2BC, + BD_AUTH_BAD_REQUEST = 0x2BD, + BD_AUTH_SERVER_CONFIG_ERROR = 0x2BE, + BD_AUTH_BAD_TITLE_ID = 0x2BF, + BD_AUTH_BAD_ACCOUNT = 0x2C0, + BD_AUTH_ILLEGAL_OPERATION = 0x2C1, + BD_AUTH_INCORRECT_LICENSE_CODE = 0x2C2, + BD_AUTH_CREATE_USERNAME_EXISTS = 0x2C3, + BD_AUTH_CREATE_USERNAME_ILLEGAL = 0x2C4, + BD_AUTH_CREATE_USERNAME_VULGAR = 0x2C5, + BD_AUTH_CREATE_MAX_ACC_EXCEEDED = 0x2C6, + BD_AUTH_MIGRATE_NOT_SUPPORTED = 0x2C7, + BD_AUTH_TITLE_DISABLED = 0x2C8, + BD_AUTH_ACCOUNT_EXPIRED = 0x2C9, + BD_AUTH_ACCOUNT_LOCKED = 0x2CA, + BD_AUTH_UNKNOWN_ERROR = 0x2CB, + BD_AUTH_INCORRECT_PASSWORD = 0x2CC, + BD_AUTH_IP_NOT_IN_ALLOWED_RANGE = 0x2CD, + BD_AUTH_WII_TOKEN_VERIFICATION_FAILED = 0x2CE, + BD_AUTH_WII_AUTHENTICATION_FAILED = 0x2CF, + BD_AUTH_IP_KEY_LIMIT_REACHED = 0x2D0, + BD_AUTH_INVALID_GSPID = 0x2D1, + BD_AUTH_INVALID_IP_RANGE_ID = 0x2D2, + BD_AUTH_3DS_TOKEN_VERIFICATION_FAILED = 0x2D1, + BD_AUTH_3DS_AUTHENTICATION_FAILED = 0x2D2, + BD_AUTH_STEAM_APP_ID_MISMATCH = 0x2D3, + BD_AUTH_ABACCOUNTS_APP_ID_MISMATCH = 0x2D4, + BD_AUTH_CODO_USERNAME_NOT_SET = 0x2D5, + BD_AUTH_WIIU_TOKEN_VERIFICATION_FAILED = 0x2D6, + BD_AUTH_WIIU_AUTHENTICATION_FAILED = 0x2D7, + BD_AUTH_CODO_USERNAME_NOT_BASE64 = 0x2D8, + BD_AUTH_CODO_USERNAME_NOT_UTF8 = 0x2D9, + BD_AUTH_TENCENT_TICKET_EXPIRED = 0x2DA, + BD_AUTH_PS3_SERVICE_ID_MISMATCH = 0x2DB, + BD_AUTH_CODOID_NOT_WHITELISTED = 0x2DC, + BD_AUTH_PLATFORM_TOKEN_RETRIEVAL_ERROR = 0x2DD, + BD_AUTH_JSON_FORMAT_ERROR = 0x2DE, + BD_AUTH_REPLY_CONTENT_ERROR = 0x2DF, + BD_AUTH_PLATFORM_TOKEN_EXPIRED = 0x2E0, + BD_AUTH_CONTINUING = 0x2E1, + BD_AUTH_PLATFORM_TOKEN_DECRYPTION_ERROR = 0x2E2, + BD_AUTH_PLATFORM_TOKEN_SIGNATURE_ERROR = 0x2E3, + BD_AUTH_DNS_RESOLUTION_ERROR = 0x2E4, + BD_AUTH_SSL_CERTIFICATE_ERROR = 0x2E5, + BD_AUTH_SERVER_UNAVAILABLE_ERROR = 0x2E6, + BD_AUTH_ENVIRONMENT_ERROR = 0x2E7, + BD_AUTH_PLATFORM_DEVICE_ID_ERROR = 0x2E8, + BD_AUTH_UNO_APP_ID_MISMATCH = 0x2E9, + BD_AUTH_UNICODE_DECODE_ERROR = 0x2EA, + BD_AUTH_STEAM_PUBLISHER_BAN = 0x2EB, + BD_AUTH_TICKET_DECRYPTION_ERROR = 0x2EC, + BD_AUTH_SIGNATURE_ERROR = 0x2ED, + BD_AUTH_REQUEST_TIMEOUT_ERROR = 0x2EE, + BD_AUTH_REQUEST_ABORTED_ERROR = 0x2EF, + BD_AUTH_SINGLE_IDENTITY_FLOW_DISABLED_ERROR = 0x2F0, + BD_AUTH_SINGLE_IDENTITY_TOKEN_MISSING_ERROR = 0x2F1, + BD_AUTH_SINGLE_IDENTITY_TOKEN_EXPIRED_ERROR = 0x2F2, + BD_AUTH_SINGLE_IDENTITY_TOKEN_INVALID_ERROR = 0x2F3, + BD_AUTH_SWITCH_TOKEN_VERIFICATION_FAILED = 0x2F4, + BD_AUTH_SWITCH_AUTHENTICATION_FAILED = 0x2F5, + BD_AUTH_BAD_DEVICE_KEY = 0x2F6, + BD_AUTH_BAD_DEVICE_TITLE_KEY = 0x2F7, + BD_AUTH_TSIG_EXPIRED = 0x2F8, + BD_AUTH_TOO_MANY_REQUESTS = 0x2F9, + BD_AUTH_COUNTRY_BLOCKED_ERROR = 0x30D, + BD_NO_PROFILE_INFO_EXISTS = 0x320, + BD_PROFILE_COLLISION_FIELD_MISMATCH = 0x321, + BD_FRIENDSHIP_NOT_REQUSTED = 0x384, + BD_NOT_A_FRIEND = 0x385, + BD_SELF_FRIENDSHIP_NOT_ALLOWED = 0x387, + BD_FRIENDSHIP_EXISTS = 0x388, + BD_PENDING_FRIENDSHIP_EXISTS = 0x389, + BD_USERID_BANNED = 0x38A, + BD_FRIENDS_FULL = 0x38C, + BD_FRIENDS_NO_RICH_PRESENCE = 0x38D, + BD_RICH_PRESENCE_TOO_LARGE = 0x38E, + BD_FRIENDS_REMOTE_FULL = 0x38F, + BD_NO_FILE = 0x3E8, + BD_PERMISSION_DENIED = 0x3E9, + BD_FILESIZE_LIMIT_EXCEEDED = 0x3EA, + BD_FILENAME_MAX_LENGTH_EXCEEDED = 0x3EB, + BD_EXTERNAL_STORAGE_SERVICE_ERROR = 0x3EC, + BD_VALIDATION_ERROR = 0x3ED, + BD_VALIDATION_TOKEN_ERROR = 0x3EE, + BD_VALIDATION_TOKEN_GENERATION_ERROR = 0x3EF, + BD_VALIDATION_TOKEN_VERIFICATION_ERROR = 0x3F0, + BD_STORAGE_SERVER_UNREACHABLE = 0x3F1, + BD_CHANNEL_DOES_NOT_EXIST = 0x44D, + BD_CHANNEL_ALREADY_SUBSCRIBED = 0x44E, + BD_CHANNEL_NOT_SUBSCRIBED = 0x44F, + BD_CHANNEL_FULL = 0x450, + BD_CHANNEL_SUBSCRIPTIONS_FULL = 0x451, + BD_CHANNEL_NO_SELF_WHISPERING = 0x452, + BD_CHANNEL_ADMIN_REQUIRED = 0x453, + BD_CHANNEL_TARGET_NOT_SUBSCRIBED = 0x454, + BD_CHANNEL_REQUIRES_PASSWORD = 0x455, + BD_CHANNEL_TARGET_IS_SELF = 0x456, + BD_CHANNEL_PUBLIC_BAN_NOT_ALLOWED = 0x457, + BD_CHANNEL_USER_BANNED = 0x458, + BD_CHANNEL_PUBLIC_PASSWORD_NOT_ALLOWED = 0x459, + BD_CHANNEL_PUBLIC_KICK_NOT_ALLOWED = 0x45A, + BD_CHANNEL_MUTED = 0x45B, + BD_CONTENT_UNLOCK_UNKNOWN_ERROR = 0x514, + BD_UNLOCK_KEY_INVALID = 0x515, + BD_UNLOCK_KEY_ALREADY_USED_UP = 0x516, + BD_CONTENT_UNLOCK_LIMIT_REACHED = 0x517, + BD_DIFFERENT_HARDWARE_ID = 0x518, + BD_INVALID_CONTENT_OWNER = 0x519, + BD_CONTENT_UNLOCK_INVALID_USER = 0x51A, + BD_CONTENT_UNLOCK_INVALID_CATEGORY = 0x51B, + BD_KEY_ARCHIVE_INVALID_WRITE_TYPE = 0x5DC, + BD_KEY_ARCHIVE_EXCEEDED_MAX_IDS_PER_REQUEST = 0x5DD, + BD_BANDWIDTH_TEST_TRY_AGAIN = 0x712, + BD_BANDWIDTH_TEST_STILL_IN_PROGRESS = 0x713, + BD_BANDWIDTH_TEST_NOT_PROGRESS = 0x714, + BD_BANDWIDTH_TEST_SOCKET_ERROR = 0x715, + BD_INVALID_SESSION_NONCE = 0x76D, + BD_ARBITRATION_FAILURE = 0x76F, + BD_ARBITRATION_USER_NOT_REGISTERED = 0x771, + BD_ARBITRATION_NOT_CONFIGURED = 0x772, + BD_CONTENTSTREAMING_FILE_NOT_AVAILABLE = 0x7D0, + BD_CONTENTSTREAMING_STORAGE_SPACE_EXCEEDED = 0x7D1, + BD_CONTENTSTREAMING_NUM_FILES_EXCEEDED = 0x7D2, + BD_CONTENTSTREAMING_UPLOAD_BANDWIDTH_EXCEEDED = 0x7D3, + BD_CONTENTSTREAMING_FILENAME_MAX_LENGTH_EXCEEDED = 0x7D4, + BD_CONTENTSTREAMING_MAX_THUMB_DATA_SIZE_EXCEEDED = 0x7D5, + BD_CONTENTSTREAMING_DOWNLOAD_BANDWIDTH_EXCEEDED = 0x7D6, + BD_CONTENTSTREAMING_NOT_ENOUGH_DOWNLOAD_BUFFER_SPACE = 0x7D7, + BD_CONTENTSTREAMING_SERVER_NOT_CONFIGURED = 0x7D8, + BD_CONTENTSTREAMING_INVALID_APPLE_RECEIPT = 0x7DA, + BD_CONTENTSTREAMING_APPLE_STORE_NOT_AVAILABLE = 0x7DB, + BD_CONTENTSTREAMING_APPLE_RECEIPT_FILENAME_MISMATCH = 0x7DC, + BD_CONTENTSTREAMING_BATCH_DOWNLOAD_PARTIAL_FAILURE = 0x7DD, + BD_CONTENTSTREAMING_HTTP_ERROR = 0x7E4, + BD_CONTENTSTREAMING_FAILED_TO_START_HTTP = 0x7E5, + BD_CONTENTSTREAMING_LOCALE_INVALID = 0x7E6, + BD_CONTENTSTREAMING_LOCALE_MISSING = 0x7E7, + BD_VOTERANK_ERROR_EMPTY_RATING_SUBMISSION = 0x7EE, + BD_VOTERANK_ERROR_MAX_VOTES_EXCEEDED = 0x7EF, + BD_VOTERANK_ERROR_INVALID_RATING = 0x7F0, + BD_MAX_NUM_TAGS_EXCEEDED = 0x82A, + BD_TAGGED_COLLECTION_DOES_NOT_EXIST = 0x82B, + BD_EMPTY_TAG_ARRAY = 0x82C, + BD_SEARCH_SERVER_UNREACHABLE = 0x82F, + BD_ENTITY_ID_NOT_SPECIFIED = 0x830, + BD_INVALID_QUERY_ID = 0x834, + BD_NO_ENTRY_TO_UPDATE = 0x835, + BD_SESSION_INVITE_EXISTS = 0x836, + BD_INVALID_SESSION_ID = 0x837, + BD_ATTACHMENT_TOO_LARGE = 0x838, + BD_INVALID_FIELD_VALUE = 0x839, + BD_REQUEST_SESSION_NOT_SUPPORTED = 0x83A, + BD_INVALID_GROUP_ID = 0xAF0, + BD_MAIL_INVALID_MAIL_ID_ERROR = 0xB55, + BD_MAIL_PERMISSION_DENIED_ERROR = 0xB56, + BD_TWITCH_SERVICE_ERROR = 0xC1D, + BD_TWITCH_ACCOUNT_ALREADY_LINKED = 0xC1E, + BD_TWITCH_NO_LINKED_ACCOUNT = 0xC1F, + BD_TWITTER_AUTH_ATTEMPT_FAILED = 0xDAD, + BD_TWITTER_AUTH_TOKEN_INVALID = 0xDAE, + BD_TWITTER_UPDATE_LIMIT_REACHED = 0xDAF, + BD_TWITTER_UNAVAILABLE = 0xDB0, + BD_TWITTER_ERROR = 0xDB1, + BD_TWITTER_TIMED_OUT = 0xDB2, + BD_TWITTER_ACCOUNT_AMBIGUOUS = 0xDB4, + BD_TWITTER_MAXIMUM_ACCOUNTS_REACHED = 0xDB5, + BD_TWITTER_ACCOUNT_NOT_REGISTERED = 0xDB6, + BD_TWITTER_DUPLICATE_STATUS = 0xDB7, + BD_TWITTER_ACCOUNT_ALREADY_REGISTERED = 0xE1C, + BD_FACEBOOK_AUTH_ATTEMPT_FAILED = 0xE11, + BD_FACEBOOK_AUTH_TOKEN_INVALID = 0xE12, + BD_FACEBOOK_PHOTO_DOES_NOT_EXIST = 0xE13, + BD_FACEBOOK_PHOTO_INVALID = 0xE14, + BD_FACEBOOK_PHOTO_ALBUM_FULL = 0xE15, + BD_FACEBOOK_UNAVAILABLE = 0xE16, + BD_FACEBOOK_ERROR = 0xE17, + BD_FACEBOOK_TIMED_OUT = 0xE18, + BD_FACEBOOK_DISABLED_FOR_USER = 0xE19, + BD_FACEBOOK_ACCOUNT_AMBIGUOUS = 0xE1A, + BD_FACEBOOK_MAXIMUM_ACCOUNTS_REACHED = 0xE1B, + BD_FACEBOOK_INVALID_NUM_PICTURES_REQUESTED = 0xE1C, + BD_FACEBOOK_VIDEO_DOES_NOT_EXIST = 0xE1D, + BD_FACEBOOK_ACCOUNT_ALREADY_REGISTERED = 0xE1E, + BD_FACEBOOK_TARGET_OBJECT_ID_INVALID = 0xE1F, + BD_FACEBOOK_NO_SUCH_ACCOUNT = 0xE20, + BD_APNS_INVALID_PAYLOAD = 0xE74, + BD_APNS_INVALID_TOKEN_LENGTH_ERROR = 0xE76, + BD_MAX_CONSOLEID_LENGTH_EXCEEDED = 0xEE1, + BD_MAX_WHITELIST_LENGTH_EXCEEDED = 0xEE2, + BD_TOTP_CHALLENGE_FAILED = 0xEE3, + BD_NO_TOTP_ACCOUNT = 0xEE4, + BD_EXTENDED_AUTH_INFO_ERROR = 0xEE5, + BD_EXTENDED_AUTH_INFO_LENGTH_EXCEEDED = 0xEE6, + BD_EXTENDED_AUTH_INFO_EXPIRED = 0xEE7, + BD_WHITELIST_TRAILING_WHITE_SPACE = 0xEE8, + BD_WHITELIST_MESSAGE_LENGTH_LIMIT_EXCEEDED = 0xEE9, + BD_BNET_SESSION_TOKEN_ERROR = 0xEEA, + BD_BNET_SESSION_CLAIMS_ERROR = 0xEEB, + BD_TRIAL_STATUS_ERROR = 0xEEC, + BD_TRIAL_STATUS_INVALID_DATA_ERROR = 0xEED, + BD_TRIAL_STATUS_UNAVAILABLE_ERROR = 0xEEE, + BD_LOGON_SCHEDULE_ERROR = 0xEF6, + BD_LOGON_SCHEDULE_INVALID_TIME_RANGE_ERROR = 0xEF7, + BD_LOGON_SCHEDULE_INVALID_DAY_ERROR = 0xEF8, + BD_LOGON_SCHEDULE_INVALID_UPDATE_TYPE_ERROR = 0xEF9, + BD_LOGON_SCHEDULE_UPDATE_FAILED_ERROR = 0xEFA, + BD_USERGROUP_NAME_ALREADY_EXISTS = 0x1770, + BD_INVALID_USERGROUP_ID = 0x1771, + BD_USER_ALREADY_IN_USERGROUP = 0x1772, + BD_USER_NOT_IN_USERGROUP = 0x1773, + BD_INVALID_USERGROUP_MEMBER_TYPE = 0x1774, + BD_TOO_MANY_MEMBERS_REQUESTED = 0x1775, + BD_USERGROUP_NAME_TOO_SHORT = 0x1776, + BD_RICH_PRESENCE_DATA_TOO_LARGE = 0x1A90, + BD_RICH_PRESENCE_TOO_MANY_USERS = 0x1A91, + BD_RICH_PRESENCE_ERROR = 0x1A92, + BD_RICH_PRESENCE_FEATURE_DISABLED_ERROR = 0x1A93, + BD_RICH_PRESENCE_TOO_MANY_UPDATES = 0x1A94, + BD_RICH_PRESENCE_SUBSCRIPTIONS_ERROR = 0x1A9A, + BD_RICH_PRESENCE_TOO_MANY_SUBSCRIPTIONS_ERROR = 0x1A9B, + BD_PRESENCE_DATA_TOO_LARGE = 0x283C, + BD_PRESENCE_TOO_MANY_USERS = 0x283D, + BD_USER_LOGGED_IN_OTHER_TITLE = 0x283E, + BD_USER_NOT_LOGGED_IN = 0x283F, + BD_PRESENCE_INVALID_PLATFORM = 0x2840, + BD_SUBSCRIPTION_TOO_MANY_USERS = 0x1B58, + BD_SUBSCRIPTION_TICKET_PARSE_ERROR = 0x1B59, + BD_CODO_ID_INVALID_DATA = 0x1BBC, + BD_INVALID_MESSAGE_FORMAT = 0x1BBD, + BD_TLOG_TOO_MANY_MESSAGES = 0x1BBE, + BD_CODO_ID_NOT_IN_WHITELIST = 0x1BBF, + BD_TLOG_MESSAGE_TRANSFORMATION_ERROR = 0x1BC0, + BD_REWARDS_NOT_ENABLED = 0x1BC1, + BD_REWARDS_INVALID_RULE = 0x1BC2, + BD_REDEEM_NAME_CHANGE_INTERNAL_ERROR = 0x1BC3, + BD_REDEEM_NAME_CHANGE_INVALID_ITEM = 0x1BC4, + BD_REDEEM_NAME_CHANGE_UNAVAILABLE_ITEM = 0x1BC5, + BD_REDEEM_NAME_CHANGE_IN_PROGRESS = 0x1BC6, + BD_REDEEM_NAME_CHANGE_INACTIVE_REQUEST = 0x1BC7, + BD_REDEEM_NAME_CHANGE_INVALID_NAME = 0x1BC8, + BD_REDEEM_NAME_CHANGE_SAME_NAME = 0x1BC9, + BD_REDEEM_NAME_CHANGE_DUPLICATE_NAME = 0x1BCA, + BD_TENCENT_NO_APPLICABLE_REWARDS = 0x1BCB, + BD_TLOG_MESSAGE_DECOMPRESSION_ERROR = 0x1BCC, + BD_REDEEM_TEAM_NAME_CHANGE_INTERNAL_ERROR = 0x1BCD, + BD_REDEEM_TEAM_NAME_CHANGE_INVALID_ITEM = 0x1BCE, + BD_REDEEM_TEAM_NAME_CHANGE_UNAVAILABLE_ITEM = 0x1BCF, + BD_TENCENT_REWARD_NOT_FOUND = 0x1BD0, + BD_MARKETPLACE_ERROR = 0x1F40, + BD_MARKETPLACE_RESOURCE_NOT_FOUND = 0x1F41, + BD_MARKETPLACE_INVALID_CURRENCY = 0x1F42, + BD_MARKETPLACE_INVALID_PARAMETER = 0x1F43, + BD_MARKETPLACE_RESOURCE_CONFLICT = 0x1F44, + BD_MARKETPLACE_STORAGE_ERROR = 0x1F45, + BD_MARKETPLACE_INTEGRITY_ERROR = 0x1F46, + BD_MARKETPLACE_INSUFFICIENT_FUNDS_ERROR = 0x1F47, + BD_MARKETPLACE_MMP_SERVICE_ERROR = 0x1F48, + BD_MARKETPLACE_PRECONDITION_REQUIRED = 0x1F49, + BD_MARKETPLACE_ITEM_MULTIPLE_PURCHASE_ERROR = 0x1F4A, + BD_MARKETPLACE_MISSING_REQUIRED_ENTITLEMENT = 0x1F4B, + BD_MARKETPLACE_VALIDATION_ERROR = 0x1F4C, + BD_MARKETPLACE_TENCENT_PAYMENT_ERROR = 0x1F4D, + BD_MARKETPLACE_SKU_NOT_COUPON_ENABLED_ERROR = 0x1F4E, + BD_MARKETPLACE_TRANSACTION_ERROR = 0x1F4F, + BD_MARKETPLACE_RECEIPT_USED = 0x1F50, + BD_MARKETPLACE_INVALID_RECEIPT = 0x1F51, + BD_MARKETPLACE_STEAM_REQUEST_FAILED = 0x1F52, + BD_MARKETPLACE_STEAM_NOT_APPROVED = 0x1F53, + BD_MARKETPLACE_PRODUCT_NOT_FOUND_IN_FP = 0x1F54, + BD_MARKETPLACE_STEAM_ALREADY_FINALIZED = 0x1F54, + BD_MARKETPLACE_STEAM_BAD_ORDER_ID = 0x1F55, + BD_MARKETPLACE_STEAM_CURRENCY_ERROR = 0x1F56, + BD_MARKETPLACE_PSN_INVALID_NP_TITLE_ID = 0x1F65, + BD_MARKETPLACE_PSN_INVALID_NP_AUTH_CODE = 0x1F57, + BD_MARKETPLACE_PSN_INVALID_ENTITLEMENT_ID = 0x1F58, + BD_MARKETPLACE_PSN_ENTITLEMENT_NOT_PRESENT = 0x1F59, + BD_MARKETPLACE_PSN_INTERNAL_ERROR = 0x1F5A, + BD_MARKETPLACE_XB1_UNAUTHORISED_ERROR = 0x1F5B, + BD_MARKETPLACE_XB1_REQUEST_REJECTED_ERROR = 0x1F5C, + BD_MARKETPLACE_XB1_INSUFFICIENT_QUANTITY_ERROR = 0x1F5D, + BD_MARKETPLACE_XB1_BAD_DELEGATION_TOKEN_ERROR = 0x1F5E, + BD_MARKETPLACE_XB1_REQUEST_FAILED_ERROR = 0x1F5F, + BD_MARKETPLACE_X360_REQUEST_FAILED = 0x1F60, + BD_MARKETPLACE_X360_ITEM_NOT_PRESENT = 0x1F61, + BD_MARKETPLACE_X360_CONNECTION_ERROR = 0x1F62, + BD_MARKETPLACE_USAGE_TIME_ERROR = 0x1F63, + BD_MARKETPLACE_DURABLE_ALREADY_GRANTED = 0x1F64, + BD_MARKETPLACE_FIRST_PARTY_DURABLE_EXISTS = 0x1F66, + BD_MARKETPLACE_ITEM_LIMIT_REACHED = 0x1F67, + BD_MARKETPLACE_OVER_ITEM_MAX_QUANTITY_ERROR = 0x1F69, + BD_MARKETPLACE_INSUFFICIENT_ITEM_QUANTITY = 0x1F6A, + BD_MARKETPLACE_ENTITY_NOT_ENABLED = 0x1F6B, + BD_MARKETPLACE_MISCONFIGURED = 0x1F6C, + BD_MARKETPLACE_COUPON_NOT_CLAIMED_OR_FOUND = 0x1F6D, + BD_MARKETPLACE_INVALID_DISCOUNT = 0x1F6E, + BD_MARKETPLACE_INVALID_STORE_VERSION = 0x1F6F, + BD_MARKETPLACE_SKU_SOLD_OUT = 0x1F72, + BD_MARKETPLACE_WIIU_AUTH_FAILED = 0x1F73, + BD_MARKETPLACE_WIIU_INVALID_PARAMETER = 0x1F74, + BD_MARKETPLACE_WIIU_TAX_LOCATION_NOT_SPECIFIED = 0x1F75, + BD_MARKETPLACE_WIIU_ACCOUNT_ERROR = 0x1F76, + BD_MARKETPLACE_WIIU_PURCHASING_ERROR = 0x1F77, + BD_MARKETPLACE_WIIU_BALANCE_ERROR = 0x1F78, + BD_MARKETPLACE_WIIU_SERVER_ERROR = 0x1F79, + BD_MARKETPLACE_WIIU_REQUEST_FAILED = 0x1F7A, + BD_MARKETPLACE_WIIU_SERVER_MAINTENANCE = 0x1F7B, + BD_MARKETPLACE_WIIU_SERVICE_TERMINATED = 0x1F7C, + BD_MARKETPLACE_WIIU_ITEM_NOT_PRESENT = 0x1F7D, + BD_MARKETPLACE_WIIU_TAX_LOCATION_INVALID = 0x1F7E, + BD_MARKETPLACE_XB1_DURABLE_NOT_PRESENT = 0x1F7F, + BD_MARKETPLACE_EXPECTED_PRICE_MISMATCH = 0x1F80, + BD_MARKETPLACE_ITEM_NOT_CONSUMABLE = 0x1F81, + BD_MARKETPLACE_IDEMPOTENT_REQUEST_COLLISION = 0x1F82, + BD_MARKETPLACE_COUPON_NOT_STARTED = 0x1F83, + BD_MARKETPLACE_MULTIPLE_OPERATIONS_ERROR = 0x1F84, + BD_MARKETPLACE_MISSING_PAYMENT_PROVIDER_CURRENCY_ERROR = 0x1F85, + BD_MARKETPLACE_WIIU_LANGUAGE_NOT_SUPPORTED = 0x1F86, + BD_MARKETPLACE_PAWN_CHOICE_EXPECTED = 0x1F87, + BD_MARKETPLACE_PAWN_CHOICE_UNSUPPORTED = 0x1F88, + BD_MARKETPLACE_INVALID_REWARD_ERROR = 0x1F89, + BD_MARKETPLACE_MISSING_REQUIRED_ITEMS_ERROR = 0x1F8A, + BD_MARKETPLACE_MISSING_REQUIRED_CURRENCY_BALANCES_ERROR = 0x1F8B, + BD_MARKETPLACE_MISSING_REQUIRED_ENTITLEMENTS_ERROR = 0x1F8C, + BD_MARKETPLACE_UNREACHABLE_ERROR = 0x1F8D, + BD_MARKETPLACE_ITEM_ALREADY_PERMANENTLY_OWNED = 0x1F97, + BD_MARKETPLACE_EXCEEDED_ITEM_MAX_USAGE_TIME = 0x1F98, + BD_MARKETPLACE_BNET_REQUEST_FAILED = 0x1F99, + BD_MARKETPLACE_WEGAME_SERVICE_ERROR = 0x1F9A, + BD_MARKETPLACE_WEGAME_REQUEST_FAILED = 0x1F9B, + BD_MARKETPLACE_SWITCH_SERVICE_ERROR = 0x1F9C, + BD_MARKETPLACE_SWITCH_REQUEST_FAILED = 0x1F9D, + BD_COMMS_SERVICE_NOT_AVAILABLE_ERROR = 0x28A0, + BD_COMMS_CLIENT_ERROR = 0x28A1, + BD_LEAGUE_INVALID_TEAM_SIZE = 0x1FA4, + BD_LEAGUE_INVALID_TEAM = 0x1FA5, + BD_LEAGUE_INVALID_SUBDIVISION = 0x1FA6, + BD_LEAGUE_INVALID_LEAGUE = 0x1FA7, + BD_LEAGUE_TOO_MANY_RESULTS_REQUESTED = 0x1FA8, + BD_LEAGUE_METADATA_TOO_LARGE = 0x1FA9, + BD_LEAGUE_TEAM_ICON_TOO_LARGE = 0x1FAA, + BD_LEAGUE_TEAM_NAME_TOO_LONG = 0x1FAB, + BD_LEAGUE_ARRAY_SIZE_MISMATCH = 0x1FAC, + BD_LEAGUE_SUBDIVISION_MISMATCH = 0x2008, + BD_LEAGUE_INVALID_WRITE_TYPE = 0x2009, + BD_LEAGUE_INVALID_STATS_DATA = 0x200A, + BD_LEAGUE_SUBDIVISION_UNRANKED = 0x200B, + BD_LEAGUE_CROSS_TEAM_STATS_WRITE_PREVENTED = 0x200C, + BD_LEAGUE_INVALID_STATS_SEASON = 0x200D, + BD_CONNECTION_COUNTER_ERROR = 0x20D0, + BD_LINKED_ACCOUNTS_INVALID_CONTEXT = 0x2198, + BD_LINKED_ACCOUNTS_INVALID_PLATFORM = 0x2199, + BD_LINKED_ACCOUNTS_LINKED_ACCOUNTS_FETCH_ERROR = 0x219A, + BD_LINKED_ACCOUNTS_INVALID_ACCOUNT = 0x219B, + BD_LINKED_ACCOUNTS_INVALID_TOKEN = 0x219C, + BD_QUEUED_MATCHING_ERROR = 0x2260, + BD_QUEUED_MATCHING_NOT_FOUND = 0x2261, + BD_QUEUED_MATCHING_WRONG_QUEUE_TYPE = 0x2262, + BD_QUEUED_MATCHING_INVALID_QUEUE_ID = 0x2263, + BD_LOGIN_QUEUE_NO_ERROR = 0x22C4, + BD_LOGIN_QUEUE_ENVIRONMENT_ERROR = 0x22C5, + BD_LOGIN_QUEUE_UNKNOWN_ERROR = 0x22C6, + BD_LOGIN_QUEUE_BAD_REQUEST = 0x22C7, + BD_LOGIN_QUEUE_SERVER_UNAVAILABLE_ERROR = 0x22C8, + BD_LOGIN_QUEUE_SSL_CERTIFICATE_ERROR = 0x22C9, + BD_LOGIN_QUEUE_DNS_RESOLUTION_ERROR = 0x22CA, + BD_LOGIN_QUEUE_JSON_FORMAT_ERROR = 0x22CB, + BD_LOGIN_QUEUE_TICKET_PARSE_ERROR = 0x22CC, + BD_LOGIN_QUEUE_INVALID_TITLE_ID = 0x22CD, + BD_LOGIN_QUEUE_INTERNAL_ERROR = 0x22CE, + BD_LOGIN_QUEUE_CLOSED_QUEUE = 0x22CF, + BD_LOGIN_QUEUE_INVALID_QUEUE_ID = 0x22D0, + BD_LOGIN_QUEUE_NOT_FOUND = 0x22D1, + BD_LOGIN_QUEUE_REPLY_CONTENT_ERROR = 0x22D2, + BD_LOGIN_QUEUE_TOO_MANY_REQUESTS = 0x22D3, + BD_VOTING_MAX_VALUE_EXCEEDED = 0x2328, + BD_VOTING_INVALID_GROUP_NAME = 0x2329, + BD_VOTING_IN_PROGRESS = 0x232A, + BD_VOTING_NON_EXISTENT_GROUP = 0x232B, + BD_USER_GENERATED_STATS_ERROR = 0x238C, + BD_INVALID_ACCESS_TO_USER_GENERATED_LB_ERROR = 0x238D, + BD_INVALID_ACCESS_TO_NON_USER_GENERATED_LB_ERROR = 0x238E, + BD_SUB_LEADERBOARD_ID_MISMATCH_ERROR = 0x238D, + BD_PUBLISHER_VARIABLES_SERVICE_ERROR = 0x251C, + BD_PUBLISHER_VARIABLES_NOT_FOUND = 0x251D, + BD_PUBLISHER_VARIABLES_INVALID_NAMESPACE = 0x251E, + BD_PUBLISHER_VARIABLES_INVALID_GROUP_ID = 0x251F, + BD_GMSG_INVALID_CATEGORY_ID = 0x27D8, + BD_GMSG_CATEGORY_MEMBERSHIPS_LIMIT = 0x27D9, + BD_GMSG_NONMEMBER_POST_DISALLOWED = 0x27DA, + BD_GMSG_CATEGORY_DISALLOWS_CLIENT_TYPE = 0x27DB, + BD_GMSG_PAYLOAD_TOO_BIG = 0x27DC, + BD_GMSG_MEMBER_POST_DISALLOWED = 0x27DD, + BD_GMSG_OVERLOADED = 0x27DE, + BD_GMSG_USER_PERCATEGORY_POST_RATE_EXCEEDED = 0x27DF, + BD_GMSG_USER_GLOBAL_POST_RATE_EXCEEDED = 0x27E0, + BD_GMSG_GROUP_POST_RATE_EXCEEDED = 0x27E1, + BD_GMSG_GROUP_LIMIT_REACHED = 0x27E2, + BD_GMSG_GROUP_MEMBERSHIP_LIMIT_REACHED = 0x27E3, + BD_SERVER_INVENTORY_SERVER_ERROR = 0x2904, + BD_SERVER_INVENTORY_SERVER_ALLOCATED = 0x2905, + BD_SERVER_INVENTORY_ENTRY_DOES_NOT_EXIST = 0x2906, + BD_SERVER_INVENTORY_DATA_LAYER_ERROR = 0x2907, + BD_SERVER_INVENTORY_NOT_ENABLED = 0x2908, + BD_SERVER_INVENTORY_NO_SERVER_ALLOCATED = 0x2909, + BD_SERVER_INVENTORY_MAX_REGISTRATION_LENGTH_EXCEEDED = 0x290A, + BD_SERVER_INVENTORY_REGISTRATION_INVALID_CHARACTERS = 0x290B, + BD_SERVER_INVENTORY_INVALID_PARAMETER = 0x290D, + BD_CODO_CLAN_NO_TEMP_RESERVATION = 0x2AF8, + BD_CODO_CLAN_TOO_MANY_MEMBERSHIPS = 0x2AF9, + BD_CODO_CLAN_UNEXPECTED_FOUNDATION_STATE = 0x2AFA, + BD_CODO_CLAN_UNABLE_TO_FIND_NAME = 0x2AFB, + BD_CODO_CLAN_INTERNAL_MARKETPLACE_ERROR = 0x2AFC, + BD_CODO_CLAN_INSUFFICIENT_FUNDS = 0x2AFD, + BD_CODO_CLAN_UNSATISFIED_PRECONDITION = 0x2AFE, + BD_CODO_CLAN_NO_CLAN = 0x2AFF, + BD_CODO_CLAN_NO_CHANNEL = 0x2B00, + BD_CODO_CLAN_NOT_A_CLAN_MEMBER = 0x2B01, + BD_CODO_CLAN_DISBAND_TOO_MANY_MEMBERS = 0x2B04, + BD_CODO_CLAN_DISBAND_TOO_SOON = 0x2B05, + BD_NO_SUCH_ROLE = 0x2EE0, + BD_NO_SUCH_PERMISSION = 0x2EE1, + BD_BAD_ROLE_SPECIFICATION = 0x2EE2, + BD_BAD_PERMISSION_SPECIFICATION = 0x2EE3, + BD_REDEEMABLE_CODE_REGISTRY_SERVICE_GENERIC_ERROR = 0x300D, + BD_REDEEMABLE_CODE_MARKETPLACE_SERVICE_GENERIC_ERROR = 0x300E, + BAD_PAYLOAD_ERROR = 0x300F, + INVALID_PAYLOAD_SIGNATURE_ERROR = 0x3010, + GENERATE_PAYLOAD_SIGNATURE_ERROR = 0x3011, + BD_REDEEMABLE_CODE_EXPIRED_CLIENT_TRANSACTION_ID = 0x3012, + BD_REDEEMABLE_CODE_NOT_FOUND = 0x3071, + BD_REDEEMABLE_CODE_USE_LIMIT_EXCEEDED = 0x3072, + BD_REDEEMABLE_CODE_ALREADY_USED_BY_USER = 0x3073, + BD_REDEEMABLE_CODE_EXPIRED = 0x3074, + INVALID_CLIENT_TRANSACTION_ID = 0x3075, + BD_ACHIEVEMENTS_ENGINE_CLIENT_ERROR = 0x30D5, + BD_ACHIEVEMENTS_ENGINE_SERVER_ERROR = 0x30D6, + BD_ACHIEVEMENTS_ENGINE_INSUFFICIENT_BALANCE_ERROR = 0x30D7, + BD_ACHIEVEMENTS_ENGINE_ACTIVATION_NOT_SCHEDULED_ERROR = 0x30D8, + BD_ACHIEVEMENTS_ENGINE_ACTIVE_LIMIT_EXCEEDED = 0x30D9, + BD_ACHIEVEMENTS_ENGINE_DUPLICATE_REQUEST_ID = 0x30DA, + BD_ACHIEVEMENTS_ENGINE_MULTI_STATUS = 0x30DB, + BD_MW4_BACKEND_SERVICE_NOT_AVAILABLE = 0x4CF5, + BD_MW4_BACKEND_RESOURCE_NOT_FOUND = 0x4CF6, + BD_MW4_BACKEND_BAD_REQUEST = 0x4CF7, + BD_CLANS_PROPOSAL_DOES_NOT_EXIST = 0x4D08, + BD_CLANS_GROUP_NAME_NOT_UNIQUE = 0x4D09, + BD_CLANS_MAX_GROUP_MEMBERSHIPS_REACHED = 0x4D0A, + BD_CLANS_MAX_GROUP_OWNERSHIPS_REACHED = 0x4D0B, + BD_CLANS_GROUP_DOES_NOT_EXIST = 0x4D0C, + BD_CLANS_GROUP_PERMISSION_DENIED = 0x4D0D, + BD_CLANS_VULGAR_GROUP_NAME = 0x4D0E, + BD_CLANS_GROUP_NAME_TOO_SHORT = 0x4D0F, + BD_CLANS_GROUP_ATTACHMENT_LIMIT_EXCEEDED = 0x4D10, + BD_CLANS_GROUP_FULL = 0x4D11, + BD_CLANS_MAX_OUTGOING_PROPOSALS_REACHED = 0x4D12, + BD_CLANS_MEMBER_BAN_EXISTS = 0x4D13, + BD_CLANS_GROUP_KIND_NOT_CONFIGURED = 0x4D14, + BD_CLANS_INVALID_ROOT_KIND = 0x4D15, + BD_CLANS_GROUP_FILE_DOES_NOT_EXIST = 0x4D16, + BD_CLANS_GROUP_FILE_COLLISION_FIELD_MISMATCH = 0x4D17, + BD_CLANS_BATCH_REQUEST_LIMIT_EXCEEDED = 0x4D18, + BD_CLANS_INVALID_PAGE_TOKEN = 0x4D19, + BD_CLANS_INVALID_GROUP_FILTER = 0x4D1A, + BD_CLANS_GROUP_TAG_NOT_UNIQUE = 0x4D1B, + BD_CLANS_GROUP_TAG_TOO_SHORT = 0x4D1C, + BD_CLANS_VULGAR_GROUP_TAG = 0x4D1D, + BD_REWARD_NO_REWARD_TOKEN_FOUND = 0x364C, + BD_REWARD_INVALID_ACHIEVEMENT_IDS_SPECIFIED = 0x364D, + BD_REWARD_CLIENT_ACHIEVEMENTS_NOT_ENABLED = 0x364E, + BD_REWARD_EVENTS_ERROR = 0x364F, + BD_REWARD_EVENTS_NOT_ENABLED = 0x3650, + BD_REWARD_EVENTS_RULES_ERROR = 0x3651, + BD_REWARD_EVENTS_DATA_ERROR = 0x3652, + BD_REWARD_EVENTS_TRANSACTION_ERROR = 0x3653, + BD_REWARD_CONFIGURATION_ERROR = 0x3654, + BD_REWARD_TOO_MANY_ACTIVE_CHALLENGES = 0x3655, + BD_REWARD_EVENTS_TRANSACTION_EXPIRED = 0x3656, + BD_REWARD_CHALLENGE_NOT_SCHEDULED = 0x3657, + BD_REWARD_CHALLENGE_ALREADY_COMPLETED = 0x3658, + BD_REWARD_CODO_TOO_MANY_REROLLS = 0x367E, + BD_REWARD_CODO_BAD_REROLL_PARAMS = 0x367F, + BD_UMBRELLA_PROVIDER_SERVER_ERROR = 0x36B0, + BD_UMBRELLA_PROVIDER_UNSUPPORTED_OPERATION = 0x36B1, + BD_UMBRELLA_ERROR = 0x36B2, + BD_UMBRELLA_INVALID_TITLE_ID = 0x36B3, + BD_UMBRELLA_INVALID_QUERY_STRING = 0x36B4, + BD_UMBRELLA_INVALID_DATA = 0x36B5, + BD_UMBRELLA_INVALID_CLIENT = 0x36B6, + BD_UMBRELLA_PROVIDER_NOT_SUPPORTED = 0x36B7, + BD_UMBRELLA_UNAUTHORIZED_ACCESS = 0x36B8, + BD_UMBRELLA_INVALID_TOKEN = 0x36B8, + BD_UMBRELLA_EXPIRED_PROVIDER_REFRESH_TOKEN = 0x36B9, + BD_UMBRELLA_NO_VALID_PROVIDER_TOKENS = 0x36BA, + BD_UMBRELLA_INVALID_LSG_TICKET = 0x36BB, + BD_UMBRELLA_TOKEN_NOT_FOUND = 0x36BC, + BD_UMBRELLA_USER_NOT_FOUND = 0x36BD, + BD_UMBRELLA_ACCOUNT_NOT_FOUND = 0x36BE, + BD_UMBRELLA_MERGE_CONFLICT = 0x36BF, + BD_UMBRELLA_PROVIDER_INACCESSIBLE = 0x36C0, + BD_UMBRELLA_MISSING_FIELD = 0x36C1, + BD_UMBRELLA_FIELD_INVALID = 0x36C2, + BD_UMBRELLA_PLAYER_BAN = 0x36C3, + BD_UMBRELLA_EXPIRED_TOKEN = 0x3719, + BD_UNO_ERROR = 0x3714, + BD_UNO_INVALID_DATA = 0x3715, + BD_UNO_INVALID_DATE_OF_BIRTH = 0x3716, + BD_UNO_UNAUTHORIZED_ACCESS = 0x3717, + BD_UNO_INVALID_TOKEN = 0x3718, + BD_UNO_EXPIRED_TOKEN = 0x3719, + BD_UNO_EMAIL_NOT_VERIFIED = 0x371A, + BD_UNO_TOS_VERSION_NOT_FOUND = 0x371B, + BD_UNO_TOS_CONTENT_NOT_FOUND = 0x371C, + BD_UNO_TOS_ALREADY_ACCEPTED = 0x371D, + BD_UNO_MISSING_FIELD = 0x371E, + BD_UNO_DNS_RESOLUTION_FAILED = 0x371F, + BD_UNO_FIELD_INVALID = 0x3720, + BD_UNO_INVALID_USERNAME = 0x3721, + BD_UNO_INVALID_PASSWORD = 0x3722, + BD_UNO_EMAIL_ALREADY_EXISTS = 0x3723, + BD_UNO_DESERIALIZATION_FAILURE = 0x3724, + BD_UMBRELLA_DESERIALIZATION_FAILURE = 0x3725, + BD_UNO_NO_RENAME_TOKENS = 0x3726, + BD_UNO_MARKETPLACE_ERROR = 0x3727, + BD_SI_ERROR = 0x3777, + BD_MATCH_SCHEDULER_ERROR = 0x3A98, + BD_MATCH_SCHEDULER_SCHEDULED_MATCH_DOES_NOT_EXIST = 0x3A99, + BD_MATCH_SCHEDULER_MAXIMUM_EVENTS_PER_MATCH_REACHED = 0x3A9A, + BD_MLG_ERROR = 0x3AFC, + BD_MLG_REMOTE_ERROR = 0x3AFD, + BD_CODO_AUTO_JOIN_LEVEL_NOT_MET = 0x4A9D, + BD_CODO_NOT_PERMITTED_TO_UPDATE_PROFILE_FIELD = 0x4A9E, + BD_CODO_INVALID_PROFILE_VALUE = 0x4A9F, + BD_CODO_PROFILE_COLUMN_DOES_NOT_EXIST = 0x4AA0, + BD_CODO_LOUDSPEAKER_INVALID_TOKEN = 0x4AA1, + BD_CODO_LOUDSPEAKER_INVALID_CATEGORY = 0x4AA2, + BD_CODO_RESETTABLE_STATS_NOT_CONFIGURED = 0x4AA3, + BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_INVALID_ITEM = 0x4AAB, + BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_INTERNAL_ERROR = 0x4AAC, + BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_UNAVAILABLE_ITEM = 0x4AAD, + BD_PLAYER_VOTE_REJECTED = 0x5EED, + BD_AMM_NOT_LOBBY_HOST = 0x38A4, + BD_AMM_NOT_PARTY_HOST = 0x38A5, + BD_AMM_NOT_LOBBY_MEMBER = 0x38A6, + BD_AMM_INVALID_MATCHMAKING_ID = 0x38A7, + BD_AMM_INVALID_LOBBY_ID = 0x38A8, + BD_AMM_SEARCH_IN_PROGRESS = 0x38A9, + BD_AMM_USER_ALREADY_MATCHMAKING = 0x38AA, + BD_AMM_INVALID_TOKEN = 0x38AB, + BD_AMM_INVALID_DOCUMENT_FORMAT = 0x38AC, + BD_AMM_PLAYER_INFO_UNAVAILABLE = 0x38AD, + BD_AMM_REQUEST_DESERIALIZATION_FAILED = 0x38AE, + BD_AMM_INVALID_QOS_TRANSACTION_ID = 0x38AF, + BD_AMM_INVALID_USER_ID_IN_GUEST_SLOTS = 0x38B0, + BD_AMM_NO_BUILD_NAME_SET = 0x38B1, + BD_AMM_LOBBY_MERGED = 0x38B2, + BD_AMM_BACKOFF_REQUESTED = 0x38B3, + BD_AMM_PLAYER_INFO_INCOMPATIBLE_BUILDS = 0x38B4, + BD_AMM_INVALID_DC_QOS_ADDRESS = 0x38B5, + BD_AMM_INVALID_PLAYER_INFO_DC_QOS_SETTINGS = 0x38B6, + BD_AMM_INVALID_PLAYER_INFO_LISTEN_SERVER_SETTINGS = 0x38B7, + BD_AMM_MIGRATION_NOT_PERMITTED = 0x38B8, + BD_AMM_INVALID_LOBBY_MEMBER_STATUS_TRANSITION = 0x38B9, + BD_AMM_LOBBY_MEMBER_STATUS_REPORTED_FOR_UNKNOWN_PLAYER = 0x38BA, + BD_AMM_DEDI_SHUTDOWN_NOT_PERMITTED = 0x38BB, + BD_AMM_INVALID_USER_ID_IN_PLAYER_RULESET_PAYLOADS = 0x38BC, + BD_AMM_INVALID_MAP_PACK = 0x38BD, + BD_AMM_TOURNAMENT_PLAYER_NOT_IN_TOURNAMENT = 0x38BE, + BD_AMM_TOURNAMENT_DUPLICATE_ACK_JOIN = 0x38BF, + BD_AMM_TOURNAMENT_INVALID_TOURNAMENT_STATUS = 0x38C0, + BD_AMM_TOURNAMENT_INVALID_TOURNAMENT_ID = 0x38C1, + BD_AMM_TOURNAMENT_LOBBY_NOT_IN_ROUND = 0x38C2, + BD_AMM_TOURNAMENT_TEAM_NOT_IN_MATCH = 0x38C3, + BD_AMM_TOURNAMENT_PLAYER_NOT_IN_ROUND = 0x38C4, + BD_AMM_TOURNAMENT_INVALID_LOBBY_DOC = 0x38C5, + BD_AMM_TOURNAMENT_ELIMINATED_PLAYER = 0x38C6, + BD_AMM_TOURNAMENT_LOBBY_ID_NOT_IN_TOURNAMENT = 0x38C7, + BD_AMM_TOURNAMENT_MATCH_ALREADY_HAS_RESULT = 0x38C8, + BD_AMM_TOURNAMENT_MATCH_IN_PROGRESS = 0x38C9, + BD_AMM_TOURNAMENT_FULL = 0x38CA, + BD_CROSS_PLATFORM_FRIENDS_UNKNOWN_ERROR = 0x3E80, + BD_CROSS_PLATFORM_FRIENDS_SELF_FRIENDSHIP_NOT_ALLOWED = 0x3E81, + BD_CROSS_PLATFORM_FRIENDS_CALLER_FRIENDS_LIST_FULL = 0x3E82, + BD_CROSS_PLATFORM_FRIENDS_OTHER_PLAYER_FRIENDS_LIST_FULL = 0x3E83, + BD_CROSS_PLATFORM_FRIENDS_CALLER_OUTGOING_FRIEND_REQUESTS_FULL = 0x3E84, + BD_CROSS_PLATFORM_FRIENDS_OTHER_PLAYER_INCOMING_FRIEND_REQUESTS_FULL = 0x3E85, + BD_CROSS_PLATFORM_FRIENDS_INVALID_PAGE_TOKEN = 0x3E86, + BD_CROSS_PLATFORM_FRIENDS_FRIENDSHIP_ALREADY_EXISTS = 0x3E87, + BD_CROSS_PLATFORM_FRIENDS_INVITE_ALREADY_EXISTS = 0x3E88, + BD_CROSS_PLATFORM_FRIENDS_BACKEND_UNAVAILABLE_ERROR = 0x3E89, + BD_CROSS_PLATFORM_FRIENDS_INVITED_USER_IS_BLOCKED = 0x3E8A, + BD_CROSS_PLATFORM_FRIENDS_CALLER_IS_BLOCKED = 0x3E8B, + BD_CROSS_PLATFORM_FRIENDS_BLOCKED_USER_LIST_FULL = 0x3E8C, + BD_CROSS_PLATFORM_FRIENDS_USER_IS_ALREADY_BLOCKED = 0x3E8D, + BD_CROSS_PLATFORM_USERLISTS_UNKNOWN_ERROR = 0x3F48, + BD_CROSS_PLATFORM_USERLISTS_LIST_DOES_NOT_EXIST = 0x3F49, + BD_CROSS_PLATFORM_USERLISTS_LIST_ALREADY_EXISTS = 0x3F4A, + BD_CROSS_PLATFORM_USERLISTS_INVALID_PAGE_TOKEN = 0x3F4B, + BD_CROSS_PLATFORM_PRESENCE_UNKNOWN_ERROR = 0x4010, + BD_CROSS_PLATFORM_PRESENCE_INVALID_PAGE_TOKEN = 0x4011, + BD_CROSS_PLATFORM_PRESENCE_SUBSCRIPTIONS_LIST_FULL = 0x4012, + BD_CROSS_PLATFORM_PRESENCE_SUBSCRIBERS_LIST_FULL = 0x4013, + BD_CROSS_PLATFORM_PRESENCE_INVALID_MAXIMUM_PAGE_SIZE = 0x4014, + BD_CROSS_PLATFORM_PRESENCE_EXCEEDED_MAX_USERS_IN_REQUEST = 0x4015, + BD_CROSS_TITLE_LOCALIZED_STRINGS_UNKNOWN_ERROR = 0x4074, + BD_CROSS_TITLE_LOCALIZED_STRINGS_STRING_SET_DOES_NOT_EXIST_ERROR = 0x4075, + BD_CROSS_TITLE_LOCALIZED_STRINGS_INVALID_FORMAT_STRING_ERROR = 0x4076, + BD_CROSS_TITLE_LOCALIZED_STRINGS_INVALID_STRING_REF_ERROR = 0x4077, + BD_CROSS_TITLE_LOCALIZED_STRINGS_NOT_ENOUGH_STRING_REFS_ERROR = 0x4078, + BD_OBJECTSTORE_PROXY_OBJECT_NOT_FOUND = 0x4E20, + BD_OBJECTSTORE_PROXY_INVALID_ACCESS = 0x4E21, + BD_OBJECTSTORE_PROXY_SERVICE_UNAVAILABLE = 0x4E22, + BD_OBJECTSTORE_PROXY_OBJECT_TOO_BIG_FOR_REMAINING_SIZE_WINDOW_SPACE_ERROR = 0x4E23, + BD_OBJECTSTORE_PROXY_OBJECT_TOO_BIG_FOR_SIZE_WINDOW_ERROR = 0x4E24, + BD_OBJECTSTORE_HTTP_ERROR = 0x4E84, + BD_OBJECTSTORE_FAILED_TO_START_HTTP = 0x4E85, + BD_AB_TESTING_OBJECT_NOT_FOUND = 0x4BC8, + BD_AB_TESTING_INVALID_ACCESS = 0x4BC9, + BD_AB_TESTING_SERVICE_UNAVAILABLE = 0x4BCA, + BD_REST_ERROR_TEMPORARY_REDIRECT = 0x639C, + BD_REST_ERROR_PERMANENT_REDIRECT = 0x639D, + BD_REST_ERROR_NOT_MODIFIED = 0x639E, + BD_REST_ERROR_BAD_REQUEST = 0x639F, + BD_REST_ERROR_UNAUTHORIZED = 0x63A0, + BD_REST_ERROR_FORBIDDEN = 0x63A1, + BD_REST_ERROR_NOT_FOUND = 0x63A2, + BD_REST_ERROR_METHOD_NOT_ALLOWED = 0x63A3, + BD_REST_ERROR_NOT_ACCEPTABLE = 0x63A4, + BD_REST_ERROR_REQUEST_TIMEOUT = 0x63A5, + BD_REST_ERROR_CONFLICT = 0x63A6, + BD_REST_ERROR_PRECONDITION_FAILED = 0x63A7, + BD_REST_ERROR_PAYLOAD_TOO_LARGE = 0x63A8, + BD_REST_ERROR_REQUEST_URI_TOO_LONG = 0x63A9, + BD_REST_ERROR_REQUESTED_RANGE_NOT_SATISFIABLE = 0x63AA, + BD_REST_ERROR_INTERNAL_SERVER_ERROR = 0x63AB, + BD_REST_ERROR_BAD_GATEWAY = 0x63AC, + BD_REST_ERROR_SERVICE_UNAVAILABLE = 0x63AD, + BD_REST_ERROR_GATEWAY_TIMEOUT = 0x63AE, + BD_REST_ERROR_REQUEST_CANCELLED = 0x63AF, + BD_LOGIN_UNKOWN_ERROR = 0x7724, + BD_MAX_ERROR_CODE = 0x7725, + }; + + enum bdBitBufferDataType + { + BD_BB_NO_TYPE = 0x0, + BD_BB_BOOL_TYPE = 0x1, + BD_BB_SIGNED_CHAR8_TYPE = 0x2, + BD_BB_UNSIGNED_CHAR8_TYPE = 0x3, + BD_BB_WCHAR16_TYPE = 0x4, + BD_BB_SIGNED_INTEGER16_TYPE = 0x5, + BD_BB_UNSIGNED_INTEGER16_TYPE = 0x6, + BD_BB_SIGNED_INTEGER32_TYPE = 0x7, + BD_BB_UNSIGNED_INTEGER32_TYPE = 0x8, + BD_BB_SIGNED_INTEGER64_TYPE = 0x9, + BD_BB_UNSIGNED_INTEGER64_TYPE = 0xA, + BD_BB_RANGED_SIGNED_INTEGER32_TYPE = 0xB, + BD_BB_RANGED_UNSIGNED_INTEGER32_TYPE = 0xC, + BD_BB_FLOAT32_TYPE = 0xD, + BD_BB_FLOAT64_TYPE = 0xE, + BD_BB_RANGED_FLOAT32_TYPE = 0xF, + BD_BB_SIGNED_CHAR8_STRING_TYPE = 0x10, + BD_BB_UNSIGNED_CHAR8_STRING_TYPE = 0x11, + BD_BB_MBSTRING_TYPE = 0x12, + BD_BB_BLOB_TYPE = 0x13, + BD_BB_NAN_TYPE = 0x14, + BD_BB_FULL_TYPE = 0x15, + BD_COMPRESSED_BB_PAYLOAD_TYPE = 0x16, + BD_BB_STRUCTURED_DATA_TYPE = 0x17, + BD_BB_MAX_TYPE = 0x20, + }; + + enum bdNATType : uint8_t + { + BD_NAT_UNKNOWN = 0x0, + BD_NAT_OPEN = 0x1, + BD_NAT_MODERATE = 0x2, + BD_NAT_STRICT = 0x3, + }; + +#pragma pack(push, 1) + struct bdAuthTicket + { + unsigned int m_magicNumber; + char m_type; + unsigned int m_titleID; + unsigned int m_timeIssued; + unsigned int m_timeExpires; + unsigned long long m_licenseID; + unsigned long long m_userID; + char m_username[64]; + char m_sessionKey[24]; + char m_usingHashMagicNumber[3]; + char m_hash[4]; + }; +#pragma pack(pop) +} \ No newline at end of file diff --git a/src/client/game/types/party.hpp b/src/client/game/types/party.hpp new file mode 100644 index 00000000..2c195fbf --- /dev/null +++ b/src/client/game/types/party.hpp @@ -0,0 +1,27 @@ +#pragma once + +namespace game::party +{ + enum PartyPreloadMapStage : std::uint32_t + { + PRELOAD_MAP_IDLE = 0x0, + PRELOAD_MAP_INITIATED = 0x1, + PRELOAD_MAP_STARTED = 0x2, + PRELOAD_MAP_COUNT = 0x3, + }; + + struct PartyData + { + char __pad0[11444]; + PartyPreloadMapStage preloadingMapStage; + char __pad1[101]; + bool m_gameStartSkipCountdown; + char __pad2[110]; + int lobbyFlags; + bool gameStartRequested; + }; + static_assert(offsetof(PartyData, preloadingMapStage) == 11444); + static_assert(offsetof(PartyData, m_gameStartSkipCountdown) == 11549); + static_assert(offsetof(PartyData, lobbyFlags) == 11660); + static_assert(offsetof(PartyData, gameStartRequested) == 11664); +} \ No newline at end of file diff --git a/src/client/game/types/pmem.hpp b/src/client/game/types/pmem.hpp new file mode 100644 index 00000000..5d227361 --- /dev/null +++ b/src/client/game/types/pmem.hpp @@ -0,0 +1,66 @@ +#pragma once + +namespace game::pmem +{ + enum PMem_Stack : __int32 + { + PMEM_STACK_GAME = 0x0, + PMEM_STACK_RENDER_TARGETS = 0x1, + PMEM_STACK_MEM_VIRTUAL = 0x2, + PMEM_STACK_MEMCARD_LARGE_BUFFER = 0x3, + PMEM_STACK_SOUND = 0x4, + PMEM_STACK_STASHED_MEMORY = 0x5, + PMEM_STACK_CINEMATIC = 0x6, + PMEM_STACK_COUNT = 0x7, + }; + + enum PMem_Source + { + PMEM_SOURCE_EXTERNAL = 0x0, + PMEM_SOURCE_SCRIPT = 0x1, + }; + + enum PMem_Direction : __int32 + { + PHYS_ALLOC_LOW = 0x0, + PHYS_ALLOC_HIGH = 0x1, + PHYS_ALLOC_COUNT = 0x2, + }; + + enum Mem_PageID + { + }; + + struct Mem_PageRange + { + Mem_PageID firstPageID; + Mem_PageID lastPageID; + }; + + struct PhysicalMemoryAllocation + { + const char* name; + char* prev_buffer; + char* next_buffer; + unsigned __int64 pos; + Mem_PageRange pageRange; + }; + + struct PhysicalMemoryPrim + { + const char* name; + unsigned int allocListCount; + char __pad0[4]; + unsigned __int8* buf; + unsigned __int64 unk_pos; + int unk1; + char __pad2[4]; + unsigned __int64 pos; + PhysicalMemoryAllocation allocList[32]; + }; + + struct PhysicalMemory + { + PhysicalMemoryPrim prim[2]; + }; +} \ No newline at end of file diff --git a/src/client/game/types/sv.hpp b/src/client/game/types/sv.hpp new file mode 100644 index 00000000..f92ee228 --- /dev/null +++ b/src/client/game/types/sv.hpp @@ -0,0 +1,24 @@ +#pragma once + +namespace game::sv +{ + struct SvServerInitSettings + { + char mapName[64]; + char gameType[64]; + char serverHostName[64]; + bool hardcoreMode; + unsigned int maxClientCount; + unsigned int maxAgentCount; + bool isMapPreloaded; + bool isSaveGame; + bool isRestart; + bool isFrontEnd; + char __pad0[2]; + bool serverThreadStartup; + }; //static_assert(sizeof(SvServerInitSettings) == 212); + static_assert(offsetof(SvServerInitSettings, maxClientCount) == 196); + static_assert(offsetof(SvServerInitSettings, isMapPreloaded) == 204); + static_assert(offsetof(SvServerInitSettings, isFrontEnd) == 207); + static_assert(offsetof(SvServerInitSettings, serverThreadStartup) == 210); +} \ No newline at end of file diff --git a/src/client/std_include.hpp b/src/client/std_include.hpp index 8f1936b4..863a376d 100644 --- a/src/client/std_include.hpp +++ b/src/client/std_include.hpp @@ -102,8 +102,4 @@ using namespace std::literals; -#ifdef DEBUG -//#define DW_DEBUG -#endif - #define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)