From 781e1f914da715aebe4cb336b46ae98729653318 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Mon, 28 Feb 2022 20:31:25 +0100 Subject: [PATCH 1/8] Dvars component + update dvar list --- src/client/component/branding.cpp | 4 +- src/client/component/dvars.cpp | 418 ++++ src/client/component/dvars.hpp | 27 + src/client/component/network.cpp | 6 +- src/client/component/patches.cpp | 65 +- src/client/game/dvars.cpp | 2930 +++++++++++++++++++++++++---- src/client/game/dvars.hpp | 8 - 7 files changed, 2998 insertions(+), 460 deletions(-) create mode 100644 src/client/component/dvars.cpp create mode 100644 src/client/component/dvars.hpp diff --git a/src/client/component/branding.cpp b/src/client/component/branding.cpp index 8cdbdfd7..2f74693b 100644 --- a/src/client/component/branding.cpp +++ b/src/client/component/branding.cpp @@ -7,7 +7,7 @@ #include "version.hpp" #include "game/game.hpp" -#include "game/dvars.hpp" +#include "dvars.hpp" #include #include @@ -46,7 +46,7 @@ namespace branding localized_strings::override("MENU_MULTIPLAYER_CAPS", "H1-MOD: MULTIPLAYER"); } - dvars::override::Dvar_SetString("version", utils::string::va("H1-Mod %s", VERSION)); + dvars::override::set_string("version", utils::string::va("H1-Mod %s", VERSION)); ui_get_formatted_build_number_hook.create( SELECT_VALUE(0x1403B1C40, 0x1404E74C0), ui_get_formatted_build_number_stub); diff --git a/src/client/component/dvars.cpp b/src/client/component/dvars.cpp new file mode 100644 index 00000000..d8221d67 --- /dev/null +++ b/src/client/component/dvars.cpp @@ -0,0 +1,418 @@ +#include +#include "loader/component_loader.hpp" +#include "dvars.hpp" + +#include "game/game.hpp" + +#include + +namespace dvars +{ + struct dvar_base + { + unsigned int flags{}; + }; + + struct dvar_bool : dvar_base + { + bool value{}; + }; + + struct dvar_float : dvar_base + { + float value{}; + float min{}; + float max{}; + }; + + struct dvar_vector2 : dvar_base + { + float x{}; + float y{}; + float min{}; + float max{}; + }; + + struct dvar_vector3 : dvar_base + { + + float x{}; + float y{}; + float z{}; + float min{}; + float max{}; + }; + + struct dvar_int : dvar_base + { + int value{}; + int min{}; + int max{}; + }; + + struct dvar_string : dvar_base + { + std::string value{}; + }; + + namespace + { + template + T* find_dvar(std::unordered_map& map, const std::string& name) + { + auto i = map.find(name); + if (i != map.end()) + { + return &i->second; + } + + return nullptr; + } + + template + T* find_dvar(std::unordered_map& map, const int hash) + { + for (auto i = map.begin(); i != map.end(); ++i) + { + if (game::generateHashValue(i->first.data()) == hash) + { + return &i->second; + } + } + + return nullptr; + } + + bool find_dvar(std::unordered_set& set, const std::string& name) + { + return set.find(name) != set.end(); + } + + + bool find_dvar(std::unordered_set& set, const int hash) + { + for (auto i = set.begin(); i != set.end(); ++i) + { + if (game::generateHashValue(i->data()) == hash) + { + return true; + } + } + + return false; + } + } + + namespace disable + { + static std::unordered_set set_bool_disables; + static std::unordered_set set_float_disables; + static std::unordered_set set_int_disables; + static std::unordered_set set_string_disables; + + void set_bool(const std::string& name) + { + set_bool_disables.emplace(name); + } + + void set_float(const std::string& name) + { + set_float_disables.emplace(name); + } + + void set_int(const std::string& name) + { + set_int_disables.emplace(name); + } + + void set_string(const std::string& name) + { + set_string_disables.emplace(name); + } + } + + namespace override + { + static std::unordered_map register_bool_overrides; + static std::unordered_map register_float_overrides; + static std::unordered_map register_int_overrides; + static std::unordered_map register_string_overrides; + static std::unordered_map register_vector2_overrides; + static std::unordered_map register_vector3_overrides; + + static std::unordered_map set_bool_overrides; + static std::unordered_map set_float_overrides; + static std::unordered_map set_int_overrides; + static std::unordered_map set_string_overrides; + + void register_bool(const std::string& name, const bool value, const unsigned int flags) + { + dvar_bool values; + values.value = value; + values.flags = flags; + register_bool_overrides[name] = std::move(values); + } + + void register_float(const std::string& name, const float value, const float min, const float max, + const unsigned int flags) + { + dvar_float values; + values.value = value; + values.min = min; + values.max = max; + values.flags = flags; + register_float_overrides[name] = std::move(values); + } + + void register_int(const std::string& name, const int value, const int min, const int max, + const unsigned int flags) + { + dvar_int values; + values.value = value; + values.min = min; + values.max = max; + values.flags = flags; + register_int_overrides[name] = std::move(values); + } + + void register_string(const std::string& name, const std::string& value, + const unsigned int flags) + { + dvar_string values; + values.value = value; + values.flags = flags; + register_string_overrides[name] = std::move(values); + } + + void register_vec2(const std::string& name, float x, float y, float min, float max, + const unsigned int flags) + { + dvar_vector2 values; + values.x = x; + values.y = y; + values.min = min; + values.max = max; + values.flags = flags; + register_vector2_overrides[name] = std::move(values); + } + + void register_vec3(const std::string& name, float x, float y, float z, float min, + float max, const unsigned int flags) + { + dvar_vector3 values; + values.x = x; + values.y = y; + values.z = z; + values.min = min; + values.max = max; + values.flags = flags; + register_vector3_overrides[name] = std::move(values); + } + + void set_bool(const std::string& name, const bool value) + { + set_bool_overrides[name] = value; + } + + void set_float(const std::string& name, const float value) + { + set_float_overrides[name] = value; + } + + void set_int(const std::string& name, const int value) + { + set_int_overrides[name] = value; + } + + void set_string(const std::string& name, const std::string& value) + { + set_string_overrides[name] = value; + } + } + + utils::hook::detour dvar_register_bool_hook; + utils::hook::detour dvar_register_float_hook; + utils::hook::detour dvar_register_int_hook; + utils::hook::detour dvar_register_string_hook; + utils::hook::detour dvar_register_vector2_hook; + utils::hook::detour dvar_register_vector3_hook; + + utils::hook::detour dvar_set_bool_hook; + utils::hook::detour dvar_set_float_hook; + utils::hook::detour dvar_set_int_hook; + utils::hook::detour dvar_set_string_hook; + + game::dvar_t* dvar_register_bool(const int hash, const char* name, bool value, unsigned int flags) + { + auto* var = find_dvar(override::register_bool_overrides, hash); + if (var) + { + value = var->value; + flags = var->flags; + } + + return dvar_register_bool_hook.invoke(hash, name, value, flags); + } + + game::dvar_t* dvar_register_float(const int hash, const char* name, float value, float min, float max, unsigned int flags) + { + auto* var = find_dvar(override::register_float_overrides, hash); + if (var) + { + value = var->value; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_float_hook.invoke(hash, name, value, min, max, flags); + } + + game::dvar_t* dvar_register_int(const int hash, const char* name, int value, int min, int max, unsigned int flags) + { + auto* var = find_dvar(override::register_int_overrides, hash); + if (var) + { + value = var->value; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_int_hook.invoke(hash, name, value, min, max, flags); + } + + game::dvar_t* dvar_register_string(const int hash, const char* name, const char* value, unsigned int flags) + { + auto* var = find_dvar(override::register_string_overrides, hash); + if (var) + { + value = var->value.data(); + flags = var->flags; + } + + return dvar_register_string_hook.invoke(hash, name, value, flags); + } + + game::dvar_t* dvar_register_vector2(const int hash, const char* name, float x, float y, float min, float max, + unsigned int flags) + { + auto* var = find_dvar(override::register_vector2_overrides, hash); + if (var) + { + x = var->x; + y = var->y; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_vector2_hook.invoke(hash, name, x, y, min, max, flags); + } + + game::dvar_t* dvar_register_vector3(const int hash, const char* name, float x, float y, float z, float min, + float max, unsigned int flags) + { + auto* var = find_dvar(override::register_vector3_overrides, hash); + if (var) + { + x = var->x; + y = var->y; + z = var->z; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_vector3_hook.invoke(hash, name, x, y, z, min, max, flags); + } + + void dvar_set_bool(game::dvar_t* dvar, bool boolean) + { + const auto disabled = find_dvar(disable::set_bool_disables, dvar->hash); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_bool_overrides, dvar->hash); + if (var) + { + boolean = *var; + } + + return dvar_set_bool_hook.invoke(dvar, boolean); + } + + void dvar_set_float(game::dvar_t* dvar, float fl) + { + const auto disabled = find_dvar(disable::set_float_disables, dvar->hash); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_float_overrides, dvar->hash); + if (var) + { + fl = *var; + } + + return dvar_set_float_hook.invoke(dvar, fl); + } + + void dvar_set_int(game::dvar_t* dvar, int integer) + { + const auto disabled = find_dvar(disable::set_int_disables, dvar->hash); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_int_overrides, dvar->hash); + if (var) + { + integer = *var; + } + + return dvar_set_int_hook.invoke(dvar, integer); + } + + void dvar_set_string(game::dvar_t* dvar, const char* string) + { + const auto disabled = find_dvar(disable::set_string_disables, dvar->hash); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_string_overrides, dvar->hash); + if (var) + { + string = var->data(); + } + + return dvar_set_string_hook.invoke(dvar, string); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + dvar_register_bool_hook.create(SELECT_VALUE(0x1403C47E0, 0x1404FA540), &dvar_register_bool); + dvar_register_float_hook.create(SELECT_VALUE(0x1403C4BB0, 0x1404FA910), &dvar_register_float); + dvar_register_int_hook.create(SELECT_VALUE(0x1403C4CC0, 0x1404FAA20), &dvar_register_int); + dvar_register_string_hook.create(SELECT_VALUE(0x1403C4DA0, 0x1404FAB00), &dvar_register_string); + dvar_register_vector2_hook.create(SELECT_VALUE(0x1403C4E80, 0x1404FABE0), &dvar_register_vector2); + dvar_register_vector3_hook.create(SELECT_VALUE(0x1403C4FC0, 0x1404FACE0), &dvar_register_vector3); + + dvar_set_bool_hook.create(SELECT_VALUE(0x1403C7020, 0x1404FCDF0), &dvar_set_bool); + dvar_set_float_hook.create(SELECT_VALUE(0x1403C7420, 0x1404FD360), &dvar_set_float); + dvar_set_int_hook.create(SELECT_VALUE(0x1403C76C0, 0x1404FD5E0), &dvar_set_int); + dvar_set_string_hook.create(SELECT_VALUE(0x1403C7900, 0x1404FD8D0), &dvar_set_string); + } + }; +} + +REGISTER_COMPONENT(dvars::component) diff --git a/src/client/component/dvars.hpp b/src/client/component/dvars.hpp new file mode 100644 index 00000000..057c4d1b --- /dev/null +++ b/src/client/component/dvars.hpp @@ -0,0 +1,27 @@ +#pragma once + +namespace dvars +{ + namespace disable + { + void set_bool(const std::string& name); + void set_float(const std::string& name); + void set_int(const std::string& name); + void set_string(const std::string& name); + } + + namespace override + { + void register_bool(const std::string& name, bool value, const unsigned int flags); + void register_float(const std::string& name, float value, float min, float max, const unsigned int flags); + void register_int(const std::string& name, int value, int min, int max, const unsigned int flags); + void register_string(const std::string& name, const std::string& value, const unsigned int flags); + void register_vec2(const std::string& name, float x, float y, float min, float max, const unsigned int flags); + void register_vec3(const std::string& name, float x, float y, float z, float min, float max, const unsigned int flags); + + void set_bool(const std::string& name, bool boolean); + void set_float(const std::string& name, float fl); + void set_int(const std::string& name, int integer); + void set_string(const std::string& name, const std::string& string); + } +} diff --git a/src/client/component/network.cpp b/src/client/component/network.cpp index 480a187b..cd7abd98 100644 --- a/src/client/component/network.cpp +++ b/src/client/component/network.cpp @@ -4,6 +4,8 @@ #include "command.hpp" #include "network.hpp" #include "console.hpp" +#include "dvars.hpp" + #include "game/dvars.hpp" #include @@ -276,10 +278,10 @@ namespace network utils::hook::call(0x140480E62, &net_compare_address); // increase cl_maxpackets - dvars::override::register_int("cl_maxpackets", 1000, 1, 1000, game::DVAR_FLAG_SAVED, true); + dvars::override::register_int("cl_maxpackets", 1000, 1, 1000, game::DVAR_FLAG_SAVED); // increase snaps - dvars::override::register_int("sv_remote_client_snapshot_msec", 33, 33, 100, game::DVAR_FLAG_NONE, true); + dvars::override::register_int("sv_remote_client_snapshot_msec", 33, 33, 100, game::DVAR_FLAG_NONE); // ignore impure client utils::hook::jump(0x140481B58, reinterpret_cast(0x140481BEE)); // H1MP64(1.4) diff --git a/src/client/component/patches.cpp b/src/client/component/patches.cpp index f0c7c315..908f2a5d 100644 --- a/src/client/component/patches.cpp +++ b/src/client/component/patches.cpp @@ -1,6 +1,8 @@ #include #include "loader/component_loader.hpp" +#include "dvars.hpp" + #include "game/game.hpp" #include "game/dvars.hpp" @@ -35,7 +37,6 @@ namespace patches } utils::hook::detour gscr_set_save_dvar_hook; - utils::hook::detour dvar_register_float_hook; void gscr_set_save_dvar_stub() { @@ -48,27 +49,6 @@ namespace patches gscr_set_save_dvar_hook.invoke(); } - game::dvar_t* cg_fov = nullptr; - game::dvar_t* cg_fovScale = nullptr; - - game::dvar_t* dvar_register_float_stub(int hash, const char* dvarName, float value, float min, float max, unsigned int flags) - { - static const auto cg_fov_hash = game::generateHashValue("cg_fov"); - static const auto cg_fov_scale_hash = game::generateHashValue("cg_fovscale"); - - if (hash == cg_fov_hash) - { - return cg_fov; - } - - if (hash == cg_fov_scale_hash) - { - return cg_fovScale; - } - - return dvar_register_float_hook.invoke(hash, dvarName, value, min, max, flags); - } - std::string get_login_username() { char username[UNLEN + 1]; @@ -92,8 +72,6 @@ namespace patches // Disable data validation error popup dvars::register_int("data_validation_allow_drop", 0, 0, 0, game::DVAR_FLAG_NONE, true); - - dvars::register_int("com_maxfps", 0, 10, 1000, game::DVAR_FLAG_SAVED, false); } return com_register_dvars_hook.invoke(); @@ -192,10 +170,8 @@ namespace patches gscr_set_save_dvar_hook.create(SELECT_VALUE(0x1402AE020, 0x14036B600), &gscr_set_save_dvar_stub); // Make cg_fov and cg_fovscale saved dvars - cg_fov = dvars::register_float("cg_fov", 65.f, 40.f, 200.f, game::DvarFlags::DVAR_FLAG_SAVED, true); - cg_fovScale = dvars::register_float("cg_fovScale", 1.f, 0.1f, 2.f, game::DvarFlags::DVAR_FLAG_SAVED, true); - - dvar_register_float_hook.create(game::Dvar_RegisterFloat.get(), dvar_register_float_stub); + dvars::override::register_float("cg_fov", 65.f, 40.f, 200.f, game::DvarFlags::DVAR_FLAG_SAVED); + dvars::override::register_float("cg_fovScale", 1.f, 0.1f, 2.f, game::DvarFlags::DVAR_FLAG_SAVED); if (game::environment::is_mp()) { @@ -232,15 +208,15 @@ namespace patches utils::hook::set(0x1402877D0, 0xC3C033); // MAY BE WRONG H1(1.4) // disable emblems - //dvars::override::register_int("emblems_active", 0, 0, 0, game::DVAR_FLAG_NONE); - //utils::hook::set(0x140479590, 0xC3); // don't register commands + dvars::override::register_int("emblems_active", 0, 0, 0, game::DVAR_FLAG_NONE); + utils::hook::set(0x140479590, 0xC3); // don't register commands // disable elite_clan dvars::override::register_int("elite_clan_active", 0, 0, 0, game::DVAR_FLAG_NONE); utils::hook::set(0x140585680, 0xC3); // don't register commands H1(1.4) // disable codPointStore - dvars::override::register_int("codPointStore_enabled", 0, 0, 0, game::DVAR_FLAG_NONE, true); + dvars::override::register_int("codPointStore_enabled", 0, 0, 0, game::DVAR_FLAG_NONE); // don't register every replicated dvar as a network dvar utils::hook::nop(0x14039E58E, 5); // dvar_foreach H1(1.4) @@ -254,30 +230,29 @@ namespace patches utils::hook::nop(0x140190C16, 5); utils::hook::set(0x14021D22A, 0xEB); - // some anti tamper thing that kills performance - dvars::override::register_int("dvl", 0, 0, 0, game::DVAR_FLAG_READ, true); - // unlock safeArea_* utils::hook::jump(0x1402624F5, 0x140262503); // H1(1.4) utils::hook::jump(0x14026251C, 0x140262547); // H1(1.4) - dvars::override::register_float("safeArea_adjusted_horizontal", 1, 0, 1, game::DVAR_FLAG_SAVED, true); - dvars::override::register_float("safeArea_adjusted_vertical", 1, 0, 1, game::DVAR_FLAG_SAVED, true); - dvars::override::register_float("safeArea_horizontal", 1, 0, 1, game::DVAR_FLAG_SAVED, true); - dvars::override::register_float("safeArea_vertical", 1, 0, 1, game::DVAR_FLAG_SAVED, true); + dvars::override::register_int("safeArea_adjusted_horizontal", 1, 0, 1, game::DVAR_FLAG_SAVED); + dvars::override::register_int("safeArea_adjusted_vertical", 1, 0, 1, game::DVAR_FLAG_SAVED); + dvars::override::register_int("safeArea_horizontal", 1, 0, 1, game::DVAR_FLAG_SAVED); + dvars::override::register_int("safeArea_vertical", 1, 0, 1, game::DVAR_FLAG_SAVED); // move chat position on the screen above menu splashes - //dvars::override::Dvar_RegisterVector2("cg_hudChatPosition", 5, 170, 0, 640, game::DVAR_FLAG_SAVED); + dvars::override::register_vec2("cg_hudChatPosition", 5, 170, 0, 640, game::DVAR_FLAG_SAVED); // allow servers to check for new packages more often - dvars::override::register_int("sv_network_fps", 1000, 20, 1000, game::DVAR_FLAG_SAVED, true); + dvars::override::register_int("sv_network_fps", 1000, 20, 1000, game::DVAR_FLAG_SAVED); // Massively increate timeouts - dvars::override::register_int("cl_timeout", 90, 90, 1800, game::DVAR_FLAG_NONE, true); // Seems unused - dvars::override::register_int("sv_timeout", 90, 90, 1800, game::DVAR_FLAG_NONE, true); // 30 - 0 - 1800 - dvars::override::register_int("cl_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE, true); // Seems unused - dvars::override::register_int("sv_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE, true); // 60 - 0 - 1800 + dvars::override::register_int("cl_timeout", 90, 90, 1800, game::DVAR_FLAG_NONE); // Seems unused + dvars::override::register_int("sv_timeout", 90, 90, 1800, game::DVAR_FLAG_NONE); // 30 - 0 - 1800 + dvars::override::register_int("cl_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE); // Seems unused + dvars::override::register_int("sv_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE); // 60 - 0 - 1800 - game::Dvar_RegisterInt(0, "scr_game_spectatetype", 1, 0, 99, game::DVAR_FLAG_REPLICATED); + dvars::register_int("scr_game_spectatetype", 1, 0, 99, game::DVAR_FLAG_REPLICATED); + + dvars::override::register_int("com_maxfps", 0, 10, 1000, game::DVAR_FLAG_SAVED); // Prevent clients from ending the game as non host by sending 'end_game' lui notification // cmd_lui_notify_server_hook.create(0x140335A70, cmd_lui_notify_server_stub); // H1(1.4) diff --git a/src/client/game/dvars.cpp b/src/client/game/dvars.cpp index 5ab8232b..fa0835a0 100644 --- a/src/client/game/dvars.cpp +++ b/src/client/game/dvars.cpp @@ -153,359 +153,2532 @@ namespace dvars std::vector dvar_list = { - "accessToSubscriberContent", - "acousticSpikeMaxRange", - "acousticSpikeMinRadius", - "acousticSpikeMinRange", - "acousticSpikeRingSize", - "acousticSpikeSize", - "actionSlotsHide", - "activeAction", - "activeFriendsMaxBackoffLevel", - "activeFriendsNumDayBuckets", - "activeFriendsNumPlayBuckets", - "activeFriendsRefreshDelay", - "activeFriendsSecondsPerBucket", - "aim_accel_turnrate_lerp", - "aim_aimAssistRangeScale", - "aim_alternate_lockon_deflection", - "aim_alternate_lockon_pitch_strength", - "aim_alternate_lockon_region_height", - "aim_alternate_lockon_region_width", - "aim_alternate_lockon_strength", - "aim_assist_min_target_distance", - "aim_assist_script_disable", - "bot_AllowGrenades", - "bot_autoconnectdefault", - "bot_CloseDistance", - "bot_CrouchDistance", - "bot_difficulty", - "bot_difficultydefault", - "bot_enemies", - "bot_Fov", - "bot_friends", - "bot_GoalRadius", - "bot_MaxAdsTime", - "bot_MaxCrouchTime", - "bot_MaxDeathTime", - "bot_MaxFireTime", - "bot_MaxGrenadeTime", - "bot_MaxPitchTime", - "bot_MaxReactionTime", - "bot_MaxStrafeTime", - "bot_MeleeDist", - "bot_MinAdsTime", - "bot_MinCrouchTime", - "bot_MinDeathTime", - "bot_MinFireTime", - "bot_MinGrenadeTime", - "bot_MinPitchTime", - "bot_MinReactionTime", - "bot_MinStrafeTime", - "bot_PitchDown", - "bot_PitchSpeed", - "bot_PitchSpeedAds", - "bot_PitchUp", - "bot_SprintDistance", - "bot_StrafeChance", - "bot_TargetLeadBias", - "bot_tips", - "bot_UseFriendNames", - "bot_YawSpeed", - "bot_YawSpeedAds", - "cg_draw2D", - "cg_drawBigFPS", - "cg_drawBreathHint", - "cg_drawBuildName", - "cg_drawFPS", - "cg_drawFPSLabels", - "cg_drawFPSOnly", - "cg_drawFPSScale", - "cg_drawgun", - "cg_drawPing", - "cg_drawVersion", - "cg_drawVersionX", - "cg_drawVersionY", - "cg_drawViewpos", - "cg_fov", - "cg_fov_default", - "cg_fov_default_thirdperson", - "cg_fovCompMax", - "cg_fovExtraCam", - "cg_fovMin", - "cg_fovScale", - "cg_legacyCrashHandling", - "cl_connectTimeout", - "cl_maxpackets", - "cl_maxPing", - "cl_timeout", - "codPointStore_enabled", - "com_introPlayed", - "com_isNotice", - "com_maxclients", - "com_maxfps", - "com_maxFrameTime", - "custom_roundlimit", - "custom_scorelimit", - "custom_scr_allowannouncer", - "custom_scr_allowbattlechatter", - "custom_scr_bot_difficulty", - "custom_scr_ctf_enemycarriervisible", - "custom_scr_ctf_idleflagreturntime", - "custom_scr_ctf_roundswitch", - "custom_scr_ctf_touchreturn", - "custom_scr_custom_score_assist", - "custom_scr_dem_bombtimer", - "custom_scr_dem_defusetime", - "custom_scr_dem_extratime", - "custom_scr_dem_planttime", - "custom_scr_dem_roundswitch", - "custom_scr_dm_bonus_leader", - "custom_scr_dm_score_assist", - "custom_scr_dm_score_death", - "custom_scr_dm_score_headshot", - "custom_scr_dm_score_kill", - "custom_scr_dm_score_suicide", - "custom_scr_dom_flagcapturetime", - "custom_scr_game_allowkillcam", - "custom_scr_game_forceradar", - "custom_scr_game_hardpoints", - "custom_scr_game_onlyheadshots", - "custom_scr_game_perks", - "custom_scr_game_spectatetype", - "custom_scr_hardcore", - "custom_scr_num_bots", - "custom_scr_num_bots_enemy", - "custom_scr_num_bots_friendly", - "custom_scr_player_forcerespawn", - "custom_scr_player_healthregentime", - "custom_scr_player_maxhealth", - "custom_scr_player_sprintTime", - "custom_scr_rcbomb_notimeout", - "custom_scr_sab_bombtimer", - "custom_scr_sab_defusetime", - "custom_scr_sab_hotpotato", - "custom_scr_sab_planttime", - "custom_scr_sab_roundswitch", - "custom_scr_sd_bombtimer", - "custom_scr_sd_defusetime", - "custom_scr_sd_multibomb", - "custom_scr_sd_planttime", - "custom_scr_sd_roundswitch", - "custom_scr_tdm_bonus_leader", - "custom_scr_tdm_score_death", - "custom_scr_tdm_score_headshot", - "custom_scr_tdm_score_kill", - "custom_scr_tdm_score_suicide", - "custom_scr_team_fftype", - "custom_scr_team_teamkillspawndelay", - "custom_scr_vehicles_enabled", - "custom_timelimit", - "elite_clan_active", - "fs_basegame", - "fs_basepath", - "fs_basepath_output", - "fs_cdpath", - "fs_copyfiles", - "fs_debug", - "fs_game", - "fs_homepath", - "fs_ignoreLocalized", - "fs_restrict", - "fs_savepath", - "fs_usedevdir", - "fs_userDocuments", - "fs_usermapdir", - "g_gametype", - "g_hardcore", - "g_listEntity", - "g_loadScripts", - "g_log", - "g_logSync", - "g_logTimeStampInSeconds", - "g_motd", - "g_scriptMainMenu", - "g_smoothClients", - "g_spawnai", - "g_speed", - "gamedate", - "gamedvr_active", - "gameMode", - "gamename", - "gametype", - "log_party_state", - "logfile", - "m_filter", - "m_forward", - "m_pitch", - "m_side", - "m_yaw", - "map", - "mapname", - "r_drawLightmapDrawlists", - "r_drawLitDrawlists", - "r_drawSun", - "r_drawWater", - "r_fog", - "r_fog_depthhack_scale", - "r_fog_disable", - "r_fog_ev_adjust", - "r_fogBaseDist", - "r_fogBaseHeight", - "r_fogColor", - "r_fogHalfDist", - "r_fogHalfHeight", - "r_fogOpacity", - "r_fogSunColor", - "r_fogSunInner", - "r_fogSunOpacity", - "r_fogSunOuter", - "r_fogSunPitch", - "r_fogSunYaw", - "r_fogTweak", - "r_forceLod", - "r_fullbright", - "r_fullPrepass", - "r_fullscreen", - "r_fullscreenWindow", - "r_fxaa", - "r_fxaaSubpixel", - "r_FXAverageColorFunc", - "r_gamma", - "r_glossMap", - "r_glow", - "r_glow_allowed", - "safeArea_adjusted_horizontal", - "safeArea_adjusted_vertical", - "safeArea_horizontal", - "safeArea_vertical", - "scr_game_spectatetype", - "sensitivity", - "stat_version", - "stats_version_check", - "statsLocationFatal", - "stopspeed", - "storeMapPackMaskToStats", - "stringtable_debug", - "sv_allowAnonymous", - "sv_allowClientConsole", - "sv_allowDownload", - "sv_allowedClan1", - "sv_allowedClan2", - "sv_archiveClientsPositions", - "sv_assistWorkers", - "sv_authenticating", - "sv_autoPriority", - "sv_bitfieldTracking", - "sv_botsPressAttackBtn", - "sv_cheats", - "sv_checkMinPlayers", - "sv_clientArchive", - "sv_clientFpsLimit", - "sv_clientside", - "sv_clientSideBullets", - "sv_clientSideVehicles", - "sv_connectTimeout", - "sv_cumulThinkTime", - "sv_debugRate", - "sv_debugReliableCmds", - "sv_disableClientConsole", - "sv_dwlsgerror", - "sv_endGameIfISuck", - "sv_error_on_baseline_failure", - "sv_expensive_bullet_time", - "sv_exponentialBackoffAfterNonAckedMsgs", - "sv_externalEventLoop", - "sv_FakeRemoteClient", - "sv_fakeServerLoad", - "sv_fakeServerLoadRand", - "sv_FFCheckSums", - "sv_FFNames", - "sv_floodprotect", - "sv_forceunranked", - "sv_fps", - "sv_hostname", - "sv_hugeSnapshotDelay", - "sv_hugeSnapshotSize", - "sv_iwdNames", - "sv_iwds", - "sv_keywords", - "sv_kickBanTime", - "sv_lastSaveCommitedToDevice", - "sv_local_client_snapshot_msec", - "sv_mapname", - "sv_mapRotation", - "sv_mapRotationCurrent", - "sv_maxclients", - "sv_maxPhysExplosionSpheres", - "sv_maxPing", - "sv_maxRate", - "sv_minPing", - "sv_minPingClamp", - "sv_network_fps", - "sv_networkRateSolution", - "sv_noname", - "sv_NoShapshotWarnings", - "sv_numExpBackoffBeforeReleasingCachedSnapshots", - "sv_packet_info", - "sv_padPackets", - "sv_paused", - "sv_playlistFetchInterval", - "sv_privateClients", - "sv_privateClientsForClients", - "sv_privatePassword", - "sv_punkbuster", - "sv_pure", - "sv_reconnectlimit", - "sv_referencedFFCheckSums", - "sv_referencedFFNames", - "sv_referencedIwdNames", - "sv_referencedIwds", - "sv_rejoinTimeout", - "sv_remote_client_snapshot_joiningstate_msec", - "sv_remote_client_snapshot_msec", - "sv_resetOnSpawn", - "sv_restrictedTempEnts", - "sv_rewindPoseArchive", - "sv_running", - "sv_saveDeviceAvailable", - "sv_saveGameAvailable", - "sv_saveGameNotReadable", - "sv_saveOnStartMap", - "sv_serverid", - "sv_showAverageBPS", - "sv_showCommands", - "sv_smp", - "sv_SnapshotManLaw", - "sv_testValue", - "sv_timeout", - "sv_trackFrameMsecThreshold", - "sv_useExtraCompress", - "sv_voice", - "sv_voiceQuality", - "sv_writeConfigStrings", - "sv_wwwBaseURL", - "sv_wwwDlDisconnected", - "sv_wwwDownload", - "sv_zlib_threshold", - "sv_zombietime", - "svwp", - "syncTimeTimeout", - "sys_configSum", - "sys_configureGHz", - "sys_cpuGHz", - "sys_cpuName", - "sys_gpu", - "sys_lockThreads", - "sys_quitMigrateTime", - "sys_smp_allowed", - "sys_SSE", - "sys_sysMB", - "systemlink", - "systemlink_host", - "timescale", // Scale time of each frame ---> "5401" - "ui_mousePitch", - //"xpartygo" + {"abilities_active"}, + {"accessToSubscriberContent"}, + {"aci"}, + {"actionSlotsHide"}, + {"agent_jumpGravity"}, + {"agent_jumpSpeed"}, + {"agent_jumpWallGravity"}, + {"agent_jumpWallSpeed"}, + {"aim_autoaim_enabled"}, + {"aim_target_sentient_radius"}, + {"aimassist_enabled"}, + {"allow_cod_anywhere"}, + {"allow_online_squads"}, + {"allow_secondscreen"}, + {"allow_secondscreen_ingame_recv"}, + {"allow_secondscreen_ingame_send"}, + {"allowKillStreaks"}, + {"ammoCounterHide"}, + {"badHost_detectMinServerTime"}, + {"badhost_maxDoISuckFrames"}, + {"band_12players"}, + {"band_18players"}, + {"band_2players"}, + {"band_4players"}, + {"band_8players"}, + {"bg_alienBulletExplRadius"}, + {"bg_bulletExplDmgFactor"}, + {"bg_bulletExplRadius"}, + {"bg_compassShowEnemies"}, + {"bg_idleSwingSpeed"}, + {"bg_shieldHitEncodeHeightVM"}, + {"bg_shieldHitEncodeHeightWorld"}, + {"bg_shieldHitEncodeWidthVM"}, + {"bg_shieldHitEncodeWidthWorld"}, + {"bg_shock_lookControl"}, + {"bg_shock_lookControl_fadeTime"}, + {"bg_shock_lookControl_maxpitchspeed"}, + {"bg_shock_lookControl_maxyawspeed"}, + {"bg_shock_lookControl_mousesensitivityscale"}, + {"bg_shock_movement"}, + {"bg_shock_screenBlurBlendFadeTime"}, + {"bg_shock_screenBlurBlendTime"}, + {"bg_shock_screenFlashShotFadeTime"}, + {"bg_shock_screenFlashWhiteFadeTime"}, + {"bg_shock_screenType"}, + {"bg_shock_sound"}, + {"bg_shock_soundDryLevel"}, + {"bg_shock_soundEnd"}, + {"bg_shock_soundEndAbort"}, + {"bg_shock_soundFadeInTime"}, + {"bg_shock_soundFadeOutTime"}, + {"bg_shock_soundLoop"}, + {"bg_shock_soundLoopEndDelay"}, + {"bg_shock_soundLoopFadeTime"}, + {"bg_shock_soundLoopSilent"}, + {"bg_shock_soundModEndDelay"}, + {"bg_shock_soundRoomType"}, + {"bg_shock_soundWetLevel"}, + {"bg_shock_viewKickFadeTime"}, + {"bg_shock_viewKickPeriod"}, + {"bg_shock_viewKickRadius"}, + {"bg_shock_volume_aircraft"}, + {"bg_shock_volume_alarm"}, + {"bg_shock_volume_ambdist1"}, + {"bg_shock_volume_ambdist2"}, + {"bg_shock_volume_ambient"}, + {"bg_shock_volume_announcer"}, + {"bg_shock_volume_auto"}, + {"bg_shock_volume_auto2"}, + {"bg_shock_volume_auto2d"}, + {"bg_shock_volume_autodog"}, + {"bg_shock_volume_body"}, + {"bg_shock_volume_body2d"}, + {"bg_shock_volume_bulletflesh1"}, + {"bg_shock_volume_bulletflesh1npc"}, + {"bg_shock_volume_bulletflesh1npc_npc"}, + {"bg_shock_volume_bulletflesh2"}, + {"bg_shock_volume_bulletflesh2npc"}, + {"bg_shock_volume_bulletflesh2npc_npc"}, + {"bg_shock_volume_bulletimpact"}, + {"bg_shock_volume_bulletwhizbyin"}, + {"bg_shock_volume_bulletwhizbyout"}, + {"bg_shock_volume_effects1"}, + {"bg_shock_volume_effects2"}, + {"bg_shock_volume_effects2d1"}, + {"bg_shock_volume_effects2d2"}, + {"bg_shock_volume_effects2dlim"}, + {"bg_shock_volume_effects3"}, + {"bg_shock_volume_element"}, + {"bg_shock_volume_element2d"}, + {"bg_shock_volume_element_ext"}, + {"bg_shock_volume_element_int"}, + {"bg_shock_volume_element_lim"}, + {"bg_shock_volume_explosion1"}, + {"bg_shock_volume_explosion2"}, + {"bg_shock_volume_explosion3"}, + {"bg_shock_volume_explosion4"}, + {"bg_shock_volume_explosion5"}, + {"bg_shock_volume_explosiondist1"}, + {"bg_shock_volume_explosiondist2"}, + {"bg_shock_volume_explosiveimpact"}, + {"bg_shock_volume_foley_dog_mvmt"}, + {"bg_shock_volume_foley_dog_step"}, + {"bg_shock_volume_foley_npc_mvmt"}, + {"bg_shock_volume_foley_npc_step"}, + {"bg_shock_volume_foley_npc_weap"}, + {"bg_shock_volume_foley_plr_mvmt"}, + {"bg_shock_volume_foley_plr_step"}, + {"bg_shock_volume_foley_plr_step_unres"}, + {"bg_shock_volume_foley_plr_weap"}, + {"bg_shock_volume_hurt"}, + {"bg_shock_volume_item"}, + {"bg_shock_volume_local"}, + {"bg_shock_volume_local2"}, + {"bg_shock_volume_local3"}, + {"bg_shock_volume_menu"}, + {"bg_shock_volume_menulim1"}, + {"bg_shock_volume_menulim2"}, + {"bg_shock_volume_mission"}, + {"bg_shock_volume_missionfx"}, + {"bg_shock_volume_music"}, + {"bg_shock_volume_music_emitter"}, + {"bg_shock_volume_musicnopause"}, + {"bg_shock_volume_nonshock"}, + {"bg_shock_volume_nonshock2"}, + {"bg_shock_volume_norestrict"}, + {"bg_shock_volume_norestrict2d"}, + {"bg_shock_volume_physics"}, + {"bg_shock_volume_player1"}, + {"bg_shock_volume_player2"}, + {"bg_shock_volume_plr_weap_fire_2d"}, + {"bg_shock_volume_plr_weap_mech_2d"}, + {"bg_shock_volume_reload"}, + {"bg_shock_volume_reload2d"}, + {"bg_shock_volume_shellshock"}, + {"bg_shock_volume_vehicle"}, + {"bg_shock_volume_vehicle2d"}, + {"bg_shock_volume_vehiclelimited"}, + {"bg_shock_volume_voice"}, + {"bg_shock_volume_voice_dog"}, + {"bg_shock_volume_voice_dog_attack"}, + {"bg_shock_volume_voice_dog_dist"}, + {"bg_shock_volume_weapon"}, + {"bg_shock_volume_weapon2d"}, + {"bg_shock_volume_weapon_dist"}, + {"bg_shock_volume_weapon_drone"}, + {"bg_shock_volume_weapon_mid"}, + {"bg_swingSpeed"}, + {"bg_torsoSwingSpeed"}, + {"bg_underbarrelWeaponEnabled"}, + {"bot_AutoConnectDefault"}, + {"bot_DifficultyDefault"}, + {"ca_do_mlc"}, + {"ca_intra_only"}, + {"camera_thirdPerson"}, + {"cameraShakeRemoteHelo_Angles"}, + {"cameraShakeRemoteHelo_Freqs"}, + {"cameraShakeRemoteHelo_SpeedRange"}, + {"cameraShakeRemoteMissile_Angles"}, + {"cameraShakeRemoteMissile_Freqs"}, + {"cameraShakeRemoteMissile_SpeedRange"}, + {"cg_airstrikeKillCamFarBlur"}, + {"cg_airstrikeKillCamFarBlurDist"}, + {"cg_airstrikeKillCamFarBlurStart"}, + {"cg_airstrikeKillCamFov"}, + {"cg_airstrikeKillCamNearBlur"}, + {"cg_airstrikeKillCamNearBlurEnd"}, + {"cg_airstrikeKillCamNearBlurStart"}, + {"cg_blood"}, + {"cg_brass"}, + {"cg_centertime"}, + {"cg_chatHeight"}, + {"cg_chatTime"}, + {"cg_ColorBlind_EnemyTeam"}, + {"cg_ColorBlind_MyParty"}, + {"cg_ColorBlind_MyTeam"}, + {"cg_connectionIconSize"}, + {"cg_constantSizeHeadIcons"}, + {"cg_crosshairAlpha"}, + {"cg_crosshairAlphaMin"}, + {"cg_crosshairDynamic"}, + {"cg_crosshairEnemyColor"}, + {"cg_crosshairVerticalOffset"}, + {"cg_cullBulletAngle"}, + {"cg_cullBullets"}, + {"cg_cursorHints"}, + {"cg_deadChatWithDead"}, + {"cg_deadChatWithTeam"}, + {"cg_deadHearAllLiving"}, + {"cg_deadHearTeamLiving"}, + {"cg_descriptiveText"}, + {"cg_draw2D"}, + {"cg_drawBreathHint"}, + {"cg_drawBuildName"}, + {"cg_drawCrosshair"}, + {"cg_drawCrosshairNames"}, + {"cg_drawCrosshairNamesPosX"}, + {"cg_drawCrosshairNamesPosY"}, + {"cg_drawDamageDirection"}, + {"cg_drawDamageFlash"}, + {"cg_drawEffectNum"}, + {"cg_drawFPS"}, + {"cg_drawFPSLabels"}, + {"cg_drawFriendlyHUDGrenades"}, + {"cg_drawFriendlyNames"}, + {"cg_drawFriendlyNamesAlways"}, + {"cg_drawGun"}, + {"cg_drawHealth"}, + {"cg_drawMantleHint"}, + {"cg_drawMaterial"}, + {"cg_drawpaused"}, + {"cg_drawPing"}, + {"cg_drawScriptUsage"}, + {"cg_drawSnapshot"}, + {"cg_drawSpectatorMessages"}, + {"cg_drawStatsSource"}, + {"cg_drawTalk"}, + {"cg_drawTechset"}, + {"cg_drawTurretCrosshair"}, + {"cg_drawViewpos"}, + {"cg_equipmentSounds"}, + {"cg_errordecay"}, + {"cg_everyoneHearsEveryone"}, + {"cg_explosiveKillCamBackDist"}, + {"cg_explosiveKillCamGroundBackDist"}, + {"cg_explosiveKillCamGroundUpDist"}, + {"cg_explosiveKillCamStopDecelDist"}, + {"cg_explosiveKillCamStopDist"}, + {"cg_explosiveKillCamUpDist"}, + {"cg_explosiveKillCamWallOutDist"}, + {"cg_explosiveKillCamWallSideDist"}, + {"cg_flashbangNameFadeIn"}, + {"cg_flashbangNameFadeOut"}, + {"cg_foliagesnd_alias"}, + {"cg_footsteps"}, + {"cg_footstepsSprint"}, + {"cg_fov"}, + {"cg_fovMin"}, + {"cg_fovScale"}, + {"cg_friendlyNameFadeIn"}, + {"cg_friendlyNameFadeOut"}, + {"cg_gameBoldMessageWidth"}, + {"cg_gameMessageWidth"}, + {"cg_gun_x"}, + {"cg_gun_y"}, + {"cg_gun_z"}, + {"cg_headIconMinScreenRadius"}, + {"cg_hearKillerTime"}, + {"cg_hearVictimEnabled"}, + {"cg_hearVictimTime"}, + {"cg_heliKillCamFarBlur"}, + {"cg_heliKillCamFarBlurDist"}, + {"cg_heliKillCamFarBlurStart"}, + {"cg_heliKillCamFov"}, + {"cg_heliKillCamNearBlur"}, + {"cg_heliKillCamNearBlurEnd"}, + {"cg_heliKillCamNearBlurStart"}, + {"cg_hintFadeTime"}, + {"cg_hudChatIntermissionPosition"}, + {"cg_hudChatPosition"}, + {"cg_hudDamageIconHeight"}, + {"cg_hudDamageIconInScope"}, + {"cg_hudDamageIconOffset"}, + {"cg_hudDamageIconTime"}, + {"cg_hudDamageIconWidth"}, + {"cg_hudGrenadeIconEnabledFlash"}, + {"cg_hudGrenadeIconHeight"}, + {"cg_hudGrenadeIconInScope"}, + {"cg_hudGrenadeIconMaxHeight"}, + {"cg_hudGrenadeIconMaxRangeFlash"}, + {"cg_hudGrenadeIconMaxRangeFrag"}, + {"cg_hudGrenadeIconOffset"}, + {"cg_hudGrenadeIconWidth"}, + {"cg_hudGrenadePointerHeight"}, + {"cg_hudGrenadePointerPivot"}, + {"cg_hudGrenadePointerPulseFreq"}, + {"cg_hudGrenadePointerPulseMax"}, + {"cg_hudGrenadePointerPulseMin"}, + {"cg_hudGrenadePointerWidth"}, + {"cg_hudlegacysplitscreenscale"}, + {"cg_hudLighting_basic_additiveLumOffset"}, + {"cg_hudLighting_basic_additiveLumScale"}, + {"cg_hudLighting_basic_additiveOffset"}, + {"cg_hudLighting_basic_additiveScale"}, + {"cg_hudLighting_basic_ambientLumOffset"}, + {"cg_hudLighting_basic_ambientLumScale"}, + {"cg_hudLighting_basic_ambientOffset"}, + {"cg_hudLighting_basic_ambientScale"}, + {"cg_hudLighting_basic_diffuseLumOffset"}, + {"cg_hudLighting_basic_diffuseLumScale"}, + {"cg_hudLighting_basic_diffuseOffset"}, + {"cg_hudLighting_basic_diffuseScale"}, + {"cg_hudLighting_basic_specExponent"}, + {"cg_hudLighting_basic_specLumOffset"}, + {"cg_hudLighting_basic_specLumScale"}, + {"cg_hudLighting_basic_specOffset"}, + {"cg_hudLighting_basic_specScale"}, + {"cg_hudLighting_blood_additiveLumOffset"}, + {"cg_hudLighting_blood_additiveLumScale"}, + {"cg_hudLighting_blood_additiveOffset"}, + {"cg_hudLighting_blood_additiveScale"}, + {"cg_hudLighting_blood_ambientLumOffset"}, + {"cg_hudLighting_blood_ambientLumScale"}, + {"cg_hudLighting_blood_ambientOffset"}, + {"cg_hudLighting_blood_ambientScale"}, + {"cg_hudLighting_blood_diffuseLumOffset"}, + {"cg_hudLighting_blood_diffuseLumScale"}, + {"cg_hudLighting_blood_diffuseOffset"}, + {"cg_hudLighting_blood_diffuseScale"}, + {"cg_hudLighting_blood_specExponent"}, + {"cg_hudLighting_blood_specLumOffset"}, + {"cg_hudLighting_blood_specLumScale"}, + {"cg_hudLighting_blood_specOffset"}, + {"cg_hudLighting_blood_specScale"}, + {"cg_hudLighting_fadeSharpness"}, + {"cg_hudMapBorderWidth"}, + {"cg_hudMapFriendlyHeight"}, + {"cg_hudMapFriendlyWidth"}, + {"cg_hudMapPlayerHeight"}, + {"cg_hudMapPlayerWidth"}, + {"cg_hudMapRadarLineThickness"}, + {"cg_hudObjectiveTextScale"}, + {"cg_hudProneY"}, + {"cg_hudSayPosition"}, + {"cg_hudSplitscreenCompassElementScale"}, + {"cg_hudsplitscreencompassscale"}, + {"cg_hudsplitscreenstancescale"}, + {"cg_hudStanceFlash"}, + {"cg_hudVotePosition"}, + {"cg_invalidCmdHintBlinkInterval"}, + {"cg_invalidCmdHintDuration"}, + {"cg_javelinKillCamCloseZDist"}, + {"cg_javelinKillCamDownDist"}, + {"cg_javelinKillCamFov"}, + {"cg_javelinKillCamLookLerpDist"}, + {"cg_javelinKillCamPassDist"}, + {"cg_javelinKillCamPassTime"}, + {"cg_javelinKillCamUpDist"}, + {"cg_killCamDefaultLerpTime"}, + {"cg_killCamTurretLerpTime"}, + {"cg_landingSounds"}, + {"cg_legacyCrashHandling"}, + {"cg_mapLocationSelectionCursorSpeed"}, + {"cg_marks_ents_player_only"}, + {"cg_minCullBulletDist"}, + {"cg_objectiveText"}, + {"cg_overheadIconSize"}, + {"cg_overheadNamesFarDist"}, + {"cg_overheadNamesFarScale"}, + {"cg_overheadNamesFont"}, + {"cg_overheadNamesGlow"}, + {"cg_overheadNamesMaxDist"}, + {"cg_overheadNamesNearDist"}, + {"cg_overheadNamesSize"}, + {"cg_overheadRankSize"}, + {"cg_remoteMissileKillCamBackDist"}, + {"cg_remoteMissileKillCamUpDist"}, + {"cg_rocketKillCamBackDist"}, + {"cg_rocketKillCamUpDist"}, + {"cg_scoreboardBannerHeight"}, + {"cg_scoreboardFont"}, + {"cg_scoreboardHeaderFontScale"}, + {"cg_scoreboardHeight"}, + {"cg_scoreboardItemHeight"}, + {"cg_scoreboardMyColor"}, + {"cg_scoreboardMyPartyColor"}, + {"cg_scoreboardPingGraph"}, + {"cg_scoreboardPingHeight"}, + {"cg_scoreboardPingText"}, + {"cg_scoreboardPingWidth"}, + {"cg_scoreboardRankFontScale"}, + {"cg_scoreboardScrollStep"}, + {"cg_scoreboardTextOffset"}, + {"cg_scoreboardWidth"}, + {"cg_ScoresPing_BgColor"}, + {"cg_ScoresPing_HighColor"}, + {"cg_ScoresPing_LowColor"}, + {"cg_ScoresPing_MedColor"}, + {"cg_scriptIconSize"}, + {"cg_showmiss"}, + {"cg_sprintMeterDisabledColor"}, + {"cg_sprintMeterEmptyColor"}, + {"cg_sprintMeterFullColor"}, + {"cg_subtitleMinTime"}, + {"cg_subtitleWidthStandard"}, + {"cg_subtitleWidthWidescreen"}, + {"cg_teamChatsOnly"}, + {"cg_TeamColor_Allies"}, + {"cg_TeamColor_Axis"}, + {"cg_TeamColor_EnemyTeam"}, + {"cg_TeamColor_Free"}, + {"cg_TeamColor_MyParty"}, + {"cg_TeamColor_MyTeam"}, + {"cg_TeamColor_Spectator"}, + {"cg_turretKillCamBackDist"}, + {"cg_turretKillCamFov"}, + {"cg_turretKillCamUpDist"}, + {"cg_turretRemoteKillCamBackDist"}, + {"cg_turretRemoteKillCamFov"}, + {"cg_turretRemoteKillCamUpDist"}, + {"cg_vectorFieldsForceUniform"}, + {"cg_viewVehicleInfluence"}, + {"cg_viewZSmoothingMax"}, + {"cg_viewZSmoothingMin"}, + {"cg_viewZSmoothingTime"}, + {"cg_voiceIconSize"}, + {"cg_waterSheeting_distortionScaleFactor"}, + {"cg_waterSheeting_magnitude"}, + {"cg_waterSheeting_radius"}, + {"cg_weapHitCullAngle"}, + {"cg_weapHitCullEnable"}, + {"cg_weaponCycleDelay"}, + {"cg_weaponHintsCoD1Style"}, + {"cg_weaponVisInterval"}, + {"cg_youInKillCamSize"}, + {"cl_anglespeedkey"}, + {"cl_bypassMouseInput"}, + {"cl_connectionAttempts"}, + {"cl_connectTimeout"}, + {"cl_demo_uploadfb"}, + {"cl_dirSelConvergenceTime"}, + {"cl_freelook"}, + {"cl_hudDrawsBehindUI"}, + {"cl_ingame"}, + {"cl_inhibit_stats_upload"}, + {"cl_lessprint"}, + {"cl_loadApexDLL"}, + {"cl_loadHairDLL"}, + {"cl_loadHBAODLL"}, + {"cl_loadNVMRDLL"}, + {"cl_loadNVPSMDLL"}, + {"cl_loadTXAADLL"}, + {"cl_maxpackets"}, + {"cl_maxPing"}, + {"cl_migrationTimeout"}, + {"cl_modifiedDebugPlacement"}, + {"cl_motdString"}, + {"cl_mouseAccel"}, + {"cl_noprint"}, + {"cl_packetdup"}, + {"cl_paused"}, + {"cl_pitchspeed"}, + {"cl_pushToTalk"}, + {"cl_serverStatusResendTime"}, + {"cl_showmouserate"}, + {"cl_textChatEnabled"}, + {"cl_timeout"}, + {"cl_voice"}, + {"cl_yawspeed"}, + {"clientSideEffects"}, + {"cod_anywhere_errorMessage"}, + {"cod_anywhere_showPopup"}, + {"cod_anywhere_single_task_popup_text"}, + {"com_animCheck"}, + {"com_cinematicEndInWhite"}, + {"com_completionResolveCommand"}, + {"com_errorMessage"}, + {"com_errorResolveCommand"}, + {"com_filter_output"}, + {"com_maxfps"}, + {"com_maxFrameTime"}, + {"com_playerProfile"}, + {"com_recommendedSet"}, + {"commerce_dl_retry_step"}, + {"commerce_manifest_file_max_retry_time"}, + {"commerce_manifest_file_retry_step"}, + {"commerce_max_dl_retry_time"}, + {"commerce_max_retry_time"}, + {"commerce_retry_step"}, + {"compass"}, + {"compassClampIcons"}, + {"compassCoords"}, + {"compassECoordCutoff"}, + {"compassFriendlyHeight"}, + {"compassFriendlyWidth"}, + {"compassHideSansObjectivePointer"}, + {"compassHideVehicles"}, + {"compassMaxRange"}, + {"compassMinRadius"}, + {"compassMinRange"}, + {"compassObjectiveArrowHeight"}, + {"compassObjectiveArrowOffset"}, + {"compassObjectiveArrowRotateDist"}, + {"compassObjectiveArrowWidth"}, + {"compassObjectiveDetailDist"}, + {"compassObjectiveDrawLines"}, + {"compassObjectiveHeight"}, + {"compassObjectiveIconHeight"}, + {"compassObjectiveIconWidth"}, + {"compassObjectiveMaxHeight"}, + {"compassObjectiveMaxRange"}, + {"compassObjectiveMinAlpha"}, + {"compassObjectiveMinDistRange"}, + {"compassObjectiveMinHeight"}, + {"compassObjectiveNearbyDist"}, + {"compassObjectiveNumRings"}, + {"compassObjectiveRingSize"}, + {"compassObjectiveRingTime"}, + {"compassObjectiveTextHeight"}, + {"compassObjectiveTextScale"}, + {"compassObjectiveWidth"}, + {"compassPlayerHeight"}, + {"compassPlayerWidth"}, + {"compassPrototypeElevation"}, + {"compassPrototypeFiring"}, + {"compassRadarLineThickness"}, + {"compassRadarPingFadeTime"}, + {"compassRotation"}, + {"compassSize"}, + {"compassSoundPingFadeTime"}, + {"compassTickertapeStretch"}, + {"con_gameMsgWindow0FadeInTime"}, + {"con_gameMsgWindow0FadeOutTime"}, + {"con_gameMsgWindow0Filter"}, + {"con_gameMsgWindow0LineCount"}, + {"con_gameMsgWindow0MsgTime"}, + {"con_gameMsgWindow0ScrollTime"}, + {"con_gameMsgWindow0SplitscreenScale"}, + {"con_gameMsgWindow1FadeInTime"}, + {"con_gameMsgWindow1FadeOutTime"}, + {"con_gameMsgWindow1Filter"}, + {"con_gameMsgWindow1LineCount"}, + {"con_gameMsgWindow1MsgTime"}, + {"con_gameMsgWindow1ScrollTime"}, + {"con_gameMsgWindow1SplitscreenScale"}, + {"con_gameMsgWindow2FadeInTime"}, + {"con_gameMsgWindow2FadeOutTime"}, + {"con_gameMsgWindow2Filter"}, + {"con_gameMsgWindow2LineCount"}, + {"con_gameMsgWindow2MsgTime"}, + {"con_gameMsgWindow2ScrollTime"}, + {"con_gameMsgWindow2SplitscreenScale"}, + {"con_gameMsgWindow3FadeInTime"}, + {"con_gameMsgWindow3FadeOutTime"}, + {"con_gameMsgWindow3Filter"}, + {"con_gameMsgWindow3LineCount"}, + {"con_gameMsgWindow3MsgTime"}, + {"con_gameMsgWindow3ScrollTime"}, + {"con_gameMsgWindow3SplitscreenScale"}, + {"con_inputBoxColor"}, + {"con_inputCmdMatchColor"}, + {"con_inputDvarInactiveValueColor"}, + {"con_inputDvarMatchColor"}, + {"con_inputDvarValueColor"}, + {"con_inputHintBoxColor"}, + {"con_outputBarColor"}, + {"con_outputSliderColor"}, + {"con_outputWindowColor"}, + {"con_typewriterColorBase"}, + {"con_typewriterColorGlowCheckpoint"}, + {"con_typewriterColorGlowCompleted"}, + {"con_typewriterColorGlowFailed"}, + {"con_typewriterColorGlowUpdated"}, + {"con_typewriterDecayDuration"}, + {"con_typewriterDecayStartTime"}, + {"con_typewriterPrintSpeed"}, + {"counterDownloadInterval"}, + {"counterUploadInterval"}, + {"cpu_speed_12players"}, + {"cpu_speed_18players"}, + {"cpu_speed_8players"}, + {"cSplineDebugRender"}, + {"cSplineDebugRenderCorridor"}, + {"cSplineDebugRenderData"}, + {"cSplineDebugRenderSplineId"}, + {"dc_lobbymerge"}, + {"dedicated_dhclient"}, + {"demonwareConsideredConnectedTime"}, + {"developer"}, + {"didyouknow"}, + {"discard_playerstats_on_suspend"}, + {"drawEntityCount"}, + {"drawEntityCountPos"}, + {"drawEntityCountSize"}, + {"drawKillcamData"}, + {"drawKillcamDataPos"}, + {"drawKillcamDataSize"}, + {"drawServerBandwidth"}, + {"drawServerBandwidthPos"}, + {"ds_dcid"}, + {"ds_dcid_override"}, + {"ds_info"}, + {"ds_info_enable"}, + {"ds_introRequestTimeout"}, + {"ds_keepaliveInterval"}, + {"ds_keepaliveTimeout"}, + {"ds_parklist"}, + {"ds_pingclient_maxpings"}, + {"ds_pingclient_maxpings_per_tick"}, + {"ds_pingclient_minpings"}, + {"ds_pingclient_nowaitonline"}, + {"ds_pingclient_odsf"}, + {"ds_pingclient_resend_ms"}, + {"ds_reacquireAfterDisconnect"}, + {"ds_serverAcquireTimeout"}, + {"ds_serverAcquisitionPeriod"}, + {"ds_serverConnectTimeout"}, + {"ds_serverListExpiryPeriod"}, + {"dsping_dc_0"}, + {"dsping_dc_1"}, + {"dsping_dc_10"}, + {"dsping_dc_11"}, + {"dsping_dc_12"}, + {"dsping_dc_13"}, + {"dsping_dc_14"}, + {"dsping_dc_15"}, + {"dsping_dc_16"}, + {"dsping_dc_17"}, + {"dsping_dc_18"}, + {"dsping_dc_19"}, + {"dsping_dc_2"}, + {"dsping_dc_20"}, + {"dsping_dc_21"}, + {"dsping_dc_22"}, + {"dsping_dc_23"}, + {"dsping_dc_24"}, + {"dsping_dc_25"}, + {"dsping_dc_26"}, + {"dsping_dc_27"}, + {"dsping_dc_28"}, + {"dsping_dc_29"}, + {"dsping_dc_3"}, + {"dsping_dc_30"}, + {"dsping_dc_31"}, + {"dsping_dc_32"}, + {"dsping_dc_33"}, + {"dsping_dc_34"}, + {"dsping_dc_35"}, + {"dsping_dc_36"}, + {"dsping_dc_37"}, + {"dsping_dc_38"}, + {"dsping_dc_39"}, + {"dsping_dc_4"}, + {"dsping_dc_40"}, + {"dsping_dc_41"}, + {"dsping_dc_42"}, + {"dsping_dc_43"}, + {"dsping_dc_44"}, + {"dsping_dc_45"}, + {"dsping_dc_46"}, + {"dsping_dc_47"}, + {"dsping_dc_48"}, + {"dsping_dc_49"}, + {"dsping_dc_5"}, + {"dsping_dc_50"}, + {"dsping_dc_51"}, + {"dsping_dc_52"}, + {"dsping_dc_53"}, + {"dsping_dc_54"}, + {"dsping_dc_55"}, + {"dsping_dc_56"}, + {"dsping_dc_57"}, + {"dsping_dc_58"}, + {"dsping_dc_59"}, + {"dsping_dc_6"}, + {"dsping_dc_60"}, + {"dsping_dc_61"}, + {"dsping_dc_62"}, + {"dsping_dc_63"}, + {"dsping_dc_7"}, + {"dsping_dc_8"}, + {"dsping_dc_9"}, + {"dvl"}, + {"dw_addrHandleTimeout"}, + {"dw_ignore_hack"}, + {"dw_leaderboard_write_active"}, + {"dw_matchmaking_fall_off"}, + {"dw_presence_active"}, + {"dw_presence_coop_join_active"}, + {"dw_presence_get_delay"}, + {"dw_presence_get_rate"}, + {"dw_presence_put_delay"}, + {"dw_presence_put_rate"}, + {"dw_region_lookup_timeout"}, + {"dw_shared_presence_active"}, + {"dw_shared_presence_get_delay"}, + {"dw_shared_presence_get_rate"}, + {"dw_shared_presence_put_delay"}, + {"dw_shared_presence_put_rate"}, + {"dynEnt_active"}, + {"elite_clan_active"}, + {"elite_clan_cool_off_time"}, + {"elite_clan_delay"}, + {"elite_clan_division_icon_active"}, + {"elite_clan_get_clan_max_retry_time"}, + {"elite_clan_get_clan_retry_step"}, + {"elite_clan_get_members_max_retry_time"}, + {"elite_clan_get_members_retry_step"}, + {"elite_clan_get_private_member_profile_max_retry_time"}, + {"elite_clan_get_private_member_profile_retry_step"}, + {"elite_clan_get_private_profile_max_retry_time"}, + {"elite_clan_get_private_profile_retry_step"}, + {"elite_clan_get_public_profile_max_retry_time"}, + {"elite_clan_get_public_profile_retry_step"}, + {"elite_clan_get_team_stats_max_retry_time"}, + {"elite_clan_get_team_stats_retry_step"}, + {"elite_clan_motd_throttle_time"}, + {"elite_clan_remote_view_active"}, + {"elite_clan_remote_view_max_retry_time"}, + {"elite_clan_remote_view_retry_step"}, + {"elite_clan_send_message_to_members_max_retry_time"}, + {"elite_clan_send_message_to_members_retry_step"}, + {"elite_clan_set_private_member_profile_max_retry_time"}, + {"elite_clan_set_private_member_profile_retry_step"}, + {"elite_clan_single_task_popup_text"}, + {"elite_clan_using_title"}, + {"elite_edl"}, + {"elite_edl_xl"}, + {"enable_eliteCACDownload"}, + {"enable_eliteCACDownloadInGameLobby"}, + {"enable_recordRecentActivity"}, + {"enableAntilagReporting"}, + {"enableReportingRegisteredParties"}, + {"enableServerReporting"}, + {"entitlements_active"}, + {"entitlements_config_file_max_retry_time"}, + {"entitlements_config_file_retry_step"}, + {"entitlements_cool_off_time"}, + {"entitlements_delay"}, + {"entitlements_key_archive_max_retry_time"}, + {"entitlements_key_archive_retry_step"}, + {"entitlementSystemOk"}, + {"extendedLoadoutsEnable"}, + {"extinction_cac_enabled"}, + {"extinction_hardcore_enabled"}, + {"extinction_intel_enabled"}, + {"extinction_map_selection_enabled"}, + {"extinction_tokens_enabled"}, + {"extinctionBonus_period"}, + {"facebook_active"}, + {"facebook_delay"}, + {"facebook_friends_active"}, + {"facebook_friends_max_retry_time"}, + {"facebook_friends_refresh_time"}, + {"facebook_friends_retry_step"}, + {"facebook_friends_showing_count"}, + {"facebook_friends_throttle_time"}, + {"facebook_max_retry_time"}, + {"facebook_password"}, + {"facebook_password_asterisk"}, + {"facebook_popup_text"}, + {"facebook_retry_step"}, + {"facebook_upload_photo_active"}, + {"facebook_upload_video_active"}, + {"facebook_username"}, + {"fixedtime"}, + {"FoFIconMaxSize"}, + {"FoFIconMinSize"}, + {"FoFIconScale"}, + {"FoFIconSpawnTimeDelay"}, + {"FoFIconSpawnTimeFade"}, + {"friendsCacheSteamFriends"}, + {"friendsMaxSteamLookupsPerFrame"}, + {"friendsWidgetMinimumRefreshTimer"}, + {"fs_basegame"}, + {"fs_basepath"}, + {"fs_basepath_output"}, + {"fs_cdpath"}, + {"fs_copyfiles"}, + {"fs_debug"}, + {"fs_game"}, + {"fs_homepath"}, + {"fs_ignoreLocalized"}, + {"fx_alphaThreshold"}, + {"fx_count"}, + {"fx_cull_elem_draw"}, + {"fx_cull_elem_spawn"}, + {"fx_debugBolt"}, + {"fx_deferelem"}, + {"fx_draw"}, + {"fx_draw_omniLight"}, + {"fx_draw_simd"}, + {"fx_draw_spotLight"}, + {"fx_drawClouds"}, + {"fx_enable"}, + {"fx_freeze"}, + {"fx_killEffectOnRewind"}, + {"fx_mark_profile"}, + {"fx_marks"}, + {"fx_marks_ents"}, + {"fx_marks_nearlimit"}, + {"fx_marks_smodels"}, + {"fx_maxNumApexFx"}, + {"fx_profile"}, + {"fx_profileFilter"}, + {"fx_profileFilterElemCountZero"}, + {"fx_profileSkip"}, + {"fx_profileSort"}, + {"fx_visMinTraceDist"}, + {"g_allowvote"}, + {"g_banIPs"}, + {"g_clonePlayerMaxVelocity"}, + {"g_deadChat"}, + {"g_dropForwardSpeed"}, + {"g_dropHorzSpeedRand"}, + {"g_dropUpSpeedBase"}, + {"g_dropUpSpeedRand"}, + {"g_earthquakeEnable"}, + {"g_enableElevators"}, + {"g_fogColorIntensityReadOnly"}, + {"g_fogColorReadOnly"}, + {"g_fogHalfDistReadOnly"}, + {"g_fogMaxOpacityReadOnly"}, + {"g_fogStartDistReadOnly"}, + {"g_friendlyfireDist"}, + {"g_friendlyNameDist"}, + {"g_gametype"}, + {"g_giveAll"}, + {"g_gravity"}, + {"g_hardcore"}, + {"g_inactivity"}, + {"g_keyboarduseholdtime"}, + {"g_knockback"}, + {"g_listEntity"}, + {"g_mantleBlockTimeBuffer"}, + {"g_maxDroppedWeapons"}, + {"g_minGrenadeDamageSpeed"}, + {"g_password"}, + {"g_playerCollision"}, + {"g_playerCollisionEjectSpeed"}, + {"g_playerEjection"}, + {"g_ScoresColor_Allies"}, + {"g_ScoresColor_Axis"}, + {"g_ScoresColor_EnemyTeam"}, + {"g_ScoresColor_Free"}, + {"g_ScoresColor_MyParty"}, + {"g_ScoresColor_MyTeam"}, + {"g_ScoresColor_Spectator"}, + {"g_scriptMainMenu"}, + {"g_speed"}, + {"g_sunFogBeginFadeAngleReadOnly"}, + {"g_sunFogColorIntensityReadOnly"}, + {"g_sunFogColorReadOnly"}, + {"g_sunFogDirReadOnly"}, + {"g_sunFogEnabledReadOnly"}, + {"g_sunFogEndFadeAngleReadOnly"}, + {"g_sunFogScaleReadOnly"}, + {"g_TeamIcon_Allies"}, + {"g_TeamIcon_Axis"}, + {"g_TeamIcon_EnemyAllies"}, + {"g_TeamIcon_EnemyAxis"}, + {"g_TeamIcon_Free"}, + {"g_TeamIcon_MyAllies"}, + {"g_TeamIcon_MyAxis"}, + {"g_TeamIcon_Spectator"}, + {"g_TeamName_Allies"}, + {"g_TeamName_Axis"}, + {"g_TeamTitleColor_EnemyTeam"}, + {"g_TeamTitleColor_MyTeam"}, + {"g_TeamTitleColor_Spectator"}, + {"g_useholdspawndelay"}, + {"g_useholdtime"}, + {"g_voiceChatTalkingDuration"}, + {"gamedate"}, + {"gamedvr_active"}, + {"gameMode"}, + {"gamename"}, + {"glass_angular_vel"}, + {"glass_break"}, + {"glass_crack_pattern_scale"}, + {"glass_damageToDestroy"}, + {"glass_damageToWeaken"}, + {"glass_edge_angle"}, + {"glass_fall_delay"}, + {"glass_fall_gravity"}, + {"glass_fall_ratio"}, + {"glass_fringe_maxcoverage"}, + {"glass_fringe_maxsize"}, + {"glass_fx_chance"}, + {"glass_hinge_friction"}, + {"glass_linear_vel"}, + {"glass_max_pieces_per_frame"}, + {"glass_max_shatter_fx_per_frame"}, + {"glass_meleeDamage"}, + {"glass_physics_chance"}, + {"glass_physics_maxdist"}, + {"glass_radiusDamageMultiplier"}, + {"glass_shard_maxsize"}, + {"glass_shattered_scale"}, + {"glass_trace_interval"}, + {"gpad_button_deadzone"}, + {"gpad_dpadDebounceTime"}, + {"gpad_menu_scroll_delay_first"}, + {"gpad_menu_scroll_delay_rest_accel"}, + {"gpad_menu_scroll_delay_rest_end"}, + {"gpad_menu_scroll_delay_rest_start"}, + {"gpad_stick_deadzone_max"}, + {"gpad_stick_deadzone_min"}, + {"gpad_stick_pressed"}, + {"gpad_stick_pressed_hysteresis"}, + {"groupDownloadInterval"}, + {"groupUploadInterval"}, + {"heli_barrelMaxVelocity"}, + {"heli_barrelRotation"}, + {"heli_barrelSlowdown"}, + {"hiDef"}, + {"hud_bloodOverlayLerpRate"}, + {"hud_deathQuoteFadeTime"}, + {"hud_drawHud"}, + {"hud_enable"}, + {"hud_fade_ammodisplay"}, + {"hud_fade_compass"}, + {"hud_fade_healthbar"}, + {"hud_fade_offhand"}, + {"hud_fade_sprint"}, + {"hud_flash_period_offhand"}, + {"hud_flash_time_offhand"}, + {"hud_health_pulserate_critical"}, + {"hud_health_pulserate_injured"}, + {"hud_health_startpulse_critical"}, + {"hud_health_startpulse_injured"}, + {"hudElemPausedBrightness"}, + {"igs_announcer"}, + {"igs_crossgame"}, + {"igs_fo"}, + {"igs_s1"}, + {"igs_shp"}, + {"igs_smappacks"}, + {"igs_sosp"}, + {"igs_sripper"}, + {"igs_sve"}, + {"igs_svp"}, + {"igs_svr"}, + {"igs_svs"}, + {"igs_swap"}, + {"igs_swp"}, + {"igs_td"}, + {"in_mouse"}, + {"intro"}, + {"iotd_active"}, + {"iotd_retry"}, + {"isMatchMakingGame"}, + {"jump_enableFallDamage"}, + {"jump_height"}, + {"jump_ladderPushVel"}, + {"jump_slowDownEnable"}, + {"jump_stepSize"}, + {"laserDebug"}, + {"laserEndOffset"}, + {"laserFlarePct"}, + {"laserFlarePct_alt"}, + {"laserLight"}, + {"laserLightBeginOffset"}, + {"laserLightBodyTweak"}, + {"laserLightEndOffset"}, + {"laserLightRadius"}, + {"laserLightRadius_alt"}, + {"laserLightWithoutNightvision"}, + {"laserRadius"}, + {"laserRadius_alt"}, + {"laserRange"}, + {"laserRange_alt"}, + {"laserRangePlayer"}, + {"lb_filter"}, + {"lb_maxrows"}, + {"lb_minrefresh"}, + {"lb_readDelay"}, + {"lb_throttle_time"}, + {"lb_times_in_window"}, + {"lb_window"}, + {"live_displayLogOnErrorReason"}, + {"live_qosec_firstupdatems"}, + {"live_qosec_lastupdatems"}, + {"live_qosec_maxtime"}, + {"live_qosec_minpercent"}, + {"live_qosec_minprobes"}, + {"livestreaming_active"}, + {"loading_sre_fatal"}, + {"lobby_animationSpeed"}, + {"lobby_animationTilesHigh"}, + {"lobby_animationTilesWide"}, + {"lobby_numAnimationFrames"}, + {"lobby_searchingPartyColor"}, + {"loc_language"}, + {"loc_translate"}, + {"log_host_migration_chance"}, + {"log_mapvote_chance"}, + {"log_party_state"}, + {"log_teambalance_chance"}, + {"logger_dev"}, + {"lowAmmoWarningColor1"}, + {"lowAmmoWarningColor2"}, + {"lowAmmoWarningNoAmmoColor1"}, + {"lowAmmoWarningNoAmmoColor2"}, + {"lowAmmoWarningNoReloadColor1"}, + {"lowAmmoWarningNoReloadColor2"}, + {"lowAmmoWarningPulseFreq"}, + {"lowAmmoWarningPulseMax"}, + {"lowAmmoWarningPulseMin"}, + {"lsp_enumertion_max_retry_time"}, + {"lsp_enumertion_retry_step"}, + {"lui_FFotDSupportEnabled"}, + {"LUI_MemErrorsFatal"}, + {"lui_menuFlowEnabled"}, + {"lui_splitscreensignin_menu"}, + {"lui_splitscreenupscaling"}, + {"lui_systemlink_menu"}, + {"LUI_WorkerCmdGC"}, + {"lui_xboxlive_menu"}, + {"m_filter"}, + {"m_forward"}, + {"m_pitch"}, + {"m_side"}, + {"m_yaw"}, + {"mapname"}, + {"mapPackMPGroupFourFlags"}, + {"mapPackMPGroupFreeFlags"}, + {"mapPackMPGroupOneFlags"}, + {"mapPackMPGroupThreeFlags"}, + {"mapPackMPGroupTwoFlags"}, + {"mapvote_logging"}, + {"match_making_telemetry_chance"}, + {"matchdata_active"}, + {"matchdata_maxcompressionbuffer"}, + {"matchmaking_debug"}, + {"max_xp_per_match"}, + {"maxVoicePacketsPerSec"}, + {"maxVoicePacketsPerSecForServer"}, + {"mdsd"}, + {"melee_debug"}, + {"migration_dvarErrors"}, + {"min_wait_for_players"}, + {"missileRemoteFOV"}, + {"missileRemoteSteerPitchRange"}, + {"missileRemoteSteerPitchRate"}, + {"missileRemoteSteerYawRate"}, + {"mm_country_code"}, + {"mm_skill_calculation_type"}, + {"mm_skill_enforcement"}, + {"mm_skill_lower_bucket"}, + {"mm_skill_strict_enforcement"}, + {"mm_skill_type"}, + {"mm_skill_upper_bucket"}, + {"mm_sph_1"}, + {"mm_sph_10"}, + {"mm_sph_11"}, + {"mm_sph_12"}, + {"mm_sph_13"}, + {"mm_sph_14"}, + {"mm_sph_15"}, + {"mm_sph_16"}, + {"mm_sph_17"}, + {"mm_sph_18"}, + {"mm_sph_2"}, + {"mm_sph_3"}, + {"mm_sph_4"}, + {"mm_sph_5"}, + {"mm_sph_6"}, + {"mm_sph_7"}, + {"mm_sph_8"}, + {"mm_sph_9"}, + {"mm_split_population"}, + {"mm_test_type"}, + {"monkeytoy"}, + {"motd"}, + {"motd_store_link"}, + {"motionTrackerBlurDuration"}, + {"motionTrackerCenterX"}, + {"motionTrackerCenterY"}, + {"motionTrackerPingFadeTime"}, + {"motionTrackerPingPitchAddPerEnemy"}, + {"motionTrackerPingPitchBase"}, + {"motionTrackerPingPitchNearby"}, + {"motionTrackerPingSize"}, + {"name"}, + {"net_authPort"}, + {"net_ip"}, + {"net_masterServerPort"}, + {"net_noudp"}, + {"net_port"}, + {"net_socksEnabled"}, + {"net_socksPassword"}, + {"net_socksPort"}, + {"net_socksServer"}, + {"net_socksUsername"}, + {"netinfo_logging"}, + {"nextmap"}, + {"nightVisionDisableEffects"}, + {"nightVisionFadeInOutTime"}, + {"nightVisionPowerOnTime"}, + {"num_available_map_packs"}, + {"objectiveFontSize"}, + {"objectiveTextOffsetY"}, + {"onlinegame"}, + {"overrideNVGModelWithKnife"}, + {"overtimeTimeLimit"}, + {"p2pAuth_allow_kick"}, + {"p2pAuth_allow_steam_p2p"}, + {"p2pAuth_disable"}, + {"painVisionLerpOutRate"}, + {"painVisionTriggerHealth"}, + {"party_aliensUseDedicatedServer"}, + {"party_alternateMapVoteStatus"}, + {"party_dlc_only_intended_mappacks"}, + {"party_firstSubpartyIndex"}, + {"party_followPartyHostOutOfGames"}, + {"party_gamesize"}, + {"party_gametype"}, + {"party_inactiveHeartbeatPeriod"}, + {"party_initial_dlc_search_timer"}, + {"party_IsLocalClientSelected"}, + {"party_joinInProgressPingBias"}, + {"party_kickplayerquestion"}, + {"party_listFocus"}, + {"party_lobbyPlayerCount"}, + {"party_mapname"}, + {"party_mapvote_entrya_mapname"}, + {"party_mapvote_entryb_mapname"}, + {"party_matchedPlayerCount"}, + {"party_maxplayers"}, + {"party_maxPrivatePartyPlayers"}, + {"party_maxTeamDiff"}, + {"party_membersMissingMapPack"}, + {"party_minLobbyTime"}, + {"party_minplayers"}, + {"party_nextMapVoteStatus"}, + {"party_oneSlotOpenPingBias"}, + {"party_over25FullPingBias"}, + {"party_over50FullPingBias"}, + {"party_over75FullPingBias"}, + {"party_partyPlayerCount"}, + {"party_partyPlayerCountNum"}, + {"party_playervisible"}, + {"party_resume_dlc_search_timer"}, + {"party_search_for_dlc_content"}, + {"party_selectedIndex"}, + {"party_selectedIndexChangedTime"}, + {"party_statusString"}, + {"party_teambased"}, + {"party_teamsVisible"}, + {"party_timer"}, + {"partyChatDisallowed"}, + {"partymigrate_broadcast_interval"}, + {"partymigrate_cpuBonusPing"}, + {"partymigrate_cpuBonusThreshold"}, + {"partymigrate_logResults"}, + {"partymigrate_makeHostTimeout"}, + {"partymigrate_pingtest_active"}, + {"partymigrate_pingtest_filterThreshold"}, + {"partymigrate_pingtest_minThreshold"}, + {"partymigrate_pingtest_retry"}, + {"partymigrate_pingtest_timeout"}, + {"partymigrate_preferSameHost"}, + {"partymigrate_selectiontime"}, + {"partymigrate_timeout"}, + {"partymigrate_timeoutmax"}, + {"partymigrate_uploadtest_minThreshold"}, + {"password"}, + {"past_title_data_active"}, + {"past_title_data_read_failure_interval_hours"}, + {"past_title_data_read_success_interval_hours"}, + {"perk_armorPiercingDamage"}, + {"perk_blastShieldClampHP"}, + {"perk_blastShieldClampHP_HC"}, + {"perk_blastShieldScale"}, + {"perk_blastShieldScale_HC"}, + {"perk_bulletPenetrationMultiplier"}, + {"perk_extendedMagsMGAmmo"}, + {"perk_extendedMagsPistolAmmo"}, + {"perk_extendedMagsRifleAmmo"}, + {"perk_extendedMagsSMGAmmo"}, + {"perk_extendedMagsSpreadAmmo"}, + {"perk_extraBreath"}, + {"perk_fastRegenRate"}, + {"perk_fastRegenWaitMS"}, + {"perk_fastSnipeScale"}, + {"perk_footstepVolumeAlly"}, + {"perk_footstepVolumeEnemy"}, + {"perk_footstepVolumePlayer"}, + {"perk_footstepVolumeSelectiveHearingMin"}, + {"perk_grenadeDeath"}, + {"perk_improvedExtraBreath"}, + {"perk_lightWeightViewBobScale"}, + {"perk_parabolicAngle"}, + {"perk_parabolicIcon"}, + {"perk_parabolicRadius"}, + {"perk_quickDrawSpeedScale"}, + {"perk_quickDrawSpeedScaleSniper"}, + {"perk_scavengerMode"}, + {"perk_sprintMultiplier"}, + {"perk_sprintRecoveryMultiplierActual"}, + {"perk_sprintRecoveryMultiplierVisual"}, + {"perk_weapRateMultiplier"}, + {"perk_weapReloadMultiplier"}, + {"perk_weapSpreadMultiplier"}, + {"phys_autoDisableAngular"}, + {"phys_autoDisableFastAngular"}, + {"phys_autoDisableFastLinear"}, + {"phys_autoDisableFastTime"}, + {"phys_autoDisableLinear"}, + {"phys_autoDisableTime"}, + {"phys_bulletSpinScale"}, + {"phys_bulletUpBias"}, + {"phys_cfm"}, + {"phys_collUseEntities"}, + {"phys_contact_cfm"}, + {"phys_contact_cfm_ragdoll"}, + {"phys_contact_cfm_vehicle"}, + {"phys_contact_cfm_vehicleSoft"}, + {"phys_contact_erp"}, + {"phys_contact_erp_ragdoll"}, + {"phys_contact_erp_vehicle"}, + {"phys_contact_erp_vehicleSoft"}, + {"phys_csl"}, + {"phys_dragAngular"}, + {"phys_dragLinear"}, + {"phys_erp"}, + {"phys_frictionScale"}, + {"phys_gravity"}, + {"phys_gravity_ragdoll"}, + {"phys_gravityChangeWakeupRadius"}, + {"phys_jitterMaxMass"}, + {"phys_joint_cfm"}, + {"phys_joint_stop_cfm"}, + {"phys_joint_stop_erp"}, + {"phys_jointPullThreshold"}, + {"phys_mcv"}, + {"phys_mcv_ragdoll"}, + {"phys_mcv_vehicle"}, + {"phys_noIslands"}, + {"phys_qsi"}, + {"phys_reorderConst"}, + {"physVeh_collideWithClipOnly"}, + {"physVeh_explodeForce"}, + {"physVeh_explodeSpinScale"}, + {"physVeh_jump"}, + {"physVeh_minImpactMomentum"}, + {"physVeh_pathConstraintCfm"}, + {"physVeh_pathConstraintErp"}, + {"physVeh_slideReductionForHighSpeed"}, + {"physVeh_StepsPerFrame"}, + {"pickupPrints"}, + {"player_breath_snd_delay"}, + {"player_breath_snd_lerp"}, + {"player_current_floor"}, + {"player_MGUseRadius"}, + {"player_stunWhiteFlash"}, + {"player_throwbackInnerRadius"}, + {"player_throwbackOuterRadius"}, + {"player_useRadius"}, + {"playercard_cache_download_max_retry_time"}, + {"playercard_cache_download_retry_step"}, + {"playercard_cache_upload_max_retry_time"}, + {"playercard_cache_upload_retry_step"}, + {"playercard_cache_validity_life"}, + {"playerPositionRecordSampleTime"}, + {"playlist"}, + {"playlistAggrFilename"}, + {"playlistFilename"}, + {"playListUpdateCheckMinutes"}, + {"pm_bouncing"}, + {"pm_bouncingAllAngles"}, + {"pm_gamesetup_mode_altmodes"}, + {"pm_gamesetup_mode_altmodes_dropzone"}, + {"pm_gamesetup_mode_altmodes_gungame"}, + {"pm_gamesetup_mode_altmodes_infected"}, + {"pm_gamesetup_mode_altmodes_jug"}, + {"pm_gamesetup_mode_altmodes_mugger"}, + {"pm_gamesetup_mode_altmodes_oneinthechamber"}, + {"pm_gamesetup_mode_altmodes_teamjug"}, + {"pm_gamesetup_options_createdefaultclass"}, + {"pm_gamesetup_options_customclassrestrictions"}, + {"prestige_shop_active"}, + {"privateMatch_joinPassword"}, + {"privateMatch_serverPassword"}, + {"profileMenuOption_blacklevel"}, + {"profileMenuOption_offensiveContentMode"}, + {"profileMenuOption_safeAreaHorz"}, + {"profileMenuOption_safeAreaVert"}, + {"profileMenuOption_sensitivity"}, + {"profileMenuOption_volume"}, + {"protocol"}, + {"pt_AliensReadyUpPrivateInUse"}, + {"pt_AliensReadyUpPublicInUse"}, + {"pt_AliensReadyUpPublicStartTimerLength"}, + {"pt_allMembersDoQoS"}, + {"pt_allMembersDoQoSTimeout"}, + {"pt_backoutOnClientPresence"}, + {"pt_connectAttempts"}, + {"pt_connectTimeout"}, + {"pt_currentSearchTier"}, + {"pt_defaultSearchTier"}, + {"pt_gameStartTimerLength"}, + {"pt_logHostSelectionChance"}, + {"pt_maxSearchTier"}, + {"pt_memberTimeout"}, + {"pt_migrateBeforeAdvertise"}, + {"pt_migrationBandwidthBonusPing"}, + {"pt_migrationBandwidthBonusThreshold"}, + {"pt_migrationCPUWeight"}, + {"pt_migrationNotInstalledWeight"}, + {"pt_migrationPingBad"}, + {"pt_migrationPingWeight"}, + {"pt_migrationQuitsBad"}, + {"pt_migrationQuitsWeight"}, + {"pt_migrationRAMWeight"}, + {"pt_migrationThreshold"}, + {"pt_migrationUploadBad"}, + {"pt_migrationUploadWeight"}, + {"pt_migrationWifiPenalty"}, + {"pt_msPerTier"}, + {"pt_percentUnacceptableQoS"}, + {"pt_pregameStartTimerLength"}, + {"pt_rejoin"}, + {"pt_reservedAnonymousSlotTime"}, + {"pt_reservedCommittedSlotTime"}, + {"pt_reservedJoiningSlotTime"}, + {"pt_searchConnectAttempts"}, + {"pt_searchPauseTime"}, + {"pt_searchRandomDelay"}, + {"pt_searchResultsLifetime"}, + {"pt_searchResultsMin"}, + {"pt_startAllowingUnacceptableQos"}, + {"pt_stillConnectingWaitTime"}, + {"pt_useHostPingForDesirability"}, + {"pt_useMigrationWeights"}, + {"r_aaMode"}, + {"r_adaptiveSubdiv"}, + {"r_adaptiveSubdivBaseFactor"}, + {"r_adaptiveSubdivPatchFactor"}, + {"r_altModelLightingUpdate"}, + {"r_amdGPU"}, + {"r_amdGPUVideoMemoryScale"}, + {"r_apex_turbulence"}, + {"r_apexTurbulence_LOD_MaxDist"}, + {"r_apexTurbulence_LOD_MinDist"}, + {"r_apexTurbulence_LOD_MinPercent"}, + {"r_artUseTweaks"}, + {"r_aspectRatio"}, + {"r_aspectRatioCustom"}, + {"r_asyncCompute"}, + {"r_atlasAnimFPS"}, + {"r_autopriority"}, + {"r_blacklevel"}, + {"r_blur"}, + {"r_brightness"}, + {"r_cacheModelLighting"}, + {"r_cacheSModelLighting"}, + {"r_cc_contrastPow1"}, + {"r_cc_contrastPow2"}, + {"r_cc_contrastScale1"}, + {"r_cc_contrastScale2"}, + {"r_cc_desaturation1"}, + {"r_cc_desaturation2"}, + {"r_cc_lerp1"}, + {"r_cc_lerp2"}, + {"r_cc_mode"}, + {"r_cc_toneBias1"}, + {"r_cc_toneBias2"}, + {"r_charLightAmbient"}, + {"r_charLightAmbient_NG"}, + {"r_clampLodScale"}, + {"r_clear"}, + {"r_clearColor"}, + {"r_clearColor2"}, + {"r_cmdbuf_worker"}, + {"r_colorGradingEnable"}, + {"r_colorMap"}, + {"r_combinePostOpaqueFx"}, + {"r_contrast"}, + {"r_debugLineWidth"}, + {"r_defaultPatchCount"}, + {"r_depthPrepass"}, + {"r_desaturation"}, + {"r_detailMap"}, + {"r_diffuseColorScale"}, + {"r_displacementMap"}, + {"r_displacementPatchCount"}, + {"r_displayMaxHeight"}, + {"r_displayMaxWidth"}, + {"r_displayMode"}, + {"r_displayRefresh"}, + {"r_distortion"}, + {"r_dlightLimit"}, + {"r_dof_bias"}, + {"r_dof_enable"}, + {"r_dof_farBlur"}, + {"r_dof_farEnd"}, + {"r_dof_farStart"}, + {"r_dof_hq"}, + {"r_dof_nearBlur"}, + {"r_dof_nearEnd"}, + {"r_dof_nearStart"}, + {"r_dof_tweak"}, + {"r_dof_viewModelEnd"}, + {"r_dof_viewModelStart"}, + {"r_drawSun"}, + {"r_drawWater"}, + {"r_elevatedPriority"}, + {"r_envMapExponent"}, + {"r_envMapMaxIntensity"}, + {"r_envMapMinIntensity"}, + {"r_envMapOverride"}, + {"r_envMapSunIntensity"}, + {"r_fastModelPrimaryLightCheck"}, + {"r_fastModelPrimaryLightLink"}, + {"r_filmAltShader"}, + {"r_filmTweakBrightness"}, + {"r_filmTweakContrast"}, + {"r_filmTweakDarkTint"}, + {"r_filmTweakDesaturation"}, + {"r_filmTweakDesaturationDark"}, + {"r_filmTweakEnable"}, + {"r_filmTweakInvert"}, + {"r_filmTweakLightTint"}, + {"r_filmTweakMediumTint"}, + {"r_filmUseTweaks"}, + {"r_flushAfterExecute"}, + {"r_fog"}, + {"r_fog_depthhack_scale"}, + {"r_forceLetterbox4x3"}, + {"r_forceLod"}, + {"r_fullbright"}, + {"r_fur_shader"}, + {"r_fxaaSubpixel"}, + {"r_FXAverageColorFunc"}, + {"r_glare_amountMin"}, + {"r_glare_enable"}, + {"r_glare_mergeWithBloom"}, + {"r_glare_mirrorAmount"}, + {"r_glare_mirrorEnd"}, + {"r_glare_mirrorPower"}, + {"r_glare_mirrorStart"}, + {"r_glare_normalAmount"}, + {"r_glare_normalEnd"}, + {"r_glare_normalPower"}, + {"r_glare_normalStart"}, + {"r_glare_useTweaks"}, + {"r_globalGenericMaterialScale"}, + {"r_glow_allowed"}, + {"r_glow_allowed_script_forced"}, + {"r_hbaoBias"}, + {"r_hbaoBlurEnable"}, + {"r_hbaoBlurSharpness"}, + {"r_hbaoCoarseAO"}, + {"r_hbaoDebug"}, + {"r_hbaoDetailAO"}, + {"r_hbaoPowerExponent"}, + {"r_hbaoRadius"}, + {"r_hbaoSceneScale"}, + {"r_hbaoStrengthBlend"}, + {"r_hbaoStrengthFixed"}, + {"r_hbaoStrengthScale"}, + {"r_hbaoUseScriptScale"}, + {"r_hdrColorizationBeforeEmissive"}, + {"r_hdrSkyColorTint"}, + {"r_hdrSkyIntensity"}, + {"r_hdrSkyIntensityUseTweaks"}, + {"r_heroLighting"}, + {"r_highLodDist"}, + {"r_hudOutlineAlpha0"}, + {"r_hudOutlineAlpha1"}, + {"r_hudOutlineCurvyBlurRadius"}, + {"r_hudOutlineCurvyDarkenScale"}, + {"r_hudOutlineCurvyDepth"}, + {"r_hudOutlineCurvyLumScale"}, + {"r_hudOutlineCurvyWhen"}, + {"r_hudOutlineCurvyWidth"}, + {"r_hudOutlineEnable"}, + {"r_hudOutlineHaloBlurRadius"}, + {"r_hudOutlineHaloDarkenScale"}, + {"r_hudOutlineHaloLumScale"}, + {"r_hudOutlineHaloWhen"}, + {"r_hudOutlinePostMode"}, + {"r_hudOutlineWhen"}, + {"r_hudOutlineWidth"}, + {"r_ignore"}, + {"r_ignoref"}, + {"r_imageQuality"}, + {"r_lateAllocParamCacheAllowed"}, + {"r_lateAllocParamCacheDefault"}, + {"r_lateAllocParamCacheDisplacement"}, + {"r_lateAllocParamCacheSubdiv"}, + {"r_letterbox4x3"}, + {"r_lightCacheLessFrequentMaxDistance"}, + {"r_lightCacheLessFrequentPeriod"}, + {"r_lightGridContrast"}, + {"r_lightGridEnableTweaks"}, + {"r_lightGridIntensity"}, + {"r_lightGridSHBands"}, + {"r_lightGridUseTweakedValues"}, + {"r_lightMap"}, + {"r_litSurfaceHDRScalar"}, + {"r_loadForRenderer"}, + {"r_lockPvs"}, + {"r_lod4Dist"}, + {"r_lod5Dist"}, + {"r_lodBiasRigid"}, + {"r_lodBiasSkinned"}, + {"r_lodScaleRigid"}, + {"r_lodScaleSkinned"}, + {"r_lowestLodDist"}, + {"r_lowLodDist"}, + {"r_materialBloomDesaturation"}, + {"r_materialBloomHQDesaturation"}, + {"r_materialBloomHQEnable"}, + {"r_materialBloomHQFalloffScale1"}, + {"r_materialBloomHQFalloffScale2"}, + {"r_materialBloomHQFalloffWeight1"}, + {"r_materialBloomHQFalloffWeight2"}, + {"r_materialBloomHQGamma"}, + {"r_materialBloomHQHaziness"}, + {"r_materialBloomHQRadius"}, + {"r_materialBloomHQScriptMasterEnable"}, + {"r_materialBloomHQSensitivity"}, + {"r_materialBloomIntensity"}, + {"r_materialBloomLuminanceCutoff"}, + {"r_materialBloomPinch"}, + {"r_materialBloomRadius"}, + {"r_materialBloomUseTweaks"}, + {"r_mbCameraRotationInfluence"}, + {"r_mbCameraTranslationInfluence"}, + {"r_mbEnable"}, + {"r_mbEnableA"}, + {"r_mbFastEnable"}, + {"r_mbFastEnableA"}, + {"r_mbFastPreset"}, + {"r_mbModelVelocityScalar"}, + {"r_mbPostfxMaxNumSamples"}, + {"r_mbStaticVelocityScalar"}, + {"r_mbViewModelEnable"}, + {"r_mbViewModelVelocityScalar"}, + {"r_mediumLodDist"}, + {"r_mode"}, + {"r_monitor"}, + {"r_msaaEnable"}, + {"r_msaaResolveMode"}, + {"r_multiGPU"}, + {"r_normalMap"}, + {"r_nvidiaGPU"}, + {"r_nvidiaGPUCount"}, + {"r_offchipTessellationAllowed"}, + {"r_offchipTessellationTfThreshold"}, + {"r_offchipTessellationWaveThreshold"}, + {"r_omitUnusedRenderTargets"}, + {"r_outdoor"}, + {"r_outdoorFeather"}, + {"r_patchCountAllowed"}, + {"r_picmip"}, + {"r_picmip_bump"}, + {"r_picmip_manual"}, + {"r_picmip_spec"}, + {"r_picmip_water"}, + {"r_polygonOffsetBias"}, + {"r_polygonOffsetClamp"}, + {"r_polygonOffsetScale"}, + {"r_portalBevels"}, + {"r_portalBevelsOnly"}, + {"r_portalMinClipArea"}, + {"r_portalMinRecurseDepth"}, + {"r_portalWalkLimit"}, + {"r_postAA"}, + {"r_postfxMacroclutEnable"}, + {"r_postfxMacroclutWorker"}, + {"r_predatorAllyBrightness"}, + {"r_predatorAllyContrast"}, + {"r_predatorAllyHueRot"}, + {"r_predatorAllyOutputColorBias"}, + {"r_predatorAllyOutputColorScale"}, + {"r_predatorAllyPostBrightness"}, + {"r_predatorAllyPostContrast"}, + {"r_predatorAllyPosterHardness"}, + {"r_predatorAllySaturation"}, + {"r_predatorColdBrightness"}, + {"r_predatorColdContrast"}, + {"r_predatorColdCycleFreq"}, + {"r_predatorColdCycleMax"}, + {"r_predatorColdCycleMin"}, + {"r_predatorColdCyclePhase"}, + {"r_predatorColdHueRot"}, + {"r_predatorColdOutputColorBias"}, + {"r_predatorColdOutputColorScale"}, + {"r_predatorColdPostBrightness"}, + {"r_predatorColdPostContrast"}, + {"r_predatorColdPosterBias"}, + {"r_predatorColdPosterBiasSpeed"}, + {"r_predatorColdPosterColorCount"}, + {"r_predatorColdPosterHardness"}, + {"r_predatorColdSaturation"}, + {"r_predatorDisable"}, + {"r_predatorEnemyBrightness"}, + {"r_predatorEnemyContrast"}, + {"r_predatorEnemyHueRot"}, + {"r_predatorEnemyOutputColorBias"}, + {"r_predatorEnemyOutputColorScale"}, + {"r_predatorEnemyPostBrightness"}, + {"r_predatorEnemyPostContrast"}, + {"r_predatorEnemyPosterHardness"}, + {"r_predatorEnemySaturation"}, + {"r_predatorForce"}, + {"r_predatorHotCycleFreq"}, + {"r_predatorHotCycleMax"}, + {"r_predatorHotCycleMin"}, + {"r_predatorHotCyclePhase"}, + {"r_predatorHotPosterBias"}, + {"r_predatorHotPosterBiasSpeed"}, + {"r_predatorHotPosterColorCount"}, + {"r_preloadShaders"}, + {"r_primaryLightTweakDiffuseStrength"}, + {"r_primaryLightTweakDiffuseStrength_NG"}, + {"r_primaryLightTweakSpecularStrength"}, + {"r_primaryLightTweakSpecularStrength_NG"}, + {"r_primaryLightUseTweaks"}, + {"r_primaryLightUseTweaks_NG"}, + {"r_reactiveMotionActorRadius"}, + {"r_reactiveMotionActorVelocityMax"}, + {"r_reactiveMotionEffectorStrengthScale"}, + {"r_reactiveMotionHelicopterLimit"}, + {"r_reactiveMotionHelicopterRadius"}, + {"r_reactiveMotionHelicopterStrength"}, + {"r_reactiveMotionPlayerHeightAdjust"}, + {"r_reactiveMotionPlayerRadius"}, + {"r_reactiveMotionVelocityTailScale"}, + {"r_reactiveMotionWindAmplitudeScale"}, + {"r_reactiveMotionWindAreaScale"}, + {"r_reactiveMotionWindDir"}, + {"r_reactiveMotionWindFrequencyScale"}, + {"r_reactiveMotionWindStrength"}, + {"r_reactiveTurbulenceEnable"}, + {"r_reactiveTurbulenceVelocityClamp"}, + {"r_rendererInUse"}, + {"r_rimLight0Color"}, + {"r_rimLight0Heading"}, + {"r_rimLight0Pitch"}, + {"r_rimLightBias"}, + {"r_rimLightDiffuseIntensity"}, + {"r_rimLightPower"}, + {"r_rimLightSpecIntensity"}, + {"r_rimLightUseTweaks"}, + {"r_scaleViewport"}, + {"r_showBlurScene"}, + {"r_showBlurSceneScissor"}, + {"r_showCharacterSceneTexture"}, + {"r_showLightGrid"}, + {"r_showMissingLightGrid"}, + {"r_showModelLightingLowWaterMark"}, + {"r_showPIPTexture"}, + {"r_showPortals"}, + {"r_showPortalsOverview"}, + {"r_showReflectionProbeSelection"}, + {"r_singleCell"}, + {"r_SkinnedCacheSize"}, + {"r_SkinnedCacheThreshold"}, + {"r_skipPvs"}, + {"r_sky_fog_intensity"}, + {"r_sky_fog_max_angle"}, + {"r_sky_fog_min_angle"}, + {"r_skyFogUseTweaks"}, + {"r_smaaThreshold"}, + {"r_smodelInstancedRenderer"}, + {"r_smodelInstancedThreshold"}, + {"r_smp_backend"}, + {"r_smp_worker"}, + {"r_smp_worker_thread0"}, + {"r_smp_worker_thread1"}, + {"r_smp_worker_thread2"}, + {"r_smp_worker_thread3"}, + {"r_smp_worker_thread4"}, + {"r_smp_worker_thread5"}, + {"r_smp_worker_thread6"}, + {"r_smp_worker_thread7"}, + {"r_specularColorScale"}, + {"r_specularMap"}, + {"r_spotLightEntityShadows"}, + {"r_spotLightShadows"}, + {"r_ssao"}, + {"r_ssaoBlurSharpness"}, + {"r_ssaoBlurStep"}, + {"r_ssaoDepthScale"}, + {"r_ssaoDepthScaleViewModel"}, + {"r_ssaoDiminish"}, + {"r_ssaoFadeDepth"}, + {"r_ssaoGapFalloff"}, + {"r_ssaoGradientFalloff"}, + {"r_ssaoMinPixelWidth"}, + {"r_ssaoPower"}, + {"r_ssaoRejectDepth"}, + {"r_ssaoScriptScale"}, + {"r_ssaoStrength"}, + {"r_ssaoUseScriptScale"}, + {"r_ssaoUseTweaks"}, + {"r_ssaoWidth"}, + {"r_sse_skinning"}, + {"r_ssrFadeInDuration"}, + {"r_ssrPositionCorrection"}, + {"r_subdiv"}, + {"r_subdivLimit"}, + {"r_subdivPatchCount"}, + {"r_subdomainLimit"}, + {"r_subdomainScale"}, + {"r_subwindow"}, + {"r_sun_from_dvars"}, + {"r_sun_fx_position"}, + {"r_sunblind_fadein"}, + {"r_sunblind_fadeout"}, + {"r_sunblind_max_angle"}, + {"r_sunblind_max_darken"}, + {"r_sunblind_min_angle"}, + {"r_sunflare_fadein"}, + {"r_sunflare_fadeout"}, + {"r_sunflare_max_alpha"}, + {"r_sunflare_max_angle"}, + {"r_sunflare_max_size"}, + {"r_sunflare_min_angle"}, + {"r_sunflare_min_size"}, + {"r_sunflare_shader"}, + {"r_sunglare_fadein"}, + {"r_sunglare_fadeout"}, + {"r_sunglare_max_angle"}, + {"r_sunglare_max_lighten"}, + {"r_sunglare_min_angle"}, + {"r_sunshadowmap_cmdbuf_worker"}, + {"r_sunsprite_shader"}, + {"r_sunsprite_size"}, + {"r_surfaceHDRScalarUseTweaks"}, + {"r_tessellation"}, + {"r_tessellationCutoffDistance"}, + {"r_tessellationCutoffDistanceBase"}, + {"r_tessellationCutoffFalloff"}, + {"r_tessellationCutoffFalloffBase"}, + {"r_tessellationEyeScale"}, + {"r_tessellationFactor"}, + {"r_tessellationHeightAuto"}, + {"r_tessellationHeightScale"}, + {"r_tessellationHybrid"}, + {"r_tessellationLodBias"}, + {"r_texFilterAnisoMax"}, + {"r_texFilterAnisoMin"}, + {"r_texFilterDisable"}, + {"r_texFilterMipBias"}, + {"r_texFilterMipMode"}, + {"r_texFilterProbeBilinear"}, + {"r_texShowMipMode"}, + {"r_thermalColorOffset"}, + {"r_thermalColorScale"}, + {"r_thermalDetailScale"}, + {"r_thermalFadeColor"}, + {"r_thermalFadeControl"}, + {"r_thermalFadeMax"}, + {"r_thermalFadeMin"}, + {"r_txaa"}, + {"r_txaaDebug"}, + {"r_txaaDepthRange"}, + {"r_txaaLimitPixels1"}, + {"r_txaaLimitPixels2"}, + {"r_umbra"}, + {"r_umbraAccurateOcclusionThreshold"}, + {"r_umbraDistanceReference"}, + {"r_umbraExclusive"}, + {"r_umbraQueryParts"}, + {"r_umbraShadowCasters"}, + {"r_umbraUseDpvsCullDist"}, + {"r_unlitSurfaceHDRScalar"}, + {"r_useComputeSkinning"}, + {"r_useLayeredMaterials"}, + {"r_usePrebuiltSpotShadow"}, + {"r_usePrebuiltSunShadow"}, + {"r_useShadowGeomOpt"}, + {"r_vc_makelog"}, + {"r_vc_showlog"}, + {"r_viewModelLightAmbient"}, + {"r_viewModelLightAmbient_NG"}, + {"r_viewModelPrimaryLightTweakDiffuseStrength"}, + {"r_viewModelPrimaryLightTweakDiffuseStrength_NG"}, + {"r_viewModelPrimaryLightTweakSpecularStrength"}, + {"r_viewModelPrimaryLightTweakSpecularStrength_NG"}, + {"r_viewModelPrimaryLightUseTweaks"}, + {"r_viewModelPrimaryLightUseTweaks_NG"}, + {"r_volumeLightScatter"}, + {"r_volumeLightScatterAngularAtten"}, + {"r_volumeLightScatterBackgroundDistance"}, + {"r_volumeLightScatterColor"}, + {"r_volumeLightScatterDepthAttenFar"}, + {"r_volumeLightScatterDepthAttenNear"}, + {"r_volumeLightScatterLinearAtten"}, + {"r_volumeLightScatterQuadraticAtten"}, + {"r_volumeLightScatterUseTweaks"}, + {"r_vsync"}, + {"r_warningRepeatDelay"}, + {"r_zfar"}, + {"r_znear"}, + {"radarjamDistMax"}, + {"radarjamDistMin"}, + {"radarjamSinCurve"}, + {"radius_damage_debug"}, + {"ragdoll_baselerp_time"}, + {"ragdoll_bullet_force"}, + {"ragdoll_bullet_upbias"}, + {"ragdoll_debug"}, + {"ragdoll_debug_axisid"}, + {"ragdoll_debug_bodyid"}, + {"ragdoll_debug_boneid"}, + {"ragdoll_debug_jointid"}, + {"ragdoll_dump_anims"}, + {"ragdoll_enable"}, + {"ragdoll_explode_force"}, + {"ragdoll_explode_upbias"}, + {"ragdoll_exploding_bullet_force"}, + {"ragdoll_exploding_bullet_upbias"}, + {"ragdoll_fps"}, + {"ragdoll_idle_min_velsq"}, + {"ragdoll_jitter_scale"}, + {"ragdoll_jointlerp_time"}, + {"ragdoll_max_life"}, + {"ragdoll_max_simulating"}, + {"ragdoll_max_stretch_pct"}, + {"ragdoll_mp_limit"}, + {"ragdoll_mp_resume_share_after_killcam"}, + {"ragdoll_rotvel_scale"}, + {"ragdoll_self_collision_scale"}, + {"ragdoll_stretch_iters"}, + {"rate"}, + {"rcon_password"}, + {"relay_backoffTime"}, + {"relay_disconnectOnFailedRetries"}, + {"relay_handshakeWindow"}, + {"relay_isEnabled"}, + {"relay_sendRetryAttempts"}, + {"relay_sendThrottle"}, + {"relay_timeout"}, + {"RemoteCameraSounds_DryLevel"}, + {"RemoteCameraSounds_RoomType"}, + {"RemoteCameraSounds_WetLevel"}, + {"requireOpenNat"}, + {"reset_mm_data"}, + {"restrictMapPacksToGroups"}, + {"safeArea_adjusted_horizontal"}, + {"safeArea_adjusted_vertical"}, + {"safeArea_horizontal"}, + {"safeArea_vertical"}, + {"scr_aliens_casual"}, + {"scr_aliens_hardcore"}, + {"scr_aliens_infinite"}, + {"scr_aliens_maxagents"}, + {"scr_aliens_numlives"}, + {"scr_aliens_playerrespawndelay"}, + {"scr_aliens_promode"}, + {"scr_aliens_ricochet"}, + {"scr_aliens_roundlimit"}, + {"scr_aliens_scorelimit"}, + {"scr_aliens_timelimit"}, + {"scr_aliens_waverespawndelay"}, + {"scr_aliens_winlimit"}, + {"scr_aliens_xpscale"}, + {"scr_altBlitzSpawns"}, + {"scr_altFFASpawns"}, + {"scr_anchorSpawns"}, + {"scr_blitz_numlives"}, + {"scr_blitz_playerrespawndelay"}, + {"scr_blitz_promode"}, + {"scr_blitz_roundlimit"}, + {"scr_blitz_roundswitch"}, + {"scr_blitz_scoredelay"}, + {"scr_blitz_scorelimit"}, + {"scr_blitz_timelimit"}, + {"scr_blitz_waverespawndelay"}, + {"scr_blitz_winlimit"}, + {"scr_chaos_mode"}, + {"scr_conf_numlives"}, + {"scr_conf_playerrespawndelay"}, + {"scr_conf_promode"}, + {"scr_conf_roundlimit"}, + {"scr_conf_scorelimit"}, + {"scr_conf_timelimit"}, + {"scr_conf_waverespawndelay"}, + {"scr_conf_winlimit"}, + {"scr_cranked_numlives"}, + {"scr_cranked_playerrespawndelay"}, + {"scr_cranked_promode"}, + {"scr_cranked_roundlimit"}, + {"scr_cranked_scorelimit"}, + {"scr_cranked_scorelimit_ffa"}, + {"scr_cranked_teambased"}, + {"scr_cranked_timelimit"}, + {"scr_cranked_waverespawndelay"}, + {"scr_cranked_winlimit"}, + {"scr_default_maxagents"}, + {"scr_defcon"}, + {"scr_diehard"}, + {"scr_disableClientSpawnTraces"}, + {"scr_dm_numlives"}, + {"scr_dm_playerrespawndelay"}, + {"scr_dm_promode"}, + {"scr_dm_roundlimit"}, + {"scr_dm_scorelimit"}, + {"scr_dm_timelimit"}, + {"scr_dm_waverespawndelay"}, + {"scr_dm_winlimit"}, + {"scr_dom_numlives"}, + {"scr_dom_playerrespawndelay"}, + {"scr_dom_promode"}, + {"scr_dom_roundlimit"}, + {"scr_dom_scorelimit"}, + {"scr_dom_timelimit"}, + {"scr_dom_waverespawndelay"}, + {"scr_dom_winlimit"}, + {"scr_explBulletMod"}, + {"scr_frontlineSpawns"}, + {"scr_game_allowkillcam"}, + {"scr_game_deathpointloss"}, + {"scr_game_forceuav"}, + {"scr_game_graceperiod"}, + {"scr_game_hardpoints"}, + {"scr_game_killstreakdelay"}, + {"scr_game_onlyheadshots"}, + {"scr_game_perks"}, + {"scr_game_spectatetype"}, + {"scr_game_suicidepointloss"}, + {"scr_gameended"}, + {"scr_grind_numlives"}, + {"scr_grind_playerrespawndelay"}, + {"scr_grind_promode"}, + {"scr_grind_roundlimit"}, + {"scr_grind_scorelimit"}, + {"scr_grind_timelimit"}, + {"scr_grind_waverespawndelay"}, + {"scr_grind_winlimit"}, + {"scr_grnd_dropTime"}, + {"scr_grnd_numlives"}, + {"scr_grnd_playerrespawndelay"}, + {"scr_grnd_promode"}, + {"scr_grnd_roundlimit"}, + {"scr_grnd_scorelimit"}, + {"scr_grnd_timelimit"}, + {"scr_grnd_waverespawndelay"}, + {"scr_grnd_winlimit"}, + {"scr_grnd_zoneSwitchTime"}, + {"scr_hardcore"}, + {"scr_hardpoint_allowartillery"}, + {"scr_hardpoint_allowhelicopter"}, + {"scr_hardpoint_allowuav"}, + {"scr_horde_difficulty"}, + {"scr_horde_maxagents"}, + {"scr_horde_numlives"}, + {"scr_horde_playerrespawndelay"}, + {"scr_horde_promode"}, + {"scr_horde_roundlimit"}, + {"scr_horde_scorelimit"}, + {"scr_horde_timelimit"}, + {"scr_horde_waverespawndelay"}, + {"scr_horde_winlimit"}, + {"scr_infect_numlives"}, + {"scr_infect_playerrespawndelay"}, + {"scr_infect_promode"}, + {"scr_infect_roundlimit"}, + {"scr_infect_timelimit"}, + {"scr_infect_waverespawndelay"}, + {"scr_infect_winlimit"}, + {"scr_maxPerPlayerExplosives"}, + {"scr_mugger_numlives"}, + {"scr_mugger_playerrespawndelay"}, + {"scr_mugger_promode"}, + {"scr_mugger_roundlimit"}, + {"scr_mugger_scorelimit"}, + {"scr_mugger_timelimit"}, + {"scr_mugger_waverespawndelay"}, + {"scr_mugger_winlimit"}, + {"scr_nukeCancelMode"}, + {"scr_nukeTimer"}, + {"scr_objectivetext"}, + {"scr_oldschool"}, + {"scr_patientZero"}, + {"scr_player_forcerespawn"}, + {"scr_player_healthregentime"}, + {"scr_player_maxhealth"}, + {"scr_player_numlives"}, + {"scr_player_respawndelay"}, + {"scr_player_sprinttime"}, + {"scr_player_suicidespawndelay"}, + {"scr_playlist_type"}, + {"scr_RequiredMapAspectratio"}, + {"scr_restxp_cap"}, + {"scr_restxp_enable"}, + {"scr_restxp_levelsPerDay"}, + {"scr_restxp_minRestTime"}, + {"scr_restxp_restedAwardScale"}, + {"scr_restxp_timescale"}, + {"scr_riotShieldXPBullets"}, + {"scr_sd_bombtimer"}, + {"scr_sd_defusetime"}, + {"scr_sd_multibomb"}, + {"scr_sd_numlives"}, + {"scr_sd_planttime"}, + {"scr_sd_playerrespawndelay"}, + {"scr_sd_promode"}, + {"scr_sd_roundlimit"}, + {"scr_sd_roundswitch"}, + {"scr_sd_scorelimit"}, + {"scr_sd_timelimit"}, + {"scr_sd_waverespawndelay"}, + {"scr_sd_winlimit"}, + {"scr_siege_caprate"}, + {"scr_siege_numlives"}, + {"scr_siege_playerrespawndelay"}, + {"scr_siege_precap"}, + {"scr_siege_promode"}, + {"scr_siege_roundlimit"}, + {"scr_siege_roundswitch"}, + {"scr_siege_rushtimer"}, + {"scr_siege_rushtimeramount"}, + {"scr_siege_scorelimit"}, + {"scr_siege_timelimit"}, + {"scr_siege_waverespawndelay"}, + {"scr_siege_winlimit"}, + {"scr_sotf_crateamount"}, + {"scr_sotf_crategunamount"}, + {"scr_sotf_cratetimer"}, + {"scr_sotf_ffa_crateamount"}, + {"scr_sotf_ffa_crategunamount"}, + {"scr_sotf_ffa_cratetimer"}, + {"scr_sotf_ffa_numlives"}, + {"scr_sotf_ffa_playerrespawndelay"}, + {"scr_sotf_ffa_promode"}, + {"scr_sotf_ffa_roundlimit"}, + {"scr_sotf_ffa_scorelimit"}, + {"scr_sotf_ffa_timelimit"}, + {"scr_sotf_ffa_waverespawndelay"}, + {"scr_sotf_ffa_winlimit"}, + {"scr_sotf_numlives"}, + {"scr_sotf_playerrespawndelay"}, + {"scr_sotf_promode"}, + {"scr_sotf_roundlimit"}, + {"scr_sotf_scorelimit"}, + {"scr_sotf_timelimit"}, + {"scr_sotf_waverespawndelay"}, + {"scr_sotf_winlimit"}, + {"scr_sr_bombtimer"}, + {"scr_sr_defusetime"}, + {"scr_sr_multibomb"}, + {"scr_sr_numlives"}, + {"scr_sr_planttime"}, + {"scr_sr_playerrespawndelay"}, + {"scr_sr_promode"}, + {"scr_sr_roundlimit"}, + {"scr_sr_roundswitch"}, + {"scr_sr_scorelimit"}, + {"scr_sr_timelimit"}, + {"scr_sr_waverespawndelay"}, + {"scr_sr_winlimit"}, + {"scr_team_fftype"}, + {"scr_team_kickteamkillers"}, + {"scr_team_respawntime"}, + {"scr_team_teamkillpointloss"}, + {"scr_team_teamkillspawndelay"}, + {"scr_thirdPerson"}, + {"scr_tispawndelay"}, + {"scr_trackPlayerAbilities"}, + {"scr_war_halftime"}, + {"scr_war_numlives"}, + {"scr_war_playerrespawndelay"}, + {"scr_war_promode"}, + {"scr_war_roundlimit"}, + {"scr_war_roundswitch"}, + {"scr_war_scorelimit"}, + {"scr_war_timelimit"}, + {"scr_war_waverespawndelay"}, + {"scr_war_winlimit"}, + {"scr_xpscale"}, + {"screenshots_active"}, + {"search_weight_asn"}, + {"search_weight_country_code"}, + {"search_weight_lat_long"}, + {"sensitivity"}, + {"sentry_placement_debug"}, + {"sentry_placement_feet_offset"}, + {"sentry_placement_feet_trace_dist_z"}, + {"sentry_placement_trace_dist"}, + {"sentry_placement_trace_min_normal"}, + {"sentry_placement_trace_pitch"}, + {"sentry_placement_trace_radius"}, + {"sentry_placement_trace_radius_canon_safety"}, + {"server1"}, + {"server10"}, + {"server11"}, + {"server12"}, + {"server13"}, + {"server14"}, + {"server15"}, + {"server16"}, + {"server2"}, + {"server3"}, + {"server4"}, + {"server5"}, + {"server6"}, + {"server7"}, + {"server8"}, + {"server9"}, + {"session_immediateDeleteTinySessions"}, + {"session_modify_retry_on_failure"}, + {"session_nonblocking"}, + {"shieldBlastDamageProtection_120"}, + {"shieldBlastDamageProtection_180"}, + {"shieldBlastDamageProtection_30"}, + {"shieldBlastDamageProtection_60"}, + {"shieldImpactBulletShakeDuration"}, + {"shieldImpactBulletShakeScale"}, + {"shieldImpactExplosionHighShakeDuration"}, + {"shieldImpactExplosionHighShakeScale"}, + {"shieldImpactExplosionLowShakeDuration"}, + {"shieldImpactExplosionLowShakeScale"}, + {"shieldImpactExplosionThreshold"}, + {"shieldImpactMissileShakeDuration"}, + {"shieldImpactMissileShakeScale"}, + {"shortversion"}, + {"slide_enable"}, + {"sm_cameraOffset"}, + {"sm_dynlightAllSModels"}, + {"sm_enable"}, + {"sm_fastSunShadow"}, + {"sm_lightScore_eyeProjectDist"}, + {"sm_lightScore_spotProjectFrac"}, + {"sm_maxLightsWithShadows"}, + {"sm_minSpotLightScore"}, + {"sm_polygonOffsetBias"}, + {"sm_polygonOffsetClamp"}, + {"sm_polygonOffsetScale"}, + {"sm_qualitySpotShadow"}, + {"sm_spotDistCull"}, + {"sm_spotEnable"}, + {"sm_spotLightScoreModelScale"}, + {"sm_spotLimit"}, + {"sm_spotShadowFadeTime"}, + {"sm_strictCull"}, + {"sm_sunEnable"}, + {"sm_sunSampleSizeNear"}, + {"sm_sunShadowCenter"}, + {"sm_sunShadowCenterMode"}, + {"sm_sunShadowScale"}, + {"sm_sunShadowScaleLocked"}, + {"snd_cinematicVolumeScale"}, + {"snd_dopplerAuditionEnable"}, + {"snd_dopplerBaseSpeedOfSound"}, + {"snd_dopplerEnable"}, + {"snd_dopplerPitchMax"}, + {"snd_dopplerPitchMin"}, + {"snd_dopplerPlayerVelocityScale"}, + {"snd_dopplerSmoothing"}, + {"snd_draw3D"}, + {"snd_drawInfo"}, + {"snd_enable2D"}, + {"snd_enable3D"}, + {"snd_enableEq"}, + {"snd_enableReverb"}, + {"snd_enableStream"}, + {"snd_errorOnMissing"}, + {"snd_levelFadeTime"}, + {"snd_loadFadeTime"}, + {"snd_newWhizby"}, + {"snd_occlusionDelay"}, + {"snd_occlusionLerpTime"}, + {"snd_omnidirectionalPercentage"}, + {"snd_slaveFadeTime"}, + {"snd_touchStreamFilesOnLoad"}, + {"snd_useHardOuterEntchannelPriorities"}, + {"snd_volume"}, + {"social_feed_clans_active"}, + {"social_feed_motd_active"}, + {"social_feed_news_active"}, + {"social_feed_social_active"}, + {"social_feed_squads_active"}, + {"speech_active"}, + {"splitscreen"}, + {"squad_can_host_server"}, + {"squad_cile"}, + {"squad_dont_advertise"}, + {"squad_find_match"}, + {"squad_find_match_max_retry_time"}, + {"squad_find_match_retry_step"}, + {"squad_lobby_type"}, + {"squad_match"}, + {"squad_min_human_players"}, + {"squad_no_migrations"}, + {"squad_report_text"}, + {"squad_rxb"}, + {"squad_rxbm"}, + {"squad_send_results"}, + {"squad_team_balance"}, + {"squad_use_hosts_squad"}, + {"squad_vs_squad"}, + {"steam_ingame_p2p_throttle"}, + {"stringtable_debug"}, + {"sv_allowClientConsole"}, + {"sv_allowedClan1"}, + {"sv_allowedClan2"}, + {"sv_archiveClientsPositions"}, + {"sv_cheats"}, + {"sv_checkMinPlayers"}, + {"sv_clientArchive"}, + {"sv_connectTimeout"}, + {"sv_cumulThinkTime"}, + {"sv_error_on_baseline_failure"}, + {"sv_hostname"}, + {"sv_hugeSnapshotDelay"}, + {"sv_hugeSnapshotSize"}, + {"sv_kickBanTime"}, + {"sv_local_client_snapshot_msec"}, + {"sv_maxclients"}, + {"sv_minPingClamp"}, + {"sv_network_fps"}, + {"sv_paused"}, + {"sv_privateClients"}, + {"sv_privateClientsForClients"}, + {"sv_privatePassword"}, + {"sv_reconnectlimit"}, + {"sv_rejoinTimeout"}, + {"sv_remote_client_snapshot_msec"}, + {"sv_running"}, + {"sv_sayName"}, + {"sv_showAverageBPS"}, + {"sv_testValue"}, + {"sv_timeout"}, + {"sv_trackFrameMsecThreshold"}, + {"sv_useExtraCompress"}, + {"sv_zlib_threshold"}, + {"sv_zombietime"}, + {"svwp"}, + {"sys_configSum"}, + {"sys_configureGHz"}, + {"sys_cpuGHz"}, + {"sys_cpuName"}, + {"sys_gpu"}, + {"sys_lockThreads"}, + {"sys_quitMigrateTime"}, + {"sys_smp_allowed"}, + {"sys_SSE"}, + {"sys_sysMB"}, + {"systemlink"}, + {"tb_report"}, + {"team_rebalance"}, + {"theater_active"}, + {"thermal_playerModel"}, + {"thermalBlurFactorNoScope"}, + {"thermalBlurFactorScope"}, + {"tracer_explosiveColor1"}, + {"tracer_explosiveColor2"}, + {"tracer_explosiveColor3"}, + {"tracer_explosiveColor4"}, + {"tracer_explosiveColor5"}, + {"tracer_explosiveOverride"}, + {"tracer_explosiveWidth"}, + {"tracer_firstPersonMaxWidth"}, + {"tracer_stoppingPowerColor1"}, + {"tracer_stoppingPowerColor2"}, + {"tracer_stoppingPowerColor3"}, + {"tracer_stoppingPowerColor4"}, + {"tracer_stoppingPowerColor5"}, + {"tracer_stoppingPowerOverride"}, + {"tracer_stoppingPowerWidth"}, + {"tracer_thermalWidthMult"}, + {"transients_verbose"}, + {"ui_ability_end_milliseconds"}, + {"ui_ability_recharging"}, + {"ui_ability_timer"}, + {"ui_ac130"}, + {"ui_ac130_105mm_ammo"}, + {"ui_ac130_25mm_ammo"}, + {"ui_ac130_40mm_ammo"}, + {"ui_ac130_coord1_posx"}, + {"ui_ac130_coord1_posy"}, + {"ui_ac130_coord1_posz"}, + {"ui_ac130_coord2_posx"}, + {"ui_ac130_coord2_posy"}, + {"ui_ac130_coord2_posz"}, + {"ui_ac130_coord3_posx"}, + {"ui_ac130_coord3_posy"}, + {"ui_ac130_coord3_posz"}, + {"ui_ac130_darken"}, + {"ui_ac130_thermal"}, + {"ui_ac130_use_time"}, + {"ui_ac130_weapon"}, + {"ui_ac130usetime"}, + {"ui_activeAbility_name"}, + {"ui_adrenaline"}, + {"ui_allow_classchange"}, + {"ui_allow_controlschange"}, + {"ui_allow_teamchange"}, + {"ui_allowvote"}, + {"ui_altscene"}, + {"ui_autodetectGamepad"}, + {"ui_autodetectGamepadDone"}, + {"ui_bigFont"}, + {"ui_borderLowLightScale"}, + {"ui_browserFriendlyfire"}, + {"ui_browserKillcam"}, + {"ui_browserMod"}, + {"ui_browserShowDedicated"}, + {"ui_browserShowEmpty"}, + {"ui_browserShowFull"}, + {"ui_browserShowPassword"}, + {"ui_browserShowPure"}, + {"ui_buildLocation"}, + {"ui_buildSize"}, + {"ui_challenge_1_ref"}, + {"ui_challenge_2_ref"}, + {"ui_challenge_3_ref"}, + {"ui_challenge_4_ref"}, + {"ui_challenge_5_ref"}, + {"ui_challenge_6_ref"}, + {"ui_challenge_7_ref"}, + {"ui_changeclass_menu_open"}, + {"ui_changeteam_menu_open"}, + {"ui_cinematicsTimestamp"}, + {"ui_class_menu_open"}, + {"ui_connectScreenTextGlowColor"}, + {"ui_contextualMenuLocation"}, + {"ui_controls_menu_open"}, + {"ui_currentFeederMapIndex"}, + {"ui_currentMap"}, + {"ui_customClassName"}, + {"ui_customModeEditName"}, + {"ui_customModeName"}, + {"ui_danger_team"}, + {"ui_debugMode"}, + {"ui_disableInGameStore"}, + {"ui_disableTokenRedemption"}, + {"ui_drawCrosshair"}, + {"ui_editSquadMemberIndex"}, + {"ui_extraBigFont"}, + {"ui_eyes_on_end_milliseconds"}, + {"ui_friendlyfire"}, + {"ui_game_state"}, + {"ui_gametype"}, + {"ui_halftime"}, + {"ui_hitloc_0"}, + {"ui_hitloc_1"}, + {"ui_hitloc_2"}, + {"ui_hitloc_3"}, + {"ui_hitloc_4"}, + {"ui_hitloc_5"}, + {"ui_hitloc_damage_0"}, + {"ui_hitloc_damage_1"}, + {"ui_hitloc_damage_2"}, + {"ui_hitloc_damage_3"}, + {"ui_hitloc_damage_4"}, + {"ui_hitloc_damage_5"}, + {"ui_hud_hardcore"}, + {"ui_hud_obituaries"}, + {"ui_hud_showobjicons"}, + {"ui_inactiveBaseColor"}, + {"ui_inactivePartyColor"}, + {"ui_inhostmigration"}, + {"ui_joinGametype"}, + {"ui_juiced_end_milliseconds"}, + {"ui_killstreak_show_selections"}, + {"ui_killstreak_show_selections_icon_1"}, + {"ui_killstreak_show_selections_icon_2"}, + {"ui_killstreak_show_selections_icon_3"}, + {"ui_mapname"}, + {"ui_mapvote_entrya_gametype"}, + {"ui_mapvote_entrya_mapname"}, + {"ui_mapvote_entryb_gametype"}, + {"ui_mapvote_entryb_mapname"}, + {"ui_maxclients"}, + {"ui_missingMapName"}, + {"ui_mousePitch"}, + {"ui_multiplayer"}, + {"ui_myPartyColor"}, + {"ui_netGametype"}, + {"ui_netGametypeName"}, + {"ui_netSource"}, + {"ui_numteams"}, + {"ui_oldmapname"}, + {"ui_onlineRequired"}, + {"ui_opensummary"}, + {"ui_override_halftime"}, + {"ui_overtime"}, + {"ui_partyFull"}, + {"ui_passiveAbility_name"}, + {"ui_player_blue_eggs"}, + {"ui_player_green_eggs"}, + {"ui_player_money"}, + {"ui_player_perks"}, + {"ui_player_purple_eggs"}, + {"ui_player_red_eggs"}, + {"ui_player_weap1"}, + {"ui_player_weap2"}, + {"ui_player_yellow_eggs"}, + {"ui_playerPartyColor"}, + {"ui_playlistActionButtonAlpha"}, + {"ui_playlistCategoryDisabledColor"}, + {"ui_playlistCategoryEnabledColor"}, + {"ui_playlistPopulationRefreshTime"}, + {"ui_promotion"}, + {"ui_reaper_ammocount"}, + {"ui_reaper_targetdistance"}, + {"ui_regen_faster_end_milliseconds"}, + {"ui_remoteTankUseTime"}, + {"ui_scorelimit"}, + {"ui_selectedFeederMap"}, + {"ui_serverStatusTimeOut"}, + {"ui_showDLCMaps"}, + {"ui_showInfo"}, + {"ui_showList"}, + {"ui_showmap"}, + {"ui_showMenuOnly"}, + {"ui_showMinimap"}, + {"ui_sliderSteps"}, + {"ui_smallFont"}, + {"ui_squad_mode"}, + {"ui_textScrollFadeTime"}, + {"ui_textScrollPauseEnd"}, + {"ui_textScrollPauseStart"}, + {"ui_textScrollSpeed"}, + {"ui_timelimit"}, + {"uiscript_debug"}, + {"use_filtered_query_pass"}, + {"use_weighted_dlc_exactmatch_pass"}, + {"use_weighted_pass"}, + {"useonlinestats"}, + {"useRelativeTeamColors"}, + {"userGroup_active"}, + {"userGroup_cool_off_time"}, + {"userGroup_coop_delay"}, + {"userGroup_max_retry_time"}, + {"userGroup_refresh_time_secs"}, + {"userGroup_retry_step"}, + {"userGroup_RetryTime"}, + {"useStatsGroups"}, + {"useTagFlashSilenced"}, + {"using_mlg"}, + {"validate_apply_clamps"}, + {"validate_apply_revert"}, + {"validate_apply_revert_full"}, + {"validate_clamp_assists"}, + {"validate_clamp_experience"}, + {"validate_clamp_headshots"}, + {"validate_clamp_hits"}, + {"validate_clamp_kills"}, + {"validate_clamp_losses"}, + {"validate_clamp_misses"}, + {"validate_clamp_ties"}, + {"validate_clamp_totalshots"}, + {"validate_clamp_weaponXP"}, + {"validate_clamp_wins"}, + {"validate_drop_on_fail"}, + {"veh_aiOverSteerScale"}, + {"veh_boneControllerLodDist"}, + {"vehAudio_inAirPitchDownLerp"}, + {"vehAudio_inAirPitchUpLerp"}, + {"vehAudio_spawnVolumeTime"}, + {"vehCam_freeLook"}, + {"vehCam_mode"}, + {"vehDroneDebugDrawPath"}, + {"vehHelicopterBoundsRadius"}, + {"vehHelicopterDecelerationFwd"}, + {"vehHelicopterDecelerationSide"}, + {"vehHelicopterDecelerationUp"}, + {"vehHelicopterHeadSwayDontSwayTheTurret"}, + {"vehHelicopterHoverSpeedThreshold"}, + {"vehHelicopterInvertUpDown"}, + {"vehHelicopterJitterJerkyness"}, + {"vehHelicopterLookaheadTime"}, + {"vehHelicopterMaxAccel"}, + {"vehHelicopterMaxAccelVertical"}, + {"vehHelicopterMaxPitch"}, + {"vehHelicopterMaxRoll"}, + {"vehHelicopterMaxSpeed"}, + {"vehHelicopterMaxSpeedVertical"}, + {"vehHelicopterMaxYawAccel"}, + {"vehHelicopterMaxYawRate"}, + {"vehHelicopterPitchOffset"}, + {"vehHelicopterRightStickDeadzone"}, + {"vehHelicopterScaleMovement"}, + {"vehHelicopterSoftCollisions"}, + {"vehHelicopterStrafeDeadzone"}, + {"vehHelicopterTiltFromAcceleration"}, + {"vehHelicopterTiltFromControllerAxes"}, + {"vehHelicopterTiltFromDeceleration"}, + {"vehHelicopterTiltFromFwdAndYaw"}, + {"vehHelicopterTiltFromFwdAndYaw_VelAtMaxTilt"}, + {"vehHelicopterTiltFromVelocity"}, + {"vehHelicopterTiltMomentum"}, + {"vehHelicopterTiltSpeed"}, + {"vehHelicopterYawOnLeftStick"}, + {"vehicle_debug_render_spline_plane"}, + {"vehUGVPitchTrack"}, + {"vehUGVRollTrack"}, + {"vehUGVWheelInfluence"}, + {"version"}, + {"vid_xpos"}, + {"vid_ypos"}, + {"viewangNow"}, + {"viewModelDebugNotetracks"}, + {"viewModelHacks"}, + {"viewposNow"}, + {"waypointDebugDraw"}, + {"waypointDistScaleRangeMax"}, + {"waypointDistScaleRangeMin"}, + {"waypointDistScaleSmallest"}, + {"waypointIconHeight"}, + {"waypointIconWidth"}, + {"waypointOffscreenCornerRadius"}, + {"waypointOffscreenDistanceThresholdAlpha"}, + {"waypointOffscreenPadBottom"}, + {"waypointOffscreenPadLeft"}, + {"waypointOffscreenPadRight"}, + {"waypointOffscreenPadTop"}, + {"waypointOffscreenPointerDistance"}, + {"waypointOffscreenPointerHeight"}, + {"waypointOffscreenPointerWidth"}, + {"waypointOffscreenRoundedCorners"}, + {"waypointOffscreenScaleLength"}, + {"waypointOffscreenScaleSmallest"}, + {"waypointPlayerOffsetCrouch"}, + {"waypointPlayerOffsetProne"}, + {"waypointPlayerOffsetStand"}, + {"waypointScreenCenterFadeAdsMin"}, + {"waypointScreenCenterFadeHipMin"}, + {"waypointScreenCenterFadeRadius"}, + {"waypointSplitscreenScale"}, + {"waypointTweakY"}, + {"weap_thermoDebuffMod"}, + {"wideScreen"}, + {"winvoice_loopback"}, + {"winvoice_mic_mute"}, + {"winvoice_mic_outTime"}, + {"winvoice_mic_reclevel"}, + {"winvoice_mic_scaler"}, + {"winvoice_mic_threshold"}, + {"winvoice_save_voice"}, + {"xblive_competitionmatch"}, + {"xblive_hostingprivateparty"}, + {"xblive_loggedin"}, + {"xblive_privatematch"}, + {"xblive_privatematch_solo"}, + {"current_class_location"}, }; bool can_add_dvar_to_list(std::string name) @@ -584,53 +2757,4 @@ namespace dvars return game::Dvar_RegisterVec4(hash, "", x, y, z, w, min, max, flags); } - - namespace override - { - static std::unordered_map set_string_overrides; - - game::dvar_t* register_int(const std::string& name, int value, int min, int max, - const unsigned int flags, bool add_to_list) - { - const auto hash = game::generateHashValue(name.data()); - - if (add_to_list && can_add_dvar_to_list(name)) - { - dvar_list.push_back(name); - } - - return game::Dvar_RegisterInt(hash, "", value, min, max, flags); - } - - void Dvar_SetString(const std::string& name, const std::string& value) - { - set_string_overrides[name] = value; - } - - game::dvar_t* register_float(const std::string& name, float value, float min, - float max, game::DvarFlags flags, bool add_to_list) - { - const auto hash = game::generateHashValue(name.data()); - - if (add_to_list && can_add_dvar_to_list(name)) - { - dvar_list.push_back(name); - } - - return game::Dvar_RegisterFloat(hash, "", value, min, max, flags); - } - - game::dvar_t* register_string(const std::string& name, const char* value, - game::DvarFlags flags, bool add_to_list) - { - const auto hash = game::generateHashValue(name.data()); - - if (add_to_list && can_add_dvar_to_list(name)) - { - dvar_list.push_back(name); - } - - return game::Dvar_RegisterString(hash, "", value, flags); - } - } -} +} \ No newline at end of file diff --git a/src/client/game/dvars.hpp b/src/client/game/dvars.hpp index 0a2a84ca..f803aaa9 100644 --- a/src/client/game/dvars.hpp +++ b/src/client/game/dvars.hpp @@ -33,12 +33,4 @@ namespace dvars game::dvar_t* register_string(const std::string& name, const char* value, game::DvarFlags flags, bool add_to_list = true); game::dvar_t* register_float(const std::string& name, float value, float min, float max, game::DvarFlags flags, bool add_to_list = true); game::dvar_t* register_vec4(const std::string& name, float x, float y, float z, float w, float min, float max, game::DvarFlags flags, bool add_to_list = true); - - namespace override - { - game::dvar_t* register_int(const std::string& name, int value, int min, int max, const unsigned int flags, bool add_to_list = true); - void Dvar_SetString(const std::string& name, const std::string& string); - game::dvar_t* register_float(const std::string& name, float value, float min, float max, game::DvarFlags flags, bool add_to_list = true); - game::dvar_t* register_string(const std::string& name, const char* value, game::DvarFlags flags, bool add_to_list = true); - } } From 358d564936c3700dd6b81ece4179beb9c7cf9de6 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Mon, 28 Feb 2022 20:56:55 +0100 Subject: [PATCH 2/8] Fix on_game_initialized --- src/client/component/scheduler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/component/scheduler.cpp b/src/client/component/scheduler.cpp index de9b4983..fdc0b9f4 100644 --- a/src/client/component/scheduler.cpp +++ b/src/client/component/scheduler.cpp @@ -152,7 +152,7 @@ namespace scheduler { schedule([=]() { - const auto dw_init = game::environment::is_sp() ? true : game::Live_SyncOnlineDataFlags(0) == 0; + const auto dw_init = game::environment::is_sp() ? true : game::Live_SyncOnlineDataFlags(0) == 32; if (dw_init && game::Sys_IsDatabaseReady2()) { once(callback, type, delay); From 4d5c6ecc176c1d6a1f79f5d25271858e57da7296 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Mon, 28 Feb 2022 21:04:44 +0100 Subject: [PATCH 3/8] Nevermind --- src/client/component/scheduler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/component/scheduler.cpp b/src/client/component/scheduler.cpp index fdc0b9f4..de9b4983 100644 --- a/src/client/component/scheduler.cpp +++ b/src/client/component/scheduler.cpp @@ -152,7 +152,7 @@ namespace scheduler { schedule([=]() { - const auto dw_init = game::environment::is_sp() ? true : game::Live_SyncOnlineDataFlags(0) == 32; + const auto dw_init = game::environment::is_sp() ? true : game::Live_SyncOnlineDataFlags(0) == 0; if (dw_init && game::Sys_IsDatabaseReady2()) { once(callback, type, delay); From b7423d81095c542bdfe06ffaa535be70f40c043a Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Mon, 28 Feb 2022 21:18:27 +0100 Subject: [PATCH 4/8] Add dvar & flag to disable shader caching --- src/client/component/console.cpp | 2 ++ src/client/component/dvars.cpp | 26 +++++++++++++++++ src/client/component/dvars.hpp | 1 + src/client/component/shaders.cpp | 50 ++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 src/client/component/shaders.cpp diff --git a/src/client/component/console.cpp b/src/client/component/console.cpp index dd9b7e1e..557f47b5 100644 --- a/src/client/component/console.cpp +++ b/src/client/component/console.cpp @@ -105,8 +105,10 @@ namespace console this->console_thread_.join(); } +#ifndef NATIVE_CONSOLE _close(this->handles_[0]); _close(this->handles_[1]); +#endif messages.access([&](message_queue& msgs) { diff --git a/src/client/component/dvars.cpp b/src/client/component/dvars.cpp index d8221d67..1f46d4db 100644 --- a/src/client/component/dvars.cpp +++ b/src/client/component/dvars.cpp @@ -144,6 +144,7 @@ namespace dvars static std::unordered_map set_float_overrides; static std::unordered_map set_int_overrides; static std::unordered_map set_string_overrides; + static std::unordered_map set_from_string_overrides; void register_bool(const std::string& name, const bool value, const unsigned int flags) { @@ -228,6 +229,11 @@ namespace dvars { set_string_overrides[name] = value; } + + void set_from_string(const std::string& name, const std::string& value) + { + set_from_string_overrides[name] = value; + } } utils::hook::detour dvar_register_bool_hook; @@ -241,6 +247,7 @@ namespace dvars utils::hook::detour dvar_set_float_hook; utils::hook::detour dvar_set_int_hook; utils::hook::detour dvar_set_string_hook; + utils::hook::detour dvar_set_from_string_hook; game::dvar_t* dvar_register_bool(const int hash, const char* name, bool value, unsigned int flags) { @@ -395,6 +402,24 @@ namespace dvars return dvar_set_string_hook.invoke(dvar, string); } + void dvar_set_from_string(game::dvar_t* dvar, const char* string, game::DvarSetSource source) + { + const auto disabled = find_dvar(disable::set_string_disables, dvar->hash); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_from_string_overrides, dvar->hash); + if (var) + { + printf("fucker\n"); + string = var->data(); + } + + return dvar_set_from_string_hook.invoke(dvar, string, source); + } + class component final : public component_interface { public: @@ -411,6 +436,7 @@ namespace dvars dvar_set_float_hook.create(SELECT_VALUE(0x1403C7420, 0x1404FD360), &dvar_set_float); dvar_set_int_hook.create(SELECT_VALUE(0x1403C76C0, 0x1404FD5E0), &dvar_set_int); dvar_set_string_hook.create(SELECT_VALUE(0x1403C7900, 0x1404FD8D0), &dvar_set_string); + dvar_set_from_string_hook.create(SELECT_VALUE(0, 0x1404FD520), &dvar_set_from_string); } }; } diff --git a/src/client/component/dvars.hpp b/src/client/component/dvars.hpp index 057c4d1b..66d6912d 100644 --- a/src/client/component/dvars.hpp +++ b/src/client/component/dvars.hpp @@ -23,5 +23,6 @@ namespace dvars void set_float(const std::string& name, float fl); void set_int(const std::string& name, int integer); void set_string(const std::string& name, const std::string& string); + void set_from_string(const std::string& name, const std::string& value); } } diff --git a/src/client/component/shaders.cpp b/src/client/component/shaders.cpp new file mode 100644 index 00000000..ec632115 --- /dev/null +++ b/src/client/component/shaders.cpp @@ -0,0 +1,50 @@ +#include +#include "loader/component_loader.hpp" + +#include "scheduler.hpp" +#include "dvars.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include +#include +#include + +namespace shaders +{ + namespace + { + game::dvar_t* disable_shader_caching = nullptr; + + bool shader_should_show_dialog_stub() + { + return !disable_shader_caching->current.enabled; + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (!game::environment::is_mp()) + { + return; + } + + const auto has_flag = utils::flags::has_flag("noshadercaching"); + + disable_shader_caching = dvars::register_bool("disable_shader_caching", has_flag, game::DVAR_FLAG_SAVED, true); + if (has_flag) + { + dvars::override::set_bool("disable_shader_caching", 1); + dvars::override::set_from_string("disable_shader_caching", "1"); + } + + utils::hook::jump(0x14007E710, shader_should_show_dialog_stub); + } + }; +} + +REGISTER_COMPONENT(shaders::component) From 36db68dcd7bfc22a1774bf884628de4b480b2833 Mon Sep 17 00:00:00 2001 From: Skull Merlin <86374920+skkuull@users.noreply.github.com> Date: Mon, 28 Feb 2022 22:49:10 +0200 Subject: [PATCH 5/8] client aim assist --- src/client/component/patches.cpp | 16 ++++++++++++---- src/client/game/dvars.cpp | 2 ++ src/client/game/dvars.hpp | 2 ++ src/client/game/symbols.hpp | 2 ++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/client/component/patches.cpp b/src/client/component/patches.cpp index 908f2a5d..73807417 100644 --- a/src/client/component/patches.cpp +++ b/src/client/component/patches.cpp @@ -146,6 +146,14 @@ namespace patches reinterpret_cast(0x140481A00)(client, msg); } + + void aim_assist_add_to_target_list(void* a1, void* a2) + { + if (!dvars::aimassist_enabled->current.enabled) + return; + + game::AimAssist_AddToTargetList(a1, a2); + } } class component final : public component_interface @@ -194,10 +202,10 @@ namespace patches utils::hook::call(0x1402BA26B, bsp_sys_error_stub); // H1(1.4) // client side aim assist dvar - //dvars::aimassist_enabled = game::Dvar_RegisterBool("aimassist_enabled", true, - // game::DvarFlags::DVAR_FLAG_SAVED, - // "Enables aim assist for controllers"); - //utils::hook::call(0x140003609, aim_assist_add_to_target_list); + dvars::aimassist_enabled = dvars::register_bool("aimassist_enabled", true, + game::DvarFlags::DVAR_FLAG_SAVED, + true); + utils::hook::call(0x14009EE9E, aim_assist_add_to_target_list); // unlock all items utils::hook::jump(0x140413E60, is_item_unlocked); // LiveStorage_IsItemUnlockedFromTable_LocalClient H1(1.4) diff --git a/src/client/game/dvars.cpp b/src/client/game/dvars.cpp index fa0835a0..df5ac33e 100644 --- a/src/client/game/dvars.cpp +++ b/src/client/game/dvars.cpp @@ -6,6 +6,8 @@ namespace dvars { + game::dvar_t* aimassist_enabled = nullptr; + game::dvar_t* con_inputBoxColor = nullptr; game::dvar_t* con_inputHintBoxColor = nullptr; game::dvar_t* con_outputBarColor = nullptr; diff --git a/src/client/game/dvars.hpp b/src/client/game/dvars.hpp index f803aaa9..1a48de7c 100644 --- a/src/client/game/dvars.hpp +++ b/src/client/game/dvars.hpp @@ -6,6 +6,8 @@ namespace dvars { + extern game::dvar_t* aimassist_enabled; + extern game::dvar_t* con_inputBoxColor; extern game::dvar_t* con_inputHintBoxColor; extern game::dvar_t* con_outputBarColor; diff --git a/src/client/game/symbols.hpp b/src/client/game/symbols.hpp index 730c3c34..d3856845 100644 --- a/src/client/game/symbols.hpp +++ b/src/client/game/symbols.hpp @@ -15,6 +15,8 @@ namespace game WEAK symbol Cmd_TokenizeString{0x140344110, 0x1404046F0}; WEAK symbol Cmd_EndTokenizeString{0x140343630, 0x140403C20}; + WEAK symbol AimAssist_AddToTargetList{ 0, 0x14009D0F0 }; + WEAK symbol Com_Frame_Try_Block_Function{0, 0x1400D8310}; WEAK symbol Com_GetCurrentCoDPlayMode{0, 0x1405039A0}; WEAK symbol Com_SetSlowMotion{0, 0x1400DB790}; From 910ef95f820f47447218a15feda6d1a83e7494d1 Mon Sep 17 00:00:00 2001 From: Skull Merlin <86374920+skkuull@users.noreply.github.com> Date: Mon, 28 Feb 2022 23:50:51 +0300 Subject: [PATCH 6/8] spacing --- src/client/game/symbols.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/game/symbols.hpp b/src/client/game/symbols.hpp index d3856845..2d7ea23f 100644 --- a/src/client/game/symbols.hpp +++ b/src/client/game/symbols.hpp @@ -15,7 +15,7 @@ namespace game WEAK symbol Cmd_TokenizeString{0x140344110, 0x1404046F0}; WEAK symbol Cmd_EndTokenizeString{0x140343630, 0x140403C20}; - WEAK symbol AimAssist_AddToTargetList{ 0, 0x14009D0F0 }; + WEAK symbol AimAssist_AddToTargetList{0, 0x14009D0F0}; WEAK symbol Com_Frame_Try_Block_Function{0, 0x1400D8310}; WEAK symbol Com_GetCurrentCoDPlayMode{0, 0x1405039A0}; From 1a0ec915670522a0cb095efec03fb770b4e950bc Mon Sep 17 00:00:00 2001 From: m Date: Mon, 28 Feb 2022 16:57:06 -0600 Subject: [PATCH 7/8] add parsed variable closes #12 --- src/common/utils/flags.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/utils/flags.cpp b/src/common/utils/flags.cpp index cbada183..09f13114 100644 --- a/src/common/utils/flags.cpp +++ b/src/common/utils/flags.cpp @@ -37,6 +37,7 @@ namespace utils::flags if (!parsed) { parse_flags(enabled_flags); + parsed = true; } for (const auto& entry : enabled_flags) From e2f1d8ca031fd148d8b96ac1b8abca66bc3e6965 Mon Sep 17 00:00:00 2001 From: Skull Merlin <86374920+skkuull@users.noreply.github.com> Date: Tue, 1 Mar 2022 03:16:28 +0300 Subject: [PATCH 8/8] kbam input #13 --- src/client/component/patches.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/client/component/patches.cpp b/src/client/component/patches.cpp index 73807417..fe12fd6b 100644 --- a/src/client/component/patches.cpp +++ b/src/client/component/patches.cpp @@ -180,6 +180,10 @@ namespace patches // Make cg_fov and cg_fovscale saved dvars dvars::override::register_float("cg_fov", 65.f, 40.f, 200.f, game::DvarFlags::DVAR_FLAG_SAVED); dvars::override::register_float("cg_fovScale", 1.f, 0.1f, 2.f, game::DvarFlags::DVAR_FLAG_SAVED); + + // Allow kbam input when gamepad is enabled + utils::hook::nop(SELECT_VALUE(0x14018797E, 0x14024EF60), 2); + utils::hook::nop(SELECT_VALUE(0x1401856DC, 0x14024C6B0), 6); if (game::environment::is_mp()) {