C++ Primitive trace lowdelta detection [lw]

Escalation Project
Забаненный
Статус
Оффлайн
Регистрация
9 Май 2019
Сообщения
275
Реакции[?]
74
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
// Данный момент используется лишь для обучения, эту функцию вам придется доработать самому.



C++:
// Итак, для начала давайте зададим все дефолтное для создания TraceRay Resolve.



for (int i = 1; i < m_globals()->m_maxclients; i++)
            {

                enum trace_sides
                {
                    POSITIVE,
                    NEGATIVE,
                    POSITIVE_LOW,
                    NEGATIVE_LOW
                };

                Vector src3D, dst3D, forward, right, up, src, dst;
                float back_two, right_two, left_two;
             
                Ray_t RayToleft, RayToRight, RayRightLow, RayLeftLow;
                float RightDistance, LeftDistance, RightLow, LeftLow;
                Vector CurrentLocalPose;
                CurrentLocalPose = globals.local()->get_shoot_position();

                CGameTrace tr;
                float Distance = std::floor(globals.local()->GetAbsOrigin().DistTo(player->GetAbsOrigin()));

                Vector GetRight(player->m_angEyeAngles().x, player->m_angEyeAngles().y + player->get_max_desync_delta(), player->m_angEyeAngles().z); // получение правой трейсы
                Vector GetLeft(player->m_angEyeAngles().x, player->m_angEyeAngles().y - player->get_max_desync_delta(), player->m_angEyeAngles().z); // получение левой трейсы

                Vector GetLowRight(player->m_angEyeAngles().x, player->m_angEyeAngles().y + 30.f, player->m_angEyeAngles().z); // трейс на 30 градусов для лоудельты
                Vector GetLowLeft(player->m_angEyeAngles().x, player->m_angEyeAngles().y - 30.f, player->m_angEyeAngles().z);// трейс на -30 градусов для лоудельты

                CTraceFilter filter;
                filter.pSkip = globals.local(); // фильтр чтобы не трейсить себя
                math::angle_vectors(Vector(0, get_backward_side(player), 0), &forward, &right, &up); // получение бекварда энеми




      // теперь приступим к отрисовки линий и дистанции.

                RayRightLow.Init(CurrentLocalPose, rightPose); // правая лоудельта
                m_trace()->TraceRay(RayRightLow, MASK_SHOT, &filter, &tr);
                RightLow = (tr.endpos - tr.startpos).Length();

                RayLeftLow.Init(CurrentLocalPose, leftPose);  // левая
                m_trace()->TraceRay(RayLeftLow, MASK_SHOT, &filter, &tr);
                LeftLow = (tr.endpos - tr.startpos).Length();


                RayToRight.Init(CurrentLocalPose, rightPose);  // 60 градусов правая
                m_trace()->TraceRay(RayToRight, MASK_SHOT, &filter, &tr);
                RightDistance = (tr.endpos - tr.startpos).Length();
             
                RayToleft.Init(CurrentLocalPose, leftPose); // 60 градусов левая
                m_trace()->TraceRay(RayToleft, MASK_SHOT, &filter, &tr);
                LeftDistance = (tr.endpos - tr.startpos).Length();



// теперь приступим к созданию abs между 60 градусами и лоудельтой

               auto abs_right = (abs(RightDistance - RightLow) > 10.f);  // разница между правой 60 и лоудельтой
               auto abs_left = (abs(LeftDistance - LeftLow) > 10.f); // разница между левой 60 и лоудельтой



 
    // start resolving

      if (abs_right)
                {
                    if (globals.g.missed_shots[i] < 1)
                    {
                        side = POSITIVE_LOW;
                    }
                    if (fabsf(abs_right > abs_left) > 10.f)
                    {
                        side = NEGATIVE;
                    }
                }
                else if (abs_left)
                {
                    if (globals.g.missed_shots[i] < 1)
                    {
                        side = NEGATIVE_LOW;
                    }
                    else if  (fabsf(abs_left > abs_right) > 10.f)
                    {
                        side = POSITIVE;
                    }
                }





   // также у вас должен стоять автоволл чек, потому что если энеми будет за непростреливаемой стенкой, то лучи не будут доходить, давайте сделаем и его.

auto fire_first = autowall::get().wall_penetration(globals.g.eye_pos, player->hitbox_position_matrix(HITBOX_HEAD, player_record->matrixes_data.first), player);  // автоволл первой стороны
auto fire_second = autowall::get().wall_penetration(globals.g.eye_pos, player->hitbox_position_matrix(HITBOX_HEAD, player_record->matrixes_data.second), player); // autowall второй стороны


if (fire_first.damage > 0.0f && fire_second.damage > 0.0f)
{
  // проверка на автоволл дамаг.
}
else
{
  // здесь чекаем дистанцию, если нет автоволл дамага, или энеми стоит открыто.
   if (LeftDistance > RightDistance)
   {
    resolve_1;  // и по аналогии делаем противоположный сайд.
   }




}
             
    // Надеюсь этот гайд вам как нибудь поможет в ресольве маленького градуса десинка.




}
 
