[HvH ✡ Player] aka B1gPaster
-
Автор темы
- #1
Мне нехуй делать нормальных тем нету и нет идей так что сделал юзелес хуйня за пару секунд но как по мне будет прикольно если сделать выбор какой эффект хочешь к примеру без анимки или просто круг но здесь я сделал это (мб есть у кого то идее что можно прикольное реализовать напишите снизу или мне в лс):
C++:
void otheresp::automatic_peek_indicator()
{
auto weapon = g_ctx.local()->m_hActiveWeapon().Get();
if (!weapon)
return;
static auto position = ZERO;
if (!g_ctx.globals.start_position.IsZero())
position = g_ctx.globals.start_position;
if (position.IsZero())
return;
static auto alpha = 0.0f;
if (!weapon->is_non_aim() && key_binds::get().get_key_bind_state(18) || alpha)
{
if (!weapon->is_non_aim() && key_binds::get().get_key_bind_state(18))
alpha += 3.0f * m_globals()->m_frametime;
else
alpha -= 3.0f * m_globals()->m_frametime;
alpha = math::clamp(alpha, 0.0f, 1.0f);
render::get().Draw3DRainbowCircle(position, 25.0f);
Vector screen;
if (math::world_to_screen(position, screen))
{
static auto offset = 30.0f;
if (!g_ctx.globals.fired_shot)
{
static auto switch_offset = false;
if (offset <= 30.0f || offset >= 55.0f)
switch_offset = !switch_offset;
offset += switch_offset ? 22.0f * m_globals()->m_frametime : -22.0f * m_globals()->m_frametime;
offset = math::clamp(offset, 30.0f, 55.0f);
render::get().rect_filled(screen.x - 10.0f, screen.y - offset - 59.0f, 20.0f, 45.0f, Color(240, 30, 30, (int)(alpha * 168.0f)));
render::get().triangle(Vector2D(screen.x, screen.y - offset), Vector2D(screen.x - 10.5f, screen.y - offset - 14.5f), Vector2D(screen.x + 9.5f, screen.y - offset - 14.5f), Color(240, 30, 30, (int)(alpha * 168.0f)));
}
}
}
}
Если кому то надо Draw3DRainbowCircle
void render::Draw3DRainbowCircle(const Vector& origin, float radius)
{
static auto hue_offset = 0.0f;
static auto prevScreenPos = ZERO; //-V656
static auto step = M_PI * 2.0f / 72.0f;
auto screenPos = ZERO;
for (auto rotation = 0.0f; rotation <= M_PI * 2.0f; rotation += step) //-V1034
{
Vector pos(radius * cos(rotation) + origin.x, radius * sin(rotation) + origin.y, origin.z);
Ray_t ray;
trace_t trace;
CTraceFilterWorldOnly filter;
ray.Init(origin, pos);
m_trace()->TraceRay(ray, MASK_SHOT_BRUSHONLY, &filter, &trace);
if (math::world_to_screen(trace.endpos, screenPos))
{
if (!prevScreenPos.IsZero())
{
auto hue = RAD2DEG(rotation) + hue_offset;
float r, g, b;
ColorConvertHSVtoRGB(hue / 360.0f, 1.0f, 1.0f, r, g, b);
render::get().circle_filled(prevScreenPos.x, prevScreenPos.y, 10, g_cfg.esp.taser_size, Color(r, g, b));
}
prevScreenPos = screenPos;
}
}
hue_offset += m_globals()->m_frametime * 200.0f;
}