[HvH ✡ Player] aka B1gPaster
-
Автор темы
- #1
Насколько знаю никто кругленький зевс рэнж не делал так что я 1 такой далбаеб но может кто то захочет.
Конечно можно чутка получше реализовать но всем похуй
Конечно можно чутка получше реализовать но всем похуй
C++:
void misc::ZeusRange()
{
if (!g_cfg.misc.ZeusRange)
return;
if (!g_cfg.player.enable)
return;
if (!g_ctx.local()->is_alive())
return;
if (!m_input()->m_fCameraInThirdPerson)
return;
auto weapon = g_ctx.local()->m_hActiveWeapon().Get();
if (!weapon)
return;
if (weapon->m_iItemDefinitionIndex() != WEAPON_TASER)
return;
auto weapon_info = weapon->get_csweapon_info();
if (!weapon_info)
return;
render::get().Draw3DRainbowCircle(g_ctx.globals.eye_pos, weapon_info->flRange); // g_ctx.local()->get_shoot_position() или g_ctx.local()->m_vecOrigin()
}
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.misc.taser_size, Color(r, g, b));
}
prevScreenPos = screenPos;
}
}
hue_offset += m_globals()->m_frametime * 200.0f;
}