Гайд Ragebot - Сортировка целей по FOV / HP / DISTANCE

The voices are getting louder
Участник
Участник
Статус
Оффлайн
Регистрация
19 Янв 2017
Сообщения
425
Реакции
344
Приветики мои зайки

7WKaSrV.png


Вы наверное захотели очередную порцию пасты? Тогда держите
VcqPjFV5tX4.jpg

На текущий момент всех интересует вопрос как сортировать противников по параметрам, к примеру приведу сортировку по наименьшему хп или дистанции

ySgMw2N.png


Мы должны создать структуру которая будет держать данные в Массиве (std::vector)​
struct sTargetSorting
{
sTargetSorting(CBasePlayer* ent)
{
Entity = ent;
hp = ent->GetHealth();
fov = g_pMath->GetFov(Globals::Cmd->viewangles, g_pMath->CalcAngle(Globals::pLocal->GetEyePosition(), ent->GetBonePosition(8)));
distance = g_pMath->VectorDistance(Globals::pLocal->GetEyePosition(), ent->GetBonePosition(8));
}

float hp;
float fov;
float distance;
CBasePlayer* Entity;
};​

В данной структуре мы собираем Самого игрока, Количество HP, FOV и Дистанцию

Затем мы должны создать Авто-Функцию в которой будет проверка первого плеера и второго на сортировку
auto sortTarget = [&](struct sTargetSorting a, struct sTargetSorting b) {
switch (rbot_selection)
{
case CST_FIELD_OF_VIEW: return a.fov >= b.fov; break;
case CST_BEST_HEALTH: return a.hp <= b.hp; break;
case CST_BEST_DISTANCE: return a.distance >= b.distance; break;
case CST_NEXT_SHOOT: return false; break;
default: return false; break;
}

return false;
};​

rbot_selection Это переменная (Var / Variable) для Комбо бокса
0 - CST_FIELD_OF_VIEW
1 - CST_BEST_HEALTH
2 - CST_BEST_DISTANCE
3 - CST_NEXT_SHOOT

zm2faPI.png


Самое основное готово

IC5DNm5.png


Теперь переходим к самому Рейдж-Боту там где мы начинаем сканить всех игроков

Первым делом в начале Init функции мы создаём вектор с самим страктом: std::vector<sTargetSorting> EntList;​
Вторым шагом создаём цикл с проверкой всех игроков
for (int i = 0; i <= g_pGlobalVars->maxClients; i++)
{
CBasePlayer* Entity = g_pIEntList->GetClientEntity(i);
if (!IsGoodTargeting(Entity))
continue;

EntList.push_back(Entity);
}​
В данном коде описана проверка всех таргетов на их валидность (У каждого по разному)
Если всё в порядке то мы записываем в тот вектор именно информацию о человеке


6yyv3pA.png


После этого цикла мы выполняем саму сортировку кода:
std::sort(EntList.begin(), EntList.end(), sortTarget);

Потом сразу же делать авто цикл в котором уже будет сам хитскан. Что бы много фпс не жрало я сделал брейк после выстрела что бы сбросить цикл и не кушать фпс если уже таргет выбран
for (int i = 0; i < EntList.size(); i++)
{
Vector vecAngle;
auto q = EntList.at(i);

if (CreateAllBoxes(q.Entity, vecAngle) && Aim(q.Entity, vecAngle, bSendPacket))
break;
}​

Насчёт автоцикла, я не стал писать выше потому что я имел с этим проблеммы но если вам надо то держите
for (auto q : EntList)
{
Vector vecAngle;
if (CreateAllBoxes(q.Entity, vecAngle) && Aim(q.Entity, vecAngle, bSendPacket))
break;
}​

Ну а дальнейшим шагом у нас будет Accuracy Compensation / NoSpread / AutoCock и прочая херь

d4ZvHzY.png


Написал тред за 10 минут так что не судите строго. Любая критика будет полезной для меня
Ждите новых тредов​
 
Последнее редактирование:
Назад
Сверху Снизу