WELCOME TO INFOCHEATS.NET

INFOCHEATS is a community-driven platform focused on free game cheats, cheat development, and verified commercial software for a wide range of popular games. We provide a large collection of free cheats shared by the community. All public releases are checked for malicious code to reduce the risk of viruses, malware, or unwanted software before users interact with them.

Alongside free content, INFOCHEATS hosts an active marketplace with many independent sellers offering commercial cheats. Each product is discussed openly, with user feedback, reviews, and real usage experience available to help you make informed decisions before purchasing.

Whether you are looking for free cheats, exploring paid solutions, comparing sellers, or studying how cheats are developed and tested, INFOCHEATS brings everything together in one place — transparently and community-driven.

Undetected [Script] Rainbow Six Siege — Logitech LUA No Recoil (All Operators)

byte_corvus

Newbie
Newbie
Newbie
Newbie
Status
Offline
Joined
Mar 3, 2026
Messages
546
Reaction score
7
If you're tired of fighting the vertical kick in Rainbow Six Siege while some sweat with an SMG-11 beams you from across the map, this is for you. This isn't a memory-writing external or a risky internal; it's a high-level Logitech LUA script running directly through your mouse's memory. Since it relies on the Logitech G Hub environment, it remains arguably one of the safest ways to handle recoil without tripping the anti-cheat's signature scanners.

Core Requirements
  1. Logitech G Series mouse with onboard memory support.
  2. Logitech G HUB installed and active.
  3. Persistent profile enabled (to prevent the script from breaking during Alt+Tab).

Optimized Environment Settings
To get the most out of the compensation logic, your settings need to align with the script's calculation table. If you're running different sensitivity, you'll need to adjust the values inside the Lua code manually.

Windows Settings: Speed 6/11, Pointer Precision OFF.
G Hub Settings: 800 DPI.
In-game Settings:
  1. Aspect Ratio: 4:3
  2. FOV: 89
  3. Sensitivity: Horizontal 5 / Vertical 5
  4. ADS Sensitivity: 1x (42), 2.5x (57), 3.5x (65), 5.0x (75), 12.0x (60)

On-the-Fly Controls
  1. Scroll Lock: Toggle between Attacker and Defender lists.
  2. Ctrl + Middle Mouse Button (MMB): Cycle through the operator list for the selected side.
  3. RMB + LMB: The script activates compensation while aiming and firing.

The script uses indexed tables for every operator in the game, allowing for specific recoil curves. You can expand the console log in the G Hub editor to see which operator is currently active.

Code:
-- Core Logic Snippet
attackers = {
"Ace","Amaru","Ash","Blackbeard","Brava","Buck","Capitao","Deimos",
"Dokkaebi","Finka","Flores","Fuze","Glaz","Gridlock","Grim","Hibana",
"Iana","IQ","Jackal","Kali","Lion","Maverick","Nokk","Nomad","Osa",
"Rauora","Ram","Sens","Sledge","Solid Snake","Striker","Thatcher","Thermite","Twitch","Ying",
"Zero","Zofia"
}
defenders = {
"Alibi","Aruni","Azami","Bandit","Castle","Caveira","Clash","Denari",
"Doc","Echo","Ela","Fenrir","Frost","Goyo","Jager","Kaid","Kapkan",
"Lesion","Maestro","Melusi","Mira","Mozzie","Mute","Oryx","Pulse",
"Rook","Sentry","Skopos","Solis","Smoke","Tachanka","Thorn","Thunderbird",
"Tubarao","Valkyrie","Vigil","Wamai","Warden"
}
 
attacker_index = 1 -- Ace
defender_index = 1 -- Alibi
 
recoil = {}
 
