Вопрос EF_AddSilhouetteParams (External)

Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2022
Сообщения
11
Реакции[?]
0
Поинты[?]
0
Приветствую всех, решил сделать для себя экстернал вх, возникла проблема: крашит игру в EF_AddSilhouetteParams при записи в память, кто шарит подскажите в чем может быть проблема

CRenderer:
void EF_AddSilhouetteParams(AABB& aabb) {
    auto v1 = driver::read_memory<uint64_t>(drv, reinterpret_cast<uint64_t>(this) + 0xF1C) + 0xDCE3;
    if (!v1)
        return;
    auto result = 3 * v1;

    auto v2 = driver::read_memory<uint64_t>(drv, reinterpret_cast<uint64_t>(this) + 8 * result + 8);

    auto v3 = reinterpret_cast<uint64_t>(this) + 8 * result;

    if (driver::read_memory<uint64_t>(drv, (uint64_t)v3 + 0x10) != v2) {
        //Крашит тут
        driver::write_memory<AABB>(drv, v3, aabb);
        driver::write_memory<uint64_t>(drv, v2 + 0x8, driver::read_memory<uint64_t>(drv, (uint64_t)v2 + 0x8) + sizeof(AABB));
    }
}
C++:
AABB aabb;
RenderProxy->GetWorldBounds(pEntity->GetWorldTM(), aabb);
Renderer->EF_AddSilhouetteParams(aabb);
RenderProxy->SetHUDSilhouettesParams(255, 0, 0, 255);
ida.png
 
Продавец
Статус
Оффлайн
Регистрация
1 Июл 2023
Сообщения
64
Реакции[?]
2
Поинты[?]
3K
Приветствую всех, решил сделать для себя экстернал вх, возникла проблема: крашит игру в EF_AddSilhouetteParams при записи в память, кто шарит подскажите в чем может быть проблема

