-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. 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 Rscripts Risk Notice ]] -- [[ Initialization Config ]] getgenv().KnifeConfig = { Enabled = false, HitPart = "Head", FOV = 450, ShowFOV = true, ShowCenterDot = true, Thickness = 2, Transparency = 0.2, Color = Color3.fromRGB(255, 255, 255), CenterDotSize = 6, CenterDotColor = Color3.fromRGB(255, 255, 255), } -- [[ Services ]] local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- [[ Mobile-Friendly GUI Cleanup & Setup ]] local success, gethuiResult = pcall(function() return gethui() end) local targetGuiParent = (success and gethuiResult) and gethuiResult or PlayerGui if targetGuiParent:FindFirstChild("FOVCircleGui") then targetGuiParent.FOVCircleGui:Destroy() end local fovGui = Instance.new("ScreenGui") fovGui.Name = "FOVCircleGui" fovGui.ResetOnSpawn = false fovGui.IgnoreGuiInset = true fovGui.Parent = targetGuiParent -- FOV Frame local fovFrame = Instance.new("Frame") fovFrame.Name = "FOVCircle" fovFrame.AnchorPoint = Vector2.new(0.5, 0.5) fovFrame.Position = UDim2.fromScale(0.5, 0.5) fovFrame.BackgroundTransparency = 1 fovFrame.Visible = getgenv().KnifeConfig.ShowFOV fovFrame.Parent = fovGui local fovCorner = Instance.new("UICorner") fovCorner.CornerRadius = UDim.new(1, 0) fovCorner.Parent = fovFrame local fovStroke = Instance.new("UIStroke") fovStroke.Color = getgenv().KnifeConfig.Color fovStroke.Thickness = getgenv().KnifeConfig.Thickness fovStroke.Transparency = getgenv().KnifeConfig.Transparency fovStroke.Parent = fovFrame -- Center Dot local centerDot = Instance.new("Frame") centerDot.Name = "CenterDot" centerDot.AnchorPoint = Vector2.new(0.5, 0.5) centerDot.Position = UDim2.fromScale(0.5, 0.5) centerDot.Size = UDim2.fromOffset(getgenv().KnifeConfig.CenterDotSize, getgenv().KnifeConfig.CenterDotSize) centerDot.BackgroundColor3 = getgenv().KnifeConfig.CenterDotColor centerDot.Visible = getgenv().KnifeConfig.ShowCenterDot and getgenv().KnifeConfig.ShowFOV centerDot.Parent = fovGui local dotCorner = Instance.new("UICorner") dotCorner.CornerRadius = UDim.new(1, 0) dotCorner.Parent = centerDot -- [[ FOV Functions ]] local function updateFOV() if not fovFrame or not centerDot then return end fovFrame.Position = UDim2.fromScale(0.5, 0.5) fovFrame.Size = UDim2.fromOffset(getgenv().KnifeConfig.FOV * 2, getgenv().KnifeConfig.FOV * 2) centerDot.Position = UDim2.fromScale(0.5, 0.5) end local function connectCamera(camera) if not camera then return end camera:GetPropertyChangedSignal("ViewportSize"):Connect(updateFOV) updateFOV() end connectCamera(Workspace.CurrentCamera) Workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function() connectCamera(Workspace.CurrentCamera) end) updateFOV() -- [[ Rayfield Gen2 UI Setup ]] local Rayfield = loadstring(game:HttpGet("https://sirius.menu/gen2"))() local window = Rayfield:CreateWindow({ name = "Combat Hub", subtitle = "Rayfield Gen2", }) local tab = window:CreateTab({ name = "Combat Options", icon = 93364949241311 }) -- Toggle: Silent Aim tab:CreateToggle({ name = "Enable Knife Silent Aim", currentValue = getgenv().KnifeConfig.Enabled, callback = function(value) getgenv().KnifeConfig.Enabled = value end, }) -- Toggle: FOV Circle tab:CreateToggle({ name = "Show FOV Circle", currentValue = getgenv().KnifeConfig.ShowFOV, callback = function(value) getgenv().KnifeConfig.ShowFOV = value if fovFrame then fovFrame.Visible = value end if centerDot then centerDot.Visible = value and getgenv().KnifeConfig.ShowCenterDot end end, }) -- Toggle: Center Dot tab:CreateToggle({ name = "Show Center Dot", currentValue = getgenv().KnifeConfig.ShowCenterDot, callback = function(value) getgenv().KnifeConfig.ShowCenterDot = value if centerDot then centerDot.Visible = getgenv().KnifeConfig.ShowFOV and value end end, }) -- Slider: FOV Radius tab:CreateSlider({ name = "Aim FOV Radius", range = {0, 1000}, increment = 10, currentValue = getgenv().KnifeConfig.FOV, callback = function(value) getgenv().KnifeConfig.FOV = value updateFOV() end, }) -- Dropdown: Hit Part tab:CreateDropdown({ name = "Target Part", options = {"Head", "HumanoidRootPart", "Torso", "UpperTorso"}, currentValue = getgenv().KnifeConfig.HitPart, callback = function(value) getgenv().KnifeConfig.HitPart = value[1] end, }) -- [[ Knife Controller Hook ]] local KnifeController = require(LocalPlayer.PlayerScripts:WaitForChild("Controllers"):WaitForChild("Combat"):WaitForChild("KnifeController")) local function getClosestPlayer() local targetPlayer = nil local currentFOV = getgenv().KnifeConfig.FOV local currentCamera = Workspace.CurrentCamera if not currentCamera then return nil end local screenCenter = currentCamera.ViewportSize / 2 local hitPartName = getgenv().KnifeConfig.HitPart for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local character = player.Character if not character then continue end local humanoid = character:FindFirstChildOfClass("Humanoid") if not humanoid or humanoid.Health <= 0 then continue end local targetPart = character:FindFirstChild(hitPartName) if not targetPart then continue end local screenPos, onScreen = currentCamera:WorldToViewportPoint(targetPart.Position) if not onScreen then continue end local distanceFromCenter = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude if distanceFromCenter < currentFOV then targetPlayer = player currentFOV = distanceFromCenter end end return targetPlayer end local originalGetThrowDirection = KnifeController._GetThrowDirection KnifeController._GetThrowDirection = function(self, startCFrame, ...) if getgenv().KnifeConfig.Enabled then local target = getClosestPlayer() if target and target.Character then local targetPart = target.Character:FindFirstChild(getgenv().KnifeConfig.HitPart) if targetPart then return (targetPart.Position - startCFrame.Position).Unit end end end return originalGetThrowDirection(self, startCFrame, ...) end