recoil["Ace"] = {0, 46, 80, -1, 38, 600, -1, 40, 520, -1, 44, 900}
recoil["Alibi"] = {0, 32, 60, 1, 22, 600, 2, 25, 200, 2, 25, 300, 2, 25, 680}
recoil["Aruni"] = {-1, 23, 50}
recoil["Amaru"] = {0, 36, 150, -1, 32, 400, -1, 35, 700, -1, 35, 300, -1, 36, 150, -2, 37, 400, -2, 37, 550, -2, 37, 300, -1, 40, 250, -1, 41, 250}
recoil["Ash"] = {-1, 45, 50, -1, 43, 600, -1, 46, 1100}
recoil["Azami"] = {-1, 37, 60}
recoil["Bandit"] = {0, 18, 70, 0, 17, 800, 0, 19, 300, 0, 20, 500, -2, 19, 300}
recoil["Blackbeard"] = {0, 20, 150, 2, 15, 250, 3, 16, 650, 1, 17, 900}
recoil["Brava"] = {0, 28, 150, -1, 26, 400, 0, 29, 1000, -1, 32, 900, 0, 36, 300}
recoil["Buck"] = {0, 41, 150, 0, 30, 650, 0, 33, 650, -2, 36, 400, -1, 37, 300}
recoil["Capitao"] = {0, 28, 150, -1, 26, 400, 0, 29, 1000, -1, 32, 900, 0, 36, 300}
recoil["Castle"] = {0, 21, 30, 0, 10, 250, 0, 11, 700, -1, 11, 900, 0, 11, 700}
recoil["Caveira"] = {0, 10, 1000, -1, 9, 900, 0, 10, 600, 0, 9, 400, -1, 11, 400}
recoil["Clash"] = {0, 16, 1000, 0, 13, 400}
recoil["Deimos"] = {0, 43, 70, -1, 21, 1200, -1, 24, 700, -1, 25, 1000, -1, 27, 750}
recoil["Denari"] = {0, 36, 60, 2, 20, 400, 2, 29, 400, 3, 30, 500, 2, 31, 500, 2, 30, 300}
recoil["Doc"] = {0, 24, 30, 0, 16, 600, 0, 18, 300, 1, 19, 500, 0, 19, 1600}
recoil["Dokkaebi"] = {-1, 23, 50}
recoil["Echo"] = {0, 26, 30, -1, 16, 600, 0, 18, 300, -1, 19, 1250}
recoil["Ela"] = {0, 36, 60, 2, 20, 400, 2, 29, 400, 3, 30, 500, 2, 31, 500, 2, 30, 300}
recoil["Fenrir"] = {0, 18, 70, 0, 17, 800, 0, 19, 300, 0, 20, 500, -2, 19, 300}
recoil["Finka"] = {0, 48, 50, -1, 39, 400, -1, 42, 500, 0, 43, 500, -1, 44, 500, 0, 46, 500}
recoil["Flores"] = {0, 38, 80, -1, 26, 350, 0, 28, 300, -1, 30, 200, -1, 32, 1000}
recoil["Frost"] = {0, 18, 30, 0, 11, 600, 0, 11, 1100, 1, 11, 500, 0, 12, 1300}
recoil["Fuze"] = {0, 46, 80, -1, 38, 600, -1, 40, 520, -1, 44, 900}
recoil["Glaz"] = {0, 34, 60, 0, 28, 500, -1, 27, 800}
recoil["Goyo"] = {0, 27, 60, 1, 25, 250, 1, 25, 300, 1, 28, 600}
recoil["Gridlock"] = {0, 42, 50, -1, 31, 400, -1, 33, 500, -1, 36, 500, 0, 37, 500, 0, 38, 300}
recoil["Grim"] = {0, 37, 110, 0, 27, 500, -1, 29, 500, -1, 31, 850, 0, 32, 600}
recoil["Hibana"] = {0, 42, 40, -1, 35, 600, -1, 36, 300, -2, 37, 500}
recoil["Iana"] = {0, 45, 60, -1, 28, 700, -1, 29, 400, -1, 32, 500}
recoil["IQ"] = {0, 37, 110, 0, 27, 500, -1, 29, 500, -1, 31, 850, 0, 32, 600}
recoil["Jager"] = {0, 25, 60, -1, 21, 300, -1, 22, 1000, 0, 22, 600}
recoil["Jackal"] = {0, 44, 70, 0, 41, 500, -1, 42, 600, -1, 46, 500, -1, 48, 500}
recoil["Kaid"] = {0, 23, 60, 1, 15, 300, 1, 16, 800, 0, 17, 700, 0, 18, 700}
recoil["Kali"] = {0, 16, 1000, 0, 13, 400}
recoil["Kapkan"] = {0, 30, 10, 0, 19, 650, -1, 20, 800, 0, 21, 400, -1, 22, 500}
recoil["Lesion"] = {0, 22, 50, 0, 21, 500, -1, 22, 300, 0, 23, 300, -1, 24, 100, 1, 23, 800}
recoil["Lion"] = {0, 43, 60, 0, 24, 300, 0, 28, 1700, 0, 33, 2150}
recoil["Maestro"] = {0, 32, 20, 0, 17, 500, 0, 20, 500, 0, 21, 500, -1, 21, 600, 0, 21, 600, 0, 23, 2500}
recoil["Maverick"] = {0, 52, 50, -1, 34, 500, -1, 35, 500, -1, 38, 500, -1, 40, 700}
recoil["Melusi"] = {0, 24, 40, 0, 18, 600, -1, 20, 900, -1, 21, 700}
recoil["Mira"] = {0, 27, 60, 1, 25, 250, 1, 25, 300, 1, 28, 600}
recoil["Mozzie"] = {0, 26, 50, 0, 15, 300, -1, 16, 300, 0, 18, 400, 0, 18, 400, 0, 18, 400}
recoil["Mute"] = {0, 39, 60, 0, 32, 650}
recoil["Nokk"] = {0, 22, 40, 1, 16, 200, 0, 17, 800, 1, 19, 1200}
recoil["Nomad"] = {0, 45, 60, -1, 28, 700, -1, 29, 400, -1, 32, 500}
recoil["Oryx"] = {0, 22, 50, 0, 21, 500, -1, 22, 300, 0, 23, 300, -1, 24, 100, 1, 23, 800}
recoil["Osa"] = {0, 28, 80, 2, 24, 600, 2, 25, 300, 3, 26, 1600}
recoil["Pulse"] = {0, 21, 30, 0, 10, 250, 0, 11, 700, -1, 11, 900, 0, 11, 700}
recoil["Rauora"] = {0, 25, 50, -1, 22, 1500, -1, 28, 800, -1, 27, 2300, -1, 29, 4600}
recoil["Ram"] = {-1, 45, 50, -1, 43, 600, -1, 46, 1100}
recoil["Rook"] = {0, 24, 30, 0, 16, 600, 0, 18, 300, 1, 19, 500, 0, 19, 1600}
recoil["Sens"] = {1, 48, 40, 0, 30, 400, 0, 31, 1600, -1, 33, 300, -1, 33, 800, -1, 33, 800}
recoil["Sentry"] = {0, 26, 50, 0, 15, 300, -1, 16, 300, 0, 18, 400, 0, 18, 400, 0, 18, 400}
recoil["Skopos"] = {0, 18, 50, 0, 16, 500, -1, 16, 500, 0, 16, 500, -1, 17, 700}
recoil["Sledge"] = {0, 38, 60, 1, 24, 450, 2, 26, 300, 2, 27, 1500, 2, 29, 300}
recoil["Smoke"] = {0, 39, 60, 0, 32, 650}
recoil["Solid Snake"] = {0, 55, 80, -1, 52, 600, 0, 53, 200, -1, 54, 650}
recoil["Solis"] = {0, 39, 60, 0, 32, 650}
recoil["Striker"] = {0, 52, 50, -1, 34, 500, -1, 35, 500, -1, 38, 500, -1, 40, 700}
recoil["Tachanka"] = {0, 14, 50, 1, 8, 2900, 2, 8, 4600}
recoil["Thatcher"] = {0, 38, 60, 1, 24, 450, 2, 26, 300, 2, 27, 1500, 2, 29, 300}
recoil["Thermite"] = {0, 28, 80, 2, 24, 600, 2, 25, 300, 3, 26, 1600}
recoil["Thorn"] = {0, 23, 50, 0, 18, 500, 1, 19, 500, 1, 21, 500, 0, 21, 300}
recoil["Thunderbird"] = {0, 25, 30, -1, 22, 250, 0, 22, 250, -1, 23, 500, 0, 24, 500, -1, 24, 500, 0, 25, 400}
recoil["Tubarao"] = {0, 25, 60}
recoil["Twitch"] = {0, 55, 80, -1, 52, 600, 0, 53, 200, -1, 54, 650}
recoil["Valkyrie"] = {0, 24, 20, 0, 17, 500, 0, 18, 500, 0, 18, 500, -1, 19, 500}
recoil["Vigil"] = {0, 22, 30, 0, 19, 300, -1, 20, 500, -1, 21, 1700}
recoil["Wamai"] = {0, 23, 40, 0, 18, 500, 1, 19, 500, 1, 20, 500, 0, 19, 500, 0, 22, 400}
recoil["Warden"] = {0, 24, 20, 0, 17, 500, 0, 18, 500, 0, 18, 500, -1, 19, 500}
recoil["Ying"] = {0, 38, 60, -1, 29, 300, -1, 30, 450, 0, 32, 1800, 2, 36, 4700}
recoil["Zero"] = {0, 51, 40, -1, 40, 200, -1, 42, 700, -1, 45, 350, 0, 47, 500}
recoil["Zofia"] = {0, 56, 50, 1, 36, 600, 1, 37, 500, -1, 40, 600, 0, 42, 600}
 
