-
Автор темы
- #1
Попалил какую-то медию с зевсом и увидел эту фичу.
А пару дней назад пока ебался с имгуи в стакхаке увидел видос с ав с этой фичей, доделал имгей и приступил к это хероборе вот что получилось
UPD: я забыл функцию выложить, но теперь всё должно быть ок
А пару дней назад пока ебался с имгуи в стакхаке увидел видос с ав с этой фичей, доделал имгей и приступил к это хероборе вот что получилось
UPD: я забыл функцию выложить, но теперь всё должно быть ок
Выдерал из стакхака, так что спастить можно с минимальными допилами, но и под любой другой софт сделать не проблема.
Эта хрень слегка багованая ну да ничего.
вот и всё осталось только сделать переменные для настроек
Эта хрень слегка багованая ну да ничего.
Код:
Vector AngleBetweenXY(const Vector& a, const Vector& b)
{
Vector angles;
float distanceX = (b.x - a.x);
float distanceY = (b.y - a.y);
float distanceZ = (b.z - a.z);
float hipotenuseXY = sqrtf(distanceX*distanceX + distanceY * distanceY);
//float hipotenuseXZ = sqrt(distanceX*distanceX + distanceZ*distanceZ);
//float hipotenuseYZ = sqrt(distanceY*distanceY + distanceZ*distanceZ);
angles.x = atanf(distanceZ / hipotenuseXY) * (180.0f / M_PI_F) * -1.0f;
angles.y = atanf(distanceY / distanceX) * (180.0f / M_PI_F);
if (distanceX < 0)
angles.y += 180.0f;
angles.z = 0;
return angles;
}
Код:
void CVisuals::DrawBarrel(SDK::CBaseEntity* entity)
{
int sx, sy;
INTERFACES::Engine->GetScreenSize(sx, sy);
//RENDER::DrawCircle(sx / 2, sy / 2, sx / 4, 64, CColor(0, 0, 0));
//RENDER::DrawLine(0, sy / 2, sx, sy / 2, BLACK);
Vector screen;
Vector to = entity->GetAbsOrigin();
if (RENDER::WorldToScreen(to, screen))
{
float x = (float)sx / 2.0f;
float y = (float)sy / 2.0f;
Vector ang = AngleBetweenXY(Vector(x, y, 0), Vector(screen.x, screen.y, 0));
Vector end;
MATH::AngleVectors(ang, &end);
MATH::NormalizeAngle(end);
float max = (float)sy / 2.0f;
float distX = sx / 4;
float distY = sx / 4;
if (x +end.x * distX >= sx/2 && y + end.y * distY >= sy/2) //I четверть
RENDER::DrawWF(x + end.x * distX, y + end.y * distY, FONTS::visuals_side_font, SETTINGS::settings.barrel_col, L"\u25ba");
if (x +end.x * distX <= sx / 2 && y + end.y * distY >= sy / 2) //II четверть
RENDER::DrawWF(x + end.x * distX, y + end.y * distY, FONTS::visuals_side_font, SETTINGS::settings.barrel_col, L"\u25c4");
if (x +end.x * distX <= sx / 2 && y + end.y * distY <= sy / 2) //III quater
RENDER::DrawWF(x + end.x * distX, y + end.y * distY, FONTS::visuals_side_font, SETTINGS::settings.barrel_col, L"\u25ba");
if (x +end.x * distX >= sx / 2 && y + end.y * distY <= sy / 2) //IV четверть
RENDER::DrawWF(x + end.x * distX, y + end.y * distY, FONTS::visuals_side_font, SETTINGS::settings.barrel_col, L"\u25c4");
//RENDER::DrawFilledCircle(x + end.x * distX, y + end.y * distY, 10, 16, SETTINGS::settings.barrel_col);
}
}
Код:
if (SETTINGS::settings.barrel_bool) DrawBarrel(entity);
Последнее редактирование: