Fake animstate

:roflanBuldiga:
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
3 Апр 2019
Сообщения
429
Реакции
117
при включении ебучих десинк чамсов краш,дэбаг указывает на эту строчку
m_fake_state = static_cast<CCSGOPlayerAnimState*> (g_pMemalloc->Alloc(sizeof(CCSGOPlayerAnimState)));

Вызвано исключение: нарушение доступа для чтения.
g_pMemalloc было nullptr.

код фейк анимстейта
C++:
Expand Collapse Copy
void StateFake::manage_local_fake_animstate()
{
    if (!g_pEngine->IsInGame() || !g_pEngine->IsConnected() || Globals::pCmd == nullptr)
        return;

    if (!Globals::LocalPlayer || !Globals::LocalPlayer->IsAlive())
        return;

    if (!c_config::get().desync_chams)
        return;

    if (m_fake_spawntime != Globals::LocalPlayer->SpawnTime() || m_should_update_fake)
    {
        init_fake_anim = false;
        m_fake_spawntime = Globals::LocalPlayer->SpawnTime();
        m_should_update_fake = false;
    }

    if (!init_fake_anim)
    {
        m_fake_state = static_cast<CCSGOPlayerAnimState*> (g_pMemalloc->Alloc(sizeof(CCSGOPlayerAnimState)));  ///

        if (m_fake_state != nullptr)
            CreateAnimationState(m_fake_state);

        init_fake_anim = true;
    }
    float frametime = g_pGlobalVars->frametime;

    if (Globals::bSendPacket)
    {
        std::array<AnimationLayer, 13> networked_layers;
        std::memcpy(&networked_layers, Globals::LocalPlayer->AnimOverlays(), sizeof(AnimationLayer) * 13);

        auto backup_abs_angles = Globals::LocalPlayer->GetAbsAngles();
        auto backup_poses = Globals::LocalPlayer->PoseParam();
        if (Globals::LocalPlayer->FlagsGet() & FL_ONGROUND)
            Globals::LocalPlayer->FlagsGet() |= FL_ONGROUND;
        else
        {
            if (Globals::LocalPlayer->AnimOverlays()[4].m_flWeight != 1.f && Globals::LocalPlayer->AnimOverlays()[5].m_flWeight != 0.f)
                Globals::LocalPlayer->FlagsGet() |= FL_ONGROUND;

            if (Globals::LocalPlayer->FlagsGet() & FL_ONGROUND)
                Globals::LocalPlayer->FlagsGet() &= ~FL_ONGROUND;
        }

        *reinterpret_cast<int*>(Globals::LocalPlayer + 0xA68) = g_pGlobalVars->frametime;
        g_pGlobalVars->frametime = 23.91753135f;

        update_Fake_state(m_fake_state, Globals::pCmd->viewangles);
        Globals::should_setup_local_bones = true;
        m_got_fake_matrix = Globals::LocalPlayer->SetupBones(Globals::fakematrix, 128, 524032 - 66666, false);
        const auto org_tmp = Globals::LocalPlayer->GetRenderOrigin();
        if (m_got_fake_matrix)
        {
            for (auto& i : Globals::fakematrix)
            {
                i[0][3] -= org_tmp.x;
                i[1][3] -= org_tmp.y;
                i[2][3] -= org_tmp.z;
            }
        }
        std::memcpy(Globals::LocalPlayer->AnimOverlays(), &networked_layers, sizeof(AnimationLayer) * 13);

        Globals::LocalPlayer->PoseParam() = backup_poses;
        Globals::LocalPlayer->GetAbsAngles() = backup_abs_angles;
    }
    g_pGlobalVars->frametime = frametime;
}
 
используй malloc
C++:
Expand Collapse Copy
m_pFakeAnimState = reinterpret_cast< CCSPlayerAnimState* >( malloc( sizeof( CCSPlayerAnimState ) ) );
 
Назад
Сверху Снизу