• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

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

  • Автор темы Автор темы Nez2021
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Сен 2021
Сообщения
76
Реакции
5
Thirdperson code:
Expand Collapse Copy
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:
Expand Collapse Copy
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 );
}

при использовании этого кода при активации бинда происходит следующее :
 

Вложения

  • Снимок экрана (239).png
    Снимок экрана (239).png
    3.2 MB · Просмотры: 59
Thirdperson code:
Expand Collapse Copy
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:
Expand Collapse Copy
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 стоит?
 
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; }
Код:
Expand Collapse Copy
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;
    }
 
Назад
Сверху Снизу