Heal, Bring Enemies, & More.
Key Required

Heal, Bring Enemies, & More.

Dungeon Lootify [BETA]freecsfreecs 13.1K views 249 executesUpdated Jul 31, 2025
1.7/ 5(3 votes)
1233% Positive
Lua Script•220 lines (6577 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

-- Re-get character on respawn
player.CharacterAdded:Connect(function(char)
	character = char
	humanoid = char:WaitForChild("Humanoid")
end)

-- UI creation
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "OneClickTeleportGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")

-- Exit Button
local exitButton = Instance.new("TextButton")
exitButton.Name = "ExitButton"
exitButton.Size = UDim2.new(0, 150, 0, 50)
exitButton.Position = UDim2.new(0, 10, 0, 10)
exitButton.Text = "Exit"
exitButton.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
exitButton.TextColor3 = Color3.new(1, 1, 1)
exitButton.Font = Enum.Font.SourceSansBold
exitButton.TextSize = 20
exitButton.Parent = screenGui

-- Teleport NPCs Button
local teleportButton = Instance.new("TextButton")
teleportButton.Name = "TeleportButton"
teleportButton.Size = UDim2.new(0, 150, 0, 50)
teleportButton.Position = UDim2.new(0, 10, 0, 70)
teleportButton.Text = "Bring Enemies (R)"
teleportButton.BackgroundColor3 = Color3.fromRGB(0, 180, 90)
teleportButton.TextColor3 = Color3.new(1, 1, 1)
teleportButton.Font = Enum.Font.SourceSansBold
teleportButton.TextSize = 20
teleportButton.Parent = screenGui

-- Heal Button
local healButton = Instance.new("TextButton")
healButton.Name = "HealButton"
healButton.Size = UDim2.new(0, 150, 0, 50)
healButton.Position = UDim2.new(0, 10, 0, 130)
healButton.Text = "Heal (F)"
healButton.BackgroundColor3 = Color3.fromRGB(200, 100, 100)
healButton.TextColor3 = Color3.new(1, 1, 1)
healButton.Font = Enum.Font.SourceSansBold
healButton.TextSize = 20
healButton.Parent = screenGui

-- Speed Toggle Button
local speedButton = Instance.new("TextButton")
speedButton.Name = "SpeedButton"
speedButton.Size = UDim2.new(0, 150, 0, 50)
speedButton.Position = UDim2.new(0, 10, 0, 190)
speedButton.Text = "Speed (G): OFF"
speedButton.BackgroundColor3 = Color3.fromRGB(255, 200, 50)
speedButton.TextColor3 = Color3.new(0, 0, 0)
speedButton.Font = Enum.Font.SourceSansBold
speedButton.TextSize = 20
speedButton.Parent = screenGui

-- Settings
local offset = Vector3.new(0, 0, -5)
local maxDistance = 80
local speedEnabled = false

-- Utility: Check if model is NPC
local function isNPC(model)
	if not model:IsA("Model") then return false end
	if Players:GetPlayerFromCharacter(model) then return false end
	return model:FindFirstChild("Humanoid") and model:FindFirstChild("HumanoidRootPart")
end

-- Teleport Nearby NPCs
local function teleportNearbyNPCs()
	local char = player.Character
	if not char then return end

	local myHRP = char:FindFirstChild("HumanoidRootPart")
	if not myHRP then return end

	for _, obj in ipairs(workspace:GetDescendants()) do
		if obj:IsA("Part") and obj.Name == "HumanoidRootPart" then
			local npc = obj.Parent
			if isNPC(npc) and (obj.Position - myHRP.Position).Magnitude <= maxDistance then
				obj.CFrame = myHRP.CFrame * CFrame.new(offset)
			end
		end
	end
end

-- Find nearest usable seat
local function findNearestSeat()
	local char = player.Character
	if not char then return nil end
	local hrp = char:FindFirstChild("HumanoidRootPart")
	if not hrp then return nil end

	local nearest = nil
	local shortestDist = math.huge

	for _, seat in ipairs(workspace:GetDescendants()) do
		if seat:IsA("Seat") and not seat.Disabled then
			local dist = (seat.Position - hrp.Position).Magnitude
			if dist < shortestDist then
				shortestDist = dist
				nearest = seat
			end
		end
	end
	return nearest