weaponInfo = {}
 
weaponInfo["Ace"] = "AK-12 (2.5x, compensator, angled grip)"
weaponInfo["Alibi"] = "Mx4 Storm (x1, compensator, angled grip)"
weaponInfo["Aruni"] = "Mk 14 EBR (2.5x, muzzle brake, angled grip)"
weaponInfo["Amaru"] = "G8A1 (2.5x, compensator, angled grip)"
weaponInfo["Ash"] = "R4-C (2.5x, compensator, angled grip)"
weaponInfo["Azami"] = "ACS12 (2.5x, angled grip)"
weaponInfo["Bandit"] = "MP7 (x1, compensator)"
weaponInfo["Blackbeard"] = "MK17 CQB (2.5x, compensator, angled grip)"
weaponInfo["Brava"] = "PARA-308 (2.5x, compensator, angled grip)"
weaponInfo["Buck"] = "C8SFW (2.5x, compensator)"
weaponInfo["Capitao"] = "PARA-308 (2.5x, compensator, angled grip)"
weaponInfo["Castle"] = "UMP45 (x1, compensator, angled grip)"
weaponInfo["Caveira"] = "M12 (x1, compensator)"
weaponInfo["Clash"] = "SPSMG9 (x1, compensator)"
weaponInfo["Deimos"] = "AK-74M (2.5x, compensator, angled grip)"
weaponInfo["Denari"] = "SCORPION EVO 3 A1 (x1, compensator, angled grip)"
weaponInfo["Doc"] = "P90 (x1, compensator)"
weaponInfo["Dokkaebi"] = "Mk 14 EBR (2.5x, muzzle brake, angled grip)"
weaponInfo["Echo"] = "MP5SD (x1, angled grip)"
weaponInfo["Ela"] = "SCORPION EVO 3 A1 (x1, compensator, angled grip)"
weaponInfo["Fenrir"] = "MP7 (x1, compensator)"
weaponInfo["Finka"] = "SPEAR .308 (2.5x, compensator, angled grip)"
weaponInfo["Flores"] = "AR33 (2.5x, compensator, angled grip)"
weaponInfo["Frost"] = "9mm C1 (x1, compensator, angled grip)"
weaponInfo["Fuze"] = "AK-12 (2.5x, compensator, angled grip)"
weaponInfo["Glaz"] = "BEARING 9 (x1, compensator)"
weaponInfo["Goyo"] = "VECTOR .45 ACP (x1, compensator, angled grip)"
weaponInfo["Gridlock"] = "F90 (2.5x, compensator, angled grip)"
weaponInfo["Grim"] = "552 COMMANDO (2.5x, compensator, angled grip)"
weaponInfo["Hibana"] = "TYPE-89 (2.5x, compensator, angled grip)"
weaponInfo["Iana"] = "ARX200 (2.5x, compensator, angled grip)"
weaponInfo["IQ"] = "552 COMMANDO (2.5x, compensator, angled grip)"
weaponInfo["Jager"] = "416-C CARBINE (x1, compensator, angled grip)"
weaponInfo["Jackal"] = "C7E (2.5x, compensator, angled grip)"
weaponInfo["Kaid"] = "AUG A3 (x1, compensator, angled grip)"
weaponInfo["Kali"] = "SPSMG9 (x1, compensator)"
weaponInfo["Kapkan"] = "9x19VSN (x1, compensator, angled grip)"
weaponInfo["Lesion"] = "T-5 SMG (x1, compensator, angled grip)"
weaponInfo["Lion"] = "V308 (2.5x, compensator, angled grip)"
weaponInfo["Maestro"] = "ALDA 5.56 (x1, compensator, vertical grip)"
weaponInfo["Maverick"] = "M4 (2.5x, compensator, angled grip)"
weaponInfo["Melusi"] = "MP5 (x1, compensator, angled grip)"
weaponInfo["Mira"] = "VECTOR .45 ACP (x1, compensator, angled grip)"
weaponInfo["Mozzie"] = "COMMANDO 9 (x1, compensator, angled grip)"
weaponInfo["Mute"] = "SMG-11 (x1, compensator, angled grip)"
weaponInfo["Nokk"] = "FMG-9 (x1, compensator)"
weaponInfo["Nomad"] = "ARX200 (2.5x, compensator, angled grip)"
weaponInfo["Oryx"] = "T-5 SMG (x1, compensator, angled grip)"
weaponInfo["Osa"] = "556Xl (2.5x, compensator, angled grip)"
weaponInfo["Pulse"] = "UMP45 (x1, compensator, angled grip)"
weaponInfo["Rauora"] = "M249 (2.5x, compensator, angled grip)"
weaponInfo["Ram"] = "R4-C (2.5x, compensator, angled grip)"
weaponInfo["Rook"] = "P90 (x1, compensator)"
weaponInfo["Sens"] = "POF-9 (2.5x, compensator, angled grip)"
weaponInfo["Sentry"] = "COMMANDO 9 (x1, compensator, angled grip)"
weaponInfo["Skopos"] = "PCX-33 (x1, compensator, angled grip)"
weaponInfo["Sledge"] = "L85A2 (2.5x, compensator, angled grip)"
weaponInfo["Smoke"] = "SMG-11 (x1, compensator, angled grip)"
weaponInfo["Solid Snake"] = "F2 (2.5x, compensator, angled grip)"
weaponInfo["Solis"] = "SMG-11 (x1, compensator, angled grip)"
weaponInfo["Striker"] = "M4 (2.5x, compensator, angled grip)"
weaponInfo["Tachanka"] = "DP27 (1x)"
weaponInfo["Thatcher"] = "L85A2 (2.5x, compensator, angled grip)"
weaponInfo["Thermite"] = "556Xl (2.5x, compensator, angled grip)"
weaponInfo["Thorn"] = "UZK50Gl (x1, compensator, angled grip)"
weaponInfo["Thunderbird"] = "SPEAR .308 (1x, compensator, angled grip)"
weaponInfo["Tubarao"] = "AR-15.50 (2.5x, muzzle brake, angled grip)"
weaponInfo["Twitch"] = "F2 (2.5x, compensator, angled grip)"
weaponInfo["Valkyrie"] = "MPX (1x, compensator, angled grip)"
weaponInfo["Vigil"] = "K1A (1x, compensator, angled grip)"
weaponInfo["Wamai"] = "AUG A2 (1x, compensator)"
weaponInfo["Warden"] = "MPX (1x, compensator, angled grip)"
weaponInfo["Ying"] = "T-95 LSW (2.5x, compensator, angled grip)"
weaponInfo["Zero"] = "SC3000K (2.5x, compensator, angled grip)"
weaponInfo["Zofia"] = "M762 (2.5x, compensator, angled grip)"
 
