From 2e5f3c3d8236626988df431a27e2a6ac048b3dcc Mon Sep 17 00:00:00 2001 From: quaK <38787176+Joelrau@users.noreply.github.com> Date: Fri, 27 May 2022 06:25:26 +0300 Subject: [PATCH] add asset stuff --- src/client/component/fastfiles.cpp | 128 ++++++ src/client/component/fastfiles.hpp | 6 + src/client/component/logger.cpp | 1 + src/client/component/scheduler.cpp | 2 +- src/client/game/game.cpp | 97 ++++- src/client/game/game.hpp | 4 +- src/client/game/structs.hpp | 623 ++++++++++++++++++++++++++--- src/client/game/symbols.hpp | 6 +- 8 files changed, 803 insertions(+), 64 deletions(-) create mode 100644 src/client/component/fastfiles.cpp create mode 100644 src/client/component/fastfiles.hpp diff --git a/src/client/component/fastfiles.cpp b/src/client/component/fastfiles.cpp new file mode 100644 index 00000000..82282cf3 --- /dev/null +++ b/src/client/component/fastfiles.cpp @@ -0,0 +1,128 @@ +#include +#include "loader/component_loader.hpp" +#include "fastfiles.hpp" + +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" + +#include +#include +#include + +//#define XFILE_DEBUG + +namespace fastfiles +{ + static utils::concurrency::container current_fastfile; + + std::string get_current_fastfile() + { + std::string fastfile_copy; + current_fastfile.access([&](std::string& fastfile) + { + fastfile_copy = fastfile; + }); + return fastfile_copy; + } + + namespace + { + utils::hook::detour db_try_load_x_file_internal_hook; + utils::hook::detour db_init_load_x_file_hook; + utils::hook::detour db_load_x_zone_hook; + utils::hook::detour db_find_xasset_header_hook; + + void db_try_load_x_file_internal_stub(const char* zone_name, const unsigned int zone_flags, + const bool is_base_map, const bool was_paused, const int failure_mode) + { + current_fastfile.access([&](std::string& fastfile) + { + fastfile = zone_name; + }); + return db_try_load_x_file_internal_hook.invoke(zone_name, zone_flags, is_base_map, was_paused, failure_mode); + } + + void db_init_load_x_file_stub(const char* name, std::uint64_t offset) + { + console::info("Loading xfile %s\n", name); + return db_init_load_x_file_hook.invoke(name, offset); + } + + void db_load_x_zone_stub(const char* parent_name, unsigned int zone_flags, bool is_base_map, int failure_mode) + { + console::info("Loading zone %s\n", parent_name); + + return db_load_x_zone_hook.invoke(parent_name, zone_flags, is_base_map, failure_mode); + } + + game::XAssetHeader db_find_xasset_header_stub(game::XAssetType type, const char* name, int allow_create_default) + { + auto result = db_find_xasset_header_hook.invoke(type, name, allow_create_default); + if (!result.data) + { + console::error("Error: Could not find %s \"%s\"", + game::g_assetNames[static_cast(type)], + name); + } + return result; + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + db_try_load_x_file_internal_hook.create(0x3BBC40_b, db_try_load_x_file_internal_stub); +#if defined(DEBUG) and defined (XFILE_DEBUG) + db_init_load_x_file_hook.create(0x9E8D10_b, db_init_load_x_file_stub); +#else + db_load_x_zone_hook.create(0x3BA920_b, db_load_x_zone_stub); +#endif + + db_find_xasset_header_hook.create(0xA76E00_b, db_find_xasset_header_stub); + + command::add("listassetpool", [](const command::params& params) + { + if (params.size() < 2) + { + console::info("listassetpool [filter]: list all the assets in the specified pool\n"); + + for (auto i = 0; i < game::XAssetType::ASSET_TYPE_COUNT; i++) + { + console::info("%d %s\n", i, game::g_assetNames[i]); + } + return; + } + + const auto type = static_cast(atoi(params.get(1))); + + if (type < 0 || type >= game::XAssetType::ASSET_TYPE_COUNT) + { + console::error("Invalid pool passed must be between [%d, %d]\n", 0, game::XAssetType::ASSET_TYPE_COUNT - 1); + return; + } + + console::info("Listing assets in pool %s\n", game::g_assetNames[type]); + + const std::string filter = params.get(2); + game::DB_EnumXAssets(type, [type, filter](const game::XAssetHeader header) + { + const game::XAsset asset{ type, header }; + const auto* const asset_name = game::DB_GetXAssetName(&asset); + + if (!filter.empty() && !utils::string::match_compare(filter, asset_name, false)) + { + return; + } + + console::info("%s\n", asset_name); + }); + }); + } + }; +} + +REGISTER_COMPONENT(fastfiles::component) \ No newline at end of file diff --git a/src/client/component/fastfiles.hpp b/src/client/component/fastfiles.hpp new file mode 100644 index 00000000..a8709ece --- /dev/null +++ b/src/client/component/fastfiles.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace fastfiles +{ + std::string get_current_fastfile(); +} \ No newline at end of file diff --git a/src/client/component/logger.cpp b/src/client/component/logger.cpp index d70b5bee..40c589b6 100644 --- a/src/client/component/logger.cpp +++ b/src/client/component/logger.cpp @@ -21,6 +21,7 @@ namespace logger utils::hook::call(0xC6E57A_b, sys_print_stub); // SV_SpawnServer: completed\n utils::hook::call(0xC13641_b, sys_print_stub); // SV_CmdsSP_MapRestart: completed\n utils::hook::jump(0x519772_b, sys_print_stub); // OnlineAutoTest:: Map load success. Server is listen.\n + utils::hook::call(0xB712BA_b, sys_print_stub); // G_SaveError } void R_WarnOncePerFrame_print_stub(char* buffer, size_t buffer_length, char* msg, va_list va) diff --git a/src/client/component/scheduler.cpp b/src/client/component/scheduler.cpp index 5da50bcd..c956feea 100644 --- a/src/client/component/scheduler.cpp +++ b/src/client/component/scheduler.cpp @@ -158,7 +158,7 @@ namespace scheduler schedule([=]() { const auto dw_init = game::Live_SyncOnlineDataFlags(0) == 0; - if (dw_init && game::Sys_IsDatabaseReady2()) + if (dw_init) { once(callback, type, delay); return cond_end; diff --git a/src/client/game/game.cpp b/src/client/game/game.cpp index a0a11089..49c6b56b 100644 --- a/src/client/game/game.cpp +++ b/src/client/game/game.cpp @@ -38,9 +38,102 @@ namespace game return 0; //return *mp::virtualLobby_loaded == 1; } - bool Sys_IsDatabaseReady2() + const char* g_assetNames[ASSET_TYPE_COUNT] = { - return game::databaseCompletedEvent2; + "physicslibrary", + "physicssfxeventasset", + "physicsvfxeventasset", + "physicsasset", + "physicsfxpipeline", + "physicsfxshape", + "xanim", + "xmodelsurfs", + "xmodel", + "mayhem", // not confirmed + "material", + "computeshader", + "vertexshader", + "hullshader", + "domainshader", + "pixelshader", + "vertexdecl", + "techset", + "image", + "soundglobals", + "soundbank", + "soundbankpatch", + "col_map", + "com_map", + "glass_map", + "aipaths", + "navmesh", + "map_ents", + "fx_map", + "gfx_map", + "gfx_map_trzone", + "iesprofile", + "lightdef", + "ui_map", + "animclass", + "playeranim", + "gesture", + "localize", + "attachment", + "weapon", + "vfx", + "impactfx", // not confirmed + "surfacefx", // not confirmed + "aitype", // not confirmed + "mptype", // not confirmed + "character", // not confirmed + "xmodelalias", // not confirmed + "ASSET_TYPE_UNKNOWN", // not confirmed + "rawfile", + "scriptfile", + "stringtable", + "leaderboarddef", + "virtualleaderboarddef", + "structureddatadef", + "ddl", + "tracer", + "vehicle", + "addon_map_ents", + "netconststrings", + "luafile", + "scriptable", + "equipsndtable", + "vectorfield", + "particlesimanimation", + "streaminginfo", + "laser", + "ttf", + "suit", + "suitanimpackage", + "spaceshiptarget", + "rumble", + "rumblegraph", + "animpkg", + "sfxpkg", + "vfxpkg", + "behaviortree", + "animarchetype", + "proceduralbones", + "reticle", + "gfxlightmap", + }; + + const char* DB_GetXAssetName(const XAsset* asset) + { + return DB_GetXAssetHeaderName(asset->type, asset->header); + } + + void DB_EnumXAssets(const std::int32_t type, const std::function& callback) + { + DB_EnumXAssets_FastFile(type, static_cast([](XAssetHeader header, void* data) + { + const auto& cb = *static_cast*>(data); + cb(header); + }), &callback); } namespace environment diff --git a/src/client/game/game.hpp b/src/client/game/game.hpp index bd84f0d1..60810af6 100644 --- a/src/client/game/game.hpp +++ b/src/client/game/game.hpp @@ -50,7 +50,9 @@ namespace game bool VirtualLobby_Loaded(); - bool Sys_IsDatabaseReady2(); + extern const char* g_assetNames[ASSET_TYPE_COUNT]; + const char* DB_GetXAssetName(const XAsset* asset); + void DB_EnumXAssets(const std::int32_t type, const std::function& callback); } uintptr_t operator"" _b(const uintptr_t ptr); diff --git a/src/client/game/structs.hpp b/src/client/game/structs.hpp index 3e98466c..2922a39e 100644 --- a/src/client/game/structs.hpp +++ b/src/client/game/structs.hpp @@ -326,13 +326,87 @@ namespace game { enum XAssetType : std::int32_t { - ASSET_TYPE_PHYSPRESET = 0, + ASSET_TYPE_PHYSICSLIBRARY = 0, + ASSET_TYPE_PHYSICS_SFX_EVENT_ASSET = 1, + ASSET_TYPE_PHYSICS_VFX_EVENT_ASSET = 2, + ASSET_TYPE_PHYSICSASSET = 3, + ASSET_TYPE_PHYSICS_FX_PIPELINE = 4, + ASSET_TYPE_PHYSICS_FX_SHAPE = 5, + ASSET_TYPE_XANIMPARTS = 6, + ASSET_TYPE_XMODEL_SURFS = 7, + ASSET_TYPE_XMODEL = 8, + ASSET_TYPE_MAYHEM = 9, // not confirmed ASSET_TYPE_MATERIAL = 10, - ASSET_TYPE_FX = 41, + ASSET_TYPE_COMPUTESHADER = 11, + ASSET_TYPE_VERTEXSHADER = 12, + ASSET_TYPE_HULLSHADER = 13, + ASSET_TYPE_DOMAINSHADER = 14, + ASSET_TYPE_PIXELSHADER = 15, + ASSET_TYPE_VERTEXDECL = 16, + ASSET_TYPE_TECHNIQUE_SET = 17, + ASSET_TYPE_IMAGE = 18, + ASSET_TYPE_SOUND_GLOBALS = 19, + ASSET_TYPE_SOUND_BANK = 20, + ASSET_TYPE_SOUND_BANK_TRANSIENT = 21, + ASSET_TYPE_CLIPMAP = 22, + ASSET_TYPE_COMWORLD = 23, + ASSET_TYPE_GLASSWORLD = 24, + ASSET_TYPE_PATHDATA = 25, + ASSET_TYPE_NAVMESH = 26, + ASSET_TYPE_MAP_ENTS = 27, + ASSET_TYPE_FXWORLD = 28, + ASSET_TYPE_GFXWORLD = 29, + ASSET_TYPE_GFXWORLD_TRANSIENT_ZONE = 30, + ASSET_TYPE_IESPROFILE = 31, + ASSET_TYPE_LIGHT_DEF = 32, + ASSET_TYPE_UI_MAP = 33, + ASSET_TYPE_ANIMCLASS = 34, + ASSET_TYPE_PLAYERANIM = 35, + ASSET_TYPE_GESTURE = 36, + ASSET_TYPE_LOCALIZE_ENTRY = 37, + ASSET_TYPE_ATTACHMENT = 38, + ASSET_TYPE_WEAPON = 39, + ASSET_TYPE_VFX = 40, + ASSET_TYPE_IMPACT_FX = 41, // not confirmed + ASSET_TYPE_SURFACE_FX = 42, // not confirmed + ASSET_TYPE_AITYPE = 43, // not confirmed + ASSET_TYPE_MPTYPE = 44, // not confirmed + ASSET_TYPE_CHARACTER = 45, // not confirmed + ASSET_TYPE_XMODELALIAS = 46, // not confirmed + ASSET_TYPE_UNKNOWN = 47, // not confirmed ASSET_TYPE_RAWFILE = 48, + ASSET_TYPE_SCRIPTFILE = 49, ASSET_TYPE_STRINGTABLE = 50, + ASSET_TYPE_LEADERBOARD = 51, + ASSET_TYPE_VIRTUAL_LEADERBOARD = 52, + ASSET_TYPE_STRUCTUREDDATADEF = 53, + ASSET_TYPE_DDL = 54, + ASSET_TYPE_TRACER = 55, + ASSET_TYPE_VEHICLE = 56, + ASSET_TYPE_ADDON_MAP_ENTS = 57, + ASSET_TYPE_NET_CONST_STRINGS = 58, + ASSET_TYPE_LUA_FILE = 59, ASSET_TYPE_SCRIPTABLE = 60, - ASSET_TYPE_FONT = 66, + ASSET_TYPE_EQUIPMENT_SND_TABLE = 61, + ASSET_TYPE_VECTORFIELD = 62, + ASSET_TYPE_PARTICLE_SIM_ANIMATION = 63, + ASSET_TYPE_STREAMING_INFO = 64, + ASSET_TYPE_LASER = 65, + ASSET_TYPE_TTF = 66, + ASSET_TYPE_SUIT = 67, + ASSET_TYPE_SUITANIMPACKAGE = 68, + ASSET_TYPE_SPACESHIPTARGET = 69, + ASSET_TYPE_RUMBLE = 70, + ASSET_TYPE_RUMBLE_GRAPH = 71, + ASSET_TYPE_ANIM_PACKAGE = 72, + ASSET_TYPE_SFX_PACKAGE = 73, + ASSET_TYPE_VFX_PACKAGE = 74, + ASSET_TYPE_BEHAVIOR_TREE = 75, + ASSET_TYPE_ANIMARCHETYPE = 76, + ASSET_TYPE_XANIM_PROCEDURALBONES = 77, + ASSET_TYPE_RETICLE = 78, + ASSET_TYPE_GFXLIGHTMAP = 79, + ASSET_TYPE_COUNT = 80 }; struct Material @@ -405,6 +479,30 @@ namespace game char strippingType; const char* buffer; }; + + union XAssetHeader + { + Material* material; + RawFile* rawfile; + ScriptFile* scriptfile; + StringTable* stringTable; + LuaFile* luaFile; + void* data; + }; + + struct XAsset + { + XAssetType type; + XAssetHeader header; + }; + + struct DBFile + { + char name[64]; + void* handle; + char __pad[0x60]; + }; + static_assert(sizeof(DBFile) == 0xA8); } using namespace assets; @@ -442,6 +540,9 @@ namespace game 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, @@ -462,6 +563,31 @@ namespace game 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, @@ -483,7 +609,15 @@ namespace game 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, @@ -524,13 +658,38 @@ namespace game BD_AUTH_TENCENT_TICKET_EXPIRED = 0x2DA, BD_AUTH_PS3_SERVICE_ID_MISMATCH = 0x2DB, BD_AUTH_CODOID_NOT_WHITELISTED = 0x2DC, - BD_AUTH_PLATFORM_TOKEN_ERROR = 0x2DD, + BD_AUTH_PLATFORM_TOKEN_RETRIEVAL_ERROR = 0x2DD, BD_AUTH_JSON_FORMAT_ERROR = 0x2DE, BD_AUTH_REPLY_CONTENT_ERROR = 0x2DF, - BD_AUTH_THIRD_PARTY_TOKEN_EXPIRED = 0x2E0, + BD_AUTH_PLATFORM_TOKEN_EXPIRED = 0x2E0, BD_AUTH_CONTINUING = 0x2E1, - BD_AUTH_PLATFORM_DEVICE_ID_ERROR = 0x2E4, + 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, @@ -540,11 +699,17 @@ namespace game 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, @@ -560,11 +725,10 @@ namespace game BD_CHANNEL_PUBLIC_PASSWORD_NOT_ALLOWED = 0x459, BD_CHANNEL_PUBLIC_KICK_NOT_ALLOWED = 0x45A, BD_CHANNEL_MUTED = 0x45B, - BD_EVENT_DESC_TRUNCATED = 0x4B0, BD_CONTENT_UNLOCK_UNKNOWN_ERROR = 0x514, BD_UNLOCK_KEY_INVALID = 0x515, BD_UNLOCK_KEY_ALREADY_USED_UP = 0x516, - BD_SHARED_UNLOCK_LIMIT_REACHED = 0x517, + BD_CONTENT_UNLOCK_LIMIT_REACHED = 0x517, BD_DIFFERENT_HARDWARE_ID = 0x518, BD_INVALID_CONTENT_OWNER = 0x519, BD_CONTENT_UNLOCK_INVALID_USER = 0x51A, @@ -591,6 +755,7 @@ namespace game 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, @@ -601,56 +766,27 @@ namespace game 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_UCD_SERVICE_ERROR = 0xC80, - BD_UCD_SERVICE_DISABLED = 0xC81, - BD_UCD_UNINTIALIZED_ERROR = 0xC82, - BD_UCD_ACCOUNT_ALREADY_REGISTERED = 0xC83, - BD_UCD_ACCOUNT_NOT_REGISTERED = 0xC84, - BD_UCD_AUTH_ATTEMPT_FAILED = 0xC85, - BD_UCD_ACCOUNT_LINKING_ERROR = 0xC86, - BD_UCD_ENCRYPTION_ERROR = 0xC87, - BD_UCD_ACCOUNT_DATA_INVALID = 0xC88, - BD_UCD_ACCOUNT_DATA_INVALID_FIRSTNAME = 0xC89, - BD_UCD_ACCOUNT_DATA_INVALID_LASTNAME = 0xC8A, - BD_UCD_ACCOUNT_DATA_INVALID_DOB = 0xC8B, - BD_UCD_ACCOUNT_DATA_INVALID_EMAIL = 0xC8C, - BD_UCD_ACCOUNT_DATA_INVALID_COUNTRY = 0xC8D, - BD_UCD_ACCOUNT_DATA_INVALID_POSTCODE = 0xC8E, - BD_UCD_ACCOUNT_DATA_INVALID_PASSWORD = 0xC8F, - BD_UCD_ACCOUNT_NAME_ALREADY_RESISTERED = 0xC94, - BD_UCD_ACCOUNT_EMAIL_ALREADY_RESISTERED = 0xC95, - BD_UCD_GUEST_ACCOUNT_AUTH_CONFLICT = 0xC96, + BD_MAIL_PERMISSION_DENIED_ERROR = 0xB56, BD_TWITCH_SERVICE_ERROR = 0xC1D, BD_TWITCH_ACCOUNT_ALREADY_LINKED = 0xC1E, BD_TWITCH_NO_LINKED_ACCOUNT = 0xC1F, - BD_YOUTUBE_SERVICE_ERROR = 0xCE5, - BD_YOUTUBE_SERVICE_COMMUNICATION_ERROR = 0xCE6, - BD_YOUTUBE_USER_DENIED_AUTHORIZATION = 0xCE7, - BD_YOUTUBE_AUTH_MAX_TIME_EXCEEDED = 0xCE8, - BD_YOUTUBE_USER_UNAUTHORIZED = 0xCE9, - BD_YOUTUBE_UPLOAD_MAX_TIME_EXCEEDED = 0xCEA, - BD_YOUTUBE_DUPLICATE_UPLOAD = 0xCEB, - BD_YOUTUBE_FAILED_UPLOAD = 0xCEC, - BD_YOUTUBE_ACCOUNT_ALREADY_REGISTERED = 0xCED, - BD_YOUTUBE_ACCOUNT_NOT_REGISTERED = 0xCEE, - BD_YOUTUBE_CONTENT_SERVER_ERROR = 0xCEF, - BD_YOUTUBE_UPLOAD_DOES_NOT_EXIST = 0xCF0, - BD_YOUTUBE_NO_LINKED_ACCOUNT = 0xCF1, - BD_YOUTUBE_DEVELOPER_TAGS_INVALID = 0xCF2, 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_DISABLED_FOR_USER = 0xDB3, BD_TWITTER_ACCOUNT_AMBIGUOUS = 0xDB4, BD_TWITTER_MAXIMUM_ACCOUNTS_REACHED = 0xDB5, BD_TWITTER_ACCOUNT_NOT_REGISTERED = 0xDB6, @@ -670,10 +806,29 @@ namespace game 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, @@ -683,10 +838,16 @@ namespace game 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, @@ -695,6 +856,21 @@ namespace game 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, @@ -710,6 +886,76 @@ namespace game 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, @@ -725,26 +971,44 @@ namespace game BD_LEAGUE_SUBDIVISION_UNRANKED = 0x200B, BD_LEAGUE_CROSS_TEAM_STATS_WRITE_PREVENTED = 0x200C, BD_LEAGUE_INVALID_STATS_SEASON = 0x200D, - BD_COMMERCE_ERROR = 0x206C, - BD_COMMERCE_RESOURCE_NOT_FOUND = 0x206D, - BD_COMMERCE_STORAGE_INVALID_PARAMETER = 0x206E, - BD_COMMERCE_APPLICATION_INVALID_PARAMETER = 0x206F, - BD_COMMERCE_RESOURCE_CONFLICT = 0x2070, - BD_COMMERCE_STORAGE_ERROR = 0x2071, - BD_COMMERCE_INTEGRITY_ERROR = 0x2072, - BD_COMMERCE_MMP_SERVICE_ERROR = 0x2073, - BD_COMMERCE_PERMISSION_DENIED = 0x2074, - BD_COMMERCE_INSUFFICIENT_FUNDS_ERROR = 0x2075, - BD_COMMERCE_UNKNOWN_CURRENCY = 0x2076, - BD_COMMERCE_INVALID_RECEIPT = 0x2077, - BD_COMMERCE_RECEIPT_USED = 0x2078, - BD_COMMERCE_TRANSACTION_ALREADY_APPLIED = 0x2079, - BD_COMMERCE_INVALID_CURRENCY_TYPE = 0x207A, 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, @@ -755,7 +1019,250 @@ namespace game BD_GMSG_USER_PERCATEGORY_POST_RATE_EXCEEDED = 0x27DF, BD_GMSG_USER_GLOBAL_POST_RATE_EXCEEDED = 0x27E0, BD_GMSG_GROUP_POST_RATE_EXCEEDED = 0x27E1, - BD_MAX_ERROR_CODE = 0x27E2, + BD_GMSG_GROUP_LIMIT_REACHED = 0x27E2, + BD_GMSG_GROUP_MEMBERSHIP_LIMIT_REACHED = 0x27E3, + BD_SERVER_INVENTORY_SERVER_ERROR = 0x2904, + BD_SERVER_INVENTORY_SERVER_ALLOCATED = 0x2905, + BD_SERVER_INVENTORY_ENTRY_DOES_NOT_EXIST = 0x2906, + BD_SERVER_INVENTORY_DATA_LAYER_ERROR = 0x2907, + BD_SERVER_INVENTORY_NOT_ENABLED = 0x2908, + BD_SERVER_INVENTORY_NO_SERVER_ALLOCATED = 0x2909, + BD_SERVER_INVENTORY_MAX_REGISTRATION_LENGTH_EXCEEDED = 0x290A, + BD_SERVER_INVENTORY_REGISTRATION_INVALID_CHARACTERS = 0x290B, + BD_SERVER_INVENTORY_INVALID_PARAMETER = 0x290D, + BD_CODO_CLAN_NO_TEMP_RESERVATION = 0x2AF8, + BD_CODO_CLAN_TOO_MANY_MEMBERSHIPS = 0x2AF9, + BD_CODO_CLAN_UNEXPECTED_FOUNDATION_STATE = 0x2AFA, + BD_CODO_CLAN_UNABLE_TO_FIND_NAME = 0x2AFB, + BD_CODO_CLAN_INTERNAL_MARKETPLACE_ERROR = 0x2AFC, + BD_CODO_CLAN_INSUFFICIENT_FUNDS = 0x2AFD, + BD_CODO_CLAN_UNSATISFIED_PRECONDITION = 0x2AFE, + BD_CODO_CLAN_NO_CLAN = 0x2AFF, + BD_CODO_CLAN_NO_CHANNEL = 0x2B00, + BD_CODO_CLAN_NOT_A_CLAN_MEMBER = 0x2B01, + BD_CODO_CLAN_DISBAND_TOO_MANY_MEMBERS = 0x2B04, + BD_CODO_CLAN_DISBAND_TOO_SOON = 0x2B05, + BD_NO_SUCH_ROLE = 0x2EE0, + BD_NO_SUCH_PERMISSION = 0x2EE1, + BD_BAD_ROLE_SPECIFICATION = 0x2EE2, + BD_BAD_PERMISSION_SPECIFICATION = 0x2EE3, + BD_REDEEMABLE_CODE_REGISTRY_SERVICE_GENERIC_ERROR = 0x300D, + BD_REDEEMABLE_CODE_MARKETPLACE_SERVICE_GENERIC_ERROR = 0x300E, + BAD_PAYLOAD_ERROR = 0x300F, + INVALID_PAYLOAD_SIGNATURE_ERROR = 0x3010, + GENERATE_PAYLOAD_SIGNATURE_ERROR = 0x3011, + BD_REDEEMABLE_CODE_EXPIRED_CLIENT_TRANSACTION_ID = 0x3012, + BD_REDEEMABLE_CODE_NOT_FOUND = 0x3071, + BD_REDEEMABLE_CODE_USE_LIMIT_EXCEEDED = 0x3072, + BD_REDEEMABLE_CODE_ALREADY_USED_BY_USER = 0x3073, + BD_REDEEMABLE_CODE_EXPIRED = 0x3074, + INVALID_CLIENT_TRANSACTION_ID = 0x3075, + BD_ACHIEVEMENTS_ENGINE_CLIENT_ERROR = 0x30D5, + BD_ACHIEVEMENTS_ENGINE_SERVER_ERROR = 0x30D6, + BD_ACHIEVEMENTS_ENGINE_INSUFFICIENT_BALANCE_ERROR = 0x30D7, + BD_ACHIEVEMENTS_ENGINE_ACTIVATION_NOT_SCHEDULED_ERROR = 0x30D8, + BD_ACHIEVEMENTS_ENGINE_ACTIVE_LIMIT_EXCEEDED = 0x30D9, + BD_ACHIEVEMENTS_ENGINE_DUPLICATE_REQUEST_ID = 0x30DA, + BD_ACHIEVEMENTS_ENGINE_MULTI_STATUS = 0x30DB, + BD_MW4_BACKEND_SERVICE_NOT_AVAILABLE = 0x4CF5, + BD_MW4_BACKEND_RESOURCE_NOT_FOUND = 0x4CF6, + BD_MW4_BACKEND_BAD_REQUEST = 0x4CF7, + BD_CLANS_PROPOSAL_DOES_NOT_EXIST = 0x4D08, + BD_CLANS_GROUP_NAME_NOT_UNIQUE = 0x4D09, + BD_CLANS_MAX_GROUP_MEMBERSHIPS_REACHED = 0x4D0A, + BD_CLANS_MAX_GROUP_OWNERSHIPS_REACHED = 0x4D0B, + BD_CLANS_GROUP_DOES_NOT_EXIST = 0x4D0C, + BD_CLANS_GROUP_PERMISSION_DENIED = 0x4D0D, + BD_CLANS_VULGAR_GROUP_NAME = 0x4D0E, + BD_CLANS_GROUP_NAME_TOO_SHORT = 0x4D0F, + BD_CLANS_GROUP_ATTACHMENT_LIMIT_EXCEEDED = 0x4D10, + BD_CLANS_GROUP_FULL = 0x4D11, + BD_CLANS_MAX_OUTGOING_PROPOSALS_REACHED = 0x4D12, + BD_CLANS_MEMBER_BAN_EXISTS = 0x4D13, + BD_CLANS_GROUP_KIND_NOT_CONFIGURED = 0x4D14, + BD_CLANS_INVALID_ROOT_KIND = 0x4D15, + BD_CLANS_GROUP_FILE_DOES_NOT_EXIST = 0x4D16, + BD_CLANS_GROUP_FILE_COLLISION_FIELD_MISMATCH = 0x4D17, + BD_CLANS_BATCH_REQUEST_LIMIT_EXCEEDED = 0x4D18, + BD_CLANS_INVALID_PAGE_TOKEN = 0x4D19, + BD_CLANS_INVALID_GROUP_FILTER = 0x4D1A, + BD_CLANS_GROUP_TAG_NOT_UNIQUE = 0x4D1B, + BD_CLANS_GROUP_TAG_TOO_SHORT = 0x4D1C, + BD_CLANS_VULGAR_GROUP_TAG = 0x4D1D, + BD_REWARD_NO_REWARD_TOKEN_FOUND = 0x364C, + BD_REWARD_INVALID_ACHIEVEMENT_IDS_SPECIFIED = 0x364D, + BD_REWARD_CLIENT_ACHIEVEMENTS_NOT_ENABLED = 0x364E, + BD_REWARD_EVENTS_ERROR = 0x364F, + BD_REWARD_EVENTS_NOT_ENABLED = 0x3650, + BD_REWARD_EVENTS_RULES_ERROR = 0x3651, + BD_REWARD_EVENTS_DATA_ERROR = 0x3652, + BD_REWARD_EVENTS_TRANSACTION_ERROR = 0x3653, + BD_REWARD_CONFIGURATION_ERROR = 0x3654, + BD_REWARD_TOO_MANY_ACTIVE_CHALLENGES = 0x3655, + BD_REWARD_EVENTS_TRANSACTION_EXPIRED = 0x3656, + BD_REWARD_CHALLENGE_NOT_SCHEDULED = 0x3657, + BD_REWARD_CHALLENGE_ALREADY_COMPLETED = 0x3658, + BD_REWARD_CODO_TOO_MANY_REROLLS = 0x367E, + BD_REWARD_CODO_BAD_REROLL_PARAMS = 0x367F, + BD_UMBRELLA_PROVIDER_SERVER_ERROR = 0x36B0, + BD_UMBRELLA_PROVIDER_UNSUPPORTED_OPERATION = 0x36B1, + BD_UMBRELLA_ERROR = 0x36B2, + BD_UMBRELLA_INVALID_TITLE_ID = 0x36B3, + BD_UMBRELLA_INVALID_QUERY_STRING = 0x36B4, + BD_UMBRELLA_INVALID_DATA = 0x36B5, + BD_UMBRELLA_INVALID_CLIENT = 0x36B6, + BD_UMBRELLA_PROVIDER_NOT_SUPPORTED = 0x36B7, + BD_UMBRELLA_UNAUTHORIZED_ACCESS = 0x36B8, + BD_UMBRELLA_INVALID_TOKEN = 0x36B8, + BD_UMBRELLA_EXPIRED_PROVIDER_REFRESH_TOKEN = 0x36B9, + BD_UMBRELLA_NO_VALID_PROVIDER_TOKENS = 0x36BA, + BD_UMBRELLA_INVALID_LSG_TICKET = 0x36BB, + BD_UMBRELLA_TOKEN_NOT_FOUND = 0x36BC, + BD_UMBRELLA_USER_NOT_FOUND = 0x36BD, + BD_UMBRELLA_ACCOUNT_NOT_FOUND = 0x36BE, + BD_UMBRELLA_MERGE_CONFLICT = 0x36BF, + BD_UMBRELLA_PROVIDER_INACCESSIBLE = 0x36C0, + BD_UMBRELLA_MISSING_FIELD = 0x36C1, + BD_UMBRELLA_FIELD_INVALID = 0x36C2, + BD_UMBRELLA_PLAYER_BAN = 0x36C3, + BD_UMBRELLA_EXPIRED_TOKEN = 0x3719, + BD_UNO_ERROR = 0x3714, + BD_UNO_INVALID_DATA = 0x3715, + BD_UNO_INVALID_DATE_OF_BIRTH = 0x3716, + BD_UNO_UNAUTHORIZED_ACCESS = 0x3717, + BD_UNO_INVALID_TOKEN = 0x3718, + BD_UNO_EXPIRED_TOKEN = 0x3719, + BD_UNO_EMAIL_NOT_VERIFIED = 0x371A, + BD_UNO_TOS_VERSION_NOT_FOUND = 0x371B, + BD_UNO_TOS_CONTENT_NOT_FOUND = 0x371C, + BD_UNO_TOS_ALREADY_ACCEPTED = 0x371D, + BD_UNO_MISSING_FIELD = 0x371E, + BD_UNO_DNS_RESOLUTION_FAILED = 0x371F, + BD_UNO_FIELD_INVALID = 0x3720, + BD_UNO_INVALID_USERNAME = 0x3721, + BD_UNO_INVALID_PASSWORD = 0x3722, + BD_UNO_EMAIL_ALREADY_EXISTS = 0x3723, + BD_UNO_DESERIALIZATION_FAILURE = 0x3724, + BD_UMBRELLA_DESERIALIZATION_FAILURE = 0x3725, + BD_UNO_NO_RENAME_TOKENS = 0x3726, + BD_UNO_MARKETPLACE_ERROR = 0x3727, + BD_SI_ERROR = 0x3777, + BD_MATCH_SCHEDULER_ERROR = 0x3A98, + BD_MATCH_SCHEDULER_SCHEDULED_MATCH_DOES_NOT_EXIST = 0x3A99, + BD_MATCH_SCHEDULER_MAXIMUM_EVENTS_PER_MATCH_REACHED = 0x3A9A, + BD_MLG_ERROR = 0x3AFC, + BD_MLG_REMOTE_ERROR = 0x3AFD, + BD_CODO_AUTO_JOIN_LEVEL_NOT_MET = 0x4A9D, + BD_CODO_NOT_PERMITTED_TO_UPDATE_PROFILE_FIELD = 0x4A9E, + BD_CODO_INVALID_PROFILE_VALUE = 0x4A9F, + BD_CODO_PROFILE_COLUMN_DOES_NOT_EXIST = 0x4AA0, + BD_CODO_LOUDSPEAKER_INVALID_TOKEN = 0x4AA1, + BD_CODO_LOUDSPEAKER_INVALID_CATEGORY = 0x4AA2, + BD_CODO_RESETTABLE_STATS_NOT_CONFIGURED = 0x4AA3, + BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_INVALID_ITEM = 0x4AAB, + BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_INTERNAL_ERROR = 0x4AAC, + BD_CODO_REDEEM_INCREASE_TEAM_MEMBER_LIMIT_UNAVAILABLE_ITEM = 0x4AAD, + BD_PLAYER_VOTE_REJECTED = 0x5EED, + BD_AMM_NOT_LOBBY_HOST = 0x38A4, + BD_AMM_NOT_PARTY_HOST = 0x38A5, + BD_AMM_NOT_LOBBY_MEMBER = 0x38A6, + BD_AMM_INVALID_MATCHMAKING_ID = 0x38A7, + BD_AMM_INVALID_LOBBY_ID = 0x38A8, + BD_AMM_SEARCH_IN_PROGRESS = 0x38A9, + BD_AMM_USER_ALREADY_MATCHMAKING = 0x38AA, + BD_AMM_INVALID_TOKEN = 0x38AB, + BD_AMM_INVALID_DOCUMENT_FORMAT = 0x38AC, + BD_AMM_PLAYER_INFO_UNAVAILABLE = 0x38AD, + BD_AMM_REQUEST_DESERIALIZATION_FAILED = 0x38AE, + BD_AMM_INVALID_QOS_TRANSACTION_ID = 0x38AF, + BD_AMM_INVALID_USER_ID_IN_GUEST_SLOTS = 0x38B0, + BD_AMM_NO_BUILD_NAME_SET = 0x38B1, + BD_AMM_LOBBY_MERGED = 0x38B2, + BD_AMM_BACKOFF_REQUESTED = 0x38B3, + BD_AMM_PLAYER_INFO_INCOMPATIBLE_BUILDS = 0x38B4, + BD_AMM_INVALID_DC_QOS_ADDRESS = 0x38B5, + BD_AMM_INVALID_PLAYER_INFO_DC_QOS_SETTINGS = 0x38B6, + BD_AMM_INVALID_PLAYER_INFO_LISTEN_SERVER_SETTINGS = 0x38B7, + BD_AMM_MIGRATION_NOT_PERMITTED = 0x38B8, + BD_AMM_INVALID_LOBBY_MEMBER_STATUS_TRANSITION = 0x38B9, + BD_AMM_LOBBY_MEMBER_STATUS_REPORTED_FOR_UNKNOWN_PLAYER = 0x38BA, + BD_AMM_DEDI_SHUTDOWN_NOT_PERMITTED = 0x38BB, + BD_AMM_INVALID_USER_ID_IN_PLAYER_RULESET_PAYLOADS = 0x38BC, + BD_AMM_INVALID_MAP_PACK = 0x38BD, + BD_AMM_TOURNAMENT_PLAYER_NOT_IN_TOURNAMENT = 0x38BE, + BD_AMM_TOURNAMENT_DUPLICATE_ACK_JOIN = 0x38BF, + BD_AMM_TOURNAMENT_INVALID_TOURNAMENT_STATUS = 0x38C0, + BD_AMM_TOURNAMENT_INVALID_TOURNAMENT_ID = 0x38C1, + BD_AMM_TOURNAMENT_LOBBY_NOT_IN_ROUND = 0x38C2, + BD_AMM_TOURNAMENT_TEAM_NOT_IN_MATCH = 0x38C3, + BD_AMM_TOURNAMENT_PLAYER_NOT_IN_ROUND = 0x38C4, + BD_AMM_TOURNAMENT_INVALID_LOBBY_DOC = 0x38C5, + BD_AMM_TOURNAMENT_ELIMINATED_PLAYER = 0x38C6, + BD_AMM_TOURNAMENT_LOBBY_ID_NOT_IN_TOURNAMENT = 0x38C7, + BD_AMM_TOURNAMENT_MATCH_ALREADY_HAS_RESULT = 0x38C8, + BD_AMM_TOURNAMENT_MATCH_IN_PROGRESS = 0x38C9, + BD_AMM_TOURNAMENT_FULL = 0x38CA, + BD_CROSS_PLATFORM_FRIENDS_UNKNOWN_ERROR = 0x3E80, + BD_CROSS_PLATFORM_FRIENDS_SELF_FRIENDSHIP_NOT_ALLOWED = 0x3E81, + BD_CROSS_PLATFORM_FRIENDS_CALLER_FRIENDS_LIST_FULL = 0x3E82, + BD_CROSS_PLATFORM_FRIENDS_OTHER_PLAYER_FRIENDS_LIST_FULL = 0x3E83, + BD_CROSS_PLATFORM_FRIENDS_CALLER_OUTGOING_FRIEND_REQUESTS_FULL = 0x3E84, + BD_CROSS_PLATFORM_FRIENDS_OTHER_PLAYER_INCOMING_FRIEND_REQUESTS_FULL = 0x3E85, + BD_CROSS_PLATFORM_FRIENDS_INVALID_PAGE_TOKEN = 0x3E86, + BD_CROSS_PLATFORM_FRIENDS_FRIENDSHIP_ALREADY_EXISTS = 0x3E87, + BD_CROSS_PLATFORM_FRIENDS_INVITE_ALREADY_EXISTS = 0x3E88, + BD_CROSS_PLATFORM_FRIENDS_BACKEND_UNAVAILABLE_ERROR = 0x3E89, + BD_CROSS_PLATFORM_FRIENDS_INVITED_USER_IS_BLOCKED = 0x3E8A, + BD_CROSS_PLATFORM_FRIENDS_CALLER_IS_BLOCKED = 0x3E8B, + BD_CROSS_PLATFORM_FRIENDS_BLOCKED_USER_LIST_FULL = 0x3E8C, + BD_CROSS_PLATFORM_FRIENDS_USER_IS_ALREADY_BLOCKED = 0x3E8D, + BD_CROSS_PLATFORM_USERLISTS_UNKNOWN_ERROR = 0x3F48, + BD_CROSS_PLATFORM_USERLISTS_LIST_DOES_NOT_EXIST = 0x3F49, + BD_CROSS_PLATFORM_USERLISTS_LIST_ALREADY_EXISTS = 0x3F4A, + BD_CROSS_PLATFORM_USERLISTS_INVALID_PAGE_TOKEN = 0x3F4B, + BD_CROSS_PLATFORM_PRESENCE_UNKNOWN_ERROR = 0x4010, + BD_CROSS_PLATFORM_PRESENCE_INVALID_PAGE_TOKEN = 0x4011, + BD_CROSS_PLATFORM_PRESENCE_SUBSCRIPTIONS_LIST_FULL = 0x4012, + BD_CROSS_PLATFORM_PRESENCE_SUBSCRIBERS_LIST_FULL = 0x4013, + BD_CROSS_PLATFORM_PRESENCE_INVALID_MAXIMUM_PAGE_SIZE = 0x4014, + BD_CROSS_PLATFORM_PRESENCE_EXCEEDED_MAX_USERS_IN_REQUEST = 0x4015, + BD_CROSS_TITLE_LOCALIZED_STRINGS_UNKNOWN_ERROR = 0x4074, + BD_CROSS_TITLE_LOCALIZED_STRINGS_STRING_SET_DOES_NOT_EXIST_ERROR = 0x4075, + BD_CROSS_TITLE_LOCALIZED_STRINGS_INVALID_FORMAT_STRING_ERROR = 0x4076, + BD_CROSS_TITLE_LOCALIZED_STRINGS_INVALID_STRING_REF_ERROR = 0x4077, + BD_CROSS_TITLE_LOCALIZED_STRINGS_NOT_ENOUGH_STRING_REFS_ERROR = 0x4078, + BD_OBJECTSTORE_PROXY_OBJECT_NOT_FOUND = 0x4E20, + BD_OBJECTSTORE_PROXY_INVALID_ACCESS = 0x4E21, + BD_OBJECTSTORE_PROXY_SERVICE_UNAVAILABLE = 0x4E22, + BD_OBJECTSTORE_PROXY_OBJECT_TOO_BIG_FOR_REMAINING_SIZE_WINDOW_SPACE_ERROR = 0x4E23, + BD_OBJECTSTORE_PROXY_OBJECT_TOO_BIG_FOR_SIZE_WINDOW_ERROR = 0x4E24, + BD_OBJECTSTORE_HTTP_ERROR = 0x4E84, + BD_OBJECTSTORE_FAILED_TO_START_HTTP = 0x4E85, + BD_AB_TESTING_OBJECT_NOT_FOUND = 0x4BC8, + BD_AB_TESTING_INVALID_ACCESS = 0x4BC9, + BD_AB_TESTING_SERVICE_UNAVAILABLE = 0x4BCA, + BD_REST_ERROR_TEMPORARY_REDIRECT = 0x639C, + BD_REST_ERROR_PERMANENT_REDIRECT = 0x639D, + BD_REST_ERROR_NOT_MODIFIED = 0x639E, + BD_REST_ERROR_BAD_REQUEST = 0x639F, + BD_REST_ERROR_UNAUTHORIZED = 0x63A0, + BD_REST_ERROR_FORBIDDEN = 0x63A1, + BD_REST_ERROR_NOT_FOUND = 0x63A2, + BD_REST_ERROR_METHOD_NOT_ALLOWED = 0x63A3, + BD_REST_ERROR_NOT_ACCEPTABLE = 0x63A4, + BD_REST_ERROR_REQUEST_TIMEOUT = 0x63A5, + BD_REST_ERROR_CONFLICT = 0x63A6, + BD_REST_ERROR_PRECONDITION_FAILED = 0x63A7, + BD_REST_ERROR_PAYLOAD_TOO_LARGE = 0x63A8, + BD_REST_ERROR_REQUEST_URI_TOO_LONG = 0x63A9, + BD_REST_ERROR_REQUESTED_RANGE_NOT_SATISFIABLE = 0x63AA, + BD_REST_ERROR_INTERNAL_SERVER_ERROR = 0x63AB, + BD_REST_ERROR_BAD_GATEWAY = 0x63AC, + BD_REST_ERROR_SERVICE_UNAVAILABLE = 0x63AD, + BD_REST_ERROR_GATEWAY_TIMEOUT = 0x63AE, + BD_REST_ERROR_REQUEST_CANCELLED = 0x63AF, + BD_LOGIN_UNKOWN_ERROR = 0x7724, + BD_MAX_ERROR_CODE = 0x7725, }; enum bdNATType : uint8_t diff --git a/src/client/game/symbols.hpp b/src/client/game/symbols.hpp index c91032c2..ea58b8c9 100644 --- a/src/client/game/symbols.hpp +++ b/src/client/game/symbols.hpp @@ -18,6 +18,10 @@ namespace game WEAK symbol Cmd_TokenizeString{ 0xB7D850 }; WEAK symbol Cmd_EndTokenizeString{ 0xB7CC90 }; + WEAK symbol DB_GetXAssetHeaderName{ 0x9E5BA0 }; + WEAK symbol DB_EnumXAssets_FastFile{ 0xA76CE0 }; + WEAK symbol DB_IsXAssetDefault{ 0xA780D0 }; + WEAK symbol Dvar_RegisterBool{ 0xCEB380 }; WEAK symbol databaseCompletedEvent2{ 0x5685979 }; - WEAK symbol sv_cmd_args{ 0x5D65C20 }; WEAK symbol cmd_args{ 0x5D65B70 }; WEAK symbol cmd_functions{ 0x5D65CC8 };