Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос Как пофиксить мерцание модельки в начале раунда?

это потому, что вы используете другой код thirdperson (вы используете код, который не вызывает "thirdperson" в качестве консольной команды), поэтому UpdateVisibilityAllEntities не будет вызван, поскольку sv_cheats не включен, игры вынуждают вас от первого лица, но ваш чит также заставляет третье лицо, что делает вещи иначе UpdateVisibilityAllEntities не будет работать. поэтому для этого вам нужно использовать sv_cheats 1 или вы можете подключить sv_cheats, а затем проверить, является ли returnaddress CamThink. несколько примеров кода:

hooked_cvars.cpp:
C++:
Expand Collapse Copy
bool __fastcall hooks::hooked_sv_cheats(ICvar* ecx, void* edx)
{
    // since i can't figure out on how to fix UpdateVisibilityAllEntities to work ( it's crashing. ) maybe i'll just hook it with cam_think as if it was the return address to this.
    static auto original_fn = sv_cheats_hook->get_func_address <sv_cheats_t>(13);
    static const auto return_fn = util::FindSignature("client.dll", "85 C0 75 30 38 86");

    if (_ReturnAddress() == (void*)return_fn)
        return true;

    return original_fn(ecx);
}

main.cpp:
C++:
Expand Collapse Copy
    static const auto sv_cheats = m_cvar()->FindVar(crypt_str("sv_cheats"));
    hooks::sv_cheats_hook = new vmthook(reinterpret_cast<DWORD**>(sv_cheats));
    hooks::sv_cheats_hook->hook_function(reinterpret_cast<uintptr_t>(hooks::hooked_sv_cheats), 13);  //-V107 //-V221
 
это потому, что вы используете другой код thirdperson (вы используете код, который не вызывает "thirdperson" в качестве консольной команды), поэтому UpdateVisibilityAllEntities не будет вызван, поскольку sv_cheats не включен, игры вынуждают вас от первого лица, но ваш чит также заставляет третье лицо, что делает вещи иначе UpdateVisibilityAllEntities не будет работать. поэтому для этого вам нужно использовать sv_cheats 1 или вы можете подключить sv_cheats, а затем проверить, является ли returnaddress CamThink. несколько примеров кода:

hooked_cvars.cpp:
C++:
Expand Collapse Copy
bool __fastcall hooks::hooked_sv_cheats(ICvar* ecx, void* edx)
{
    // since i can't figure out on how to fix UpdateVisibilityAllEntities to work ( it's crashing. ) maybe i'll just hook it with cam_think as if it was the return address to this.
    static auto original_fn = sv_cheats_hook->get_func_address <sv_cheats_t>(13);
    static const auto return_fn = util::FindSignature("client.dll", "85 C0 75 30 38 86");

    if (_ReturnAddress() == (void*)return_fn)
        return true;

    return original_fn(ecx);
}

main.cpp:
C++:
Expand Collapse Copy
    static const auto sv_cheats = m_cvar()->FindVar(crypt_str("sv_cheats"));
    hooks::sv_cheats_hook = new vmthook(reinterpret_cast<DWORD**>(sv_cheats));
    hooks::sv_cheats_hook->hook_function(reinterpret_cast<uintptr_t>(hooks::hooked_sv_cheats), 13);  //-V107 //-V221
Это можно использывать как Unlock hidden cvars?
 
Это можно использывать как Unlock hidden cvars?
совсем другое дело. вы подключаете cvar для изменения значения, когда вы находитесь в особом состоянии, используя return_address, а затем создаете резервную копию значения, снова вызывая функцию, или вы можете подключить ее и просто изменить номер. для Unlock Hidden Cvars кода:

C++:
Expand Collapse Copy
void misc::unlockhiddenconvars()
{
    auto p = **reinterpret_cast<ConCommandBase***>(reinterpret_cast<DWORD>(m_cvar()) + 0x34);

    for (auto c = p->m_pNext; c != nullptr; c = c->m_pNext) {
        c->m_nFlags &= ~FCVAR_DEVELOPMENTONLY; // FCVAR_DEVELOPMENTONLY
        c->m_nFlags &= ~FCVAR_HIDDEN; // FCVAR_HIDDEN
    }
}
 
whats the code for sv_cheats_t?
Edit: its on hooks.hpp
typedef long (__ stdcall * sv_cheats_t) (ICvar *);
 
Последнее редактирование:
Назад
Сверху Снизу