Последнее редактирование:
Keep Ev0lving, Stay Fatal
Эксперт
Статус
Оффлайн
Регистрация
6 Фев 2018
Сообщения
1,550
Реакции[?]
586
Поинты[?]
102K
// Надеюсь этот гайд вам как нибудь поможет в ресольве маленького градуса десинка.
У тебя маленький, а градусы низкие :CoolCat:
Вообще, сколько бы я не смотрел в сторону антифристенда, это всегда был и остаётся худшим методом фикса десинков.
Можно постараться сделать всё гораздо лучше.
 
Начинающий
Статус
Оффлайн
Регистрация
30 Авг 2021
Сообщения
76
Реакции[?]
11
Поинты[?]
0
У тебя маленький, а градусы низкие :CoolCat:
Вообще, сколько бы я не смотрел в сторону антифристенда, это всегда был и остаётся худшим методом фикса десинков.
Можно постараться сделать всё гораздо лучше.
Но тебя видимо не смущает что низкие градусы детектят в паблике 90% через трейсы и антифристенд
 
Забаненный
Статус
Оффлайн
Регистрация
5 Янв 2022
Сообщения
16
Реакции[?]
2
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
and you again don't know what is abs
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
Но тебя видимо не смущает что низкие градусы детектят в паблике 90% через трейсы и антифристенд
Чаво млять? Кто вообще лоудельта таким способом детектит? Это все равно что закручивать болт гаечным ключом
 
Escalation Project
Забаненный
Статус
Оффлайн
Регистрация
9 Май 2019
Сообщения
275
Реакции[?]
74
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чаво млять? Кто вообще лоудельта таким способом детектит? Это все равно что закручивать болт гаечным ключом
1641584617981.png
никто так и не понял в чем суть абс, смотрите, у нас есть 4 трейсы, если обе проходят - значит сайд противоположный. далее, если расстояние трейсы макс десинк дельты больше на 10 единиц или больше, чем расстояние лоудельты, то значит сайд будет лоудельтой, если расстояние меньше или равно, то значит сайд будет на 60 градусов
 
Последнее редактирование:
Escalation Project
Забаненный
Статус
Оффлайн
Регистрация
9 Май 2019
Сообщения
275
Реакции[?]
74
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
не понял,да? если у противника лоудельта, то трейс на 60 градусов пройдет дальше трейсы на лоудельту
Лоудельту надо детектить анимлеерами высчитывая разницу между левой и правой дельтой.

1) Если используется Лоу дельта, то это означает, что одна из дельт все равно больше другой, но в тоже время, мы можем суммировать обе дельты и умножить на 1% т.е. получаем один градус десинка на одну единицу дельты.

2) Дальше мы смотрим где дельта меньше, это будет сторона десинка.

3) Дальше мы смотрим та дельта которая меньше, но она не равна нулю, смотрим на то, сколько процентов занимает наша дельта. Допустим, поделив нашу меньшую дельту на количество десинка на единицу дельта получаем количество процентов десинка.

Дальше мы тупо умножаем процент десинка на 60. Это и будет детект лоудельты.


Никаких автоволлов и трецсингов не нужно, это бесполезная и неточная вещь
 
Сверху Снизу