end

local function healPlayer()
	local char = player.Character
	if not char then return end
	local hrp = char:FindFirstChild("HumanoidRootPart")
	local humanoid = char:FindFirstChild("Humanoid")
	if not hrp or not humanoid then return end

	local seat = findNearestSeat()
	if not seat then
		warn("No usable seat found!")
		return
	end

	local originalCFrame = hrp.CFrame

	-- Anchor the seat so it doesn't move with the player
	local wasAnchored = seat.Anchored
	seat.Anchored = true

	-- Teleport player to seat (position a bit above so player can sit)
	hrp.CFrame = seat.CFrame + Vector3.new(0, 2, 0)

	-- Wait until full HP
	while true do
		task.wait(1)
		local hpLabel = player:FindFirstChild("PlayerGui")
			and player.PlayerGui:FindFirstChild("Main")
			and player.PlayerGui.Main:FindFirstChild("HomePage")
			and player.PlayerGui.Main.HomePage:FindFirstChild("Bottom")
			and player.PlayerGui.Main.HomePage.Bottom:FindFirstChild("Main")
			and player.PlayerGui.Main.HomePage.Bottom.Main:FindFirstChild("Health")
			and player.PlayerGui.Main.HomePage.Bottom.Main.Health:FindFirstChild("Num")
			and player.PlayerGui.Main.HomePage.Bottom.Main.Health.Num:FindFirstChild("Health")

		if hpLabel and hpLabel:IsA("TextLabel") then
			local text = hpLabel.Text -- example: "120/200"
			local current, max = string.match(text, "(%d+)%s*/%s*(%d+)")
			if current and max and tonumber(current) == tonumber(max) then
				break
			end
		else
			warn("HP label not found!")
			break
		end
	end

	-- Unsit before teleporting back
	humanoid.Sit = false
	task.wait(0.1) -- short wait to ensure unsitting

	-- Teleport back
	hrp.CFrame = originalCFrame

	-- Restore seat anchor state
	seat.Anchored = wasAnchored
end

-- Infinite jump
UserInputService.JumpRequest:Connect(function()
	if humanoid then
		humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
	end
end)

-- LoopSpeed function
RunService.Stepped:Connect(function()
	if speedEnabled and humanoid then
		humanoid.WalkSpeed = 60
	end
end)

-- Toggle speed
local function toggleSpeed()
	speedEnabled = not speedEnabled
	speedButton.Text = "Speed (G): " .. (speedEnabled and "ON" or "OFF")
	if not speedEnabled and humanoid then
		humanoid.WalkSpeed = 16
	end
end

-- Connect buttons
teleportButton.MouseButton1Click:Connect(teleportNearbyNPCs)
healButton.MouseButton1Click:Connect(healPlayer)
speedButton.MouseButton1Click:Connect(toggleSpeed)

-- Hotkeys
UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	if input.KeyCode == Enum.KeyCode.R then
		teleportNearbyNPCs()
	elseif input.KeyCode == Enum.KeyCode.F then
		healPlayer()
	elseif input.KeyCode == Enum.KeyCode.G then
		toggleSpeed()
	end
end)

-- Exit button click: remove the GUI
exitButton.MouseButton1Click:Connect(function()
	screenGui:Destroy()
end)

Features & Information

Infinite Jump Bring enemies in room (R) Must be close enough, enemies must not be in animation. Heal (F) Teleports to campfire seat, then back. Speed (G) Sets loop walkspeed to 60. just something I threw together with chatgpt would love to see some better scripts for this game

Community Comments (6)

freecsfreecsAug 10, 2025

updated

SneekerSneekerAug 10, 2025

Thank you man

BlackArisuBlackArisuAug 10, 2025

Get found out. Then get kicked out.

Scottland*67Scottland*67Aug 11, 2025

Can you make it so it's only the heal button cause I don't really need the other buttons, also make it top left so it's mobile friendly

Replying to @Scottland*67
freecsfreecsAug 12, 2025

@leftylordofmonkeys I don't use mobile so I can't really make it mobile friendly, and if you don't need the other features you can just remove them from the script. you should be able to move the gui buttons as well. the script is open source as it's pretty basic..

TooterTooterAug 17, 2025

Good script

More Scripts for Dungeon Lootify [BETA]