rework how var strings are created

This commit is contained in:
rei-2
2026-02-22 03:20:08 -05:00
parent 56fd4a2f59
commit d2cfddcafc
4 changed files with 192 additions and 196 deletions
+6 -6
View File
@@ -166,7 +166,7 @@ template <> void CConfigs::LoadJson(const boost::property_tree::ptree& t, const
if (uHash == uHash2) if (uHash == uHash2)
i++; i++;
} }
bValid = bValid && i <= 1; bValid = i <= 1;
} }
if (bValid) if (bValid)
@@ -368,7 +368,7 @@ static inline void SaveMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
boost::property_tree::ptree tMap; boost::property_tree::ptree tMap;
for (auto& [iBind, tValue] : pVar->Map) for (auto& [iBind, tValue] : pVar->Map)
F::Configs.SaveJson(tMap, std::to_string(iBind), tValue); F::Configs.SaveJson(tMap, std::to_string(iBind), tValue);
tTree.put_child(pVar->m_sName, tMap); tTree.put_child(pVar->Name(), tMap);
} }
#define Save(t, j) if (IsType(t)) SaveMain<t>(pBase, j); #define Save(t, j) if (IsType(t)) SaveMain<t>(pBase, j);
@@ -378,7 +378,7 @@ static inline void LoadMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
auto pVar = pBase->As<T>(); auto pVar = pBase->As<T>();
pVar->Map = { { DEFAULT_BIND, pVar->Default } }; pVar->Map = { { DEFAULT_BIND, pVar->Default } };
if (auto tMap = tTree.get_child_optional(pVar->m_sName)) if (auto tMap = tTree.get_child_optional(pVar->Name()))
{ {
for (auto& [sKey, _] : *tMap) for (auto& [sKey, _] : *tMap)
{ {
@@ -392,7 +392,7 @@ static inline void LoadMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
} }
} }
else if (!(pVar->m_iFlags & NOSAVE)) else if (!(pVar->m_iFlags & NOSAVE))
SDK::Output("Amalgam", std::format("{} not found", pVar->m_sName).c_str(), ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG); SDK::Output("Amalgam", std::format("{} not found", pVar->Name()).c_str(), ALTERNATE_COLOR, OUTPUT_CONSOLE | OUTPUT_MENU | OUTPUT_DEBUG);
} }
#define Load(t, j) if (IsType(t)) LoadMain<t>(pBase, j); #define Load(t, j) if (IsType(t)) LoadMain<t>(pBase, j);
@@ -617,14 +617,14 @@ bool CConfigs::LoadConfig(const std::string& sConfigName, bool bNotify)
template <class T> template <class T>
static inline void SaveMiscMain(BaseVar*& pBase, boost::property_tree::ptree& tTree) static inline void SaveMiscMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
{ {
F::Configs.SaveJson(tTree, pBase->m_sName, pBase->As<T>()->Map[DEFAULT_BIND]); F::Configs.SaveJson(tTree, pBase->Name(), pBase->As<T>()->Map[DEFAULT_BIND]);
} }
#define SaveMisc(t, j) if (IsType(t)) SaveMiscMain<t>(pBase, j); #define SaveMisc(t, j) if (IsType(t)) SaveMiscMain<t>(pBase, j);
template <class T> template <class T>
static inline void LoadMiscMain(BaseVar*& pBase, boost::property_tree::ptree& tTree) static inline void LoadMiscMain(BaseVar*& pBase, boost::property_tree::ptree& tTree)
{ {
F::Configs.LoadJson(tTree, pBase->m_sName, pBase->As<T>(), DEFAULT_BIND); F::Configs.LoadJson(tTree, pBase->Name(), pBase->As<T>(), DEFAULT_BIND);
} }
#define LoadMisc(t, j) if (IsType(t)) LoadMiscMain<t>(pBase, j); #define LoadMisc(t, j) if (IsType(t)) LoadMiscMain<t>(pBase, j);
+43 -43
View File
@@ -2153,7 +2153,7 @@ namespace ImGui
} }
inline void FKeybind(ConfigVar<int>& var, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr) inline void FKeybind(ConfigVar<int>& var, int iFlags = FKeybindEnum::None, std::vector<int> vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }, ImVec2 vSize = { 0, 30 }, int iSizeOffset = 0, bool* pHovered = nullptr)
{ {
FKeybind(var.m_vTitle.front(), var[DEFAULT_BIND], iFlags, vIgnore, vSize, iSizeOffset, pHovered); FKeybind(var.m_vNames.front(), var[DEFAULT_BIND], iFlags, vIgnore, vSize, iSizeOffset, pHovered);
} }
// dropdown for materials // dropdown for materials
@@ -2588,48 +2588,48 @@ namespace ImGui
DebugDummy({ 0, GetStyle().WindowPadding.y }); DebugDummy({ 0, GetStyle().WindowPadding.y });
} }
#define WRAPPER(function, type, parameters, arguments)\ #define WRAPPER(function, type, parameters, arguments) \
inline bool function(ConfigVar<type>& var, parameters, bool* pHovered = nullptr, int iBindOverride = -1, int iLabelOverride = -1)\ inline bool function(ConfigVar<type>& var, parameters, bool* pHovered = nullptr, int iBindOverride = -1, int iLabelOverride = -1) \
{\ { \
const char* sLabel = iLabelOverride != -1 ? var.m_vTitle[iLabelOverride] : var.m_vTitle.front();\ const char* sLabel = iLabelOverride != -1 ? var.m_vNames[iLabelOverride] : var.m_vNames.front(); \
int iVarFlags = var.m_iFlags & ~(VISUAL | NOSAVE | NOBIND | DEBUGVAR);\ int iVarFlags = var.m_iFlags & ~(VISUAL | NOSAVE | NOBIND | DEBUGVAR); \
iFlags |= iVarFlags;\ iFlags |= iVarFlags; \
auto val = FGet(var, true);\ auto val = FGet(var, true); \
bool bHovered = false;\ bool bHovered = false; \
bool bReturn = function(std::format("{}## {}", sLabel, var.m_sName).c_str(), arguments, &bHovered);\ bool bReturn = function(std::format("{}## {}", sLabel, var.Name()).c_str(), arguments, &bHovered); \
FSet(var, val);\ FSet(var, val); \
if (pHovered)\ if (pHovered) \
*pHovered = bHovered;\ *pHovered = bHovered; \
if (!(var.m_iFlags & (NOBIND | NOSAVE)) && !Disabled && CurrentBind == DEFAULT_BIND)\ if (!(var.m_iFlags & (NOBIND | NOSAVE)) && !Disabled && CurrentBind == DEFAULT_BIND) \
{ /*probably a better way to do this*/\ { /*probably a better way to do this*/ \
static auto staticVal = val;\ static auto staticVal = val; \
bool bNewPopup = bHovered && IsMouseReleased(ImGuiMouseButton_Right) && !IsMouseDown(ImGuiMouseButton_Left) && !IsPopupOpen(nullptr, ImGuiPopupFlags_AnyPopupId);\ bool bNewPopup = bHovered && IsMouseReleased(ImGuiMouseButton_Right) && !IsMouseDown(ImGuiMouseButton_Left) && !IsPopupOpen(nullptr, ImGuiPopupFlags_AnyPopupId); \
if (bNewPopup)\ if (bNewPopup) \
{\ { \
OpenPopup(var.m_sName.c_str());\ OpenPopup(var.Name()); \
staticVal = val;\ staticVal = val; \
}\ } \
SetNextWindowSize({ H::Draw.Scale(300), 0 });\ SetNextWindowSize({ H::Draw.Scale(300), 0 }); \
bool bPopup = FBeginPopup(var.m_sName.c_str());\ bool bPopup = FBeginPopup(var.Name()); \
if (bPopup)\ if (bPopup) \
{\ { \
std::string sBind = iBindOverride != -1 ? var.m_vTitle[iBindOverride] : var.m_vTitle.back();\ std::string sBind = iBindOverride != -1 ? var.m_vNames[iBindOverride] : var.m_vNames.back(); \
std::transform(sBind.begin(), sBind.end(), sBind.begin(), ::tolower);\ std::transform(sBind.begin(), sBind.end(), sBind.begin(), ::tolower); \
iFlags = iVarFlags; /*get rid of any visual flags*/\ iFlags = iVarFlags; /*get rid of any visual flags*/ \
if (FNV1A::Hash32Const(#function) == FNV1A::Hash32Const("FColorPicker"))\ if (FNV1A::Hash32Const(#function) == FNV1A::Hash32Const("FColorPicker")) \
iFlags |= FColorPickerEnum::Full | FColorPickerEnum::RemoveVisuals;\ iFlags |= FColorPickerEnum::Full | FColorPickerEnum::RemoveVisuals; \
PushTransparent(false);\ PushTransparent(false); \
static bool bLastHovered = false;\ static bool bLastHovered = false; \
DrawBindInfo(var, staticVal, StripDoubleHash(sBind.c_str()), bNewPopup, bLastHovered);\ DrawBindInfo(var, staticVal, StripDoubleHash(sBind.c_str()), bNewPopup, bLastHovered); \
val = staticVal;\ val = staticVal; \
function(std::format("{}## Bind", var.m_vTitle.front()).c_str(), arguments, &bHovered);\ function(std::format("{}## Bind", var.m_vNames.front()).c_str(), arguments, &bHovered); \
bLastHovered = bLastHovered || bHovered;\ bLastHovered = bLastHovered || bHovered; \
staticVal = val;\ staticVal = val; \
PopTransparent(2);\ PopTransparent(2); \
EndPopup();\ EndPopup(); \
}\ } \
}\ } \
return bReturn;\ return bReturn; \
} }
WRAPPER(FToggle, bool, VA_LIST(int iFlags = 0), VA_LIST(&val, iFlags)) WRAPPER(FToggle, bool, VA_LIST(int iFlags = 0), VA_LIST(&val, iFlags))
+10 -10
View File
@@ -3195,7 +3195,7 @@ void CMenu::MenuSettings(int iTab)
{ {
int i = 0; for (auto& pBase : G::Vars) int i = 0; for (auto& pBase : G::Vars)
{ {
if (pBase->m_sName.find("Vars::Hooks::") == std::string::npos) if (std::string(pBase->Name()).find("Vars::Hooks::") == std::string::npos)
continue; continue;
FToggle(*pBase->As<bool>(), !(i % 2) ? FToggleEnum::Left : FToggleEnum::Right); FToggle(*pBase->As<bool>(), !(i % 2) ? FToggleEnum::Left : FToggleEnum::Right);
@@ -3230,8 +3230,8 @@ void CMenu::MenuSearch(std::string sSearch)
if (!Vars::Debug::Options[DEFAULT_BIND] && pBase->m_iFlags & DEBUGVAR) if (!Vars::Debug::Options[DEFAULT_BIND] && pBase->m_iFlags & DEBUGVAR)
continue; continue;
std::vector<const char*> vSearch = { pBase->m_sName.c_str(), pBase->m_sSection }; std::vector<const char*> vSearch = { pBase->Name(), pBase->Section() };
vSearch.insert(vSearch.end(), pBase->m_vTitle.begin(), pBase->m_vTitle.end()); vSearch.insert(vSearch.end(), pBase->m_vNames.begin(), pBase->m_vNames.end());
vSearch.insert(vSearch.end(), pBase->m_vValues.begin(), pBase->m_vValues.end()); vSearch.insert(vSearch.end(), pBase->m_vValues.begin(), pBase->m_vValues.end());
for (auto pSearch : vSearch) for (auto pSearch : vSearch)
{ {
@@ -3264,7 +3264,7 @@ void CMenu::MenuSearch(std::string sSearch)
else if (auto pVar = pBase->As<int>()) else if (auto pVar = pBase->As<int>())
{ {
if (!pVar->m_vValues.empty() if (!pVar->m_vValues.empty()
|| FNV1A::Hash32(pVar->m_sName.c_str()) == FNV1A::Hash32Const("Vars::ESP::ActiveGroups")) || FNV1A::Hash32(pVar->Name()) == FNV1A::Hash32Const("Vars::ESP::ActiveGroups"))
iWidgetEnum = iTypeEnum = WidgetEnum::FDropdown; iWidgetEnum = iTypeEnum = WidgetEnum::FDropdown;
else if (pVar->m_sExtra) else if (pVar->m_sExtra)
iWidgetEnum = WidgetEnum::FISlider, iTypeEnum = WidgetEnum::FSlider; iWidgetEnum = WidgetEnum::FISlider, iTypeEnum = WidgetEnum::FSlider;
@@ -3288,12 +3288,12 @@ void CMenu::MenuSearch(std::string sSearch)
else else
continue; continue;
uint32_t uSection = FNV1A::Hash32(pBase->m_sSection); uint32_t uSection = FNV1A::Hash32(pBase->Section());
if (uSection != uLastSection) if (uSection != uLastSection)
{ {
if (uLastSection) if (uLastSection)
EndSection(); EndSection();
Section(std::format("{}## {}", pBase->m_sSection, pBase->m_sName).c_str()); Section(std::format("{}## {}", pBase->Section(), pBase->Name()).c_str());
i = 0; i = 0;
} }
uLastSection = uSection; uLastSection = uSection;
@@ -3341,7 +3341,7 @@ void CMenu::MenuSearch(std::string sSearch)
auto pVar = pBase->As<bool>(); auto pVar = pBase->As<bool>();
if (FToggle(*pVar, !(i % 2) ? FToggleEnum::Left : FToggleEnum::Right, nullptr, iOverride/*, iOverride*/)) if (FToggle(*pVar, !(i % 2) ? FToggleEnum::Left : FToggleEnum::Right, nullptr, iOverride/*, iOverride*/))
{ {
if (FNV1A::Hash32(pVar->m_sName.c_str()) == FNV1A::Hash32Const("Vars::Debug::Options")) if (FNV1A::Hash32(pVar->Name()) == FNV1A::Hash32Const("Vars::Debug::Options"))
uStaticHash = 0; uStaticHash = 0;
} }
break; break;
@@ -3356,7 +3356,7 @@ void CMenu::MenuSearch(std::string sSearch)
{ {
auto pVar = pBase->As<float>(); auto pVar = pBase->As<float>();
const char* sFormat = pVar->m_sExtra; const char* sFormat = pVar->m_sExtra;
switch (FNV1A::Hash32(pVar->m_sName.c_str())) switch (FNV1A::Hash32(pVar->Name()))
{ {
case FNV1A::Hash32Const("Vars::Aimbot::Projectile::SplashRotateX"): case FNV1A::Hash32Const("Vars::Aimbot::Projectile::SplashRotateX"):
case FNV1A::Hash32Const("Vars::Aimbot::Projectile::SplashRotateY"): case FNV1A::Hash32Const("Vars::Aimbot::Projectile::SplashRotateY"):
@@ -3413,7 +3413,7 @@ void CMenu::MenuSearch(std::string sSearch)
{ {
auto pVar = pBase->As<int>(); auto pVar = pBase->As<int>();
std::vector<int> vIgnore; std::vector<int> vIgnore;
switch (FNV1A::Hash32(pVar->m_sName.c_str())) switch (FNV1A::Hash32(pVar->Name()))
{ {
case FNV1A::Hash32Const("Vars::Menu::PrimaryKey"): case FNV1A::Hash32Const("Vars::Menu::PrimaryKey"):
vIgnore = { Vars::Menu::SecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON }; vIgnore = { Vars::Menu::SecondaryKey[DEFAULT_BIND], VK_LBUTTON, VK_RBUTTON };
@@ -3424,7 +3424,7 @@ void CMenu::MenuSearch(std::string sSearch)
default: default:
vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] }; vIgnore = { Vars::Menu::PrimaryKey[DEFAULT_BIND], Vars::Menu::SecondaryKey[DEFAULT_BIND] };
} }
FKeybind(iOverride != -1 ? pVar->m_vTitle[iOverride] : pVar->m_vTitle.front(), pVar->Map[DEFAULT_BIND], !(i % 2) ? FButtonEnum::Left : FButtonEnum::Right | FButtonEnum::SameLine, vIgnore); FKeybind(iOverride != -1 ? pVar->m_vNames[iOverride] : pVar->m_vNames.front(), pVar->Map[DEFAULT_BIND], !(i % 2) ? FButtonEnum::Left : FButtonEnum::Right | FButtonEnum::SameLine, vIgnore);
break; break;
} }
} }
+133 -137
View File
@@ -8,19 +8,14 @@
#define DEFAULT_BIND -1 #define DEFAULT_BIND -1
// forward declartion of ConfigVar
template <class T> template <class T>
class ConfigVar; class ConfigVar;
class BaseVar class BaseVar
{ {
public: public:
size_t m_iType; std::vector<const char*> m_vNames;
std::string m_sName;
int m_iFlags = 0; int m_iFlags = 0;
std::vector<const char*> m_vTitle;
const char* m_sSection;
union { union {
int i = 0; int i = 0;
float f; float f;
@@ -36,7 +31,23 @@ public:
std::vector<const char*> m_vValues = {}; std::vector<const char*> m_vValues = {};
const char* m_sExtra = nullptr; const char* m_sExtra = nullptr;
// getter for ConfigVar protected:
std::string m_sName;
const char* m_sSection;
public:
constexpr const char* Name() const
{
return m_sName.c_str();
}
constexpr const char* Section() const
{
return m_sSection;
}
public:
size_t m_iType;
template <class T> template <class T>
inline ConfigVar<T>* As() inline ConfigVar<T>* As()
{ {
@@ -56,38 +67,35 @@ template <class T>
class ConfigVar : public BaseVar class ConfigVar : public BaseVar
{ {
public: public:
T Default;
T Value; T Value;
T Default;
std::unordered_map<int, T> Map = {}; std::unordered_map<int, T> Map = {};
ConfigVar(T tValue, std::string sName, const char* sSection, std::vector<const char*> vTitle, int iFlags = 0, std::vector<const char*> vValues = {}, const char* sNone = nullptr)
ConfigVar(T tValue, std::vector<const char*> vNames, const char* sName, const char* sSection, int iFlags = 0, std::vector<const char*> vValues = {}, const char* sNone = nullptr)
{ {
Default = tValue; Value = Default = Map[DEFAULT_BIND] = tValue;
Value = tValue;
Map[DEFAULT_BIND] = tValue;
m_iType = typeid(T).hash_code(); m_iType = typeid(T).hash_code();
m_sName = sName;
m_iFlags = iFlags;
m_vTitle = vTitle; m_vNames = vNames;
m_sName = std::string(sName).replace(strlen(sName) - 1, 1, "");
m_sSection = sSection; m_sSection = sSection;
m_iFlags = iFlags;
m_vValues = vValues; m_vValues = vValues;
m_sExtra = sNone; m_sExtra = sNone;
G::Vars.push_back(this); G::Vars.push_back(this);
} }
ConfigVar(T tValue, std::string sName, const char* sSection, std::vector<const char*> vTitle, int iFlags, int iMin, int iMax, int iStep = 1, const char* sFormat = "%i") ConfigVar(T tValue, std::vector<const char*> vNames, const char* sName, const char* sSection, int iFlags, int iMin, int iMax, int iStep = 1, const char* sFormat = "%i")
{ {
Default = tValue; Value = Default = Map[DEFAULT_BIND] = tValue;
Value = tValue;
Map[DEFAULT_BIND] = tValue;
m_iType = typeid(T).hash_code(); m_iType = typeid(T).hash_code();
m_sName = sName;
m_iFlags = iFlags;
m_vTitle = vTitle; m_vNames = vNames;
m_sName = std::string(sName).replace(strlen(sName) - 1, 1, "");
m_sSection = sSection; m_sSection = sSection;
m_iFlags = iFlags;
m_unMin.i = iMin; m_unMin.i = iMin;
m_unMax.i = iMax; m_unMax.i = iMax;
m_unStep.i = iStep; m_unStep.i = iStep;
@@ -95,18 +103,16 @@ public:
G::Vars.push_back(this); G::Vars.push_back(this);
} }
ConfigVar(T tValue, std::string sName, const char* sSection, std::vector<const char*> vTitle, int iFlags, float flMin, float flMax, float flStep = 1.f, const char* sFormat = "%g") ConfigVar(T tValue, std::vector<const char*> vNames, const char* sName, const char* sSection, int iFlags, float flMin, float flMax, float flStep = 1.f, const char* sFormat = "%g")
{ {
Default = tValue; Value = Default = Map[DEFAULT_BIND] = tValue;
Value = tValue;
Map[DEFAULT_BIND] = tValue;
m_iType = typeid(T).hash_code(); m_iType = typeid(T).hash_code();
m_sName = sName;
m_iFlags = iFlags;
m_vTitle = vTitle; m_vNames = vNames;
m_sName = std::string(sName).replace(strlen(sName) - 1, 1, "");
m_sSection = sSection; m_sSection = sSection;
m_iFlags = iFlags;
m_unMin.f = flMin; m_unMin.f = flMin;
m_unMax.f = flMax; m_unMax.f = flMax;
m_unStep.f = flStep; m_unStep.f = flStep;
@@ -125,30 +131,22 @@ public:
} }
}; };
#define NAMESPACE_BEGIN(name, ...)\ #define NAMESPACE_BEGIN(name, ...) \
namespace name {\ namespace name { \
inline const char* GetNamespace() { return "Vars::"#name"::"; }\ constexpr inline const char* Section() { return !std::string(#__VA_ARGS__).empty() ? ""#__VA_ARGS__ : #name; }
inline const char* GetSubname() { return ""; }\ #define NAMESPACE_END(name) \
inline const char* GetSection() { return !std::string(#__VA_ARGS__).empty() ? ""#__VA_ARGS__ : #name; }
#define SUBNAMESPACE_BEGIN(name, ...)\
namespace name {\
inline const char* GetSubname() { return #name"::"; }\
inline const char* GetSection() { return !std::string(#__VA_ARGS__).empty() ? ""#__VA_ARGS__ : #name; }
#define NAMESPACE_END(name)\
}
#define SUBNAMESPACE_END(name)\
} }
#define CVar(name, title, value, ...)\ #define CVar(name, title, value, ...) \
inline ConfigVar<decltype(value)> name = { value, std::format("{}{}{}", GetNamespace(), GetSubname(), #name), GetSection(), { title }, __VA_ARGS__ } constexpr inline const char* name##_() { return __FUNCTION__; } \
#define CVarValues(name, title, value, flags, none, ...)\ inline ConfigVar<decltype(value)> name = { value, { title }, name##_(), Section(), __VA_ARGS__ }
inline ConfigVar<decltype(value)> name = { value, std::format("{}{}{}", GetNamespace(), GetSubname(), #name), GetSection(), { title }, flags, { __VA_ARGS__ }, none } #define CVarValues(name, title, value, flags, none, ...) \
#define Enum(name, ...)\ constexpr inline const char* name##_() { return __FUNCTION__; } \
inline ConfigVar<decltype(value)> name = { value, { title }, name##_(), Section(), flags, { __VA_ARGS__ }, none }
#define Enum(name, ...) \
namespace name##Enum { enum name##Enum { __VA_ARGS__ }; } namespace name##Enum { enum name##Enum { __VA_ARGS__ }; }
#define CVarEnum(name, title, value, flags, none, values, ...)\ #define CVarEnum(name, title, value, flags, none, values, ...) \
CVarValues(name, title, value, flags, none, values);\ CVarValues(name, title, value, flags, none, values); \
Enum(name, __VA_ARGS__); Enum(name, __VA_ARGS__);
#define NONE 0 #define NONE 0
@@ -169,8 +167,7 @@ public:
#define DROPDOWN_CUSTOM (1 << 2) #define DROPDOWN_CUSTOM (1 << 2)
#define DROPDOWN_AUTOUPDATE (1 << 3) #define DROPDOWN_AUTOUPDATE (1 << 3)
namespace Vars NAMESPACE_BEGIN(Vars)
{
NAMESPACE_BEGIN(Menu) NAMESPACE_BEGIN(Menu)
CVar(CheatTitle, "Cheat title", std::string("Amalgam"), VISUAL | DROPDOWN_AUTOUPDATE); CVar(CheatTitle, "Cheat title", std::string("Amalgam"), VISUAL | DROPDOWN_AUTOUPDATE);
CVar(CheatTag, "Cheat tag", std::string("[Amalgam]"), VISUAL); CVar(CheatTag, "Cheat tag", std::string("[Amalgam]"), VISUAL);
@@ -196,13 +193,13 @@ namespace Vars
CVar(Scale, "Scale", 1.f, NOBIND | SLIDER_MIN | SLIDER_PRECISION | SLIDER_NOAUTOUPDATE, 0.75f, 2.f, 0.25f); CVar(Scale, "Scale", 1.f, NOBIND | SLIDER_MIN | SLIDER_PRECISION | SLIDER_NOAUTOUPDATE, 0.75f, 2.f, 0.25f);
CVar(CheapText, "Cheap text", false); CVar(CheapText, "Cheap text", false);
SUBNAMESPACE_BEGIN(Theme) NAMESPACE_BEGIN(Theme)
CVar(Accent, "Accent color", Color_t(175, 150, 255, 255), VISUAL); CVar(Accent, "Accent color", Color_t(175, 150, 255, 255), VISUAL);
CVar(Background, "Background color", Color_t(0, 0, 0, 250), VISUAL); CVar(Background, "Background color", Color_t(0, 0, 0, 250), VISUAL);
CVar(Active, "Active color", Color_t(255, 255, 255, 255), VISUAL); CVar(Active, "Active color", Color_t(255, 255, 255, 255), VISUAL);
CVar(Inactive, "Inactive color", Color_t(150, 150, 150, 255), VISUAL); CVar(Inactive, "Inactive color", Color_t(150, 150, 150, 255), VISUAL);
SUBNAMESPACE_END(Theme); NAMESPACE_END(Theme)
NAMESPACE_END(Menu); NAMESPACE_END(Menu)
NAMESPACE_BEGIN(Colors) NAMESPACE_BEGIN(Colors)
CVar(FOVCircle, "FOV circle color", Color_t(255, 255, 255, 100), VISUAL); CVar(FOVCircle, "FOV circle color", Color_t(255, 255, 255, 100), VISUAL);
@@ -253,10 +250,10 @@ namespace Vars
CVar(BoundHitboxFaceIgnoreZ, "Bound hitbox face ignore Z color", Color_t(255, 255, 255, 0), VISUAL); CVar(BoundHitboxFaceIgnoreZ, "Bound hitbox face ignore Z color", Color_t(255, 255, 255, 0), VISUAL);
CVar(SpellFootstep, "Spell footstep color", Color_t(255, 255, 255, 255), VISUAL); CVar(SpellFootstep, "Spell footstep color", Color_t(255, 255, 255, 255), VISUAL);
NAMESPACE_END(Colors); NAMESPACE_END(Colors)
NAMESPACE_BEGIN(Aimbot) NAMESPACE_BEGIN(Aimbot)
SUBNAMESPACE_BEGIN(General, Aimbot) NAMESPACE_BEGIN(General, Aimbot)
CVarEnum(AimType, "Aim type", 0, NONE, nullptr, CVarEnum(AimType, "Aim type", 0, NONE, nullptr,
VA_LIST("Off", "Plain", "Smooth", "Silent", "Locking", "Assistive"), VA_LIST("Off", "Plain", "Smooth", "Silent", "Locking", "Assistive"),
Off, Plain, Smooth, Silent, Locking, Assistive); Off, Plain, Smooth, Silent, Locking, Assistive);
@@ -286,9 +283,9 @@ namespace Vars
CVar(NoSpreadAverage, "No spread average", 5, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 25); CVar(NoSpreadAverage, "No spread average", 5, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 25);
CVar(NoSpreadInterval, "No spread interval", 0.1f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.05f, 5.f, 0.1f, "%gs"); CVar(NoSpreadInterval, "No spread interval", 0.1f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.05f, 5.f, 0.1f, "%gs");
CVar(NoSpreadBackupInterval, "No spread backup interval", 2.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 2.f, 10.f, 0.1f, "%gs"); CVar(NoSpreadBackupInterval, "No spread backup interval", 2.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 2.f, 10.f, 0.1f, "%gs");
SUBNAMESPACE_END(Global); NAMESPACE_END(Global)
SUBNAMESPACE_BEGIN(Hitscan) NAMESPACE_BEGIN(Hitscan)
CVarEnum(Hitboxes, VA_LIST("Hitboxes", "Hitscan hitboxes"), 0b000111, DROPDOWN_MULTI, nullptr, CVarEnum(Hitboxes, VA_LIST("Hitboxes", "Hitscan hitboxes"), 0b000111, DROPDOWN_MULTI, nullptr,
VA_LIST("Head", "Body", "Pelvis", "Arms", "Legs", "##Divider", "Bodyaim if lethal", "Headshot only"), VA_LIST("Head", "Body", "Pelvis", "Arms", "Legs", "##Divider", "Bodyaim if lethal", "Headshot only"),
Head = 1 << 0, Body = 1 << 1, Pelvis = 1 << 2, Arms = 1 << 3, Legs = 1 << 4, BodyaimIfLethal = 1 << 5, HeadshotOnly = 1 << 6); Head = 1 << 0, Body = 1 << 1, Pelvis = 1 << 2, Arms = 1 << 3, Legs = 1 << 4, BodyaimIfLethal = 1 << 5, HeadshotOnly = 1 << 6);
@@ -306,9 +303,9 @@ namespace Vars
CVar(PeekAmount, "Peek amount", 1, NOSAVE | DEBUGVAR, 0, 5); CVar(PeekAmount, "Peek amount", 1, NOSAVE | DEBUGVAR, 0, 5);
CVar(BoneSizeSubtract, "Bone size subtract", 1.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.f, 4.f, 0.25f); CVar(BoneSizeSubtract, "Bone size subtract", 1.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.f, 4.f, 0.25f);
CVar(BoneSizeMinimumScale, "Bone size minimum scale", 1.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP, 0.f, 1.f, 0.1f); CVar(BoneSizeMinimumScale, "Bone size minimum scale", 1.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP, 0.f, 1.f, 0.1f);
SUBNAMESPACE_END(HITSCAN); NAMESPACE_END(HITSCAN)
SUBNAMESPACE_BEGIN(Projectile) NAMESPACE_BEGIN(Projectile)
CVarEnum(StrafePrediction, VA_LIST("Predict", "Strafe prediction"), 0b11, DROPDOWN_MULTI, "Off", CVarEnum(StrafePrediction, VA_LIST("Predict", "Strafe prediction"), 0b11, DROPDOWN_MULTI, "Off",
VA_LIST("Air strafing", "Ground strafing"), VA_LIST("Air strafing", "Ground strafing"),
Air = 1 << 0, Ground = 1 << 1); Air = 1 << 0, Ground = 1 << 1);
@@ -387,9 +384,9 @@ namespace Vars
CVarEnum(MovesimFrictionFlags, "Movesim friction flags", 0b01, NOSAVE | DEBUGVAR | DROPDOWN_MULTI, nullptr, CVarEnum(MovesimFrictionFlags, "Movesim friction flags", 0b01, NOSAVE | DEBUGVAR | DROPDOWN_MULTI, nullptr,
VA_LIST("Run reduce", "Calculate increase"), VA_LIST("Run reduce", "Calculate increase"),
RunReduce = 1 << 0, CalculateIncrease = 1 << 1); RunReduce = 1 << 0, CalculateIncrease = 1 << 1);
SUBNAMESPACE_END(Projectile); NAMESPACE_END(Projectile)
SUBNAMESPACE_BEGIN(Melee) NAMESPACE_BEGIN(Melee)
CVar(AutoBackstab, "Auto backstab", true); CVar(AutoBackstab, "Auto backstab", true);
CVar(IgnoreRazorback, "Ignore razorback", true); CVar(IgnoreRazorback, "Ignore razorback", true);
CVar(SwingPrediction, "Swing prediction", false); CVar(SwingPrediction, "Swing prediction", false);
@@ -399,9 +396,9 @@ namespace Vars
CVar(SwingPredictLag, "Swing predict lag", true, NOSAVE | DEBUGVAR); CVar(SwingPredictLag, "Swing predict lag", true, NOSAVE | DEBUGVAR);
CVar(BackstabAccountPing, "Backstab account ping", true, NOSAVE | DEBUGVAR); CVar(BackstabAccountPing, "Backstab account ping", true, NOSAVE | DEBUGVAR);
CVar(BackstabDoubleTest, "Backstab double test", true, NOSAVE | DEBUGVAR); CVar(BackstabDoubleTest, "Backstab double test", true, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(Melee); NAMESPACE_END(Melee)
SUBNAMESPACE_BEGIN(Healing) NAMESPACE_BEGIN(Healing)
CVarEnum(HealPriority, "Heal Priority", 0, NONE, nullptr, CVarEnum(HealPriority, "Heal Priority", 0, NONE, nullptr,
VA_LIST("None", "Prioritize team", "Prioritize friends", "Friends only"), VA_LIST("None", "Prioritize team", "Prioritize friends", "Friends only"),
None, PrioritizeTeam, PrioritizeFriends, FriendsOnly); None, PrioritizeTeam, PrioritizeFriends, FriendsOnly);
@@ -416,14 +413,14 @@ namespace Vars
CVar(AutoVaccinatorBlastScale, "Auto vaccinator blast scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%"); CVar(AutoVaccinatorBlastScale, "Auto vaccinator blast scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%");
CVar(AutoVaccinatorFireScale, "Auto vaccinator fire scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%"); CVar(AutoVaccinatorFireScale, "Auto vaccinator fire scale", 100.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 200.f, 10.f, "%g%%");
CVar(AutoVaccinatorFlamethrowerDamageOnly, "Auto vaccinator flamethrower damage only", false, NOSAVE | DEBUGVAR); CVar(AutoVaccinatorFlamethrowerDamageOnly, "Auto vaccinator flamethrower damage only", false, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(Healing); NAMESPACE_END(Healing)
NAMESPACE_END(Aimbot); NAMESPACE_END(Aimbot)
NAMESPACE_BEGIN(CritHack, Crit Hack) NAMESPACE_BEGIN(CritHack, Crit Hack)
CVar(ForceCrits, "Force crits", false); CVar(ForceCrits, "Force crits", false);
CVar(AvoidRandomCrits, "Avoid random crits", false); CVar(AvoidRandomCrits, "Avoid random crits", false);
CVar(AlwaysMeleeCrit, "Always melee crit", false); CVar(AlwaysMeleeCrit, "Always melee crit", false);
NAMESPACE_END(CritHack); NAMESPACE_END(CritHack)
NAMESPACE_BEGIN(Backtrack) NAMESPACE_BEGIN(Backtrack)
CVar(Latency, "Fake latency", 0, SLIDER_CLAMP, 0, 1000, 5); CVar(Latency, "Fake latency", 0, SLIDER_CLAMP, 0, 1000, 5);
@@ -432,7 +429,7 @@ namespace Vars
CVar(PreferOnShot, "Prefer on shot", false); CVar(PreferOnShot, "Prefer on shot", false);
CVar(Offset, "Offset", 0, NOSAVE | DEBUGVAR, -1, 1); CVar(Offset, "Offset", 0, NOSAVE | DEBUGVAR, -1, 1);
NAMESPACE_END(Backtrack); NAMESPACE_END(Backtrack)
NAMESPACE_BEGIN(Doubletap) NAMESPACE_BEGIN(Doubletap)
CVar(Doubletap, "Doubletap", false); CVar(Doubletap, "Doubletap", false);
@@ -458,16 +455,16 @@ namespace Vars
CVar(RetainBlastJump, "Retain blastjump", false); CVar(RetainBlastJump, "Retain blastjump", false);
CVar(RetainSoldierOnly, "Retain blastjump soldier only", true, NOSAVE | DEBUGVAR); CVar(RetainSoldierOnly, "Retain blastjump soldier only", true, NOSAVE | DEBUGVAR);
NAMESPACE_END(FakeLag); NAMESPACE_END(FakeLag)
NAMESPACE_BEGIN(AutoPeek, Auto Peek) NAMESPACE_BEGIN(AutoPeek, Auto Peek)
CVar(Enabled, VA_LIST("Enabled", "Auto peek"), false); CVar(Enabled, VA_LIST("Enabled", "Auto peek"), false);
NAMESPACE_END(AutoPeek); NAMESPACE_END(AutoPeek)
NAMESPACE_BEGIN(Speedhack) NAMESPACE_BEGIN(Speedhack)
CVar(Enabled, VA_LIST("Enabled", "Speedhack enabled"), false); CVar(Enabled, VA_LIST("Enabled", "Speedhack enabled"), false);
CVar(Amount, VA_LIST("Amount", "SpeedHack amount"), 1, NONE, 1, 50); CVar(Amount, VA_LIST("Amount", "SpeedHack amount"), 1, NONE, 1, 50);
NAMESPACE_END(Speedhack); NAMESPACE_END(Speedhack)
NAMESPACE_BEGIN(AntiAim, Antiaim) NAMESPACE_BEGIN(AntiAim, Antiaim)
CVar(Enabled, VA_LIST("Enabled", "Antiaim enabled"), false); CVar(Enabled, VA_LIST("Enabled", "Antiaim enabled"), false);
@@ -495,7 +492,7 @@ namespace Vars
CVar(MinWalk, "Minwalk", true); CVar(MinWalk, "Minwalk", true);
CVar(AntiOverlap, "Anti-overlap", false); CVar(AntiOverlap, "Anti-overlap", false);
CVar(InvalidShootPitch, "Hide pitch on shot", false); CVar(InvalidShootPitch, "Hide pitch on shot", false);
NAMESPACE_END(AntiAim); NAMESPACE_END(AntiAim)
NAMESPACE_BEGIN(Resolver) NAMESPACE_BEGIN(Resolver)
CVar(Enabled, VA_LIST("Enabled", "Resolver enabled"), false); CVar(Enabled, VA_LIST("Enabled", "Resolver enabled"), false);
@@ -508,7 +505,7 @@ namespace Vars
CVar(CyclePitch, "Cycle pitch", 0.f, SLIDER_CLAMP, -180.f, 180.f, 90.f); CVar(CyclePitch, "Cycle pitch", 0.f, SLIDER_CLAMP, -180.f, 180.f, 90.f);
CVar(CycleView, "Cycle view", false); CVar(CycleView, "Cycle view", false);
CVar(CycleMinwalk, "Cycle minwalk", false); CVar(CycleMinwalk, "Cycle minwalk", false);
NAMESPACE_END(Resolver); NAMESPACE_END(Resolver)
NAMESPACE_BEGIN(CheaterDetection, Cheater Detection) NAMESPACE_BEGIN(CheaterDetection, Cheater Detection)
CVarEnum(Methods, "Detection methods", 0b0000, DROPDOWN_MULTI, nullptr, CVarEnum(Methods, "Detection methods", 0b0000, DROPDOWN_MULTI, nullptr,
@@ -518,14 +515,14 @@ namespace Vars
CVar(MinimumChoking, "Minimum choking", 20, SLIDER_MIN, 4, 22); CVar(MinimumChoking, "Minimum choking", 20, SLIDER_MIN, 4, 22);
CVar(MinimumFlick, "Minimum flick angle", 20.f, SLIDER_PRECISION, 10.f, 30.f); // min flick size to suspect CVar(MinimumFlick, "Minimum flick angle", 20.f, SLIDER_PRECISION, 10.f, 30.f); // min flick size to suspect
CVar(MaximumNoise, "Maximum flick noise", 1.f, SLIDER_PRECISION, 1.f, 10.f); // max difference between angles before and after flick CVar(MaximumNoise, "Maximum flick noise", 1.f, SLIDER_PRECISION, 1.f, 10.f); // max difference between angles before and after flick
NAMESPACE_END(CheaterDetection); NAMESPACE_END(CheaterDetection)
NAMESPACE_BEGIN(ESP) NAMESPACE_BEGIN(ESP)
CVarValues(ActiveGroups, "Active groups", int(0b11111111111111111111111111111111), VISUAL | DROPDOWN_MULTI | DROPDOWN_NOSANITIZATION, nullptr); CVarValues(ActiveGroups, "Active groups", int(0b11111111111111111111111111111111), VISUAL | DROPDOWN_MULTI | DROPDOWN_NOSANITIZATION, nullptr);
NAMESPACE_END(ESP); NAMESPACE_END(ESP)
NAMESPACE_BEGIN(Visuals) NAMESPACE_BEGIN(Visuals)
SUBNAMESPACE_BEGIN(UI) NAMESPACE_BEGIN(UI)
CVarEnum(StreamerMode, "Streamer mode", 0, VISUAL, nullptr, CVarEnum(StreamerMode, "Streamer mode", 0, VISUAL, nullptr,
VA_LIST("Off", "Local", "Friends", "Party", "All"), VA_LIST("Off", "Local", "Friends", "Party", "All"),
Off, Local, Friends, Party, All); Off, Local, Friends, Party, All);
@@ -539,9 +536,9 @@ namespace Vars
CVar(ScoreboardUtility, "Scoreboard utility", false); CVar(ScoreboardUtility, "Scoreboard utility", false);
CVar(ScoreboardColors, "Scoreboard colors", false, VISUAL); CVar(ScoreboardColors, "Scoreboard colors", false, VISUAL);
CVar(CleanScreenshots, "Clean screenshots", true); CVar(CleanScreenshots, "Clean screenshots", true);
SUBNAMESPACE_END(UI); NAMESPACE_END(UI)
SUBNAMESPACE_BEGIN(Thirdperson) NAMESPACE_BEGIN(Thirdperson)
CVar(Enabled, "Thirdperson", false, VISUAL); CVar(Enabled, "Thirdperson", false, VISUAL);
CVar(Crosshair, VA_LIST("Crosshair", "Thirdperson crosshair"), false, VISUAL); CVar(Crosshair, VA_LIST("Crosshair", "Thirdperson crosshair"), false, VISUAL);
CVar(Distance, "Thirdperson distance", 150.f, VISUAL | SLIDER_PRECISION, 0.f, 400.f, 10.f); CVar(Distance, "Thirdperson distance", 150.f, VISUAL | SLIDER_PRECISION, 0.f, 400.f, 10.f);
@@ -550,9 +547,9 @@ namespace Vars
CVar(Scale, "Thirdperson scales", true, NOSAVE | DEBUGVAR); CVar(Scale, "Thirdperson scales", true, NOSAVE | DEBUGVAR);
CVar(Collide, "Thirdperson collides", true, NOSAVE | DEBUGVAR); CVar(Collide, "Thirdperson collides", true, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(ThirdPerson); NAMESPACE_END(ThirdPerson)
SUBNAMESPACE_BEGIN(Removals) NAMESPACE_BEGIN(Removals)
CVar(Interpolation, VA_LIST("Interpolation", "Remove interpolation"), false); CVar(Interpolation, VA_LIST("Interpolation", "Remove interpolation"), false);
CVar(Lerp, VA_LIST("Lerp", "Remove lerp"), true); CVar(Lerp, VA_LIST("Lerp", "Remove lerp"), true);
CVar(Disguises, VA_LIST("Disguises", "Remove disguises"), false, VISUAL); CVar(Disguises, VA_LIST("Disguises", "Remove disguises"), false, VISUAL);
@@ -566,9 +563,9 @@ namespace Vars
CVar(Ragdolls, VA_LIST("Ragdolls", "Remove ragdoll"), false, VISUAL); CVar(Ragdolls, VA_LIST("Ragdolls", "Remove ragdoll"), false, VISUAL);
CVar(Gibs, VA_LIST("Gibs", "Remove gibs"), false, VISUAL); CVar(Gibs, VA_LIST("Gibs", "Remove gibs"), false, VISUAL);
CVar(MOTD, VA_LIST("MOTD", "Remove MOTD"), false, VISUAL); CVar(MOTD, VA_LIST("MOTD", "Remove MOTD"), false, VISUAL);
SUBNAMESPACE_END(Removals); NAMESPACE_END(Removals)
SUBNAMESPACE_BEGIN(Effects) NAMESPACE_BEGIN(Effects)
CVarValues(BulletTracer, "Bullet tracer", std::string("Default"), VISUAL | DROPDOWN_CUSTOM, nullptr, CVarValues(BulletTracer, "Bullet tracer", std::string("Default"), VISUAL | DROPDOWN_CUSTOM, nullptr,
"Default", "None", "Big nasty", "Distortion trail", "Machina", "Sniper rail", "Short circuit", "C.A.P.P.E.R", "Merasmus ZAP", "Merasmus ZAP 2", "Black ink", "Line", "Line ignore Z", "Beam"); "Default", "None", "Big nasty", "Distortion trail", "Machina", "Sniper rail", "Short circuit", "C.A.P.P.E.R", "Merasmus ZAP", "Merasmus ZAP 2", "Black ink", "Line", "Line ignore Z", "Beam");
CVarValues(CritTracer, "Crit tracer", std::string("Default"), VISUAL | DROPDOWN_CUSTOM, nullptr, CVarValues(CritTracer, "Crit tracer", std::string("Default"), VISUAL | DROPDOWN_CUSTOM, nullptr,
@@ -587,9 +584,9 @@ namespace Vars
Burning = 1 << 0, Electrocuted = 1 << 1, Ash = 1 << 2, Dissolve = 1 << 3, Gold = 1 << 4, Ice = 1 << 5); Burning = 1 << 0, Electrocuted = 1 << 1, Ash = 1 << 2, Dissolve = 1 << 3, Gold = 1 << 4, Ice = 1 << 5);
CVar(DrawIconsThroughWalls, "Draw icons through walls", false, VISUAL); CVar(DrawIconsThroughWalls, "Draw icons through walls", false, VISUAL);
CVar(DrawDamageNumbersThroughWalls, "Draw damage numbers through walls", false, VISUAL); CVar(DrawDamageNumbersThroughWalls, "Draw damage numbers through walls", false, VISUAL);
SUBNAMESPACE_END(Tracers); NAMESPACE_END(Tracers)
SUBNAMESPACE_BEGIN(Viewmodel) NAMESPACE_BEGIN(Viewmodel)
CVar(CrosshairAim, "Crosshair aim position", false, VISUAL); CVar(CrosshairAim, "Crosshair aim position", false, VISUAL);
CVar(ViewmodelAim, "Viewmodel aim position", false, VISUAL); CVar(ViewmodelAim, "Viewmodel aim position", false, VISUAL);
CVar(OffsetX, VA_LIST("Offset X", "Viewmodel offset X"), 0.f, VISUAL | SLIDER_PRECISION, -45.f, 45.f, 5.f); CVar(OffsetX, VA_LIST("Offset X", "Viewmodel offset X"), 0.f, VISUAL | SLIDER_PRECISION, -45.f, 45.f, 5.f);
@@ -600,9 +597,9 @@ namespace Vars
CVar(Roll, VA_LIST("Roll", "Viewmodel roll"), 0.f, VISUAL | SLIDER_CLAMP | SLIDER_PRECISION, -180.f, 180.f, 5.f); CVar(Roll, VA_LIST("Roll", "Viewmodel roll"), 0.f, VISUAL | SLIDER_CLAMP | SLIDER_PRECISION, -180.f, 180.f, 5.f);
CVar(SwayScale, VA_LIST("Sway scale", "Viewmodel sway scale"), 0.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 5.f, 0.5f); CVar(SwayScale, VA_LIST("Sway scale", "Viewmodel sway scale"), 0.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 5.f, 0.5f);
CVar(SwayInterp, VA_LIST("Sway interp", "Viewmodel sway interp"), 0.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 1.f, 0.1f); CVar(SwayInterp, VA_LIST("Sway interp", "Viewmodel sway interp"), 0.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 1.f, 0.1f);
SUBNAMESPACE_END(Viewmodel); NAMESPACE_END(Viewmodel)
SUBNAMESPACE_BEGIN(World) NAMESPACE_BEGIN(World)
CVarEnum(Modulations, "Modulations", 0b00000, VISUAL | DROPDOWN_MULTI, nullptr, CVarEnum(Modulations, "Modulations", 0b00000, VISUAL | DROPDOWN_MULTI, nullptr,
VA_LIST("World", "Sky", "Prop", "Particle", "Fog"), VA_LIST("World", "Sky", "Prop", "Particle", "Fog"),
World = 1 << 0, Sky = 1 << 1, Prop = 1 << 2, Particle = 1 << 3, Fog = 1 << 4); World = 1 << 0, Sky = 1 << 1, Prop = 1 << 2, Particle = 1 << 3, Fog = 1 << 4);
@@ -612,9 +609,9 @@ namespace Vars
"Default", "Dev", "Camo", "Black", "White", "Gray", "Flat"); "Default", "Dev", "Camo", "Black", "White", "Gray", "Flat");
CVar(NearPropFade, "Near prop fade", false, VISUAL); CVar(NearPropFade, "Near prop fade", false, VISUAL);
CVar(NoPropFade, "No prop fade", false, VISUAL); CVar(NoPropFade, "No prop fade", false, VISUAL);
SUBNAMESPACE_END(World); NAMESPACE_END(World)
SUBNAMESPACE_BEGIN(Beams) // as of now, these will stay out of the menu NAMESPACE_BEGIN(Beams) // as of now, these will stay out of the menu
CVar(Model, "Model", std::string("sprites/physbeam.vmt"), VISUAL); CVar(Model, "Model", std::string("sprites/physbeam.vmt"), VISUAL);
CVar(Life, "Life", 2.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f); CVar(Life, "Life", 2.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
CVar(Width, "Width", 2.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f); CVar(Width, "Width", 2.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
@@ -628,14 +625,14 @@ namespace Vars
CVarEnum(Flags, "Flags", 0b10000000100000000, VISUAL | DROPDOWN_MULTI, nullptr, CVarEnum(Flags, "Flags", 0b10000000100000000, VISUAL | DROPDOWN_MULTI, nullptr,
VA_LIST("Start entity", "End entity", "Fade in", "Fade out", "Sine noise", "Solid", "Shade in", "Shade out", "Only noise once", "No tile", "Use hitboxes", "Start visible", "End visible", "Is active", "Forever", "Halobeam", "Reverse"), VA_LIST("Start entity", "End entity", "Fade in", "Fade out", "Sine noise", "Solid", "Shade in", "Shade out", "Only noise once", "No tile", "Use hitboxes", "Start visible", "End visible", "Is active", "Forever", "Halobeam", "Reverse"),
StartEntity = 1 << 0, EndEntity = 1 << 1, FadeIn = 1 << 2, FadeOut = 1 << 3, SineNoise = 1 << 4, Solid = 1 << 5, ShadeIn = 1 << 6, ShadeOut = 1 << 7, OnlyNoiseOnce = 1 << 8, NoTile = 1 << 9, UseHitboxes = 1 << 10, StartVisible = 1 << 11, EndVisible = 1 << 12, IsActive = 1 << 13, Forever = 1 << 14, Halobeam = 1 << 15, Reverse = 1 << 16); StartEntity = 1 << 0, EndEntity = 1 << 1, FadeIn = 1 << 2, FadeOut = 1 << 3, SineNoise = 1 << 4, Solid = 1 << 5, ShadeIn = 1 << 6, ShadeOut = 1 << 7, OnlyNoiseOnce = 1 << 8, NoTile = 1 << 9, UseHitboxes = 1 << 10, StartVisible = 1 << 11, EndVisible = 1 << 12, IsActive = 1 << 13, Forever = 1 << 14, Halobeam = 1 << 15, Reverse = 1 << 16);
SUBNAMESPACE_END(Beams); NAMESPACE_END(Beams)
SUBNAMESPACE_BEGIN(Line) NAMESPACE_BEGIN(Line)
CVar(Enabled, "Line tracers", false, VISUAL); CVar(Enabled, "Line tracers", false, VISUAL);
CVar(DrawDuration, VA_LIST("Draw duration", "Line draw duration"), 5.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f); CVar(DrawDuration, VA_LIST("Draw duration", "Line draw duration"), 5.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
SUBNAMESPACE_END(Line); NAMESPACE_END(Line)
SUBNAMESPACE_BEGIN(Hitbox) NAMESPACE_BEGIN(Hitbox)
CVarEnum(BonesEnabled, VA_LIST("Bones enabled", "Hitbox bones enabled"), 0b00, VISUAL | DROPDOWN_MULTI, "Off", CVarEnum(BonesEnabled, VA_LIST("Bones enabled", "Hitbox bones enabled"), 0b00, VISUAL | DROPDOWN_MULTI, "Off",
VA_LIST("On shot", "On hit"), VA_LIST("On shot", "On hit"),
OnShot = 1 << 0, OnHit = 1 << 1); OnShot = 1 << 0, OnHit = 1 << 1);
@@ -643,9 +640,9 @@ namespace Vars
VA_LIST("On shot", "On hit", "Aim point"), VA_LIST("On shot", "On hit", "Aim point"),
OnShot = 1 << 0, OnHit = 1 << 1, AimPoint = 1 << 2); OnShot = 1 << 0, OnHit = 1 << 1, AimPoint = 1 << 2);
CVar(DrawDuration, VA_LIST("Draw duration", "Hitbox draw duration"), 5.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f); CVar(DrawDuration, VA_LIST("Draw duration", "Hitbox draw duration"), 5.f, VISUAL | SLIDER_MIN | SLIDER_PRECISION, 0.f, 10.f);
SUBNAMESPACE_END(Hitbox); NAMESPACE_END(Hitbox)
SUBNAMESPACE_BEGIN(Simulation) NAMESPACE_BEGIN(Simulation)
Enum(Style, Off, Line, Separators, Spaced, Arrows, Boxes); Enum(Style, Off, Line, Separators, Spaced, Arrows, Boxes);
CVarValues(PlayerPath, "Player path", 0, VISUAL, nullptr, CVarValues(PlayerPath, "Player path", 0, VISUAL, nullptr,
"Off", "Line", "Separators", "Spaced", "Arrows", "Boxes"); "Off", "Line", "Separators", "Spaced", "Arrows", "Boxes");
@@ -670,9 +667,9 @@ namespace Vars
"Off", "Line", "Separators", "Spaced", "Arrows", "Boxes"); "Off", "Line", "Separators", "Spaced", "Arrows", "Boxes");
CVar(SeparatorSpacing, "Separator spacing", 4, NOSAVE | DEBUGVAR, 1, 16); CVar(SeparatorSpacing, "Separator spacing", 4, NOSAVE | DEBUGVAR, 1, 16);
CVar(SeparatorLength, "Separator length", 12.f, NOSAVE | DEBUGVAR, 2.f, 16.f); CVar(SeparatorLength, "Separator length", 12.f, NOSAVE | DEBUGVAR, 2.f, 16.f);
SUBNAMESPACE_END(Simulation); NAMESPACE_END(Simulation)
SUBNAMESPACE_BEGIN(Trajectory) NAMESPACE_BEGIN(Trajectory)
CVar(Override, "Simulation override", false, NOSAVE | DEBUGVAR); CVar(Override, "Simulation override", false, NOSAVE | DEBUGVAR);
CVar(OffsetX, "Offset X", 16.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -25.f, 25.f, 0.5f); CVar(OffsetX, "Offset X", 16.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -25.f, 25.f, 0.5f);
CVar(OffsetY, "Offset Y", 8.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -25.f, 25.f, 0.5f); CVar(OffsetY, "Offset Y", 8.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -25.f, 25.f, 0.5f);
@@ -695,11 +692,11 @@ namespace Vars
CVar(AngularDragZ, "Angular drag Z", 0.001514f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, 0.f, 0.1f, 0.01f, "%.15g"); CVar(AngularDragZ, "Angular drag Z", 0.001514f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, 0.f, 0.1f, 0.01f, "%.15g");
CVar(MaxVelocity, "Max velocity", 2000.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 4000.f, 50.f); CVar(MaxVelocity, "Max velocity", 2000.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 4000.f, 50.f);
CVar(MaxAngularVelocity, "Max angular velocity", 3600.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 7200.f, 50.f); CVar(MaxAngularVelocity, "Max angular velocity", 3600.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, 0.f, 7200.f, 50.f);
SUBNAMESPACE_END(ProjectileTrajectory); NAMESPACE_END(ProjectileTrajectory)
NAMESPACE_END(Visuals); NAMESPACE_END(Visuals)
NAMESPACE_BEGIN(Misc) NAMESPACE_BEGIN(Misc)
SUBNAMESPACE_BEGIN(Movement) NAMESPACE_BEGIN(Movement)
CVarEnum(AutoStrafe, "Auto strafe", 0, NONE, nullptr, CVarEnum(AutoStrafe, "Auto strafe", 0, NONE, nullptr,
VA_LIST("Off", "Legit", "Directional"), VA_LIST("Off", "Legit", "Directional"),
Off, Legit, Directional); Off, Legit, Directional);
@@ -724,9 +721,9 @@ namespace Vars
CVar(AutoRocketJumpSkipAir, "Skip air", 1, NOSAVE | DEBUGVAR, 0, 3); CVar(AutoRocketJumpSkipAir, "Skip air", 1, NOSAVE | DEBUGVAR, 0, 3);
CVar(AutoRocketJumpTimingOffset, "Timing offset", 0, NOSAVE | DEBUGVAR, 0, 3); CVar(AutoRocketJumpTimingOffset, "Timing offset", 0, NOSAVE | DEBUGVAR, 0, 3);
CVar(AutoRocketJumpApplyAbove, "Apply offset above", 0, NOSAVE | DEBUGVAR, 0, 10); CVar(AutoRocketJumpApplyAbove, "Apply offset above", 0, NOSAVE | DEBUGVAR, 0, 10);
SUBNAMESPACE_END(Movement); NAMESPACE_END(Movement)
SUBNAMESPACE_BEGIN(Automation) NAMESPACE_BEGIN(Automation)
CVarEnum(AntiBackstab, "Anti-backstab", 0, NONE, nullptr, CVarEnum(AntiBackstab, "Anti-backstab", 0, NONE, nullptr,
VA_LIST("Off", "Yaw", "Pitch", "Fake"), VA_LIST("Off", "Yaw", "Pitch", "Fake"),
Off, Yaw, Pitch, Fake); Off, Yaw, Pitch, Fake);
@@ -737,9 +734,9 @@ namespace Vars
CVar(AutoF2Ignored, "Auto F2 ignored", false); CVar(AutoF2Ignored, "Auto F2 ignored", false);
CVar(AutoF1Priority, "Auto F1 priority", false); CVar(AutoF1Priority, "Auto F1 priority", false);
CVar(AcceptItemDrops, "Auto accept item drops", false); CVar(AcceptItemDrops, "Auto accept item drops", false);
SUBNAMESPACE_END(Automation); NAMESPACE_END(Automation)
SUBNAMESPACE_BEGIN(Exploits) NAMESPACE_BEGIN(Exploits)
CVar(PureBypass, "Pure bypass", false); CVar(PureBypass, "Pure bypass", false);
CVar(CheatsBypass, "Cheats bypass", false); CVar(CheatsBypass, "Cheats bypass", false);
CVar(EquipRegionUnlock, "Equip region unlock", false); CVar(EquipRegionUnlock, "Equip region unlock", false);
@@ -747,18 +744,18 @@ namespace Vars
CVar(NoisemakerSpam, "Noisemaker spam", false); CVar(NoisemakerSpam, "Noisemaker spam", false);
CVar(PingReducer, "Ping reducer", false); CVar(PingReducer, "Ping reducer", false);
CVar(PingTarget, "cl_cmdrate", 1, SLIDER_CLAMP, 1, 66); CVar(PingTarget, "cl_cmdrate", 1, SLIDER_CLAMP, 1, 66);
SUBNAMESPACE_END(Exploits); NAMESPACE_END(Exploits)
SUBNAMESPACE_BEGIN(Game) NAMESPACE_BEGIN(Game)
CVar(AntiCheatCompatibility, "Anti-cheat compatibility", false); CVar(AntiCheatCompatibility, "Anti-cheat compatibility", false);
CVar(F2PChatBypass, "F2P chat bypass", false); CVar(F2PChatBypass, "F2P chat bypass", false);
CVar(NetworkFix, "Network fix", false); CVar(NetworkFix, "Network fix", false);
CVar(SetupBonesOptimization, "Bones optimization", false); CVar(SetupBonesOptimization, "Bones optimization", false);
CVar(AntiCheatCritHack, "Anti-cheat crit hack", false, NOSAVE | DEBUGVAR); CVar(AntiCheatCritHack, "Anti-cheat crit hack", false, NOSAVE | DEBUGVAR);
SUBNAMESPACE_END(Game); NAMESPACE_END(Game)
SUBNAMESPACE_BEGIN(Queueing) NAMESPACE_BEGIN(Queueing)
CVarEnum(ForceRegions, "Force regions", 0b0, DROPDOWN_MULTI, nullptr, // i'm not sure all of these are actually used for tf2 servers CVarEnum(ForceRegions, "Force regions", 0b0, DROPDOWN_MULTI, nullptr, // i'm not sure all of these are actually used for tf2 servers
VA_LIST("Atlanta", "Chicago", "Dallas", "Los Angeles", "Seattle", "Virginia", "##Divider", "Amsterdam", "Falkenstein", "Frankfurt", "Helsinki", "London", "Madrid", "Paris", "Stockholm", "Vienna", "Warsaw", "##Divider", "Buenos Aires", "Lima", "Santiago", "Sao Paulo", "##Divider", "Chennai", "Dubai", "Hong Kong", "Mumbai", "Seoul", "Singapore", "Tokyo", "##Divider", "Sydney", "##Divider", "Johannesburg"), VA_LIST("Atlanta", "Chicago", "Dallas", "Los Angeles", "Seattle", "Virginia", "##Divider", "Amsterdam", "Falkenstein", "Frankfurt", "Helsinki", "London", "Madrid", "Paris", "Stockholm", "Vienna", "Warsaw", "##Divider", "Buenos Aires", "Lima", "Santiago", "Sao Paulo", "##Divider", "Chennai", "Dubai", "Hong Kong", "Mumbai", "Seoul", "Singapore", "Tokyo", "##Divider", "Sydney", "##Divider", "Johannesburg"),
// North America // North America
@@ -799,23 +796,23 @@ namespace Vars
); );
CVar(FreezeQueue, "Freeze queue", false); CVar(FreezeQueue, "Freeze queue", false);
CVar(AutoCasualQueue, "Auto casual queue", false); CVar(AutoCasualQueue, "Auto casual queue", false);
SUBNAMESPACE_END(Queueing); NAMESPACE_END(Queueing)
SUBNAMESPACE_BEGIN(MannVsMachine, Mann vs. Machine) NAMESPACE_BEGIN(MannVsMachine, Mann vs. Machine)
CVar(InstantRespawn, "Instant respawn", false); CVar(InstantRespawn, "Instant respawn", false);
CVar(InstantRevive, "Instant revive", false); CVar(InstantRevive, "Instant revive", false);
CVar(AllowInspect, "Allow inspect", false); CVar(AllowInspect, "Allow inspect", false);
SUBNAMESPACE_END(Sound); NAMESPACE_END(Sound)
SUBNAMESPACE_BEGIN(Sound) NAMESPACE_BEGIN(Sound)
CVarEnum(Block, VA_LIST("Block", "Sound block"), 0b0000, DROPDOWN_MULTI, nullptr, CVarEnum(Block, VA_LIST("Block", "Sound block"), 0b0000, DROPDOWN_MULTI, nullptr,
VA_LIST("Footsteps", "Noisemaker", "Frying pan", "Water"), VA_LIST("Footsteps", "Noisemaker", "Frying pan", "Water"),
Footsteps = 1 << 0, Noisemaker = 1 << 1, FryingPan = 1 << 2, Water = 1 << 3); Footsteps = 1 << 0, Noisemaker = 1 << 1, FryingPan = 1 << 2, Water = 1 << 3);
CVar(HitsoundAlways, "Hitsound always", false); CVar(HitsoundAlways, "Hitsound always", false);
CVar(RemoveDSP, "Remove DSP", false); CVar(RemoveDSP, "Remove DSP", false);
CVar(GiantWeaponSounds, "Giant weapon sounds", false); CVar(GiantWeaponSounds, "Giant weapon sounds", false);
SUBNAMESPACE_END(Sound); NAMESPACE_END(Sound)
NAMESPACE_END(Misc); NAMESPACE_END(Misc)
NAMESPACE_BEGIN(Logging) NAMESPACE_BEGIN(Logging)
CVarEnum(Logs, "Logs", 0b0000011, DROPDOWN_MULTI, "Off", CVarEnum(Logs, "Logs", 0b0000011, DROPDOWN_MULTI, "Off",
@@ -827,46 +824,46 @@ namespace Vars
TopLeft, TopRight, BottomLeft, BottomRight); TopLeft, TopRight, BottomLeft, BottomRight);
CVar(Lifetime, "Notification time", 5.f, VISUAL, 0.5f, 5.f, 0.5f); CVar(Lifetime, "Notification time", 5.f, VISUAL, 0.5f, 5.f, 0.5f);
SUBNAMESPACE_BEGIN(VoteStart, Logging) NAMESPACE_BEGIN(VoteStart, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Vote start log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Vote start log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(VoteStart); NAMESPACE_END(VoteStart)
SUBNAMESPACE_BEGIN(VoteCast, Logging) NAMESPACE_BEGIN(VoteCast, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Vote cast log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Vote cast log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(VoteCast); NAMESPACE_END(VoteCast)
SUBNAMESPACE_BEGIN(ClassChange, Logging) NAMESPACE_BEGIN(ClassChange, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Class change log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Class change log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(ClassChange); NAMESPACE_END(ClassChange)
SUBNAMESPACE_BEGIN(Damage, Logging) NAMESPACE_BEGIN(Damage, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Damage log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Damage log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Damage); NAMESPACE_END(Damage)
SUBNAMESPACE_BEGIN(CheatDetection, Logging) NAMESPACE_BEGIN(CheatDetection, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Cheat detection log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Cheat detection log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(CheatDetection); NAMESPACE_END(CheatDetection)
SUBNAMESPACE_BEGIN(Tags, Logging) NAMESPACE_BEGIN(Tags, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Tags log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Tags log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Tags); NAMESPACE_END(Tags)
SUBNAMESPACE_BEGIN(Aliases, Logging) NAMESPACE_BEGIN(Aliases, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Aliases log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Aliases log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Aliases); NAMESPACE_END(Aliases)
SUBNAMESPACE_BEGIN(Resolver, Logging) NAMESPACE_BEGIN(Resolver, Logging)
CVarValues(LogTo, VA_LIST("Log to", "Resolver log to"), 0b000001, DROPDOWN_MULTI, nullptr, CVarValues(LogTo, VA_LIST("Log to", "Resolver log to"), 0b000001, DROPDOWN_MULTI, nullptr,
"Toasts", "Chat", "Party", "Console", "Menu", "Debug"); "Toasts", "Chat", "Party", "Console", "Menu", "Debug");
SUBNAMESPACE_END(Resolver); NAMESPACE_END(Resolver)
NAMESPACE_END(Logging); NAMESPACE_END(Logging)
NAMESPACE_BEGIN(Debug) NAMESPACE_BEGIN(Debug)
CVar(Info, "Debug info", false, NOSAVE); CVar(Info, "Debug info", false, NOSAVE);
@@ -879,6 +876,5 @@ namespace Vars
CVar(VisualizeTraces, "Visualize traces", false, NOSAVE); CVar(VisualizeTraces, "Visualize traces", false, NOSAVE);
CVar(VisualizeTraceHits, "Visualize trace hits", false, NOSAVE); CVar(VisualizeTraceHits, "Visualize trace hits", false, NOSAVE);
#endif #endif
NAMESPACE_END(Debug); NAMESPACE_END(Debug)
NAMESPACE_END(Vars)
}