C++ Исходник Legendware detectside с вива

Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2020
Сообщения
236
Реакции[?]
24
Поинты[?]
2K
C++:
int side_trace = 0;

void DetectSide(player_t* player)
{
    Vector src3D, dst3D, forward, right, up, src, dst;
    float back_two, right_two, left_two;
    trace_t tr;
    Ray_t ray, ray2, ray3, ray4, ray5;
    CTraceFilter filter;

    math::angle_vectors(Vector(0, GetBackwardYaw(player), 0), &forward, &right, &up);

    
    src3D = player->GetEyePosition();
    dst3D = src3D + (forward * 384);

    ray.Init(src3D, dst3D);
    m_trace()->TraceRay(ray, MASK_SHOT, &filter, &tr);
    back_two = (tr.endpos - tr.startpos).Length();

    ray2.Init(src3D + right * 35, dst3D + right * 35);
    m_trace()->TraceRay(ray2, MASK_SHOT, &filter, &tr);
    right_two = (tr.endpos - tr.startpos).Length();

    ray3.Init(src3D - right * 35, dst3D - right * 35);
    m_trace()->TraceRay(ray3, MASK_SHOT, &filter, &tr);
    left_two = (tr.endpos - tr.startpos).Length();

    if (left_two > right_two) {
        side_trace = -1;
        //Body should be right
        //right
    }
    else if (right_two > left_two) {
        side_trace = 1;
        //left
    }
    else
        side_trace = 0;
}
бля забыл функцию
Код:
float GetBackwardYaw(player_t* player) {
    return math::calculate_angle(player->m_vecOrigin(), player->m_vecOrigin()).y;
}
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
бля забыл функцию
Код:
float GetBackwardYaw(player_t* player) {
    return math::calculate_angle(g_ctx.local()->m_vecOrigin(), g_ctx.local()->m_vecOrigin()).y;
}
ты глупый сер? g_ctx.local() то нахуя, этож локал плеер, ты этой хуетой его англе гетаешь, у цабе же есть player_t* player, трудно было подумать и поставить его,
like
Код:
float GetBackwardYaw(player_t* player) {

    return math::calculate_angle(g_ctx.local()->GetAbsOrigin(), player->GetAbsOrigin()).y;

}
это первое.
А второе, нахуя filter.pSkip = player;, если ты эту срочку юзаешь, то ты вырубаешь ресольвер на преера(энеми) => ты его не ресольвишь
 
Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2020
Сообщения
236
Реакции[?]
24
Поинты[?]
2K
ты глупый сер? g_ctx.local() то нахуя, этож локал плеер, ты этой хуетой его англе гетаешь, у цабе же есть player_t* player, трудно было подумать и поставить его,
like
Код:
float GetBackwardYaw(player_t* player) {

    return math::calculate_angle(g_ctx.local()->GetAbsOrigin(), player->GetAbsOrigin()).y;

}
это первое.
А второе, нахуя filter.pSkip = player;, если ты эту срочку юзаешь, то ты вырубаешь ресольвер на преера(энеми) => ты его не ресольвишь
исправил
 
Участник
Статус
Оффлайн
Регистрация
26 Мар 2019
Сообщения
707
Реакции[?]
167
Поинты[?]
1K
C++:
int side_trace = 0;

void DetectSide(player_t* player)
{
    Vector src3D, dst3D, forward, right, up, src, dst;
    float back_two, right_two, left_two;
    trace_t tr;
    Ray_t ray, ray2, ray3, ray4, ray5;
    CTraceFilter filter;

    math::angle_vectors(Vector(0, GetBackwardYaw(player), 0), &forward, &right, &up);

   
    src3D = player->GetEyePosition();
    dst3D = src3D + (forward * 384);

    ray.Init(src3D, dst3D);
    m_trace()->TraceRay(ray, MASK_SHOT, &filter, &tr);
    back_two = (tr.endpos - tr.startpos).Length();

    ray2.Init(src3D + right * 35, dst3D + right * 35);
    m_trace()->TraceRay(ray2, MASK_SHOT, &filter, &tr);
    right_two = (tr.endpos - tr.startpos).Length();

    ray3.Init(src3D - right * 35, dst3D - right * 35);
    m_trace()->TraceRay(ray3, MASK_SHOT, &filter, &tr);
    left_two = (tr.endpos - tr.startpos).Length();

    if (left_two > right_two) {
        side_trace = -1;
        //Body should be right
        //right
    }
    else if (right_two > left_two) {
        side_trace = 1;
        //left
    }
    else
        side_trace = 0;
}
бля забыл функцию
Код:
float GetBackwardYaw(player_t* player) {
    return math::calculate_angle(player->m_vecOrigin(), player->m_vecOrigin()).y;
}
 
Забаненный
Статус
Оффлайн
Регистрация
28 Янв 2021
Сообщения
137
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Очередная хуйня по трейсерам + ещё и неправильная :/
 
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,548
Реакции[?]
517
Поинты[?]
187K
ты
C++:
int side_trace = 0;

