local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") local LP = Players.LocalPlayer local Cam = workspace.CurrentCamera local cache = {} local rsCon, paCon, prCon local espOn = true local boxOn = true local nameOn = true local hpOn = true local distOn = true local traceOn = true local skelOn = true local dotOn = true local wepOn = true local offOn = true local teamCheck = false local visCheck = true local rgbOn = false local fadeOn = true local dynOn = true local glowOn = true local txtSize = 14 local boxTrans = 0.4 local traceThick = 1.5 local skelThick = 1.2 local dotSize = 4 local enemyBox = Color3.fromRGB(255, 0, 0) local enemyTxt = Color3.fromRGB(255, 100, 100) local enemySkel = Color3.fromRGB(255, 50, 50) local teamBox = Color3.fromRGB(0, 255, 0) local teamTxt = Color3.fromRGB(100, 255, 100) local teamSkel = Color3.fromRGB(50, 255, 50) local traceCol = Color3.fromRGB(255, 255, 255) local offCol = Color3.fromRGB(255, 200, 0) local joints = { {"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"}, {"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"}, {"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"}, {"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"}, {"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"} } local function canSee(plr) if not visCheck then return true end local char = plr.Character if not char then return false end local head = char:FindFirstChild("Head") if not head then return false end local origin = Cam.CFrame.Position local dir = (head.Position - origin) local rp = RaycastParams.new() rp.FilterDescendantsInstances = {LP.Character, char} rp.FilterType = Enum.RaycastFilterType.Blacklist return workspace:Raycast(origin, dir, rp) == nil end local function rainbow(offset) return Color3.fromHSV(((tick() + (offset or 0)) % 5) / 5, 1, 1) end local function getColors(plr) if rgbOn then return rainbow(), rainbow(0.5), rainbow(1) end if teamCheck and plr.Team == LP.Team then return teamBox, teamTxt, teamSkel end return enemyBox, enemyTxt, enemySkel end local function getBoxSize(char) if not dynOn then return Vector3.new(4, 6, 4) end local hrp = char:FindFirstChild("HumanoidRootPart") local head = char:FindFirstChild("Head") if hrp and head then local h = (head.Position - hrp.Position).Magnitude * 2.5 return Vector3.new(4, math.clamp(h, 4, 10), 4) end return Vector3.new(4, 6, 4) end local function getTool(plr) local char = plr.Character if not char then return "None" end for _, v in ipairs(char:GetChildren()) do if v:IsA("Tool") then return v.Name end end return "None" end local function healthGrad(pct) if pct > 0.6 then return Color3.fromRGB(0, 255, 0):Lerp(Color3.fromRGB(255, 255, 0), (1 - pct) * 2.5) end return Color3.fromRGB(255, 255, 0):Lerp(Color3.fromRGB(255, 0, 0), (0.6 - pct) * 2.5) end local function newDraw(class, props) local obj = Drawing.new(class) for k, v in pairs(props) do obj[k] = v end return obj end local function setup(plr) if cache[plr] then return end local char = plr.Character if not char then return end local root = char:FindFirstChild("HumanoidRootPart") if not root then return end local d = { char = char, gui = nil, lines = {}, trace = nil, skel = {}, dot = nil, off = nil, hpBar = nil, hpOut = nil, hl = nil, nameLbl = nil, infoLbl = nil, wepLbl = nil } local gui = Instance.new("BillboardGui") gui.Name = "O_" .. plr.Name gui.Adornee = root gui.AlwaysOnTop = true gui.Size = UDim2.new(0, 260, 0, 80) gui.StudsOffset = Vector3.new(0, 4, 0) gui.Parent = CoreGui local nl = Instance.new("TextLabel") nl.Name = "N" nl.Size = UDim2.new(1, 0, 0.35, 0) nl.BackgroundTransparency = 1 nl.TextScaled = true nl.Font = Enum.Font.GothamBold nl.TextStrokeTransparency = 0.5 nl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) nl.Parent = gui local il = Instance.new("TextLabel") il.Name = "I" il.Size = UDim2.new(1, 0, 0.3, 0) il.Position = UDim2.new(0, 0, 0.35, 0) il.BackgroundTransparency = 1 il.TextScaled = true il.Font = Enum.Font.Gotham il.TextStrokeTransparency = 0.5 il.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) il.Parent = gui local wl = Instance.new("TextLabel") wl.Name = "W" wl.Size = UDim2.new(1, 0, 0.35, 0) wl.Position = UDim2.new(0, 0, 0.65, 0) wl.BackgroundTransparency = 1 wl.TextScaled = true wl.Font = Enum.Font.Gotham wl.TextStrokeTransparency = 0.5 wl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) wl.Parent = gui d.gui = gui d.nameLbl = nl d.infoLbl = il d.wepLbl = wl for _ = 1, 8 do table.insert(d.lines, newDraw("Line", {Thickness = 1.5, Color = enemyBox, Transparency = 1})) end local h = Instance.new("Highlight") h.Name = "H_" .. plr.Name h.Adornee = char h.FillColor = enemyBox h.OutlineColor = Color3.fromRGB(255, 255, 255) h.FillTransparency = 0.8 h.OutlineTransparency = 0 h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop h.Enabled = false h.Parent = CoreGui d.hl = h d.trace = newDraw("Line", {Thickness = traceThick, Color = traceCol, Transparency = 1}) d.dot = newDraw("Circle", {Radius = dotSize, Color = enemyBox, Thickness = 1, Filled = true, Transparency = 1}) d.off = newDraw("Triangle", {Filled = true, Thickness = 1, Transparency = 0.8}) d.hpBar = newDraw("Square", {Filled = true, Thickness = 1}) d.hpOut = newDraw("Square", {Filled = false, Thickness = 1, Color = Color3.fromRGB(0, 0, 0)}) for _, j in ipairs(joints) do table.insert(d.skel, { ln = newDraw("Line", {Thickness = skelThick, Color = enemySkel, Transparency = 1}), f = j[1], t = j[2] }) end cache[plr] = d end local function drawCorners(d, tl, br, col, a) local w = br.X - tl.X local h = br.Y - tl.Y local cs = math.clamp(math.min(w, h) * 0.15, 8, 35) local t = boxTrans * a local l = d.lines l[1].From = tl l[1].To = Vector2.new(tl.X + cs, tl.Y) l[1].Color = col l[1].Transparency = t l[1].Visible = true l[2].From = tl l[2].To = Vector2.new(tl.X, tl.Y + cs) l[2].Color = col l[2].Transparency = t l[2].Visible = true l[3].From = Vector2.new(br.X - cs, tl.Y) l[3].To = Vector2.new(br.X, tl.Y) l[3].Color = col l[3].Transparency = t l[3].Visible = true l[4].From = Vector2.new(br.X, tl.Y) l[4].To = Vector2.new(br.X, tl.Y + cs) l[4].Color = col l[4].Transparency = t l[4].Visible = true l[5].From = Vector2.new(tl.X, br.Y - cs) l[5].To = Vector2.new(tl.X, br.Y) l[5].Color = col l[5].Transparency = t l[5].Visible = true l[6].From = Vector2.new(tl.X, br.Y) l[6].To = Vector2.new(tl.X + cs, br.Y) l[6].Color = col l[6].Transparency = t l[6].Visible = true l[7].From = Vector2.new(br.X - cs, br.Y) l[7].To = Vector2.new(br.X, br.Y) l[7].Color = col l[7].Transparency = t l[7].Visible = true l[8].From = Vector2.new(br.X, br.Y - cs) l[8].To = Vector2.new(br.X, br.Y) l[8].Color = col l[8].Transparency = t l[8].Visible = true end local function hideLines(d) for _, l in ipairs(d.lines) do l.Visible = false end end local function updateSkel(d, char, col) if not skelOn then for _, j in ipairs(d.skel) do j.ln.Visible = false end return end for _, j in ipairs(d.skel) do local fp = char:FindFirstChild(j.f) local tp = char:FindFirstChild(j.t) if fp and tp then local f = Cam:WorldToViewportPoint(fp.Position) local t = Cam:WorldToViewportPoint(tp.Position) if f.Z > 0 and t.Z > 0 then j.ln.Visible = true j.ln.From = Vector2.new(f.X, f.Y) j.ln.To = Vector2.new(t.X, t.Y) j.ln.Color = col else j.ln.Visible = false end else j.ln.Visible = false end end end local function updateOff(d, pos) if not offOn then d.off.Visible = false return end local s = Cam:WorldToViewportPoint(pos) if s.Z > 0 then d.off.Visible = false return end local sc = Vector2.new(Cam.ViewportSize.X / 2, Cam.ViewportSize.Y / 2) local dir = Vector2.new(s.X, s.Y) - sc local a = math.atan2(dir.Y, dir.X) local dist = math.min(Cam.ViewportSize.X, Cam.ViewportSize.Y) * 0.4 local ip = sc + Vector2.new(math.cos(a) * dist, math.sin(a) * dist) d.off.Visible = true d.off.Color = offCol d.off.PointA = ip d.off.PointB = ip + Vector2.new(math.cos(a - 0.3) * 15, math.sin(a - 0.3) * 15) d.off.PointC = ip + Vector2.new(math.cos(a + 0.3) * 15, math.sin(a + 0.3) * 15) end local function updateHp(d, hum, pos, dist) if not hpOn then d.hpBar.Visible = false d.hpOut.Visible = false return end local rs = Cam:WorldToViewportPoint(pos) if rs.Z <= 0 then d.hpBar.Visible = false d.hpOut.Visible = false return end local pct = hum.Health / hum.MaxHealth local bh = 40 * (1 - math.clamp(dist / 1000, 0, 0.7)) local bw = 4 local bx = rs.X + 25 local by = rs.Y - bh / 2 d.hpOut.Visible = true d.hpOut.Size = Vector2.new(bw, bh) d.hpOut.Position = Vector2.new(bx, by) d.hpBar.Visible = true d.hpBar.Size = Vector2.new(bw, bh * pct) d.hpBar.Position = Vector2.new(bx, by + bh * (1 - pct)) d.hpBar.Color = healthGrad(pct) end local function hideAll(d) if d.gui then d.gui.Enabled = false end hideLines(d) if d.trace then d.trace.Visible = false end if d.dot then d.dot.Visible = false end if d.off then d.off.Visible = false end if d.hpBar then d.hpBar.Visible = false end if d.hpOut then d.hpOut.Visible = false end if d.hl then d.hl.Enabled = false end for _, j in ipairs(d.skel) do j.ln.Visible = false end end local function loop() for _, plr in ipairs(Players:GetPlayers()) do if plr == LP then continue end local char = plr.Character if not char then if cache[plr] then hideAll(cache[plr]) end continue end local root = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChild("Humanoid") local head = char:FindFirstChild("Head") if not root or not hum then if cache[plr] then hideAll(cache[plr]) end continue end if not cache[plr] or cache[plr].char ~= char then if cache[plr] then local old = cache[plr] if old.gui then old.gui:Destroy() end for _, l in ipairs(old.lines) do l:Remove() end if old.trace then old.trace:Remove() end if old.dot then old.dot:Remove() end if old.off then old.off:Remove() end if old.hpBar then old.hpBar:Remove() end if old.hpOut then old.hpOut:Remove() end if old.hl then old.hl:Destroy() end for _, j in ipairs(old.skel) do j.ln:Remove() end cache[plr] = nil end setup(plr) end local d = cache[plr] if not d then continue end local dist = (Cam.CFrame.Position - root.Position).Magnitude local see = canSee(plr) local bc, tc2, sc = getColors(plr) local a = fadeOn and math.clamp(1 - (dist / 3000), 0.2, 1) or 1 if not see and visCheck then bc = bc:Lerp(Color3.fromRGB(100, 100, 100), 0.5) tc2 = tc2:Lerp(Color3.fromRGB(150, 150, 150), 0.5) end if d.gui then d.gui.Enabled = nameOn if nameOn then d.nameLbl.Text = plr.Name d.nameLbl.TextColor3 = tc2 d.nameLbl.TextSize = txtSize local ht = hpOn and string.format("[%.0f%%]", (hum.Health / hum.MaxHealth) * 100) or "" local dt = distOn and string.format("[%.0fm]", dist) or "" local vt = (visCheck and not see) and "[WALL]" or "" d.infoLbl.Text = string.format("%s %s %s", ht, dt, vt):gsub("^%s+", "") d.infoLbl.TextColor3 = tc2 local w = wepOn and getTool(plr) or "None" d.wepLbl.Text = w ~= "None" and "🔫 " .. w or "" d.wepLbl.TextColor3 = tc2 end end if boxOn then local rp = Cam:WorldToViewportPoint(root.Position) local hp2 = head and Cam:WorldToViewportPoint(head.Position) if rp.Z > 0 and hp2 and hp2.Z > 0 then local sz = getBoxSize(char) local hw = sz.X * 15 local h = (rp.Y - hp2.Y) * 1.4 local tl = Vector2.new(rp.X - hw, hp2.Y - h * 0.2) local br = Vector2.new(rp.X + hw, rp.Y + h * 0.1) drawCorners(d, tl, br, bc, a) else hideLines(d) end else hideLines(d) end if d.hl then d.hl.Enabled = glowOn d.hl.FillColor = bc end if traceOn then local sp, on = Cam:WorldToViewportPoint(root.Position) if on then d.trace.Visible = true d.trace.From = Vector2.new(Cam.ViewportSize.X / 2, Cam.ViewportSize.Y) d.trace.To = Vector2.new(sp.X, sp.Y) d.trace.Color = traceCol d.trace.Transparency = a else d.trace.Visible = false end else d.trace.Visible = false end if dotOn and head then local hp2 = Cam:WorldToViewportPoint(head.Position) if hp2.Z > 0 then d.dot.Visible = true d.dot.Position = Vector2.new(hp2.X, hp2.Y) d.dot.Color = bc d.dot.Radius = dotSize * (1 + (1 - math.clamp(dist / 500, 0, 1)) * 2) d.dot.Transparency = a else d.dot.Visible = false end else d.dot.Visible = false end updateSkel(d, char, sc) updateOff(d, root.Position) updateHp(d, hum, root.Position, dist) end end local function destroyDrawings(d) if d.gui then d.gui:Destroy() end for _, l in ipairs(d.lines) do l:Remove() end if d.trace then d.trace:Remove() end if d.dot then d.dot:Remove() end if d.off then d.off:Remove() end if d.hpBar then d.hpBar:Remove() end if d.hpOut then d.hpOut:Remove() end if d.hl then d.hl:Destroy() end for _, j in ipairs(d.skel) do j.ln:Remove() end end local function clearPlayer(p) if cache[p] then destroyDrawings(cache[p]) cache[p] = nil end end local function clearAll() for _, d in pairs(cache) do destroyDrawings(d) end cache = {} end local function unload() clearAll() if rsCon then rsCon:Disconnect() rsCon = nil end if paCon then paCon:Disconnect() paCon = nil end if prCon then prCon:Disconnect() prCon = nil end end local W = Rayfield:CreateWindow({ Name = "Oracle", LoadingTitle = "Oracle", LoadingSubtitle = "Sight Beyond Sight", ConfigurationSaving = { Enabled = true, FolderName = "Oracle", FileName = "Config" }, Theme = { TextColor = Color3.fromRGB(240, 240, 240), Background = Color3.fromRGB(15, 15, 25), Topbar = Color3.fromRGB(25, 25, 40), Shadow = Color3.fromRGB(0, 0, 0), NotificationBackground = Color3.fromRGB(20, 20, 35), NotificationActionsBackground = Color3.fromRGB(35, 35, 55), TabBackground = Color3.fromRGB(30, 30, 50), TabStroke = Color3.fromRGB(45, 45, 70), TabBackgroundSelected = Color3.fromRGB(50, 50, 80), TabTextColor = Color3.fromRGB(180, 180, 200), SelectedTabTextColor = Color3.fromRGB(255, 255, 255), ElementBackground = Color3.fromRGB(25, 25, 40), ElementBackgroundHover = Color3.fromRGB(35, 35, 55), ElementStroke = Color3.fromRGB(40, 40, 60), SecondaryElementBackground = Color3.fromRGB(30, 30, 50), SecondaryElementStroke = Color3.fromRGB(50, 50, 75), SliderBackground = Color3.fromRGB(40, 40, 60), SliderProgress = Color3.fromRGB(80, 60, 180), SliderStroke = Color3.fromRGB(60, 60, 90), ToggleBackground = Color3.fromRGB(40, 40, 60), ToggleEnabled = Color3.fromRGB(100, 80, 200), ToggleDisabled = Color3.fromRGB(60, 60, 80), ToggleEnabledStroke = Color3.fromRGB(120, 100, 220), ToggleDisabledStroke = Color3.fromRGB(70, 70, 90), ToggleEnabledInner = Color3.fromRGB(140, 120, 240), ToggleDisabledInner = Color3.fromRGB(80, 80, 100), InputBackground = Color3.fromRGB(30, 30, 50), InputStroke = Color3.fromRGB(50, 50, 75), PlaceholderColor = Color3.fromRGB(100, 100, 120), DialogBackground = Color3.fromRGB(20, 20, 35), DialogButtonBackground = Color3.fromRGB(40, 40, 65), DialogButtonBackgroundSelected = Color3.fromRGB(60, 60, 95), DialogButtonText = Color3.fromRGB(200, 200, 220), DialogButtonTextSelected = Color3.fromRGB(255, 255, 255), DialogButtonBorder = Color3.fromRGB(55, 55, 80), DialogButtonBorderSelected = Color3.fromRGB(80, 80, 120), DialogTitle = Color3.fromRGB(220, 220, 240), DialogText = Color3.fromRGB(180, 180, 200) } }) local M = W:CreateTab("Main", 4483362458) local V = W:CreateTab("Visuals", 6026568198) local A = W:CreateTab("Advanced", 6034287535) local S = W:CreateTab("Settings", 4483362458) M:CreateToggle({ Name = "Enable ESP", CurrentValue = true, Flag = "Oracle_ESP", Callback = function(v) espOn = v end }) M:CreateToggle({ Name = "Team Check", CurrentValue = false, Flag = "Oracle_TeamCheck", Callback = function(v) teamCheck = v end }) M:CreateToggle({ Name = "Visible Check", CurrentValue = true, Flag = "Oracle_VisCheck", Callback = function(v) visCheck = v end }) M:CreateButton({ Name = "Refresh ESP", Callback = function() clearAll() end }) V:CreateSection("Display Elements") V:CreateToggle({ Name = "Boxes", CurrentValue = true, Flag = "Oracle_Boxes", Callback = function(v) boxOn = v end }) V:CreateToggle({ Name = "Names", CurrentValue = true, Flag = "Oracle_Names", Callback = function(v) nameOn = v end }) V:CreateToggle({ Name = "Health", CurrentValue = true, Flag = "Oracle_Health", Callback = function(v) hpOn = v end }) V:CreateToggle({ Name = "Distance", CurrentValue = true, Flag = "Oracle_Distance", Callback = function(v) distOn = v end }) V:CreateToggle({ Name = "Tracers", CurrentValue = true, Flag = "Oracle_Tracers", Callback = function(v) traceOn = v end }) V:CreateToggle({ Name = "Skeleton", CurrentValue = false, Flag = "Oracle_Skeleton", Callback = function(v) skelOn = v end }) V:CreateToggle({ Name = "Head Dots", CurrentValue = true, Flag = "Oracle_HeadDots", Callback = function(v) dotOn = v end }) V:CreateToggle({ Name = "Weapon Info", CurrentValue = true, Flag = "Oracle_Weapon", Callback = function(v) wepOn = v end }) V:CreateToggle({ Name = "Offscreen Indicators", CurrentValue = true, Flag = "Oracle_Offscreen", Callback = function(v) offOn = v end }) V:CreateSection("Colors") V:CreateColorPicker({ Name = "Enemy Box & Dot", Color = enemyBox, Flag = "Oracle_ColEnemyBox", Callback = function(v) enemyBox = v end }) V:CreateColorPicker({ Name = "Enemy Text", Color = enemyTxt, Flag = "Oracle_ColEnemyText", Callback = function(v) enemyTxt = v end }) V:CreateColorPicker({ Name = "Enemy Skeleton", Color = enemySkel, Flag = "Oracle_ColEnemySkel", Callback = function(v) enemySkel = v end }) V:CreateColorPicker({ Name = "Team Box & Dot", Color = teamBox, Flag = "Oracle_ColTeamBox", Callback = function(v) teamBox = v end }) V:CreateColorPicker({ Name = "Team Text", Color = teamTxt, Flag = "Oracle_ColTeamText", Callback = function(v) teamTxt = v end }) V:CreateColorPicker({ Name = "Team Skeleton", Color = teamSkel, Flag = "Oracle_ColTeamSkel", Callback = function(v) teamSkel = v end }) V:CreateColorPicker({ Name = "Tracer Color", Color = traceCol, Flag = "Oracle_ColTracer", Callback = function(v) traceCol = v end }) V:CreateColorPicker({ Name = "Offscreen Color", Color = offCol, Flag = "Oracle_ColOffscreen", Callback = function(v) offCol = v end }) A:CreateSection("Advanced Features") A:CreateToggle({ Name = "Rainbow Mode", CurrentValue = false, Flag = "Oracle_Rainbow", Callback = function(v) rgbOn = v end }) A:CreateToggle({ Name = "Fade on Distance", CurrentValue = true, Flag = "Oracle_Fade", Callback = function(v) fadeOn = v end }) A:CreateToggle({ Name = "Dynamic Box Size", CurrentValue = true, Flag = "Oracle_DynamicBox", Callback = function(v) dynOn = v end }) A:CreateToggle({ Name = "Highlight Target", CurrentValue = true, Flag = "Oracle_Glow", Callback = function(v) glowOn = v end }) A:CreateSlider({ Name = "Box Transparency", Range = {0, 1}, Increment = 0.05, CurrentValue = 0.4, Flag = "Oracle_BoxTrans", Callback = function(v) boxTrans = v end }) A:CreateSlider({ Name = "Text Size", Range = {10, 24}, Increment = 1, CurrentValue = 14, Flag = "Oracle_TextSize", Callback = function(v) txtSize = v end }) A:CreateSlider({ Name = "Head Dot Size", Range = {2, 12}, Increment = 0.5, CurrentValue = 4, Flag = "Oracle_DotSize", Callback = function(v) dotSize = v end }) A:CreateSlider({ Name = "Tracer Thickness", Range = {0.5, 5}, Increment = 0.5, CurrentValue = 1.5, Flag = "Oracle_TraceThick", Callback = function(v) traceThick = v end }) A:CreateSlider({ Name = "Skeleton Thickness", Range = {0.5, 4}, Increment = 0.5, CurrentValue = 1.2, Flag = "Oracle_SkelThick", Callback = function(v) skelThick = v end }) S:CreateSection("Configuration") S:CreateButton({ Name = "Save Config", Callback = function() Rayfield:SaveConfiguration() end }) S:CreateButton({ Name = "Unload ESP", Callback = function() unload() Rayfield:Destroy() end }) S:CreateLabel("Oracle v3.1 - Infinite Range | Corner Boxes") for _, p in ipairs(Players:GetPlayers()) do if p ~= LP then setup(p) end end paCon = Players.PlayerAdded:Connect(function(p) if p ~= LP then setup(p) end end) prCon = Players.PlayerRemoving:Connect(function(p) clearPlayer(p) end) rsCon = RunService.RenderStepped:Connect(function() if espOn then loop() end end) Rayfield:Notify({ Title = "Oracle", Content = "Sight Beyond Sight", Duration = 6, Image = 4483362458 }) Rayfield:LoadConfiguration()