Posted
I made Rivals Silent Aim and it seems to be detected.
If you put 150 damage, you have to die, but sometimes you don't die even if you put 200 damage
Does anyone know about this?
The script source is as follows
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Settings = {
Enabled = true,
FOV = 150,
TargetPart = "Head",
}
local function GetClosestTarget()
local closest, closestDist = nil, Settings.FOV
local screenCenter = Camera.ViewportSize / 2
for _, entity in ipairs(CollectionService:GetTagged("Entity")) do
if entity == LocalPlayer.Character then continue end
local hum = entity:FindFirstChildOfClass("Humanoid")
local root = entity:FindFirstChild("HumanoidRootPart")
local targetPart = entity:FindFirstChild(Settings.TargetPart)
if not hum or hum.Health <= 0 or not targetPart then continue end
local pos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
if onScreen then
local dist = (Vector2.new(pos.X, pos.Y) - screenCenter).Magnitude
if dist < closestDist then
closest = entity
closestDist = dist
end
end
end
return closest
end
local Utility = require(ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Utility"))
local oldRaycast;
oldRaycast = hookfunction(Utility.Raycast, function(self, origin, target, distance, filter, ...)
if not checkcaller() and Settings.Enabled and (distance == 999 or distance == 400) then
local targetEntity = GetClosestTarget()
if targetEntity then
local targetPart = targetEntity:FindFirstChild(Settings.TargetPart)
if targetPart then
return oldRaycast(self, origin, targetPart.Position, distance, filter, ...)
end
end
end
return oldRaycast(self, origin, target, distance, filter, ...)
end)Replied
Probably The server is rejecting or correcting the hit.
that's Why silent aim gets detected faster than normal aim
Silent aim usually alters hit registration, not player view.
That creates mismatches like:
Camera is not pointing at the target
Ray direction doesn’t match aim direction
Hit occurs without proper screen alignment
Headshots at impossible angles or through partial cover
Servers detect this via:
Ray-angle delta checks
Hitbox plausibility checks
Statistical headshot analysis
Temporal consistency (reaction time)
So even if it "works somtimes," it becomes statistically obvious very fast.
Raising damage makes it more suspicious, not stronger.
That’s why 200 damage doesn’t always kill — the server corrected or denied it.
try this script:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Settings = {
Enabled = true,
FOV = 150,
TargetPart = "Head", -- Head ensures 150+ damage for a 1-shot
}
-- Improved target selector with basic visibility check.
local function GetClosestTarget()
local closest, closestDist = nil, Settings.FOV
local screenCenter = Camera.ViewportSize / 2
for _, entity in ipairs(CollectionService:GetTagged("Entity")) do
if entity == LocalPlayer.Character then continue end
local hum = entity:FindFirstChildOfClass("Humanoid")
local targetPart = entity:FindFirstChild(Settings.TargetPart)
-- Check if player is alive and exists.
if not hum or hum.Health <= 0 or not targetPart then continue end
local pos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
if onScreen then
local dist = (Vector2.new(pos.X, pos.Y) - screenCenter).Magnitude
if dist < closestDist then
-- Visibility Check: Prevents "0 damage" wallbangs that get rejected by the server.
local ray = Ray.new(Camera.CFrame.Position, (targetPart.Position - Camera.CFrame.Position).Unit * 500)
local hit = workspace:FindPartOnRayWithIgnoreList(ray, {LocalPlayer.Character, entity})
if not hit then
closest = entity
closestDist = dist
end
end
end
end
return closest
end
local Utility = require(ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Utility"))
local oldRaycast;
-- Fix: Ensuring the raycast redirection is perfectly aligned for server validation
oldRaycast = hookfunction(Utility.Raycast, function(self, origin, target, distance, filter, ...)
-- Rivals uses 999 or 400 for weapon raycasts
if not checkcaller() and Settings.Enabled and (distance == 999 or distance == 400) then
local targetEntity = GetClosestTarget()
if targetEntity then
local targetPart = targetEntity:FindFirstChild(Settings.TargetPart)
if targetPart then
-- The Fix: We pass the exact Position to the original raycast
-- This forces the game to register a hit on the specific hitbox bone
return oldRaycast(self, origin, targetPart.Position, distance, filter, ...)
end
end
end
return oldRaycast(self, origin, target, distance, filter, ...)
end)
Cancel
Post
I Help People, Ask me.
Users viewing this thread:
( Members: 0, Guests: 1, Total: 1 )
Cancel
Post