CRenderer:
void EF_AddSilhouetteParams(AABB& aabb) {
    auto v1 = driver::read_memory<uint64_t>(drv, reinterpret_cast<uint64_t>(this) + 0xF1C) + 0xDCE3;
    if (!v1)
        return;
    auto result = 3 * v1;

    auto v2 = driver::read_memory<uint64_t>(drv, reinterpret_cast<uint64_t>(this) + 8 * result + 8);

    auto v3 = reinterpret_cast<uint64_t>(this) + 8 * result;

    if (driver::read_memory<uint64_t>(drv, (uint64_t)v3 + 0x10) != v2) {
        //Крашит тут
        driver::write_memory<AABB>(drv, v3, aabb);
        driver::write_memory<uint64_t>(drv, v2 + 0x8, driver::read_memory<uint64_t>(drv, (uint64_t)v2 + 0x8) + sizeof(AABB));
    }
}
C++:
AABB aabb;
RenderProxy->GetWorldBounds(pEntity->GetWorldTM(), aabb);
Renderer->EF_AddSilhouetteParams(aabb);
RenderProxy->SetHUDSilhouettesParams(255, 0, 0, 255);
C++:
    void ef_add_silhoutte_params(AABB& bbox)
    {

        uint64_t v1 = read<uintptr_t>(reinterpret_cast<uint64_t>(this) + 0xF1C) + 0xDCE3;
        if (!v1) {
            return;
        }

        uint64_t result = 3 * v1;
        if (!result)
            return;

        uint64_t v2 = read<uint64_t>(reinterpret_cast<uint64_t>(this) + 8 * result + 8);
        if (!v2)
            return;

        uint64_t v3 = reinterpret_cast<uint64_t>(this) + 0x8 * result;
        if (!v3)
            return;

        if (read<uint64_t>(v3 + 0x10) != v2) {

            write<AABB>(v2, bbox);
            write<uint64_t>(v3 + 0x8, read<uint64_t>(v3 + 0x8) + sizeof(AABB));
        }
 
Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2022
Сообщения
11
Реакции[?]
0
Поинты[?]
0
C++:
    void ef_add_silhoutte_params(AABB& bbox)
    {

        uint64_t v1 = read<uintptr_t>(reinterpret_cast<uint64_t>(this) + 0xF1C) + 0xDCE3;
        if (!v1) {
            return;
        }

        uint64_t result = 3 * v1;
        if (!result)
            return;

        uint64_t v2 = read<uint64_t>(reinterpret_cast<uint64_t>(this) + 8 * result + 8);
        if (!v2)
            return;

        uint64_t v3 = reinterpret_cast<uint64_t>(this) + 0x8 * result;
        if (!v3)
            return;

        if (read<uint64_t>(v3 + 0x10) != v2) {

            write<AABB>(v2, bbox);
            write<uint64_t>(v3 + 0x8, read<uint64_t>(v3 + 0x8) + sizeof(AABB));
        }
Спасибо! Заработало
 
Начинающий
Статус
Оффлайн
Регистрация
13 Май 2023
Сообщения
166
Реакции[?]
26
Поинты[?]
26K
Приветствую всех, решил сделать для себя экстернал вх, возникла проблема: крашит игру в EF_AddSilhouetteParams при записи в память, кто шарит подскажите в чем может быть проблема

CRenderer:
void EF_AddSilhouetteParams(AABB& aabb) {
    auto v1 = driver::read_memory<uint64_t>(drv, reinterpret_cast<uint64_t>(this) + 0xF1C) + 0xDCE3;
    if (!v1)
        return;
    auto result = 3 * v1;

    auto v2 = driver::read_memory<uint64_t>(drv, reinterpret_cast<uint64_t>(this) + 8 * result + 8);

    auto v3 = reinterpret_cast<uint64_t>(this) + 8 * result;

    if (driver::read_memory<uint64_t>(drv, (uint64_t)v3 + 0x10) != v2) {
        //Крашит тут
        driver::write_memory<AABB>(drv, v3, aabb);
        driver::write_memory<uint64_t>(drv, v2 + 0x8, driver::read_memory<uint64_t>(drv, (uint64_t)v2 + 0x8) + sizeof(AABB));
    }
}
C++:
AABB aabb;
RenderProxy->GetWorldBounds(pEntity->GetWorldTM(), aabb);
Renderer->EF_AddSilhouetteParams(aabb);
RenderProxy->SetHUDSilhouettesParams(255, 0, 0, 255);
C++:
void cGame::Silhouettes(IEntity* pEnt, DWORD color)
{
    AABB aabb;

    SSystemGlobalEnvironment* gEnv = SSystemGlobalEnvironment::Singleton();
    if (!gEnv)return;

    IRenderer* pIRender = gEnv->GetIRenderer();
    if (!pIRender)return;

    IEntityRenderProxy* pRenderProxy = pEnt->GetRenderProxy();
    if (!pRenderProxy)return;

    pEnt->GetWorldBoundsCenter(aabb);
    pIRender->EF_AddSilhouettesParams(aabb);
    pRenderProxy->set_silhouettes_vision_params();
    pRenderProxy->set_hud_silhouettes_params(color);
}

    void EF_AddSilhouettesParams(AABB bBox)//+
    {
        DWORD64 a1 = reinterpret_cast<DWORD64>(this);
        DWORD64 a2 = reinterpret_cast<DWORD64>(this);
        int32_t v2 = Read<int32_t>(a1 + 0xF1C);
        v2 += 0xDCE3;
        int64_t v3 = Read<int64_t>(a2 + 16);
        int v7 = Read<int>(a2);
        int64_t v8 = v3;
        int64_t result = 3 * static_cast<int64_t>(v2);
        DWORD64 v5 = Read<DWORD64>(a1 + 8 * result + 8);
        DWORD64 v6 = a1 + 8 * result;
        if (v5 != Read<DWORD64>(v6 + 16))
        {
            Write<int>(v5, v7);
            Write<int64_t>(v5 + 16, v8);
            Write<DWORD64>(v6 + 8, Read<DWORD64>(v6 + 8) + 24);
        }
    void set_silhouettes_vision_params()
    {
        uint32_t render_flags{ Read< uint32_t >(reinterpret_cast<uint64_t>(this) + 0x24) };
        Write< int32_t >(reinterpret_cast<uint64_t>(this) + 0x24, render_flags | 0x10);
    }
    //40 53 48 83 EC 70 48 8B 01 48 8D

    void set_hud_silhouettes_params(DWORD color)
    {
        // Извлечение компонентов цвета
        float r1 = ((color >> 16) & 0xFF) / 255.0f;  // Красный
        float g1 = ((color >> 8) & 0xFF) / 255.0f;   // Зеленый
        float b1 = (color & 0xFF) / 255.0f;          // Синий

        int32 m_color = (int32)(f32)(0.000f * 255.0) | (((int32)(f32)(r1 * 255.0) | (((int32)(f32)(g1 * 255.0) | ((int32)(f32)(b1 * 255.0) << 8)) << 8)) << 8);
        Write<int32_t>((uintptr_t)this + 0xB8, m_color);
    }
 
Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2022
Сообщения
11
Реакции[?]
0
Поинты[?]
0
C++:
void cGame::Silhouettes(IEntity* pEnt, DWORD color)
{
    AABB aabb;

    SSystemGlobalEnvironment* gEnv = SSystemGlobalEnvironment::Singleton();
    if (!gEnv)return;

    IRenderer* pIRender = gEnv->GetIRenderer();
    if (!pIRender)return;

    IEntityRenderProxy* pRenderProxy = pEnt->GetRenderProxy();
    if (!pRenderProxy)return;

    pEnt->GetWorldBoundsCenter(aabb);
    pIRender->EF_AddSilhouettesParams(aabb);
    pRenderProxy->set_silhouettes_vision_params();
    pRenderProxy->set_hud_silhouettes_params(color);
}

    void EF_AddSilhouettesParams(AABB bBox)//+
    {
        DWORD64 a1 = reinterpret_cast<DWORD64>(this);
        DWORD64 a2 = reinterpret_cast<DWORD64>(this);
        int32_t v2 = Read<int32_t>(a1 + 0xF1C);
        v2 += 0xDCE3;
        int64_t v3 = Read<int64_t>(a2 + 16);
        int v7 = Read<int>(a2);
        int64_t v8 = v3;
        int64_t result = 3 * static_cast<int64_t>(v2);
        DWORD64 v5 = Read<DWORD64>(a1 + 8 * result + 8);
        DWORD64 v6 = a1 + 8 * result;
        if (v5 != Read<DWORD64>(v6 + 16))
        {
            Write<int>(v5, v7);
            Write<int64_t>(v5 + 16, v8);
            Write<DWORD64>(v6 + 8, Read<DWORD64>(v6 + 8) + 24);
        }
    void set_silhouettes_vision_params()
    {
        uint32_t render_flags{ Read< uint32_t >(reinterpret_cast<uint64_t>(this) + 0x24) };
        Write< int32_t >(reinterpret_cast<uint64_t>(this) + 0x24, render_flags | 0x10);
    }
    //40 53 48 83 EC 70 48 8B 01 48 8D

    void set_hud_silhouettes_params(DWORD color)
    {
        // Извлечение компонентов цвета
        float r1 = ((color >> 16) & 0xFF) / 255.0f;  // Красный
        float g1 = ((color >> 8) & 0xFF) / 255.0f;   // Зеленый
        float b1 = (color & 0xFF) / 255.0f;          // Синий

        int32 m_color = (int32)(f32)(0.000f * 255.0) | (((int32)(f32)(r1 * 255.0) | (((int32)(f32)(g1 * 255.0) | ((int32)(f32)(b1 * 255.0) << 8)) << 8)) << 8);
        Write<int32_t>((uintptr_t)this + 0xB8, m_color);
    }
Спасибо за помощь
 
Сверху Снизу