-
Автор темы
- #1
по фасту напастил код, будет ли это работать?
C++:
static auto get_rotated_pos = [](Vector start, float rotation, float distance)
{
float rad = DEG2RAD(rotation);
start.x += cos(rad) * distance;
start.y += sin(rad) * distance;
return start;
};
CTraceFilter filter;
filter.pSkip = g_ctx.local();
Vector eye_pos = player->get_shoot_position();
Vector local_eye_pos = g_ctx.local()->get_shoot_position();
Vector angle = math::calculate_angle(local_eye_pos, eye_pos);
auto backwards = angle.y;
const float at_target_yaw = math::calculate_angle(g_ctx.local()->m_vecOrigin(), player->m_vecOrigin()).y;
Vector pos_left = get_rotated_pos(eye_pos, angle.y + 90.f, 40.f);
Vector pos_right = get_rotated_pos(eye_pos, angle.y + 90.f, -40.f);
float Distance = std::floor(g_ctx.local()->GetAbsOrigin().DistTo(player->GetAbsOrigin()));
auto first_position = g_ctx.globals.eye_pos.DistTo(player->hitbox_position_matrix(HITBOX_HEAD, player_record->matrixes_data.first));
auto second_position = g_ctx.globals.eye_pos.DistTo(player->hitbox_position_matrix(HITBOX_HEAD, player_record->matrixes_data.second));
float dmg_left = autowall::get().wall_penetration(g_ctx.globals.eye_pos, pos_left, player).damage;
float dmg_right = autowall::get().wall_penetration(g_ctx.globals.eye_pos, pos_right, player).damage;
if (dmg_left > 0.0f && dmg_right > 0.0f) {
if (dmg_left > dmg_right)
{
player_record->side = 1;
}
else if (dmg_left < dmg_right)
{
player_record->side = -1;
}
else if (fabs(animstate->m_flGoalFeetYaw + 90.f), fabs(at_target_yaw), 40.f)
{
player_record->side = 1;
}
else
{
player_record->side = -1;
}
}
else
{
if (fabsf(first_position) > Distance)
{
player_record->side = 1;
}
else if (fabsf(second_position) > Distance)
{
player_record->side = -1;
}