Исходник [KnifeBot | ZeusBot] scan_targets for LW

like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
KnifeBot : Теперь чит выбирает ближнего из всех записей игроков, обратите внимание что target.last_record - первая валидная запись, а target.history_record - оптимизированная запись, оптимизируем мы только по ориджину, что логично
Код:
void knifebot::scan_targets()
{
    if (aim::get().targets.empty())
        return;

    float lowest_dist = INT_MAX;
    adjust_data* final_record = nullptr;

    for (auto& target : aim::get().targets)
    {

        if (target.history_record->valid())
        {
            if (target.last_record->valid())
            {
                auto last_distance = g_ctx.globals.eye_pos.DistTo(target.last_record->origin);
                auto history_distance = g_ctx.globals.eye_pos.DistTo(target.history_record->origin);

                auto this_lowest_distance = last_distance >= history_distance ? last_distance : history_distance;
                auto this_lowest_dist_record = last_distance >= history_distance ? target.last_record : target.history_record;

                if (this_lowest_distance < lowest_dist) {
                    lowest_dist = this_lowest_distance;
                    final_record = this_lowest_dist_record;
                }
            }

  
        }
        else if(target.last_record->valid())
        {

            auto last_distance = g_ctx.globals.eye_pos.DistTo(target.last_record->origin);

            if (last_distance < lowest_dist) {
                lowest_dist = last_distance;
                final_record = final_target.record;
            }
  
        }

        final_target.record = final_record;



    }



}
ZeusBot: просто подправил, что чит сканил лишние записи, когда уже нашел нужную - ничего искать не надо
ZeusBot:
void zeusbot::scan_targets()
{
    if (aim::get().targets.empty())
        return;

    for (auto& target : aim::get().targets)
    {
        if (scanned_targets.size() >= 2)
            break;

        if (target.history_record->valid())
        {
            scan_data last_data;

            if (target.last_record->valid())
            {
                target.last_record->adjust_player();
                scan(target.last_record, last_data);
            }

            if (last_data.valid()) {
                scanned_targets.emplace_back(scanned_target(target.last_record, last_data));
                continue;
            }
        
            scan_data history_data;

            target.history_record->adjust_player();
            scan(target.history_record, history_data);

            if (history_data.valid())
                scanned_targets.emplace_back(scanned_target(target.history_record, history_data));
        }
        else
        {
            if (!target.last_record->valid())
                continue;

            scan_data last_data;

            target.last_record->adjust_player();
            scan(target.last_record, last_data);

            if (!last_data.valid())
                continue;

            scanned_targets.emplace_back(scanned_target(target.last_record, last_data));
        }
    }
}
 
Последнее редактирование:
Сверху Снизу