Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд Fog Changer

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Авг 2025
Сообщения
17
Реакции
2
Hi yougame, ive decided to share a pretty simple fog changer, heres everything you need:

C++:
Expand Collapse Copy
#include "Hook_UpdateSky.hpp"
#include <AndromedaClient/Settings/Settings.hpp>
#include <cmath>

auto __fastcall Hook_UpdateSky::hkUpdateSky(void* a1, void* a2, int a3) -> __int64
{
    __int64 result = UpdateSky_o(a1, a2, a3);

    if (Settings::World::fogchanger)
    {
        float* sky_exposure = reinterpret_cast<float*>((uintptr_t)a2 + 0x20);

        if (*reinterpret_cast<bool*>((uintptr_t)a2 + 0x24))
        {
            const float mod = pow(2.0f, Settings::World::fogbright);
            *sky_exposure *= (mod * mod);
        }

        
        float* start_dist = reinterpret_cast<float*>((uintptr_t)a2 + 0x4);
        float* end_dist = reinterpret_cast<float*>((uintptr_t)a2 + 0x8);
        float* max_density= reinterpret_cast<float*>((uintptr_t)a2 + 0x1C);

        *start_dist = Settings::World::fog_start;
        *end_dist = Settings::World::fog_end;
        *max_density = Settings::World::fog_max_density;
    }

    return result;
}

C++:
Expand Collapse Copy
#pragma once

#include <Common/Common.hpp>

using UpdateSky_t = __int64(__fastcall*)(void*, void*, int);
inline UpdateSky_t UpdateSky_o = nullptr;

namespace Hook_UpdateSky
{
    auto __fastcall hkUpdateSky(void* a1, void* a2, int a3) -> __int64;
}

for pattern:
Код:
Expand Collapse Copy
48 89 5C 24? 48 89 74 24? 57 48 81 EC? ??? 48 8B F1 49 8B D8

how to find the pattern after update:
search for:
Код:
Expand Collapse Copy
g_flBrightnessExposureBias
g_flRenderOnlyExposureBias
CUBEMAP_FOG_SOURCE_SKY_ENTITY
CUBEMAP_FOG_SOURCE_SKY_MATERIAL
Unable to determine cubemap texture for env_cubemap_fog.
g_tSkyTexture

in client.dll
 
Hi yougame, ive decided to share a pretty simple fog changer, heres everything you need:

C++:
Expand Collapse Copy
#include "Hook_UpdateSky.hpp"
#include <AndromedaClient/Settings/Settings.hpp>
#include <cmath>

auto __fastcall Hook_UpdateSky::hkUpdateSky(void* a1, void* a2, int a3) -> __int64
{
    __int64 result = UpdateSky_o(a1, a2, a3);

    if (Settings::World::fogchanger)
    {
        float* sky_exposure = reinterpret_cast<float*>((uintptr_t)a2 + 0x20);

        if (*reinterpret_cast<bool*>((uintptr_t)a2 + 0x24))
        {
            const float mod = pow(2.0f, Settings::World::fogbright);
            *sky_exposure *= (mod * mod);
        }

       
        float* start_dist = reinterpret_cast<float*>((uintptr_t)a2 + 0x4);
        float* end_dist = reinterpret_cast<float*>((uintptr_t)a2 + 0x8);
        float* max_density= reinterpret_cast<float*>((uintptr_t)a2 + 0x1C);

        *start_dist = Settings::World::fog_start;
        *end_dist = Settings::World::fog_end;
        *max_density = Settings::World::fog_max_density;
    }

    return result;
}

C++:
Expand Collapse Copy
#pragma once

#include <Common/Common.hpp>

using UpdateSky_t = __int64(__fastcall*)(void*, void*, int);
inline UpdateSky_t UpdateSky_o = nullptr;

namespace Hook_UpdateSky
{
    auto __fastcall hkUpdateSky(void* a1, void* a2, int a3) -> __int64;
}

for pattern:
Код:
Expand Collapse Copy
48 89 5C 24? 48 89 74 24? 57 48 81 EC? ??? 48 8B F1 49 8B D8

how to find the pattern after update:
search for:
Код:
Expand Collapse Copy
g_flBrightnessExposureBias
g_flRenderOnlyExposureBias
CUBEMAP_FOG_SOURCE_SKY_ENTITY
CUBEMAP_FOG_SOURCE_SKY_MATERIAL
Unable to determine cubemap texture for env_cubemap_fog.
g_tSkyTexture

in client.dll
Good job!
 
Hi yougame, ive decided to share a pretty simple fog changer, heres everything you need:

C++:
Expand Collapse Copy
#include "Hook_UpdateSky.hpp"
#include <AndromedaClient/Settings/Settings.hpp>
#include <cmath>

