M
ScriptKeyless
[OPEN SOURCE] OT - SILENT + NO RELOAD + RAPID FIRE + NO REC
[FPS] One TapDesktop & mobile readyWave · Delta · Volt · Potassium · OpiumWare · Real
Description
FEATURES ARE LISTED BELOW: [✦] SILENT AIM [✦] NO RELOAD [✦] RAPID FIRE [✦] NO RECOIL
GAME[FPS] One Tap
UPDATEDOct 16, 2026
ACCESSKeyless
PLATFORMDesktop & Mobile
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ad25dd8f668b8e8a8258487"))()
end)
end)
--[[rscripts:analytics:end]]
--[[*
*If you enjoy the script, please consider liking the post.*
*It helps motivate me to release more open-source scripts*
*and keep existing ones updated.*
*MADE BY: [https://rscripts.net/@Yamis_Scripts]*
*]]
local placeId = 90568084448279
local prefix = "[YS OneTap]"
if game.PlaceId ~= placeId then
warn(('%s The correct game for this script is [One Tap] (%d).'):format(prefix, placeId))
return
end
local executor = "Unknown"
if type(identifyexecutor) == "function" then
local identified, name = pcall(identifyexecutor)
if identified and type(name) == "string" then
executor = name
end
end
local executorLower = executor:lower()
if executorLower:find("xeno", 1, true) or executorLower:find("solara", 1, true) then
task.spawn(function()
for _ = 1, 6 do
local displayed = pcall(function()
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "YS HUB - One Tap",
Text = "Your current executor isn't supported due to missing required capabilities.",
Duration = 8,
})
end)
if displayed then
break
end
task.wait(0.5)
end
end)
print(prefix .. " Unsupported executor: " .. executor)
return
end
local environment = type(getgenv) == "function" and getgenv()
if type(environment) ~= "table" then
warn(prefix .. " Missing getgenv.")
return
end
local previous = rawget(environment, "YSOneTap")
if previous ~= nil then
if type(previous) ~= "table" or rawget(previous, "kind") ~= "OneTap"
or type(rawget(previous, "stop")) ~= "function" then
warn(prefix .. " YSOneTap is occupied by another value.")
return
end
previous.stop()
print(prefix .. " Previous instance cleared; rerunning.")
end
local readUpvalues = debug and debug.getupvalues
if type(readUpvalues) ~= "function" then
warn(prefix .. " Missing debug.getupvalues.")
return
end
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local localPlayer = Players.LocalPlayer
local start = localPlayer.PlayerScripts:WaitForChild("Start", 8)
local gameModules = start and start:WaitForChild("Game", 8)
local weaponModule = gameModules and gameModules:WaitForChild("WeaponClient", 8)
if not weaponModule then
warn(prefix .. " WeaponClient was not found in PlayerScripts.Start.Game.")
return
end
local weaponClient = require(weaponModule)
local weaponManager = require(ReplicatedStorage.Common.Managers.WeaponManager)
local maxDistance = weaponManager.Constants.DEFAULT_MAX_DISTANCE
local viewmodelModule = gameModules:FindFirstChild("ViewmodelClient")
local viewmodelClient = viewmodelModule and require(viewmodelModule)
local originalViewmodelShoot = viewmodelClient and viewmodelClient.shoot
local function findWeaponSpring()
if type(originalViewmodelShoot) ~= "function" then
return nil
end
local weaponSpring
for _, value in pairs(readUpvalues(originalViewmodelShoot)) do
if type(value) == "table"
and rawget(value, "Mass") == 5
and rawget(value, "Force") == 100
and rawget(value, "Damping") == 15
and rawget(value, "Speed") == 3
and type(rawget(value, "shove")) == "function" then
if weaponSpring then
return nil
end
weaponSpring = value
end
end
return weaponSpring
end
local weaponSpring = findWeaponSpring()
local originalWeaponKick = weaponSpring and weaponSpring.shove
local function findShotPacket()
local fireShot
for _, value in pairs(readUpvalues(weaponClient.fire)) do
if type(value) == "function" then
if fireShot then
return nil
end
fireShot = value
end
end
if not fireShot then
return nil
end
local packet
for _, value in pairs(readUpvalues(fireShot)) do
if type(value) == "table"
and type(rawget(value, "send")) == "function"
and type(rawget(value, "reader")) == "function"
and type(rawget(value, "listen")) == "function" then
if packet then
return nil
end
packet = value
end
end
return packet
end
local shotPacket
local untilTime = os.clock() + 8
repeat
shotPacket = findShotPacket()
if shotPacket then
break
end
task.wait(0.15)
until os.clock() >= untilTime
if not shotPacket then
warn(prefix .. " WeaponClient's active shot sender wasn't found.")
return
end
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
local offsets = {
Vector3.new(0.36, 0, 0),
Vector3.new(-0.36, 0, 0),
Vector3.new(0, 0.36, 0),
Vector3.new(0, -0.36, 0),
}
local function chooseHit(origin, direction)
local exclusions = {}
if localPlayer.Character then
exclusions[#exclusions + 1] = localPlayer.Character
end
local effects = workspace:FindFirstChild("Effects")
if effects then
exclusions[#exclusions + 1] = effects
end
params.FilterDescendantsInstances = exclusions
local candidates = {}
local visited = {}
local function consider(character)
if not character or not character:IsA("Model") or visited[character]
or character == localPlayer.Character or not character:IsDescendantOf(workspace) then
return
end
visited[character] = true
local owner = Players:GetPlayerFromCharacter(character)
if owner and localPlayer.Team ~= nil and owner.Team == localPlayer.Team
and not localPlayer.Neutral and not owner.Neutral then
return
end
if owner and character:GetAttribute("deployed") == false then
return
end
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 or character:FindFirstChild("ForceField") then
return
end
local head = character:FindFirstChild("Hitbox_Head") or character:FindFirstChild("Head")
local torso = character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso")
local rootPart = character:FindFirstChild("HumanoidRootPart")
local aimPart = head or torso or rootPart
if not aimPart or not aimPart:IsA("BasePart") then
return
end
local towards = aimPart.Position - origin
local distance = towards.Magnitude
if distance <= 0 or distance > maxDistance then
return
end
local parts = {}
local used = {}
local function include(part)
if part and part:IsA("BasePart") and not used[part] then
used[part] = true
parts[#parts + 1] = part
end
end
include(head)
include(torso)
include(rootPart)
include(character:FindFirstChild("LowerTorso"))
include(character:FindFirstChild("Left Arm") or character:FindFirstChild("LeftUpperArm"))
include(character:FindFirstChild("Right Arm") or character:FindFirstChild("RightUpperArm"))
local exposedParts = {}
if head and head:IsA("BasePart") then
exposedParts[#exposedParts + 1] = head
end
if torso and torso:IsA("BasePart") and torso ~= head then
exposedParts[#exposedParts + 1] = torso
end
candidates[#candidates + 1] = {
character = character,
parts = parts,
exposedParts = exposedParts,
distance = distance,
alignment = towards.Unit:Dot(direction),
}
end
for _, character in CollectionService:GetTagged("Character") do
consider(character)
end
for _, player in Players:GetPlayers() do
if player ~= localPlayer and player.Character then
consider(player.Character)
end
end
if #candidates == 0 then
return nil
end
table.sort(candidates, function(a, b)
if a.alignment == b.alignment then
return a.distance < b.distance
end
return a.alignment > b.alignment
end)
local function checkPoint(candidate, point)
local towards = point - origin
local distance = towards.Magnitude
if distance <= 0 or distance > maxDistance then
return
end
local hit = workspace:Raycast(origin, towards, params)
if not hit or not hit.Instance:IsDescendantOf(candidate.character) then
return
end
local impactPart = hit.Instance
local parent = impactPart.Parent
if parent and (parent:IsA("Hat") or parent:IsA("Accessory")
and (parent.AccessoryType == Enum.AccessoryType.Hat
or parent.AccessoryType == Enum.AccessoryType.Face)) then
impactPart = candidate.character:FindFirstChild("Hitbox_Head")
or candidate.character:FindFirstChild("Head") or impactPart
end
return candidate.character, impactPart, hit.Position, towards.Unit
end
-- Prefer the closest-aligned exposed opponent; there is no angular cutoff.
for _, candidate in candidates do
for _, part in candidate.parts do
local character, hitPart, position, towards =
checkPoint(candidate, part.Position)
if character then
return character, hitPart, position, towards
end
end
-- Part centres can be covered even when an edge remains exposed.
for _, part in candidate.exposedParts do
for _, offset in offsets do
local point = part.CFrame:PointToWorldSpace(Vector3.new(
part.Size.X * offset.X, part.Size.Y * offset.Y, 0))
local character, hitPart, position, towards =
checkPoint(candidate, point)
if character then
return character, hitPart, position, towards
end
end
end
end
return nil
end
local originalSend = shotPacket.send
local originalGetBullets = weaponClient.getBullets
local originalDecreaseBullets = weaponClient.decreaseBullets
local savedFireRates = {}
local fireRate = 1000
local running = {
kind = "OneTap",
active = true,
}
function running.stop()
if not running.active then
return
end
running.active = false
if shotPacket.send == running.send then
shotPacket.send = originalSend
end
if weaponClient.getBullets == running.getBullets then
weaponClient.getBullets = originalGetBullets
end
if weaponClient.decreaseBullets == running.decreaseBullets then
weaponClient.decreaseBullets = originalDecreaseBullets
end
if viewmodelClient and viewmodelClient.shoot == running.shoot then
viewmodelClient.shoot = originalViewmodelShoot
end
if weaponSpring and weaponSpring.shove == running.suppressKick then
weaponSpring.shove = originalWeaponKick
end
for weaponData, originalRate in pairs(savedFireRates) do
if rawget(weaponData, "firerate") == fireRate then
weaponData.firerate = originalRate.value
end
end
if rawget(environment, "YSOneTap") == running then
rawset(environment, "YSOneTap", nil)
end
end
function running.send(shot)
if running.active and type(shot) == "table" and shot.weaponType ~= "Knife"
and typeof(shot.origin) == "Vector3" and typeof(shot.direction) == "Vector3" then
local character, part, position, direction = chooseHit(shot.origin, shot.direction)
if character then
shot.hitResult = character
shot.hitPart = part
shot.position = position
shot.direction = direction
end
end
return originalSend(shot)
end
function running.getBullets()
local character = localPlayer.Character
if character then
local slot = character:GetAttribute("currentWeapon")
if slot == nil or slot == "Primary" or slot == "Secondary" then
return weaponClient.getMaxBulletsForCurrentWeapon()
end
end
return originalGetBullets()
end
function running.decreaseBullets()
local character = localPlayer.Character
if character and character:GetAttribute("currentWeapon") == "Knife" then
originalDecreaseBullets()
end
end
function running.shoot(isKnife)
originalViewmodelShoot(running.active or isKnife)
end
function running.suppressKick(...)
if not running.active then
originalWeaponKick(...)
end
end
weaponClient.getBullets = running.getBullets
weaponClient.decreaseBullets = running.decreaseBullets
shotPacket.send = running.send
rawset(environment, "YSOneTap", running)
if weaponSpring then
weaponSpring.shove = running.suppressKick
viewmodelClient.shoot = running.shoot
else
warn(prefix .. " No Recoil unavailable: weapon spring not found.")
end
for _, weaponData in pairs(weaponManager.getWeapons()) do
if type(weaponData) == "table" then
savedFireRates[weaponData] = { value = rawget(weaponData, "firerate") }
weaponData.firerate = fireRate
end
end
if weaponClient.getState() == "reloading" then
weaponClient.cancelReload()
end
print(prefix .. " Running - [YS OneTap] (" .. executor .. ").")
print(prefix .. " Made by https://rscripts.net/@Yamis_Scripts")
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place