
KeylessUniversal

-- [[OPEN SOURCE SCRIPT]] --
-- [[original library repo:https://raw.githubusercontent.com/SiriusSoftwareLtd/Rayfield/main/source.lua]] --
-- [[script version 1.2]] --
-- [[update log]] --
-- 1.2 added more esp, more aimbot,info detail, added a new font...
-- 1.1 added esp, settings, team check
-- 1.0 added aimbot
local Rayfield = loadstring(game:HttpGet("https://raw.githubusercontent.com/linhmcfake/LuaLibrary/refs/heads/main/RayField.lua"))()
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local math_sin = math.sin
local math_huge = math.huge
local tick = tick
local Vector2_new = Vector2.new
local Vector3_new = Vector3.new
local Color3_fromRGB = Color3.fromRGB
local hitboxSize = 10
local hitboxEnabled = false
local teamCheck = false
local ogSIZES = {}
local hbCON = {}
local infoToggleEnabled = false
local ignoreThroughParts = false
local FOV_RGB_Enabled = false
local FOV_RGB_Speed = 2
local pressedKeys = {}
UserInputService.InputBegan:Connect(function(input, gp)
if not gp and input.UserInputType == Enum.UserInputType.Keyboard then
pressedKeys[input.KeyCode.Name] = true
end
end)
UserInputService.InputEnded:Connect(function(input, gp)
if not gp and input.UserInputType == Enum.UserInputType.Keyboard then
pressedKeys[input.KeyCode.Name] = nil
end
end)
local ESP_Name_Enabled = false
local AimAssistSettings = {
Enabled = false,
AimPart = "Nearest",
FOV = 100,
Sensitivity = 0.08,
WallCheck = true,
TeamCheck = true,
OutfitCheck = false,
ESP_Enabled = true,
ESP_LineMode = "Top",
ESP_Skeleton = true,
ESP_RGB_NoTeam = false,
BulletPrediction = false,
SkipDeadPlayers = true,
SmoothAiming = true,
ESP_Box = false,
ESP_AimPart = false,
ESP_SkipTeam = false
}
local Circle = Drawing.new("Circle")
Circle.Color = Color3_fromRGB(255, 0, 0)
Circle.Thickness = 1
Circle.Filled = false
Circle.Radius = AimAssistSettings.FOV
Circle.Position = Vector2_new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
Circle.Visible = false
local InfoText = Drawing.new("Text")
InfoText.Visible = false
InfoText.Color = Color3_fromRGB(255,255,255)
InfoText.Size = 18
InfoText.Outline = true
InfoText.Center = false
InfoText.Font = 2
local ESP_Lines = {}
local ESP_Skeletons = {}
local ESP_Pool = {lines = {}, skeletons = {}, names = {}}
local ESP_Boxes = {}
local ESP_PartMarkers = {}
local ESP_BoxPool = {}
local ESP_PartMarkerPool = {}
local ESP_NameTexts = {}
local ESP_NamePool = {}
local screenCenter = Vector2_new(0, 0)
local lastScreenUpdate = 0
local SCREEN_UPDATE_INTERVAL = 1/15
local lastRGBTime = 0
local cachedRGBColor = Color3_fromRGB(255, 255, 255)
local RGB_UPDATE_INTERVAL = 1/15
local FOV_RGB_Tick = 0
local function GetRGBColor(speed)
local currentTime = tick()
local time = currentTime * (speed or 2)
local r = math_sin(time) * 127 + 128
local g = math_sin(time + 2) * 127 + 128
local b = math_sin(time + 4) * 127 + 128
return Color3_fromRGB(r, g, b)
end
local outfitCache = {}
local outfitCacheTime = {}
local OUTFIT_CACHE_DURATION = 5
local function GetPlayerOutfit(player)
if not player or not player.Character then
return nil
end
local currentTime = tick()
local playerId = player.UserId
if outfitCache[playerId] and outfitCacheTime[playerId] and
(currentTime - outfitCacheTime[playerId]) < OUTFIT_CACHE_DURATION then
return outfitCache[playerId]
end
local outfitData = {}
local shirt = player.Character:FindFirstChildOfClass("Shirt")
local pants = player.Character:FindFirstChildOfClass("Pants")
outfitData.shirt = shirt and shirt.ShirtTemplate or ""
outfitData.pants = pants and pants.PantsTemplate or ""
outfitCache[playerId] = outfitData
outfitCacheTime[playerId] = currentTime
return outfitData
end
local function CompareOutfits(outfit1, outfit2)
if not outfit1 or not outfit2 then
return false
end
return outfit1.shirt ~= "" and outfit1.pants ~= "" and
outfit1.shirt == outfit2.shirt and outfit1.pants == outfit2.pants
end
local hasTeamSystem = nil
local lastTeamCheck = 0
local TEAM_CHECK_INTERVAL = 2
local function HasTeamSystem()
local currentTime = tick()
if hasTeamSystem == nil or (currentTime - lastTeamCheck) >= TEAM_CHECK_INTERVAL then
lastTeamCheck = currentTime
hasTeamSystem = false
for _, player in ipairs(Players:GetPlayers()) do
if player.Team ~= nil then
hasTeamSystem = true
break
end
end
end
return hasTeamSystem
end
local function HasSameOutfit(player)
if not AimAssistSettings.OutfitCheck then
return false
end
local localOutfit = GetPlayerOutfit(LocalPlayer)
local targetOutfit = GetPlayerOutfit(player)
return CompareOutfits(localOutfit, targetOutfit)
end
local function IsPlayerAlive(player)
if not player or not player.Character then
return false
end
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
return humanoid and humanoid.Health > 0
end
function IsVisibleCustom(part, origin)
local direction = (part.Position - origin)
local distance = direction.Magnitude
if distance < 1 then return true end
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Blacklist
local filterList = {LocalPlayer.Character, Camera}
rayParams.FilterDescendantsInstances = filterList
rayParams.IgnoreWater = true
local rayDirection = direction.Unit * (distance - 0.1)
local result = workspace:Raycast(origin, rayDirection, rayParams)
if not result then
return true
end
local hitPart = result.Instance
if hitPart and hitPart.Parent then
for _, plr in ipairs(Players:GetPlayers()) do
if plr.Team and LocalPlayer.Team and plr.Team == LocalPlayer.Team and plr.Character and hitPart:IsDescendantOf(plr.Character) then
return false
end
end
if ignoreThroughParts and (
hitPart.CanCollide == false or
hitPart.Transparency > 0.9 or
(hitPart.Name == "Glass" or hitPart.Name == "Water" or hitPart.Name == "Air" or hitPart.Name == "PartCanShootThrough")
) then
local newOrigin = result.Position + direction.Unit * 0.01
local newDirection = (part.Position - newOrigin)
if newDirection.Magnitude > 1 then
return IsVisibleCustom(part, newOrigin)
end
end
return hitPart:IsDescendantOf(part.Parent) or hitPart.Parent == part.Parent
end
return false
end
local function IsVisible(part)
return IsVisibleCustom(part, Camera.CFrame.Position)
end
local function GetNearestPart(character)
local parts = {"Head", "Torso", "HumanoidRootPart", "UpperTorso", "LowerTorso"}
local nearestPart, nearestDistance = nil, math_huge
for _, partName in ipairs(parts) do
local part = character:FindFirstChild(partName)
if part then
local screenPoint, onScreen = Camera:WorldToViewportPoint(part.Position)
if onScreen and screenPoint.Z > 0 then
local dist = (Vector2_new(screenPoint.X, screenPoint.Y) - screenCenter).Magnitude
if dist < nearestDistance then
nearestDistance = dist
nearestPart = part
end
end
end
end
return nearestPart
end
local function GetClosestEnemyAbsolute()
local closestPlayer, closestDistance = nil, math_huge
local hasTeam = HasTeamSystem()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
if AimAssistSettings.SkipDeadPlayers and not IsPlayerAlive(player) then
continue
end
if AimAssistSettings.TeamCheck and hasTeam and player.Team == LocalPlayer.Team then
continue
end
if HasSameOutfit(player) then
continue
end
local dist = (player.Character.HumanoidRootPart.Position - Camera.CFrame.Position).Magnitude
if dist < closestDistance then
closestDistance = dist
closestPlayer = player
end
end
end
return closestPlayer
end
local function GetClosestPlayer()
local closestPlayer, closestDistance = nil, math_huge
local hasTeam = HasTeamSystem()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
if AimAssistSettings.SkipDeadPlayers and not IsPlayerAlive(player) then
continue
end
if AimAssistSettings.TeamCheck and hasTeam and player.Team == LocalPlayer.Team then
continue
end
if HasSameOutfit(player) then
continue
end
local targetPart
if AimAssistSettings.AimPart == "Nearest" then
targetPart = GetNearestPart(player.Character)
else
targetPart = player.Character:FindFirstChild(AimAssistSettings.AimPart)
if not targetPart then
local fallbackMap = {
["Torso"] = {"Torso", "UpperTorso", "LowerTorso"},
["UpperTorso"] = {"UpperTorso", "Torso"},
["LowerTorso"] = {"LowerTorso", "Torso"},
["HumanoidRootPart"] = {"HumanoidRootPart"},
["Head"] = {"Head"}
}
local fallbacks = fallbackMap[AimAssistSettings.AimPart] or {AimAssistSettings.AimPart}
for _, fallback in ipairs(fallbacks) do
targetPart = player.Character:FindFirstChild(fallback)
if targetPart then break end
end
if not targetPart then
local lastResort = {"HumanoidRootPart", "Torso", "UpperTorso", "Head"}
for _, fallback in ipairs(lastResort) do
targetPart = player.Character:FindFirstChild(fallback)
if targetPart then break end
end
end
end
end
if targetPart then
if AimAssistSettings.WallCheck and not IsVisible(targetPart) then
continue
end
local screenPoint, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
if onScreen and screenPoint.Z > 0 then
local dist = (Vector2_new(screenPoint.X, screenPoint.Y) - screenCenter).Magnitude
if dist < AimAssistSettings.FOV and dist < closestDistance then
closestDistance = dist
closestPlayer = player
end
end
end
end
end
return closestPlayer
end
local function GetTargetPart(player)
if not player or not player.Character then return nil end
if AimAssistSettings.AimPart == "Nearest" then
return GetNearestPart(player.Character)
else
local part = player.Character:FindFirstChild(AimAssistSettings.AimPart)
if part then
return part
end
local fallbackMap = {
["Torso"] = {"Torso", "UpperTorso", "LowerTorso"},
["UpperTorso"] = {"UpperTorso", "Torso"},
["LowerTorso"] = {"LowerTorso", "Torso"},
["HumanoidRootPart"] = {"HumanoidRootPart"},
["Head"] = {"Head"}
}
local fallbacks = fallbackMap[AimAssistSettings.AimPart] or {AimAssistSettings.AimPart}
for _, fallback in ipairs(fallbacks) do
part = player.Character:FindFirstChild(fallback)
if part then
return part
end
end
local lastResort = {"HumanoidRootPart", "Torso", "UpperTorso", "Head"}
for _, fallback in ipairs(lastResort) do
part = player.Character:FindFirstChild(fallback)
if part then
return part
end
end
end
return nil
end
local function applyHitbox(plr)
if plr == LocalPlayer or not hitboxEnabled then return end
if teamCheck and plr.Team ~= nil and LocalPlayer.Team ~= nil and plr.Team == LocalPlayer.Team then return end
local function updateHitbox()
local char = plr.Character
local humanoid = char and char:FindFirstChildOfClass("Humanoid")
local root = char and char:FindFirstChild("HumanoidRootPart")
if humanoid and humanoid.Health > 0 and root then
if not ogSIZES[plr] then
ogSIZES[plr] = root.Size
end
root.Size = Vector3_new(hitboxSize, hitboxSize, hitboxSize)
root.Transparency = 0.9
root.BrickColor = BrickColor.new("Really black")
root.Material = Enum.Material.Neon
root.CanCollide = false
end
end
updateHitbox()
if hbCON[plr] then hbCON[plr]:Disconnect() end
hbCON[plr] = RunService.Heartbeat:Connect(function()
local char = plr.Character
local humanoid = char and char:FindFirstChildOfClass("Humanoid")
local root = char and char:FindFirstChild("HumanoidRootPart")
if humanoid and humanoid.Health > 0 and root then
root.Size = Vector3_new(hitboxSize, hitboxSize, hitboxSize)
root.Transparency = 0.9
root.BrickColor = BrickColor.new("Really black")
root.Material = Enum.Material.Neon
root.CanCollide = false
end
end)
end
local function removeHitbox(plr)
if hbCON[plr] then
hbCON[plr]:Disconnect()
hbCON[plr] = nil
end
local char = plr.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root and ogSIZES[plr] then
root.Size = ogSIZES[plr]
root.Transparency = 1
root.BrickColor = BrickColor.new("Really black")
root.Material = Enum.Material.Neon
root.CanCollide = true
end
ogSIZES[plr] = nil
end
local function GetPlayerColor(player)
if AimAssistSettings.ESP_RGB_NoTeam and (not player.Team or player.Team == nil) then
return GetRGBColor()
end
if player.Team and player.TeamColor then
return player.TeamColor.Color
else
return Color3_fromRGB(255, 255, 255)
end
end
local function GetESPLine()
local line = table.remove(ESP_Pool.lines)
if line then
line.Visible = true
return line
else
local newLine = Drawing.new("Line")
newLine.Visible = true
return newLine
end
end
local function ReturnESPLine(line)
if line then
line.Visible = false
table.insert(ESP_Pool.lines, line)
end
end
local function ReturnESPSkeleton(skeleton)
if skeleton then
for _, line in ipairs(skeleton) do
ReturnESPLine(line)
end
end
end
local function GetESPBox()
local box = table.remove(ESP_BoxPool)
if box then
box.Visible = true
return box
else
local newBox = Drawing.new("Quad")
newBox.Visible = true
newBox.Thickness = 1.5
newBox.Transparency = 1
return newBox
end
end
local function ReturnESPBox(box)
if box then
box.Visible = false
table.insert(ESP_BoxPool, box)
end
end
local function GetESPCircle()
local circle = table.remove(ESP_PartMarkerPool)
if circle then
circle.Visible = true
return circle
else
local newCircle = Drawing.new("Circle")
newCircle.Visible = true
newCircle.Radius = 8
newCircle.Thickness = 2
newCircle.Filled = false
return newCircle
end
end
local function ReturnESPCircle(circle)
if circle then
circle.Visible = false
table.insert(ESP_PartMarkerPool, circle)
end
end
local function GetESPNameText()
local t = table.remove(ESP_NamePool)
if t then
t.Visible = true
return t
else
local text = Drawing.new("Text")
text.Visible = true
text.Size = 16
text.Outline = true
text.Center = true
text.Font = 2
text.Color = Color3_fromRGB(255,255,255)
return text
end
end
local function ReturnESPNameText(t)
if t then
t.Visible = false
table.insert(ESP_NamePool, t)
end
end
local lastFrameTime = 0
local FRAME_LIMIT = 1/60
local lastESPUpdate = 0
local ESP_UPDATE_INTERVAL = 1/20
local function UpdateESP()
local currentTime = tick()
if currentTime - lastESPUpdate < ESP_UPDATE_INTERVAL then return end
lastESPUpdate = currentTime
for _, line in ipairs(ESP_Lines) do ReturnESPLine(line) end
ESP_Lines = {}
for _, skeleton in ipairs(ESP_Skeletons) do ReturnESPSkeleton(skeleton) end
ESP_Skeletons = {}
for _, box in ipairs(ESP_Boxes) do ReturnESPBox(box) end
ESP_Boxes = {}
for _, circ in ipairs(ESP_PartMarkers) do ReturnESPCircle(circ) end
ESP_PartMarkers = {}
for _, t in ipairs(ESP_NameTexts) do ReturnESPNameText(t) end
ESP_NameTexts = {}
local hasTeam = HasTeamSystem()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
if AimAssistSettings.SkipDeadPlayers and not IsPlayerAlive(player) then continue end
if AimAssistSettings.ESP_SkipTeam and hasTeam and player.Team == LocalPlayer.Team then continue end
local humanoidRootPart = player.Character.HumanoidRootPart
local pos, onScreen = Camera:WorldToViewportPoint(humanoidRootPart.Position)
if onScreen and pos.Z > 0 then
local color = GetPlayerColor(player)
if AimAssistSettings.ESP_Enabled then
local line = GetESPLine()
local fromY = AimAssistSettings.ESP_LineMode == "Top" and 0 or Camera.ViewportSize.Y
line.From = Vector2_new(Camera.ViewportSize.X / 2, fromY)
line.To = Vector2_new(pos.X, pos.Y)
line.Thickness = 1
line.Transparency = 1
line.Color = color
table.insert(ESP_Lines, line)
end
if AimAssistSettings.ESP_Skeleton then
local skeleton = {}
local character = player.Character
local skeletonColor = color
local function connectParts(partA, partB)
local p1, v1 = character:FindFirstChild(partA), character:FindFirstChild(partB)
if p1 and v1 then
local pos1, os1 = Camera:WorldToViewportPoint(p1.Position)
local pos2, os2 = Camera:WorldToViewportPoint(v1.Position)
if os1 and os2 and pos1.Z > 0 and pos2.Z > 0 then
local line = GetESPLine()
line.From = Vector2_new(pos1.X, pos1.Y)
line.To = Vector2_new(pos2.X, pos2.Y)
line.Color = skeletonColor
line.Thickness = 1.5
line.Transparency = 0.8
table.insert(skeleton, line)
end
end
end
if character:FindFirstChild("UpperTorso") then
connectParts("Head", "UpperTorso")
connectParts("UpperTorso", "LowerTorso")
connectParts("UpperTorso", "LeftUpperArm")
connectParts("LeftUpperArm", "LeftLowerArm")
connectParts("LeftLowerArm", "LeftHand")
connectParts("UpperTorso", "RightUpperArm")
connectParts("RightUpperArm", "RightLowerArm")
connectParts("RightLowerArm", "RightHand")
connectParts("LowerTorso", "LeftUpperLeg")
connectParts("LeftUpperLeg", "LeftLowerLeg")
connectParts("LeftLowerLeg", "LeftFoot")
connectParts("LowerTorso", "RightUpperLeg")
connectParts("RightUpperLeg", "RightLowerLeg")
connectParts("RightLowerLeg", "RightFoot")
else
connectParts("Head", "Torso")
connectParts("Torso", "Left Arm")
connectParts("Torso", "Right Arm")
connectParts("Torso", "Left Leg")
connectParts("Torso", "Right Leg")
end
table.insert(ESP_Skeletons, skeleton)
end
if AimAssistSettings.ESP_Box then
local min, max = Vector3.new(math.huge, math.huge, math.huge), Vector3.new(-math.huge, -math.huge, -math.huge)
for _, part in ipairs(player.Character:GetChildren()) do
if part:IsA("BasePart") then
min = Vector3.new(
math.min(min.X, part.Position.X - part.Size.X/2),
math.min(min.Y, part.Position.Y - part.Size.Y/2),
math.min(min.Z, part.Position.Z - part.Size.Z/2)
)
max = Vector3.new(
math.max(max.X, part.Position.X + part.Size.X/2),
math.max(max.Y, part.Position.Y + part.Size.Y/2),
math.max(max.Z, part.Position.Z + part.Size.Z/2)
)
end
end
local corners = {
Vector3.new(min.X, min.Y, min.Z),
Vector3.new(max.X, min.Y, min.Z),
Vector3.new(max.X, max.Y, min.Z),
Vector3.new(min.X, max.Y, min.Z),
Vector3.new(min.X, min.Y, max.Z),
Vector3.new(max.X, min.Y, max.Z),
Vector3.new(max.X, max.Y, max.Z),
Vector3.new(min.X, max.Y, max.Z),
}
local screenPoints = {}
local anyVisible = false
for _, v in ipairs(corners) do
local p, vis = Camera:WorldToViewportPoint(v)
if vis and p.Z > 0 then
anyVisible = true
end
table.insert(screenPoints, Vector2_new(p.X, p.Y))
end
if anyVisible then
local minX, minY, maxX, maxY = math.huge, math.huge, -math.huge, -math.huge
for _, v in ipairs(screenPoints) do
minX = math.min(minX, v.X)
minY = math.min(minY, v.Y)
maxX = math.max(maxX, v.X)
maxY = math.max(maxY, v.Y)
end
local box = GetESPBox()
box.Color = color
box.PointA = Vector2_new(minX, minY)
box.PointB = Vector2_new(maxX, minY)
box.PointC = Vector2_new(maxX, maxY)
box.PointD = Vector2_new(minX, maxY)
table.insert(ESP_Boxes, box)
end
end
if ESP_Name_Enabled then
local nameText = GetESPNameText()
nameText.Text = player.DisplayName or player.Name
nameText.Color = color
nameText.Size = 17
local head = player.Character:FindFirstChild("Head")
if head then
local headPos, headOnScreen = Camera:WorldToViewportPoint(head.Position + Vector3_new(0, 0.8, 0))
if headOnScreen and headPos.Z > 0 then
nameText.Position = Vector2_new(headPos.X, headPos.Y - 16)
else
nameText.Visible = false
end
else
nameText.Position = Vector2_new(pos.X, pos.Y - 16)
end
nameText.Visible = true
table.insert(ESP_NameTexts, nameText)
end
end
end
end
if AimAssistSettings.ESP_AimPart and AimAssistSettings.Enabled then
local target = GetClosestPlayer()
if target then
local part = GetTargetPart(target)
if part then
local p, vis = Camera:WorldToViewportPoint(part.Position)
if vis and p.Z > 0 then
local circ = GetESPCircle()
circ.Position = Vector2_new(p.X, p.Y)
circ.Color = Color3_fromRGB(255, 0, 0)
circ.Visible = true
table.insert(ESP_PartMarkers, circ)
end
end
end
end
end
local lastTarget = nil
local targetLockTime = 0
local LOCK_DURATION = 0.3
RunService.RenderStepped:Connect(function()
local currentTime = tick()
if currentTime - lastFrameTime < FRAME_LIMIT then return end
lastFrameTime = currentTime
if currentTime - lastScreenUpdate >= SCREEN_UPDATE_INTERVAL then
screenCenter = Vector2_new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
lastScreenUpdate = currentTime
end
if FOV_RGB_Enabled then
Circle.Color = GetRGBColor(FOV_RGB_Speed)
end
Circle.Radius = AimAssistSettings.FOV
Circle.Position = screenCenter
Circle.Visible = AimAssistSettings.Enabled
local currentTarget = nil
if AimAssistSettings.Enabled then
local target = GetClosestPlayer()
if target and target == lastTarget then
targetLockTime = currentTime
elseif target and not lastTarget then
lastTarget = target
targetLockTime = currentTime
elseif not target and lastTarget and (currentTime - targetLockTime) < LOCK_DURATION then
target = lastTarget
else
lastTarget = target
targetLockTime = currentTime
end
if target then
local targetPart = GetTargetPart(target)
if targetPart then
local isValid = true
if AimAssistSettings.SkipDeadPlayers and not IsPlayerAlive(target) then
isValid = false
end
if AimAssistSettings.TeamCheck and HasTeamSystem() and target.Team == LocalPlayer.Team then
isValid = false
end
if HasSameOutfit(target) then
isValid = false
end
if AimAssistSettings.WallCheck and not IsVisible(targetPart) then
isValid = false
end
local screenPoint, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
if onScreen and screenPoint.Z > 0 then
local dist = (Vector2_new(screenPoint.X, screenPoint.Y) - screenCenter).Magnitude
if dist > AimAssistSettings.FOV then
isValid = false
end
else
isValid = false
end
if isValid then
local aimPos = targetPart.Position
if AimAssistSettings.BulletPrediction and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
local targetVelocity = target.Character.HumanoidRootPart.Velocity
local distance = (aimPos - Camera.CFrame.Position).Magnitude
local timeToTarget = distance / 1000
aimPos = aimPos + (targetVelocity * timeToTarget * 0.1)
end
local dir = (aimPos - Camera.CFrame.Position).Unit
local goal = CFrame.new(Camera.CFrame.Position, Camera.CFrame.Position + dir)
local smoothness = AimAssistSettings.Sensitivity
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
local moveVector = LocalPlayer.Character.Humanoid.MoveDirection
if moveVector.Magnitude > 0.1 then
smoothness = smoothness * 0.7
end
end
if AimAssistSettings.SmoothAiming then
Camera.CFrame = Camera.CFrame:Lerp(goal, smoothness)
else
Camera.CFrame = goal
end
currentTarget = target
else
lastTarget = nil
end
end
else
lastTarget = nil
end
else
lastTarget = nil
end
if infoToggleEnabled then
InfoText.Visible = true
local str = ""
local closest = GetClosestEnemyAbsolute()
local closestName = "none"
if closest then
local dn = closest.DisplayName or closest.Name
local un = closest.Name
closestName = dn .. " (@" .. un .. ")"
end
local isStunned = false
if closest and closest.Character then
local stunVal = closest.Character:FindFirstChild("Stunned")
if stunVal and stunVal:IsA("BoolValue") then
isStunned = stunVal.Value
elseif closest.Character:FindFirstChildOfClass("Humanoid") and closest.Character.Humanoid:FindFirstChild("Stunned") then
local stunH = closest.Character.Humanoid.Stunned
if type(stunH) == "boolean" then
isStunned = stunH
elseif type(stunH) == "number" then
isStunned = stunH > 0
elseif typeof(stunH) == "Instance" and stunH:IsA("BoolValue") then
isStunned = stunH.Value
end
end
end
local stunText = isStunned and " [STUNNED]" or ""
local myTeam = (LocalPlayer.Team and LocalPlayer.Team.Name) or "none"
local aimTargetName = lastTarget and (lastTarget.DisplayName or lastTarget.Name) or "none"
local aimAssistState = AimAssistSettings.Enabled and "ENABLED" or "DISABLED"
local aimingPart = lastTarget and GetTargetPart(lastTarget) and GetTargetPart(lastTarget).Name or "none"
str = str .. ("[AimAssist: %s]\nTeam: %s\nClosest Enemy: %s%s\nAiming Target: %s\nAiming Part: %s"):format(
aimAssistState, myTeam, closestName, stunText, aimTargetName, aimingPart
)
local keysText = ""
for k in pairs(pressedKeys) do
keysText = keysText .. k .. " "
end
if keysText == "" then keysText = "none" end
str = str .. ("\nKeys Held: %s"):format(keysText)
InfoText.Text = str
InfoText.Position = Vector2_new(10, 100)
else
InfoText.Visible = false
end
end)
RunService.RenderStepped:Connect(UpdateESP)
local Window = Rayfield:CreateWindow({
Name = "Linhmc's Universal AimAssist",
LoadingTitle = "Universal AimAssist",
LoadingSubtitle = "by linhmc_new",
ConfigurationSaving = {Enabled = false}
})
local AimAssistTab = Window:CreateTab("AimAssist", "crosshair")
local HitboxTab = Window:CreateTab("Hitbox", 4483362458)
local VisualTab = Window:CreateTab("Visual", "eye")
local SettingsTab = Window:CreateTab("Settings", "settings")
AimAssistTab:CreateToggle({
Name = "Show Info Overlay",
CurrentValue = false,
Callback = function(state)
infoToggleEnabled = state
end
})
HitboxTab:CreateSlider({
Name = "Hitbox Size",
Range = {1, 50},
Increment = 1,
Suffix = "Size",
CurrentValue = 10,
Callback = function(value)
hitboxSize = value
end
})
HitboxTab:CreateToggle({
Name = "Enable Hitbox",
CurrentValue = false,
Callback = function(state)
hitboxEnabled = state
for _, plr in pairs(Players:GetPlayers()) do
if state then
applyHitbox(plr)
else
removeHitbox(plr)
end
end
end
})
HitboxTab:CreateToggle({
Name = "Hitbox Team Check",
CurrentValue = false,
Callback = function(state)
teamCheck = state
if hitboxEnabled then
for _, plr in pairs(Players:GetPlayers()) do
removeHitbox(plr)
applyHitbox(plr)
end
end
end
})
AimAssistTab:CreateToggle({
Name = "Enable AimAssist",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.Enabled = value
end
})
AimAssistTab:CreateDropdown({
Name = "Aim Part",
Options = {"Head", "Torso", "UpperTorso (R15)", "LowerTorso (R15)", "HumanoidRootPart", "Nearest"},
CurrentOption = "Nearest",
Callback = function(value)
if type(value) == "table" then
value = value[1]
end
if value == "UpperTorso (R15)" then value = "UpperTorso" end
if value == "LowerTorso (R15)" then value = "LowerTorso" end
AimAssistSettings.AimPart = value
end
})
AimAssistTab:CreateSlider({
Name = "FOV Radius",
Range = {30, 300},
Increment = 5,
CurrentValue = 100,
Callback = function(value)
AimAssistSettings.FOV = value
end
})
AimAssistTab:CreateSlider({
Name = "Smooth Aiming Sensitivity",
Range = {0.01, 1},
Increment = 0.01,
CurrentValue = 0.75,
Callback = function(value)
AimAssistSettings.Sensitivity = value
end
})
AimAssistTab:CreateToggle({
Name = "Bullet Prediction (JUSTFORFUN)",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.BulletPrediction = value
end
})
AimAssistTab:CreateToggle({
Name = "Smooth Aiming",
CurrentValue = true,
Callback = function(value)
AimAssistSettings.SmoothAiming = value
end
})
AimAssistTab:CreateColorPicker({
Name = "FOV Circle Color",
Color = Color3_fromRGB(255,0,0),
Callback = function(color)
if not FOV_RGB_Enabled then
Circle.Color = color
end
end
})
AimAssistTab:CreateToggle({
Name = "FOV RGB (Rainbow Circle)",
CurrentValue = false,
Callback = function(state)
FOV_RGB_Enabled = state
end
})
AimAssistTab:CreateSlider({
Name = "FOV RGB Speed",
Range = {0.5, 10},
Increment = 0.1,
CurrentValue = 2,
Callback = function(val)
FOV_RGB_Speed = val
end
})
local Paragraph = VisualTab:CreateParagraph({
Title = "ESP",
Content = "for a better EYE"
})
VisualTab:CreateToggle({
Name = "ESP Lines",
CurrentValue = true,
Callback = function(value)
AimAssistSettings.ESP_Enabled = value
end
})
VisualTab:CreateToggle({
Name = "ESP Skeleton",
CurrentValue = true,
Callback = function(value)
AimAssistSettings.ESP_Skeleton = value
end
})
VisualTab:CreateToggle({
Name = "RGB player who have no team",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.ESP_RGB_NoTeam = value
end
})
VisualTab:CreateToggle({
Name = "ESP Box",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.ESP_Box = value
end
})
VisualTab:CreateToggle({
Name = "ESP Aim Part",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.ESP_AimPart = value
end
})
VisualTab:CreateToggle({
Name = "ESP Name",
CurrentValue = false,
Callback = function(value)
ESP_Name_Enabled = value
end
})
VisualTab:CreateToggle({
Name = "Skip ESP Team",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.ESP_SkipTeam = value
end
})
SettingsTab:CreateToggle({
Name = "Wall Check",
CurrentValue = true,
Callback = function(value)
AimAssistSettings.WallCheck = value
end
})
SettingsTab:CreateToggle({
Name = "AimAssist Team Check",
CurrentValue = true,
Callback = function(value)
AimAssistSettings.TeamCheck = value
end
})
SettingsTab:CreateToggle({
Name = "Outfit Check (skip player who have same shirt and pants)",
CurrentValue = false,
Callback = function(value)
AimAssistSettings.OutfitCheck = value
end
})
SettingsTab:CreateToggle({
Name = "Skip Dead Players",
CurrentValue = true,
Callback = function(value)
AimAssistSettings.SkipDeadPlayers = value
end
})
SettingsTab:CreateToggle({
Name = "Ignore Parts Can Walk Through",
CurrentValue = false,
Callback = function(value)
ignoreThroughParts = value
end
})
Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function()
task.wait(1)
if hitboxEnabled then
applyHitbox(plr)
end
end)
end)
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= LocalPlayer then
plr.CharacterAdded:Connect(function()
task.wait(1)
if hitboxEnabled then
applyHitbox(plr)
end
end)
end
end
Rayfield:Notify({
Title = "Linhmc's AimAssist Loaded",
Content = "script loaded successfully",
Duration = 3,
Image = "check-circle"
})



@zyletrophene i removed the discord server ads if u want the original link i will use it on the next update
@linhmcfake please Script Ez Loopkill reset all kills protection
Hi linhmc fake have Loopkill discord and for chat you skip Script please can and No protection kills get leaderboard
How to put the script can someone show me