Вопрос Проблема с реализацией Thirdpreson в hook override view

Начинающий
Статус
Оффлайн
Регистрация
5 Сен 2021
Сообщения
76
Реакции[?]
5
Поинты[?]
1K
Thirdperson code:
void thirdperson()
{
    if (g_vars.esp.thirdP && g_local->is_alive())
    {
        float range = g_vars.esp.distance_thirdP;

        if (i::input->camera_in_thirdperson) 
            return;

        vec3_t angles;
        i::engine->get_viewangles(angles);
        angles.z = 0.f;
        vec3_t forward(math::angle_vector(angles));
        vec3_t eye_pos(g_local->m_vecOrigin() + g_local->m_vecViewOffset());

        vec3_t maximal(16.f, 16.f, 16.f);
        ray_t ray(eye_pos, eye_pos - forward * range, -maximal, maximal);
        trace_filter filter;
        trace_t trace;

        i::trace->trace_ray(ray, mask_solid, &filter, &trace);

        if (trace.fraction < 1.f)
            range *= trace.fraction;

        angles.z = range;
        i::input->camera_in_thirdperson = true;
        i::input->camera_offset = angles;
    }
    else
    {
        i::input->camera_in_thirdperson = false;
        i::input->camera_offset.z = 0;
    }
}
override_view::hook:
void __fastcall hooks::clientmode::override_view::hook( void* ecx, void* edx, view_setup_t* view ) {
    if ( !i::engine->is_in_game( ) || !g_local ) {
        o_override_view( ecx, edx, view );
        return;
    }

    thirdperson();

    o_override_view( ecx, edx, view );
}
при использовании этого кода при активации бинда происходит следующее :
 

Вложения

Эксперт
Статус
Оффлайн
Регистрация
17 Янв 2020
Сообщения
2,197
Реакции[?]
718
Поинты[?]
79K
Товары в продаже
1
Thirdperson code:
void thirdperson()
{
    if (g_vars.esp.thirdP && g_local->is_alive())
    {
        float range = g_vars.esp.distance_thirdP;

        if (i::input->camera_in_thirdperson)
            return;

        vec3_t angles;
        i::engine->get_viewangles(angles);
        angles.z = 0.f;
        vec3_t forward(math::angle_vector(angles));
        vec3_t eye_pos(g_local->m_vecOrigin() + g_local->m_vecViewOffset());

        vec3_t maximal(16.f, 16.f, 16.f);
        ray_t ray(eye_pos, eye_pos - forward * range, -maximal, maximal);
        trace_filter filter;
        trace_t trace;

        i::trace->trace_ray(ray, mask_solid, &filter, &trace);

        if (trace.fraction < 1.f)
            range *= trace.fraction;

        angles.z = range;
        i::input->camera_in_thirdperson = true;
        i::input->camera_offset = angles;
    }
    else
    {
        i::input->camera_in_thirdperson = false;
        i::input->camera_offset.z = 0;
    }
}
override_view::hook:
void __fastcall hooks::clientmode::override_view::hook( void* ecx, void* edx, view_setup_t* view ) {
    if ( !i::engine->is_in_game( ) || !g_local ) {
        o_override_view( ecx, edx, view );
        return;
    }

    thirdperson();

    o_override_view( ecx, edx, view );
}
при использовании этого кода при активации бинда происходит следующее :
g_vars.esp.distance_thirdP случайно не 0 стоит?
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
angles.z = range; i::input->camera_in_thirdperson = true; i::input->camera_offset = angles; } else { i::input->camera_in_thirdperson = false; i::input->camera_offset.z = 0; }
Код:
ray.Init(eyePos, eyePos - cameraDirection * config.visuals.effects.thirdperson_distance->get(), Vector(-16, -16, -16), Vector(16, 16, 16));

        EngineTrace->TraceRay(ray, CONTENTS_SOLID, &filter, &trace);

        float distance = trace.fraction * config.visuals.effects.thirdperson_distance->get();

        Input->m_vecCameraOffset = Vector(angles.pitch, angles.yaw, distance);
    }
    else {
        Input->m_fCameraInThirdPerson = false;
    }
 
Сверху Снизу