function getCurrentOperator()
    if IsKeyLockOn("scrolllock") then
        return defenders[defender_index]
    else
        return attackers[attacker_index]
    end
end
 
function nextOperator()
    if IsKeyLockOn("scrolllock") then
        defender_index = defender_index + 1
        if defender_index > #defenders then
            defender_index = 1
        end
    else
        attacker_index = attacker_index + 1
        if attacker_index > #attackers then
            attacker_index = 1
        end
    end
end
 
function drawGrid(list, selected, columns)
    local PADDING = 2
    local maxLen = 0
    for i = 1, #list do
        local len = string.len(list[i])
        if len > maxLen then
            maxLen = len
        end
    end
 
    local CELL_WIDTH = maxLen + PADDING * 2
    local function centerText(text, width)
        local len = string.len(text)
        if len >= width then
            return text
        end
 
        local left = math.floor((width - len) / 2)
        local right = width - len - left
        return string.rep(" ", left)
            .. text
            .. string.rep(" ", right)
    end
 
    local result = ""
    local rows = math.ceil(#list / columns)
    result = result ..
        "+" ..
        string.rep("-", CELL_WIDTH * columns + columns - 1) ..
        "+\n"
    for r = 1, rows do
        result = result .. "|"
        for c = 1, columns do
            local i = r + (c-1)*rows
            local name = list[i]
            if name then
                if name == selected then
                    local label =
                        "> "
                        .. string.upper(name)
                        .. " <"
                    result =
                        result
                        .. centerText(label, CELL_WIDTH)
                else
                    result =
                        result
                        .. centerText(name, CELL_WIDTH)
                end
            else
                result =
                    result
                    .. string.rep(" ", CELL_WIDTH)
            end
            if c < columns then
                result = result .. "|"
            end
        end
        result = result .. "|\n"
    end
    result = result ..
        "+" ..
        string.rep("-", CELL_WIDTH * columns + columns - 1) ..
        "+\n"
    return result
end
 
function Log()
    ClearLog()
 
    local op = getCurrentOperator()
    local gun = weaponInfo[op] or "unknown"
 
    if IsKeyLockOn("scrolllock") then
        OutputLogMessage("                    MODE: > > > DEFENDERS < < <\n\n")
    else
        OutputLogMessage("                    MODE: > > > ATTACKERS < < <\n\n")
    end
 
    OutputLogMessage(
        "SELECTED OPERATOR:  ► ► ►   %s\nSELECTED WEAPON:    ► ► ►   %s\n\n",
        op,
        gun
    )
    if IsKeyLockOn("scrolllock") then
        OutputLogMessage(drawGrid(defenders, op, 4))
    else
        OutputLogMessage(drawGrid(attackers, op, 4))
    end
end
 
function applyRecoil(pattern)
    for i=3,#pattern,3 do
        local start = GetRunningTime()
        local x = pattern[i-2]
        local y = pattern[i-1]
        local duration = pattern[i]
        repeat
            MoveMouseRelative(x,y)
            Sleep(10)
        until GetRunningTime() - start >= duration
            or not IsMouseButtonPressed(1)
            or not IsMouseButtonPressed(3)
    end
end
 
function OnEvent(event,arg)
    EnablePrimaryMouseButtonEvents(true)
    if event == "PROFILE_ACTIVATED" then
        Log()
    end
 
    if event == "MOUSE_BUTTON_PRESSED"
    and arg == 3
    and IsModifierPressed("lctrl") then
        nextOperator()
        Log()
    end
 
    if event == "MOUSE_BUTTON_PRESSED"
    and arg == 1
    and IsMouseButtonPressed(3) then
        local op = getCurrentOperator()
        local pattern = recoil[op]
        if pattern then
            applyRecoil(pattern)
        end
    end
end

Installation Guide
Open G Hub, go to your active profile, and click the Scripting icon at the bottom. Create a new script, paste the full code, and hit Save (Ctrl+S). Make sure the profile is locked as persistent if you want it to work across all modes.

Keep in mind that while LUA scripts aren't usually targeted by AC signatures, weirdly perfect recoil can still lead to manual reports. Use it with a bit of common sense.

Drop your custom sensitivity offsets below if you've tweaked these for other DPIs.
 
Top