Вопрос ConVar

Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
Нашел класс Конвар в дайлибах(engine2), и типа имею понятие как её юзнуть:
C++:
class CONVAR
{
public:
 много войдов
 void SetValue(int) //22
}

CONVAR* svcheats; /// И как мне сделать, так чтобы этот указатель указывал на адрес значения sv_cheats( поиск сигнатурой глупый вариант так как придется вечно обновлять её, есть ведь способ как-то через итерацию сделать?)
1648119014364.png1648119383698.png
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
Пожалуйста, авторизуйтесь для просмотра ссылки.
export
class ICvar : public VClass
{
public:
static auto Create()
{
static ICvar* ptr = CreateInterface<ICvar*>("tier0.dll", "VEngineCvar");
return ptr;
}
...
 
Shitcode lord 💩
Забаненный
Статус
Оффлайн
Регистрация
25 Ноя 2020
Сообщения
272
Реакции[?]
84
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я же вроде уже писал, что с ними делать. В твоей же теме.
Берешь интерфейс VEngineCvar007 из tier0.dll. Это класс ICvar.

C++:
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 есть примеры кода.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
28 Июн 2022
Сообщения
15
Реакции[?]
1
Поинты[?]
1K
Я же вроде уже писал, что с ними делать. В твоей же теме.
Берешь интерфейс VEngineCvar007 из tier0.dll. Это класс ICvar.

C++:
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 есть примеры кода.

did ICVar vtable changed in the update 7.32b? its crashing my game

C++:
class ICvar {
public:
    ConCommandBase* FindCommandBase(char const* convar) {
        typedef ConCommandBase* (*Fn)(void*, char const*);
        return Memory::GetVFunc<Fn>(this, 16)(this, convar); // 16 функа в виртуалке
    }
};

ICvar* cvar = (ICvar*)GetInterface("tier0.dll", "VEngineCvar007");
ConCommandBase* sv_cheats = cvar->FindCommandBase("sv_cheats");
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
did ICVar vtable changed in the update 7.32b? its crashing my game

C++:
class ICvar {
public:
    ConCommandBase* FindCommandBase(char const* convar) {
        typedef ConCommandBase* (*Fn)(void*, char const*);
        return Memory::GetVFunc<Fn>(this, 16)(this, convar); // 16 функа в виртуалке
    }
};

ICvar* cvar = (ICvar*)GetInterface("tier0.dll", "VEngineCvar007");
ConCommandBase* sv_cheats = cvar->FindCommandBase("sv_cheats");
concommands and convars have been completely reworked.
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
Thank you so much , I'll wait <3
 
Сверху Снизу