-- thank you for using Fentware local uiLib = loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local window = uiLib:CreateWindow({ Name = "FENTWARE", LoadingTitle = "FENTWARE", LoadingSubtitle = "starting...", ConfigurationSaving = { Enabled = false }, KeySystem = false }) local aimTab = window:CreateTab("Aim", 4483362458) local cfg = { fov = 150, smooth = 6, pred = 0.14, part = "Head", wall = true, maxDist = math.huge, drawFov = true } local enabled = false local players = game:GetService("Players") local runService = game:GetService("RunService") local workspace = game:GetService("Workspace") local cam = workspace.CurrentCamera local lp = players.LocalPlayer local fovCircle = Drawing.new("Circle") fovCircle.Color = Color3.fromRGB(255,255,255) fovCircle.Thickness = 2 fovCircle.NumSides = 120 fovCircle.Filled = false fovCircle.Transparency = 0.7 fovCircle.Visible = cfg.drawFov fovCircle.ZIndex = 999 local function updateFov() if not fovCircle then return end fovCircle.Position = Vector2.new(cam.ViewportSize.X/2, cam.ViewportSize.Y/2) fovCircle.Radius = cfg.fov end local function alive(plr) if not plr or plr == lp then return false end local char = plr.Character if not char then return false end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then return false end return true end local function canSee(part) if not cfg.wall then return true end if not part then return false end local origin = cam.CFrame.Position local dir = part.Position - origin local params = RaycastParams.new() params.FilterDescendantsInstances = {lp.Character} params.FilterType = Enum.RaycastFilterType.Exclude params.IgnoreWater = true local hit = workspace:Raycast(origin, dir, params) if not hit then return true end return hit.Instance:IsDescendantOf(part.Parent) end local function predict(part) if not part then return end local root = part.Parent:FindFirstChild("HumanoidRootPart") or part local vel = root.AssemblyLinearVelocity or Vector3.zero return part.Position + (vel * cfg.pred) end local function getTarget() local center = Vector2.new(cam.ViewportSize.X/2, cam.ViewportSize.Y/2) local best, closest = nil, cfg.fov for _, plr in ipairs(players:GetPlayers()) do if not alive(plr) then continue end local char = plr.Character local part = char:FindFirstChild(cfg.part) or char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart") if not part then continue end local pos = predict(part) local screen, onScreen = cam:WorldToViewportPoint(pos) if not onScreen then continue end local dist2d = (Vector2.new(screen.X, screen.Y) - center).Magnitude if dist2d > cfg.fov then continue end local dist3d = (pos - cam.CFrame.Position).Magnitude if dist3d > cfg.maxDist then continue end if not canSee(part) then continue end if dist2d < closest then closest = dist2d best = part end end return best end aimTab:CreateToggle({ Name = "Enabled", CurrentValue = false, Callback = function(v) enabled = v end }) aimTab:CreateKeybind({ Name = "Toggle Key", CurrentKeybind = "Z", Callback = function() enabled = not enabled end }) aimTab:CreateSlider({ Name = "FOV", Range = {50,500}, Increment = 5, CurrentValue = cfg.fov, Callback = function(v) cfg.fov = v fovCircle.Radius = v end }) aimTab:CreateSlider({ Name = "Smooth", Range = {0,20}, Increment = 1, CurrentValue = cfg.smooth, Callback = function(v) cfg.smooth = v end }) aimTab:CreateSlider({ Name = "Prediction", Range = {0,0.3}, Increment = 0.005, CurrentValue = cfg.pred, Callback = function(v) cfg.pred = v end }) aimTab:CreateToggle({ Name = "Wall Check", CurrentValue = cfg.wall, Callback = function(v) cfg.wall = v end }) aimTab:CreateToggle({ Name = "Draw FOV", CurrentValue = cfg.drawFov, Callback = function(v) cfg.drawFov = v fovCircle.Visible = v end }) aimTab:CreateDropdown({ Name = "Hit Part", Options = {"Head","UpperTorso","HumanoidRootPart","LowerTorso"}, CurrentOption = {"Head"}, Callback = function(v) cfg.part = v end }) runService.RenderStepped:Connect(function() updateFov() if not enabled then return end local target = getTarget() if not target then return end local pos = predict(target) local screen = cam:WorldToViewportPoint(pos) local center = Vector2.new(cam.ViewportSize.X/2, cam.ViewportSize.Y/2) local delta = Vector2.new(screen.X, screen.Y) - center local div = (cfg.smooth <= 0) and 1 or cfg.smooth pcall(function() mousemoverel(delta.X/div, delta.Y/div) end) end) cam:GetPropertyChangedSignal("ViewportSize"):Connect(updateFov) uiLib:Notify({ Title = "FENTWARE", Content = "loaded", Duration = 4 })