
Key Required

-- =================================
-- DEV -- > R-77 ; DISCORD - tankuct.
-- =================================
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
-- =================================
-- DEV -- > R-77 ; DISCORD - tankuct.
-- =================================



Hi I'm first
Hi I'm second