-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Короче, суть проблемы. Я тут решил испытать адаптивный аа в сурсе "Hollyday", и выявил такую проблему, что он работает как на противников, так и на союзников. Что бы я ни пытался сделать, он работал или на всех, или никак. Прошу помощи. Отблагодарю симпой. Прошу помочь сделать его только на противников, но никак не на союзников или на всех.
Код:
void adaptive2(CUserCmd * pCmd, bool& bSendPacket, IClientEntity* pEntity) {
auto fov_to_player = [](Vector view_offset, Vector view, IClientEntity* m_entity, int hitbox)
{
CONST FLOAT MaxDegrees = 180.0f;
Vector Angles = view;
Vector Origin = view_offset;
Vector Delta(0, 0, 0);
Vector Forward(0, 0, 0);
AngleVectors3(Angles, &Forward);
Vector AimPos = GetHitboxPosition(m_entity, hitbox);
VectorSubtract(AimPos, Origin, Delta);
Normalize(Delta, Delta);
FLOAT DotProduct = Forward.Dot(Delta);
return (acos(DotProduct) * (MaxDegrees / PI));
};
auto m_local = hackManager.pLocal();
int target = -1;
float mfov = 20;
Vector viewoffset = m_local->GetOrigin() + m_local->GetViewOffset();
Vector view; Interfaces::Engine->GetViewAngles(view);
for (int i = 0; i < Interfaces::Engine->GetMaxClients(); i++) {
IClientEntity* m_entity = Interfaces::EntList->GetClientEntity(i);
if (m_entity && m_entity->IsDormant() == false && m_entity->IsAlive() && m_entity->GetIndex() != hackManager.pLocal()->GetIndex()) {
float fov = fov_to_player(viewoffset, view, m_entity, 0);
if (fov < mfov) {
mfov = fov;
target = i;
}
}
}
ADAPTIVE_SIDE2 side = ADAPTIVE_UNKNOWN2;
Vector at_target_angle;
if (target) {
auto m_entity = Interfaces::EntList->GetClientEntity(target);
if (m_entity && m_entity->IsDormant() == false && m_entity->IsAlive() && m_entity->GetIndex() != hackManager.pLocal()->GetIndex()) {
Vector pos_enemy;
if (Render::WorldToScreen(m_entity->GetOrigin(), pos_enemy)) {
CalcAngle(m_local->GetOrigin(), m_entity->GetOrigin(), at_target_angle);
POINT mouse = GUI.GetMouse();
if (mouse.x > pos_enemy.x) side = ADAPTIVE_RIGHT2;
else if (mouse.x < pos_enemy.x) side = ADAPTIVE_LEFT2;
else side = ADAPTIVE_UNKNOWN2;
}
}
}
if (side == ADAPTIVE_RIGHT) {
pCmd->viewangles.y = at_target_angle.y + 90;
}
else if (side == ADAPTIVE_LEFT) {
pCmd->viewangles.y = at_target_angle.y - 90;
}
if (side == ADAPTIVE_UNKNOWN) {
pCmd->viewangles.y -= 180;
}
}