-- ================================= -- https://rscripts.net/@r77 -- DEV -- > R-77 ; DISCORD - tankuct. -- https://rscripts.net/@r77 -- ================================= local function safeHttpGet(url) return pcall(function() return game:HttpGet(url) end) end local function loadRayfield() if typeof(loadstring) ~= "function" then return nil end local urls = { "https://raw.githubusercontent.com/shlexware/Rayfield/main/source", "https://sirius.menu/rayfield", } for _, url in ipairs(urls) do local ok, src = safeHttpGet(url) if ok and type(src) == "string" and #src > 0 and not src:find("^404") then local f = loadstring(src); if f then local lib = f(); if type(lib) == "table" and (lib.CreateWindow or lib.Destroy) then return lib end end end end return nil end local Rayfield = loadRayfield() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local ProximityPromptService = game:GetService("ProximityPromptService") local VIM = game:GetService("VirtualInputManager") local CoreGui = game:GetService("CoreGui") local lp = Players.LocalPlayer local function getHRP() local c=lp.Character or lp.CharacterAdded:Wait(); return c:WaitForChild("HumanoidRootPart") end local ACTIVE_CONN = nil local SAFE_PAD = nil local FB_GUI = nil local RF_WINDOW = nil local MAGNET_TIME = 0.7 local F_SPAM_TIME = 0.8 local BOMB_DELAY = 0 local SAFE_HEIGHT = 120 local ESCAPE_OFFSET = Vector3.new(0, 0, -3) local function hasTouch(p) return p:FindFirstChildWhichIsA("TouchTransmitter") or p:FindFirstChild("TouchInterest") end local function collectTargets() local acc, seen = {}, {} for _, inst in ipairs(game:GetDescendants()) do if inst.Name=="ExplosionPart" then if inst:IsA("BasePart") then if hasTouch(inst) and not seen[inst] then seen[inst]=true; table.insert(acc, inst) end else for _, d in ipairs(inst:GetDescendants()) do if d:IsA("BasePart") and hasTouch(d) and not seen[d] then seen[d]=true; table.insert(acc, d) end end end end end return acc end local function firePartTouch(hrp, part) if typeof(firetouchinterest) == "function" then local ok=false for _=1,3 do local s = pcall(function() firetouchinterest(hrp, part, 0); task.wait(0.004); firetouchinterest(hrp, part, 1) end) if s then ok=true; break end task.wait(0.01) end return ok else local cf=hrp.CFrame hrp.CFrame=part.CFrame+Vector3.new(0,3,0); task.wait(0.05); hrp.CFrame=cf return true end end local function explodeAllMines(notify) local hrp=getHRP() local list=collectTargets() local total = #list local fired, failed = 0, 0 if typeof(firetouchinterest) == "function" then local inFlight, maxConc = 0, 30 for _, part in ipairs(list) do if part and part.Parent then while inFlight >= maxConc do task.wait() end inFlight += 1 task.spawn(function() local ok = firePartTouch(hrp, part) if ok then fired += 1 else failed += 1 end inFlight -= 1 end) else failed += 1 end end while fired + failed < total do task.wait() end else for _, part in ipairs(list) do if part and part.Parent then if firePartTouch(hrp, part) then fired += 1 else failed += 1 end task.wait(0.02) else failed += 1 end end end if notify then notify(string.format("Mines: %d/%d triggered (%d skipped)", fired, total, failed)) end end local function findCF(inst) if not inst then return nil end if inst:IsA("BasePart") then return inst.CFrame end if inst:IsA("Model") then local pp=inst.PrimaryPart or inst:FindFirstChildWhichIsA("BasePart") return pp and pp.CFrame or nil end return nil end local function autoWin(notify) local world=workspace:FindFirstChild("World") local target=(world and world:FindFirstChild("FinalCheckpoint", true)) or workspace:FindFirstChild("FinalCheckpoint", true) local cf=findCF(target) if not cf then if notify then notify("workspace.World.FinalCheckpoint not found") end; return end getHRP().CFrame = cf + Vector3.new(0,5,0) if notify then notify("Teleported to FinalCheckpoint") end end local function tpToSpawn(notify) local world=workspace:FindFirstChild("World") local target=(world and world:FindFirstChild("SpawnLocation", true)) or workspace:FindFirstChild("SpawnLocation", true) if not (target and target:IsA("BasePart")) then if notify then notify("workspace.World.SpawnLocation not found") end; return end getHRP().CFrame = target.CFrame + Vector3.new(0,5,0) if notify then notify("Teleported to Spawn") end end local function findPlayerByPart(query) if not query or query == "" then return nil end query = string.lower(query) for _, plr in ipairs(Players:GetPlayers()) do local name = string.lower(plr.Name) local display = string.lower(plr.DisplayName or "") if name:find(query, 1, true) or display:find(query, 1, true) then return plr end end return nil end local function pressF() pcall(function() VIM:SendKeyEvent(true, Enum.KeyCode.F, false, game) task.wait(0.05) VIM:SendKeyEvent(false, Enum.KeyCode.F, false, game) end) end local function spamF(duration) local t0 = tick() while tick() - t0 < duration do pressF() task.wait(0.07) end end local function getBombAndPrompt() local world = workspace:FindFirstChild("World") local stuff = world and world:FindFirstChild("Stuff", true) local bomb = stuff and stuff:FindFirstChild("Bomb", true) or (world and world:FindFirstChild("Bomb", true)) or workspace:FindFirstChild("Bomb", true) if not bomb then return nil, nil end local prompt = bomb:FindFirstChildWhichIsA("ProximityPrompt", true) or (bomb:FindFirstChild("ProximityPrompt", true)) return bomb, prompt end local function triggerPrompt(prompt) if not prompt then return false end if typeof(fireproximityprompt) == "function" then local ok = pcall(function() fireproximityprompt(prompt) end) if ok then return true end end pcall(function() ProximityPromptService:InputHoldBegin(prompt) end) task.wait((prompt.HoldDuration or 1) + 0.1) pcall(function() ProximityPromptService:InputHoldEnd(prompt) end) return true end local function resolveSpawnCF(fallbackCF) local world=workspace:FindFirstChild("World") local sp=(world and world:FindFirstChild("SpawnLocation", true)) or workspace:FindFirstChild("SpawnLocation", true) local cf=(sp and (findCF(sp) or sp.CFrame)) or fallbackCF return cf end local function createSafePad(baseCF, height) if SAFE_PAD then SAFE_PAD:Destroy() SAFE_PAD=nil end local pad = Instance.new("Part") pad.Name = "TrollObby_SafePad" pad.Size = Vector3.new(12, 1, 12) pad.Anchored = true pad.CanCollide = true pad.CanQuery = false pad.Transparency = 1 pad.CFrame = baseCF + Vector3.new(0, height, 0) pad.Parent = workspace SAFE_PAD = pad return pad end local function cleanupSafePad() if SAFE_PAD then pcall(function() SAFE_PAD:Destroy() end); SAFE_PAD=nil end end local function bombPlayerFlow(query, notify, overrideDelay) local hrp = getHRP() local startCF = hrp.CFrame local bomb, prompt = getBombAndPrompt() if not (bomb and prompt) then if notify then notify("Bomb/ProximityPrompt not found at workspace.World.Stuff.Bomb") end return end local bcf = findCF(bomb) or bomb.CFrame hrp.CFrame = bcf + Vector3.new(0, 3, 0) task.wait(0.2) triggerPrompt(prompt) task.wait(0.25) local waitAfterPickup = math.clamp(tonumber(overrideDelay) or BOMB_DELAY or 0, 0, 20) if waitAfterPickup > 0 then local spawnCF = resolveSpawnCF(startCF) local pad = createSafePad(spawnCF, SAFE_HEIGHT) hrp.CFrame = pad.CFrame + Vector3.new(0, 3, 0) task.wait(waitAfterPickup) cleanupSafePad() end local targetPlr = findPlayerByPart(query) if not targetPlr or not targetPlr.Character then if notify then notify("Target player not found") end hrp.CFrame = startCF return end local thrp = targetPlr.Character:FindFirstChild("HumanoidRootPart") if not thrp then if notify then notify("Target HRP not found") end hrp.CFrame = startCF return end hrp.CFrame = thrp.CFrame * CFrame.new(0, 0, -2.2) if ACTIVE_CONN then pcall(function() ACTIVE_CONN:Disconnect() end) end local alive = true ACTIVE_CONN = RunService.Heartbeat:Connect(function() if not alive then return end local ch = targetPlr.Character if ch then thrp = ch:FindFirstChild("HumanoidRootPart") or thrp if thrp then local behind = thrp.CFrame * CFrame.new(0, 0, -2.2) hrp.CFrame = CFrame.new(behind.Position, thrp.Position) end end end) task.spawn(function() spamF(F_SPAM_TIME) end) task.wait(math.clamp(MAGNET_TIME, 0.3, 2.0)) alive = false if ACTIVE_CONN then pcall(function() ACTIVE_CONN:Disconnect() end); ACTIVE_CONN=nil end if thrp then local escape = thrp.CFrame * CFrame.new(ESCAPE_OFFSET.X, ESCAPE_OFFSET.Y, ESCAPE_OFFSET.Z) hrp.CFrame = escape end task.wait(0.1) hrp.CFrame = startCF end local function destroyAll() if ACTIVE_CONN then pcall(function() ACTIVE_CONN:Disconnect() end); ACTIVE_CONN=nil end cleanupSafePad() pcall(function() if Rayfield and Rayfield.Destroy then Rayfield:Destroy() end end) pcall(function() if RF_WINDOW and RF_WINDOW.Destroy then RF_WINDOW:Destroy() end end) local function purge(container) for _, inst in ipairs(container:GetDescendants()) do local n = string.lower(inst.Name or "") if inst:IsA("ScreenGui") or inst:IsA("Folder") then if n:find("rayfield") or n:find("trollobby") or n:find("troll obby") then pcall(function() inst:Destroy() end) end end end end pcall(function() purge(CoreGui) end) pcall(function() if lp.PlayerGui then purge(lp.PlayerGui) end end) end local function makeFallbackUI() local sg = Instance.new("ScreenGui"); sg.Name="TrollObbyFallbackUI"; sg.ResetOnSpawn=false; sg.Parent=CoreGui FB_GUI = sg local frame = Instance.new("Frame"); frame.Size=UDim2.new(0,360,0,460); frame.Position=UDim2.new(0,40,0,80) frame.BackgroundColor3=Color3.fromRGB(20,20,20); frame.BorderSizePixel=0; frame.Parent=sg local function mkLabel(text, y) local t=Instance.new("TextLabel"); t.Size=UDim2.new(1,-16,0,24); t.Position=UDim2.new(0,8,0,y) t.BackgroundTransparency=1; t.TextColor3=Color3.new(1,1,1) t.TextXAlignment=Enum.TextXAlignment.Left; t.Font=Enum.Font.Gotham; t.TextSize=14; t.Text=text; t.Parent=frame return t end local function mkBtn(text, y) local b=Instance.new("TextButton"); b.Size=UDim2.new(1,-16,0,36); b.Position=UDim2.new(0,8,0,y) b.Text=text; b.BackgroundColor3=Color3.fromRGB(35,35,35); b.TextColor3=Color3.new(1,1,1) b.Font=Enum.Font.Gotham; b.TextSize=14; b.Parent=frame; return b end mkLabel("Troll Obby Ultimate GUI by R-77 (fallback)", 8) local btnExplode = mkBtn("Explode all mines", 40) local btnWin = mkBtn("Auto Win", 84) local btnSpawn = mkBtn("Teleport to Spawn", 128) mkLabel("PvP: Target name (part)", 172) local box = Instance.new("TextBox"); box.Size=UDim2.new(1,-16,0,28); box.Position=UDim2.new(0,8,0,196) box.PlaceholderText="player / part of name"; box.Text=""; box.TextColor3=Color3.new(1,1,1) box.BackgroundColor3=Color3.fromRGB(35,35,35); box.Font=Enum.Font.Gotham; box.TextSize=14; box.Parent=frame mkLabel("Wait after pickup (0-20s)", 228) local delayBox = Instance.new("TextBox"); delayBox.Size=UDim2.new(1,-16,0,28); delayBox.Position=UDim2.new(0,8,0,252) delayBox.PlaceholderText="0..20"; delayBox.Text="0"; delayBox.TextColor3=Color3.new(1,1,1) delayBox.BackgroundColor3=Color3.fromRGB(35,35,35); delayBox.Font=Enum.Font.Gotham; delayBox.TextSize=14; delayBox.Parent=frame mkLabel("Safe offset above spawn (studs)", 284) local safeH = Instance.new("TextBox"); safeH.Size=UDim2.new(1,-16,0,28); safeH.Position=UDim2.new(0,8,0,308) safeH.PlaceholderText="e.g. 120"; safeH.Text=tostring(SAFE_HEIGHT); safeH.TextColor3=Color3.new(1,1,1) safeH.BackgroundColor3=Color3.fromRGB(35,35,35); safeH.Font=Enum.Font.Gotham; safeH.TextSize=14; safeH.Parent=frame local btnBomb = mkBtn("Bomb player", 348) local btnDestroy = mkBtn("Destroy GUI", 392) btnExplode.MouseButton1Click:Connect(function() explodeAllMines() end) btnWin.MouseButton1Click:Connect(function() autoWin() end) btnSpawn.MouseButton1Click:Connect(function() tpToSpawn() end) btnBomb.MouseButton1Click:Connect(function() local name = box.Text or "" if name == "" then return end local d = tonumber(delayBox.Text) or 0 local h = tonumber(safeH.Text) or SAFE_HEIGHT BOMB_DELAY = math.clamp(d, 0, 20) SAFE_HEIGHT = math.clamp(h, 0, 500) bombPlayerFlow(name) end) btnDestroy.MouseButton1Click:Connect(function() destroyAll() end) end local notifyFn if Rayfield then RF_WINDOW = Rayfield:CreateWindow({ Name = "Get Down Ultimate GUI by R-77", LoadingTitle = "Troll Obby", LoadingSubtitle = "UI is loading...", ConfigurationSaving = { Enabled = false }, KeySystem = false }) notifyFn = function(txt) Rayfield:Notify({Title="Troll Obby", Content=txt, Duration=5}) end local Tab = RF_WINDOW:CreateTab("Main") Tab:CreateSection("Actions") Tab:CreateButton({ Name="Explode all mines", Callback=function() explodeAllMines(notifyFn) end }) Tab:CreateButton({ Name="Auto Win", Callback=function() autoWin(notifyFn) end }) Tab:CreateButton({ Name="Teleport to Spawn", Callback=function() tpToSpawn(notifyFn) end }) local PvP = RF_WINDOW:CreateTab("PvP") PvP:CreateSection("Bomb transfer") local targetName = "" PvP:CreateInput({ Name = "Target player (part of nickname)", PlaceholderText = "e.g. rob / bob", RemoveTextAfterFocusLost = false, Callback = function(text) targetName = text or "" end }) PvP:CreateSlider({ Name = "Wait after pickup (sec)", Range = {0, 20}, Increment = 1, CurrentValue = BOMB_DELAY, Callback = function(v) BOMB_DELAY = v end }) PvP:CreateSlider({ Name = "Safe offset above spawn (studs)", Range = {0, 500}, Increment = 5, CurrentValue = SAFE_HEIGHT, Callback = function(v) SAFE_HEIGHT = v end }) PvP:CreateSlider({ Name = "Magnet time (sec)", Range = {0, 2}, Increment = 0.1, CurrentValue = MAGNET_TIME, Callback = function(v) MAGNET_TIME = v end }) PvP:CreateSlider({ Name = "F spam duration (sec)", Range = {0.2, 1.5}, Increment = 0.1, CurrentValue = F_SPAM_TIME, Callback = function(v) F_SPAM_TIME = v end }) PvP:CreateButton({ Name = "Bomb player", Callback = function() if targetName == "" then notifyFn("Enter target name first") return end bombPlayerFlow(targetName, notifyFn) end }) local Utils = RF_WINDOW:CreateTab("Utils") Utils:CreateSection("Danger zone") Utils:CreateButton({ Name="Destroy GUI", Callback=function() destroyAll() end }) else makeFallbackUI() end -- ================================= -- https://rscripts.net/@r77 -- DEV -- > R-77 ; DISCORD - tankuct. -- https://rscripts.net/@r77 -- =================================