Вопрос С C_PostProcessingVolume явно что-то не так

PoC Life
Пользователь
Статус
Оффлайн
Регистрация
22 Авг 2022
Сообщения
355
Реакции[?]
48
Поинты[?]
38K
Понятия не имею, что я делаю не так. В createMove такой код:
C++:
C_PostProcessingVolume* postProcessing = localPlayer->m_pCameraServices()->m_hActivePostProcessingVolume().Get();
if (!postProcessing)
    return;

postProcessing->m_bExposureControl().Set(true);
postProcessing->m_flMinExposure().Set(0.2f);
postProcessing->m_flMaxExposure().Set(0.2f);
После того как раунд закончился начинает спамить Access violation writing location на любые врайты (ну я про m_bExposureControl, m_flMinExposure и m_flMaxExposure). Костыль IsInGame тоже не помогает.

Мб кто-то знает в чем проблема?
 
Начинающий
Статус
Оффлайн
Регистрация
3 Дек 2022
Сообщения
41
Реакции[?]
4
Поинты[?]
4K
Nightode, this is how i achieve it... I havnt had any issues with it:
void F::MISC::NightMode()
{
    if (!I::Engine->IsConnected() || !I::Engine->IsInGame())
        return;

    auto localPlayerController = SDK::LocalController;

    auto localPlayerPawn = I::GameResourceService->pGameEntitySystem->Get<C_CSPlayerPawn>(localPlayerController->GetPawnHandle());

    CBaseHandle postproc = localPlayerPawn->GetCameraServices()->m_hActivePostProcessingVolume();

    static float old_exposure_min = 0.f;
    static float old_exposure_max = 0.f;

    for (auto i = 0; i < postproc.IsValid(); i++)
    {
        C_PostProcessingVolume* postprocess_entity = I::GameResourceService->pGameEntitySystem->Get<C_PostProcessingVolume>(postproc);

        if (!postprocess_entity)
            continue;

        if (C_GET(bool, Vars.bNightmode))
        {
            postprocess_entity->m_bExposureControl() = 1;
            postprocess_entity->m_flMinExposure() = 0.15f;
            postprocess_entity->m_flMaxExposure() = 0.15f;
            postprocess_entity->m_flTonemapMinAvgLum() = 100.f;
        }
        else
        {
            postprocess_entity->m_bExposureControl() = 0;
            postprocess_entity->m_flMinExposure() = 1.f;
            postprocess_entity->m_flMaxExposure() = 1.f;
        }
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
30 Май 2023
Сообщения
19
Реакции[?]
0
Поинты[?]
0
C++:
if (postProcessing)
{
    postProcessing->m_bExposureControl().Set(true);
    postProcessing->m_flMinExposure().Set(0.2f);
    postProcessing->m_flMaxExposure().Set(0.2f);
}
else
{
    // Handle the case where postProcessing is not available
}
 
PoC Life
Пользователь
Статус
Оффлайн
Регистрация
22 Авг 2022
Сообщения
355
Реакции[?]
48
Поинты[?]
38K
PoC Life
Пользователь
Статус
Оффлайн
Регистрация
22 Авг 2022
Сообщения
355
Реакции[?]
48
Поинты[?]
38K
Начинающий
Статус
Оффлайн
Регистрация
1 Янв 2024
Сообщения
2
Реакции[?]
0
Поинты[?]
0
How do you achive this :

C++:
class C_PostProcessingVolume
{
public:

    SCHEMA_ADD_FIELD(int, m_bExposureControl, "C_PostProcessingVolume->m_bExposureControl");
    SCHEMA_ADD_FIELD(float, m_flMinExposure, "C_PostProcessingVolume->m_flMinExposure");
    SCHEMA_ADD_FIELD(float, m_flMaxExposure, "C_PostProcessingVolume->m_flMaxExposure");
};

class CPlayer_CameraServices
{
public:

    SCHEMA_ADD_FIELD(CBaseHandle, m_hActivePostProcessingVolume, "CPlayer_CameraServices->m_hActivePostProcessingVolume");
};
 
Сверху Снизу