void DetectSide(player_t* player)
{
    Vector src3D, dst3D, forward, right, up, src, dst;
    float back_two, right_two, left_two;
    trace_t tr;
    Ray_t ray, ray2, ray3, ray4, ray5;
    CTraceFilter filter;

    math::angle_vectors(Vector(0, GetBackwardYaw(player), 0), &forward, &right, &up);

 
    src3D = player->GetEyePosition();
    dst3D = src3D + (forward * 384);

    ray.Init(src3D, dst3D);
    m_trace()->TraceRay(ray, MASK_SHOT, &filter, &tr);
    back_two = (tr.endpos - tr.startpos).Length();

    ray2.Init(src3D + right * 35, dst3D + right * 35);
    m_trace()->TraceRay(ray2, MASK_SHOT, &filter, &tr);
    right_two = (tr.endpos - tr.startpos).Length();

    ray3.Init(src3D - right * 35, dst3D - right * 35);
    m_trace()->TraceRay(ray3, MASK_SHOT, &filter, &tr);
    left_two = (tr.endpos - tr.startpos).Length();

    if (left_two > right_two) {
        side_trace = -1;
        //Body should be right
        //right
    }
    else if (right_two > left_two) {
        side_trace = 1;
        //left
    }
    else
        side_trace = 0;
}
бля забыл функцию
Код:
float GetBackwardYaw(player_t* player) {
    return math::calculate_angle(player->m_vecOrigin(), player->m_vecOrigin()).y;
}
Ты и забыл GetEyePosition нам сюда докинуть
upd:LineOut, у меня нету проста этай функции
 
Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2020
Сообщения
236
Реакции[?]
24
Поинты[?]
2K
ты

Ты и забыл GetEyePosition нам сюда докинуть
upd:LineOut, у меня нету проста этай функции
хз у меня всё есть
ты

Ты и забыл GetEyePosition нам сюда докинуть
upd:LineOut, у меня нету проста этай функции
C++:
    Vector GetEyePosition() {
        Vector Origin = *(Vector*)((DWORD)this + 0x138);
        Vector View = *(Vector*)((DWORD)this + 0x108);
        return(Origin + View);
    }
в IClientEntity
 
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,548
Реакции[?]
517
Поинты[?]
187K
хз у меня всё есть


C++:
    Vector GetEyePosition() {
        Vector Origin = *(Vector*)((DWORD)this + 0x138);
        Vector View = *(Vector*)((DWORD)this + 0x108);
        return(Origin + View);
    }
в IClientEntity
Та я знаю что куда пихать, пащю не первый месяц и учу си плюс плюс по немногу
UPD:всёравно спасибо
 
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2021
Сообщения
4
Реакции[?]
2
Поинты[?]
0
Этот способ не работает у меня.
Что может быть не так?
Значение сайда всегда == 0
 
kill me
Забаненный
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
365
Реакции[?]
70
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
void resolver::detectsides(player_t* player, int* side)
{
if (!g_ctx.local() || !g_ctx.local()->is_alive() || !g_ctx.local()->m_hActiveWeapon())
return;

Vector src3D, dst3D, forward, right, up, src, dst;
float back_two, right_two, left_two;
trace_t tr;
Ray_t ray, ray2, ray3, ray4, ray5;
CTraceFilter filter;

filter.pSkip = player;
src3D = player->get_eye_pos();
dst3D = src3D + (forward * 384);

ray.Init(src3D, dst3D);
m_trace()->TraceRay(ray, MASK_SHOT, &filter, &tr);
back_two = (tr.endpos - tr.startpos).Length();

ray2.Init(src3D + right * 35, dst3D + right * 35);
m_trace()->TraceRay(ray2, MASK_SHOT, &filter, &tr);
right_two = (tr.endpos - tr.startpos).Length();

ray3.Init(src3D - right * 35, dst3D - right * 35);
m_trace()->TraceRay(ray3, MASK_SHOT, &filter, &tr);
left_two = (tr.endpos - tr.startpos).Length();

if (left_two > right_two) {
*side = 1;
}
else if (right_two > left_two) {
*side = -1;
}
else
*side = 1;
}
 
рукожоп
Пользователь
Статус
Оффлайн
Регистрация
8 Авг 2019
Сообщения
347
Реакции[?]
37
Поинты[?]
0
void resolver::detectsides(player_t* player, int* side)
{
if (!g_ctx.local() || !g_ctx.local()->is_alive() || !g_ctx.local()->m_hActiveWeapon())
return;

Vector src3D, dst3D, forward, right, up, src, dst;
float back_two, right_two, left_two;
trace_t tr;
Ray_t ray, ray2, ray3, ray4, ray5;
CTraceFilter filter;

filter.pSkip = player;
src3D = player->get_eye_pos();
dst3D = src3D + (forward * 384);

ray.Init(src3D, dst3D);
m_trace()->TraceRay(ray, MASK_SHOT, &filter, &tr);
back_two = (tr.endpos - tr.startpos).Length();

ray2.Init(src3D + right * 35, dst3D + right * 35);
m_trace()->TraceRay(ray2, MASK_SHOT, &filter, &tr);
right_two = (tr.endpos - tr.startpos).Length();

ray3.Init(src3D - right * 35, dst3D - right * 35);
m_trace()->TraceRay(ray3, MASK_SHOT, &filter, &tr);
left_two = (tr.endpos - tr.startpos).Length();

if (left_two > right_two) {
*side = 1;
}
else if (right_two > left_two) {
*side = -1;
}
else
*side = 1;
}
че нахуй
Код:
if (left_two > right_two) {
*side = 1;
}
else if (right_two > left_two) {
*side = -1;
}
else
*side = 1;
}
 
Сверху Снизу