auto __fastcall Hook_UpdateSky::hkUpdateSky(void* a1, void* a2, int a3) -> __int64
{
    __int64 result = UpdateSky_o(a1, a2, a3);

    if (Settings::World::fogchanger)
    {
        float* sky_exposure = reinterpret_cast<float*>((uintptr_t)a2 + 0x20);

        if (*reinterpret_cast<bool*>((uintptr_t)a2 + 0x24))
        {
            const float mod = pow(2.0f, Settings::World::fogbright);
            *sky_exposure *= (mod * mod);
        }

       
        float* start_dist = reinterpret_cast<float*>((uintptr_t)a2 + 0x4);
        float* end_dist = reinterpret_cast<float*>((uintptr_t)a2 + 0x8);
        float* max_density= reinterpret_cast<float*>((uintptr_t)a2 + 0x1C);

        *start_dist = Settings::World::fog_start;
        *end_dist = Settings::World::fog_end;
        *max_density = Settings::World::fog_max_density;
    }

    return result;
}

C++:
Expand Collapse Copy
#pragma once

#include <Common/Common.hpp>

using UpdateSky_t = __int64(__fastcall*)(void*, void*, int);
inline UpdateSky_t UpdateSky_o = nullptr;

namespace Hook_UpdateSky
{
    auto __fastcall hkUpdateSky(void* a1, void* a2, int a3) -> __int64;
}

for pattern:
Код:
Expand Collapse Copy
48 89 5C 24? 48 89 74 24? 57 48 81 EC? ??? 48 8B F1 49 8B D8

how to find the pattern after update:
search for:
Код:
Expand Collapse Copy
g_flBrightnessExposureBias
g_flRenderOnlyExposureBias
CUBEMAP_FOG_SOURCE_SKY_ENTITY
CUBEMAP_FOG_SOURCE_SKY_MATERIAL
Unable to determine cubemap texture for env_cubemap_fog.
g_tSkyTexture

in client.dll
good!
 
it's better to use it this way + u can change the color

C++:
Expand Collapse Copy
void c_fog_handler::create_fog()
{
    if (!gradient_fog)
        gradient_fog = sdk::entity_system->create_entity_by_class_name(XOR("env_gradient_fog")).as<c_gradient_fog*>();

    gradient_fog->fog_start_distance() = 450.f;
    gradient_fog->fog_end_distance() = 8000.f;
    gradient_fog->fog_strength() = 1.f;
    gradient_fog->fog_falloff_exponent() = 1.f;
}

void c_fog_handler::handle_fog()
{
    if (!gradient_fog)
        return;

    const bool fog_enabled = config.visuals.world.nightmode.fog_modulation && config.visuals.world.nightmode.fog_customization.enable;
    gradient_fog->is_enabled() = fog_enabled;

    if (fog_enabled)
    {
        gradient_fog->fog_color() = config.visuals.world.nightmode.fog_customization.color.get();
        gradient_fog->fog_max_opacity() = 1.f;
        gradient_fog->fog_start_distance() = config.visuals.world.nightmode.fog_distance;
        gradient_fog->fog_end_distance() = 2500.f;
    }

    vtable::call<void>(gradient_fog, 13); // for ag2 beta 13, for stable 12
}

and in fsn

C++:
Expand Collapse Copy
switch (stage)
{
case FRAME_RENDER_END:
{
    visuals::fog_handler.create_fog();
    visuals::fog_handler.handle_fog();
    break;
}
default:
    break;
}

C++:
Expand Collapse Copy
ida: @client.dll; "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 49 8B F8 44 8B F2"

c_address c_entity_system::create_entity_by_class_name(const char* name)
{
    using fn = void* (__fastcall*)(void*, int, const char*, int, int, int, char);
    return patterns.create_entity_by_class_name.as<fn>()(this, -1, name, 0, -1, -1, 1);
}

C++:
Expand Collapse Copy
class c_gradient_fog
{
public:
    SCHEMA(bool&, is_enabled, fnv_hash("C_GradientFog->m_bIsEnabled"));
    SCHEMA(float&, fog_start_distance, fnv_hash("C_GradientFog->m_flFogStartDistance"));
    SCHEMA(float&, fog_end_distance, fnv_hash("C_GradientFog->m_flFogEndDistance"));
    SCHEMA(float&, fog_strength, fnv_hash("C_GradientFog->m_flFogStrength"));
    SCHEMA(float&, fog_falloff_exponent, fnv_hash("C_GradientFog->m_flFogFalloffExponent"));
    SCHEMA(c_color&, fog_color, fnv_hash("C_GradientFog->m_fogColor"));
    SCHEMA(float&, fog_max_opacity, fnv_hash("C_GradientFog->m_flFogMaxOpacity"));
};
 
Последнее редактирование:
Назад
Сверху Снизу