Keep Ev0lving, Stay Fatal
-
Автор темы
- #1
Я не помню уже откуда это спиздил, но да похуй.
Работает практически идеально, за исключением моего Todo и того, что этот авторевольвер не был протестирован ни на одном рейджботе
GL&HF
Работает практически идеально, за исключением моего Todo и того, что этот авторевольвер не был протестирован ни на одном рейджботе
GL&HF
C++:
struct
{
bool rev_fire{ };
float rev_cock_time{ };
} vars;
C++:
void misc::other::auto_revolver() noexcept
{
auto weapon = local.wpn;
if(!weapon)
return;
if(weapon->get_item_id() != (int)cs::item_id::r8_revolver)
return;
// @todo - when I will finish exploits, make there math::ticks_to_time(local.corrected_tickbase);
const auto server_time = math::ticks_to_time(local->get_tick_base());
if(weapon->get_ammo() > 0 && !(local.cur_cmd->buttons.is_set(cs::cmd_button::attack)))
{
local.cur_cmd->buttons.unset(cs::cmd_button::second_attack);
const auto can_shoot = server_time >= local->get_next_attack()
&& server_time >= weapon->get_next_primary_attack()
/*&& weapon->postpone_fire_time ( ) < server_time*/;
vars.rev_fire = true;
if(vars.rev_fire && can_shoot)
{
if(vars.rev_cock_time <= server_time)
{
if(weapon->get_next_secondary_attack() <= server_time)
vars.rev_cock_time = server_time + 0.25f - math::ticks_to_time(1);
else
local.cur_cmd->buttons.set(cs::cmd_button::second_attack);
}
else
local.cur_cmd->buttons.set(cs::cmd_button::attack);
vars.rev_fire = server_time > vars.rev_cock_time;
}
else
{
vars.rev_fire = false;
vars.rev_cock_time = server_time + 0.25f - math::ticks_to_time(1);
local.cur_cmd->buttons.unset(cs::cmd_button::attack);
}
}
else
{
vars.rev_fire = false;
}
}