Merge pull request #113 from Joelrau/demonware

cleanup
This commit is contained in:
quaK 2024-01-31 20:01:59 +02:00 committed by GitHub
commit c8a99d23c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
65 changed files with 1488 additions and 1726 deletions

View File

@ -4,7 +4,10 @@
#include <utils/hook.hpp>
#include <utils/thread.hpp>
#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<uint8_t>(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<uint8_t>(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<uint8_t>(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

View File

@ -1,182 +0,0 @@
#include <std_include.hpp>
#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<const unsigned char*>(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<unsigned char*>(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<char*>(this->buffer_.data());
const auto* input_bytes = static_cast<const unsigned char*>(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_;
}
}

View File

@ -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;
};
}

View File

@ -1,65 +1,65 @@
#include <std_include.hpp>
#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<char*>(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<char*>(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<int>(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);

View File

@ -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);

View File

@ -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;

View File

@ -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"

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#include "keys.hpp"
#include "dw_include.hpp"
#include <utils/cryptography.hpp>
#include <utils/string.hpp>

View File

@ -1,7 +1,5 @@
#include <std_include.hpp>
#include "keys.hpp"
#include "reply.hpp"
#include "servers/service_server.hpp"
#include "dw_include.hpp"
#include <utils/cryptography.hpp>
@ -65,16 +63,6 @@ namespace demonware
return response.get_buffer();
}
void remote_reply::send(bit_buffer* buffer, const bool encrypted)
{
std::unique_ptr<typed_reply> reply;
if (encrypted) reply = std::make_unique<encrypted_reply>(this->type_, buffer);
else reply = std::make_unique<unencrypted_reply>(this->type_, buffer);
this->server_->send_reply(reply.get());
}
void remote_reply::send(byte_buffer* buffer, const bool encrypted)
{
std::unique_ptr<typed_reply> reply;

View File

@ -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<uint32_t>(this->objects_.size()));
if (!this->objects_.empty())
{
buffer.write_uint32(uint32_t(this->objects_.size()));
buffer.write_uint32(static_cast<uint32_t>(this->objects_.size()));
for (auto& object : this->objects_)
{
@ -145,20 +133,17 @@ namespace demonware
return transaction_id;
}
void add(const std::shared_ptr<bdTaskResult>& object)
template<typename T>
void add(std::unique_ptr<T>& object)
{
this->objects_.push_back(object);
}
void add(bdTaskResult* object)
{
this->add(std::shared_ptr<bdTaskResult>(object));
static_assert(std::is_base_of_v<bdTaskResult, T>);
this->objects_.emplace_back(std::move(object));
}
private:
uint8_t type_;
uint32_t error_;
remote_reply reply_;
std::vector<std::shared_ptr<bdTaskResult>> objects_;
std::vector<std::unique_ptr<bdTaskResult>> objects_;
};
}

View File

@ -1,7 +1,7 @@
#include <std_include.hpp>
#include "../dw_include.hpp"
#include "auth3_server.hpp"
#include "../keys.hpp"
#include <utils/cryptography.hpp>
#include <utils/string.hpp>

View File

@ -1,4 +1,6 @@
#include <std_include.hpp>
#include "../dw_include.hpp"
#include "base_server.hpp"
#include <utils/cryptography.hpp>

View File

@ -1,8 +1,7 @@
#include <std_include.hpp>
#include "lobby_server.hpp"
#include "../dw_include.hpp"
#include "../services.hpp"
#include "../keys.hpp"
#include "lobby_server.hpp"
#include <utils/cryptography.hpp>
@ -36,8 +35,6 @@ namespace demonware
this->register_service<bdStorage>();
this->register_service<bdTeams>();
this->register_service<bdTitleUtilities>();
this->register_service<bdUNK63>();
this->register_service<bdUNK123>();
this->register_service<bdUserGroups>();
};
@ -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();
}
}
}

View File

@ -9,17 +9,14 @@ namespace demonware
public:
virtual ~service_server() = default;
virtual std::shared_ptr<remote_reply> create_message(uint8_t type)
virtual remote_reply create_message(uint8_t type)
{
auto reply = std::make_shared<remote_reply>(this, type);
return reply;
return remote_reply{ this, type };
}
virtual std::shared_ptr<service_reply> 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<service_reply>(this, type, error);
return reply;
return service_reply{ this, type, error };
}
virtual void send_reply(reply* data) = 0;

View File

@ -1,4 +1,6 @@
#include <std_include.hpp>
#include "../dw_include.hpp"
#include "stun_server.hpp"
#include "../byte_buffer.hpp"

View File

@ -1,4 +1,6 @@
#include <std_include.hpp>
#include "../dw_include.hpp"
#include "tcp_server.hpp"
namespace demonware

View File

@ -1,4 +1,6 @@
#include <std_include.hpp>
#include "../dw_include.hpp"
#include "udp_server.hpp"
namespace demonware

View File

@ -1,4 +1,5 @@
#include <std_include.hpp>
#include "../dw_include.hpp"
#include "umbrella_server.hpp"

View File

@ -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();
}
}

View File

@ -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

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,48 +1,32 @@
#include <std_include.hpp>
#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<bdStringResult>(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();
}
}

View File

@ -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;
};
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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);
}
}

View File

@ -1,17 +1,17 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -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;
};
}

View File

@ -1,25 +1,25 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -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;
};
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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<bdDMLRawData>();
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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#include "../services.hpp"
#include "../dw_include.hpp"
#include <utils/io.hpp>
@ -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();
}
}

View File

@ -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;

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -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;
};
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#include "../services.hpp"
#include "../dw_include.hpp"
#include <utils/nt.hpp>
#include <utils/io.hpp>
@ -84,7 +84,7 @@ namespace demonware
if (this->load_publisher_resource(filename, data))
{
auto* info = new bdFileInfo;
auto info = std::make_unique<bdFileInfo>();
info->file_id = *reinterpret_cast<const uint64_t*>(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<bdFileData>(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<bdFile2>();
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<bdFileQueryResult>();
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();
}
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -1,28 +1,34 @@
#include <std_include.hpp>
#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<bdProfanityResult>();
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<bdTimeStamp>();
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();
}
}

View File

@ -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;
};
}

View File

@ -1,18 +0,0 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -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;
};
}

View File

@ -1,17 +0,0 @@
#include <std_include.hpp>
#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();
}
}

View File

@ -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;
};
}

View File

@ -1,5 +1,5 @@
#include <std_include.hpp>
#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();
}
}

File diff suppressed because it is too large Load Diff

View File

@ -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
{
};
}

View File

@ -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)
}

View File

@ -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);
}

View File

@ -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];
};
}

View File

@ -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);
}

View File

@ -102,8 +102,4 @@
using namespace std::literals;
#ifdef DEBUG
//#define DW_DEBUG
#endif
#define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)