Welcome to hackvshack.net Forum!
Download Free HvH CS2/CS:GO Cheats, CFG, LUA/JS Scripts, and More!
Register

C++ CS2 bug in double tap

lagodny_rym

Newbie HvHer
User ID:
205967
Messages:
2
Reactions:
0
Badges:
0
REP:
−0/0+
Level:
14
Hey, I'm making a CS2 cheat and started working on double tap but it's broken. Instead of firing two shots at once, it just keeps shooting non-stop wherever I'm looking. Can't figure out what's wrong. Has anyone dealt with this? Any help appreciated, thanks.

C++:
Expand Collapse Copy
bool rage::process_doubletap( systems::input::usercmd* cmd, const systems::local::snapshot& local, bool charge_dt )
{
    const auto& shared_ctx = g_shared.ctx( );
    const auto& config = settings::g_combat.m_ragebot.get_group( shared_ctx.weapon_type );
    if ( !config.doubletap.value )
    {
        return false;
    }

    const auto base_cmd = cmd->csgo_user_cmd.mutable_base( );
    if ( !base_cmd )
    {
        return false;
    }

    const auto client_tick = base_cmd->client_tick( );
    const auto next_primary = memory::read<int>( shared_ctx.weapon + SCHEMA( "C_BasePlayerWeapon", "m_nNextPrimaryAttackTick"_hash ) );
    const auto tick_base = memory::read<int>( local.controller + SCHEMA( "CBasePlayerController", "m_nTickBase"_hash ) );

    const auto can_attack = client_tick >= next_primary
        && tick_base >= g_shared.last_shoot_tick( ) + 2
        && !memory::read<bool>( shared_ctx.weapon + SCHEMA( "C_CSWeaponBase", "m_bInReload"_hash ) )
        && memory::read<int>( shared_ctx.weapon + SCHEMA( "C_BasePlayerWeapon", "m_iClip1"_hash ) ) > 0;

    const auto should_attack = can_attack && charge_dt;

    if ( should_attack )
    {
        if ( const auto subtick_moves = base_cmd->mutable_subtick_moves( ) )
        {
            const auto old_size = subtick_moves->m_current_size;
            const auto press = systems::g_input.acquire_subtick_step( subtick_moves );
            const auto release = systems::g_input.acquire_subtick_step( subtick_moves );
            if ( press && release )
            {
                press->set_button( cstypes::command_buttons::in_attack );
                press->set_pressed( true );
                press->set_when( 0.0f );
                press->set_analog_forward_delta( 0.0f );
                press->set_analog_left_delta( 0.0f );

                release->set_button( cstypes::command_buttons::in_attack );
                release->set_pressed( false );
                release->set_when( std::nextafter( 1.0f, 0.0f ) );
                release->set_analog_forward_delta( 0.0f );
                release->set_analog_left_delta( 0.0f );

                cmd->buttons.value &= ~cstypes::command_buttons::in_attack;
                cmd->buttons.value_changed |= cstypes::command_buttons::in_attack;
                cmd->buttons.value_scroll &= ~cstypes::command_buttons::in_attack;
                cmd->csgo_user_cmd.set_attack1_start_history_index( -1 );
                return true;
            }

            subtick_moves->m_current_size = old_size;
        }
    }

    cmd->buttons.value &= ~cstypes::command_buttons::in_attack;
    cmd->buttons.value_changed |= cstypes::command_buttons::in_attack;
    cmd->buttons.value_scroll &= ~cstypes::command_buttons::in_attack;
    cmd->csgo_user_cmd.set_attack1_start_history_index( -1 );
    return false;
}
 
Last edited by a moderator:

Who has read this thread (Total: 0) in last 1 hours View details