Я же вроде уже писал, что с ними делать. В твоей же теме.
Берешь интерфейс VEngineCvar007 из tier0.dll. Это класс ICvar.
class ConCommandBase {
public:
virtual void DESTROY1() = 0;
virtual void unk() = 0;
virtual bool IsCommand(void) = 0;
virtual bool IsBoundedVar(void) = 0;
virtual bool IsFlagSet(long long) = 0;
virtual void AddFlags(long long) = 0;
virtual void RemoveFlags(long long) = 0;
virtual long long GetFlags(void) = 0;
virtual const char* GetName(void) = 0;
virtual const char* GetHelpText(void) = 0;
virtual bool IsRegistered(void) = 0;
virtual void* GetDLLIdentifier(void) = 0;
virtual void Create(char const*, char const*, long long) = 0;
virtual void Init(void) = 0;
virtual const char* GetBaseName(void) = 0;
virtual int GetSplitScreenPlayerSlot(void) = 0;
virtual void SetValue(char const*) = 0; // 16
virtual void SetValue(float) = 0; // 17
virtual void SetValue(int) = 0; // 18
virtual void SetValue(ColorRGBA) = 0;
virtual float GetFloat(void) = 0;
virtual int GetInt(void) = 0;
virtual bool GetBool(void) = 0;
virtual void InternalSetValue(char const*) = 0;
virtual void InternalSetFloatValue(float) = 0;
virtual void InternalSetIntValue(int) = 0;
virtual void InternalSetColorValue(ColorRGBA) = 0;
virtual void ClampValue(float&) = 0;
virtual void ChangeStringValue(char const*, float) = 0;
virtual void Create() = 0;
};
class ICvar {
public:
ConCommandBase* FindCommandBase(char const* convar) {
typedef ConCommandBase* (*Fn)(void*, char const*);
return Memory::GetVFunc<Fn>(this, 16)(this, convar); // 16 функа в виртуалке
}
};
inline class ConVars {
public:
void FindConVars();
void SetConVars();
ConCommandBase* sv_cheats;
ConCommandBase* dota_camera_distance;
ConCommandBase* r_farz;
ConCommandBase* fog_enable;
ConCommandBase* fow_client_nofiltering;
ConCommandBase* cl_weather;
} CVars;
void ConVars::FindConVars() {
const auto& cvar = vmt.cvar;
this->sv_cheats = cvar->FindCommandBase("sv_cheats");
this->dota_camera_distance = cvar->FindCommandBase("dota_camera_distance");
this->r_farz = cvar->FindCommandBase("r_farz");
this->fog_enable = cvar->FindCommandBase("fog_enable");
this->fow_client_nofiltering = cvar->FindCommandBase("fow_client_nofiltering");
this->cl_weather = cvar->FindCommandBase("cl_weather");
}
void ConVars::SetConVars() {
this->sv_cheats->SetValue(1);
this->dota_camera_distance->SetValue(Config::camera.camera_distance);
this->r_farz->SetValue(Config::camera.camera_distance * 2);
this->fog_enable->SetValue(!Config::camera.fog_enable);
this->fow_client_nofiltering->SetValue(Config::camera.fow_client_nofiltering);
this->cl_weather->SetValue(Config::camera.cl_weather);
}
Но это всё фигня детская, конечно. Конвары нужны разве что для камеры\тумана и прочей хрени.
А их лучше через хук делать. У lwss есть примеры кода.