OP OPENSOURCE script keyless auto hide and coin
Key Required

OP OPENSOURCE script keyless auto hide and coin

Hide and Seek ExtremeTr0ngXTr0ngX 169 views 1.8K executesUpdated Aug 2, 2026
Unrated
00
Lua Script•519 lines (12196 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

local Rayfield = loadstring(game:HttpGet("https://sirius.menu/gen2"))()

local idx = 0
local coinAutoOn = false
local coinEspOn = false
local coinCd = 1.2
local lastCoinTP = {}
local conn = nil

local noclipping = false
local dodgeOn = false
local dodgeDist = 20
local dodgeCd = 0.6
local lastDodge = 0
local noclipStep = nil
local noclipRender = nil
local ncParts = {}
local ncOrig = {}
local ncChar = nil
local window = nil

local drawingObjs = {}

local function log(msg)
	print("[TPHider] " .. msg)
end

local function getUncollectedCoins()
	local out = {}
	local go = workspace:FindFirstChild("GameObjects")
	if not go then
		return out
	end
	for _, c in ipairs(go:GetChildren()) do
		if c:IsA("BasePart") and c.Name == "Credit" then
			local col = c:FindFirstChild("Collected")
			if (not col or not col.Value) and c.Transparency < 0.5 then
				table.insert(out, c)
			end
		end
	end
	return out
end

local function isAliveHider(p)
	local lp = Players.LocalPlayer
	if p == lp then
		return false
	end
	local pd = p:FindFirstChild("PlayerData")
	if not pd then
		return false
	end
	local it = pd:FindFirstChild("It")
	local inGame = pd:FindFirstChild("InGame")
	if not it or it.Value then
		return false
	end
	if inGame and not inGame.Value then
		return false
	end
	local hum = p.Character and p.Character:FindFirstChildOfClass("Humanoid")
	return hum ~= nil and hum.Health > 0
end

local function getAliveHiders()
	local out = {}
	for _, p in ipairs(Players:GetPlayers()) do
		if isAliveHider(p) then
			table.insert(out, p)
		end
	end
	table.sort(out, function(a, b)
		return a.Name < b.Name
	end)
	return out
end

local function myRoot()
	local lp = Players.LocalPlayer
	local char = lp.Character
	return char and char:FindFirstChild("HumanoidRootPart")
end

local function teleportTo(part, offset)
	local root = myRoot()
	local target = part:FindFirstChild("HumanoidRootPart") or part
	if not root then
		return false
	end
	root.CFrame = CFrame.new(target.Position + Vector3.new(0, offset or 2, 0))
	return true
end

local function amIHider()
	local lp = Players.LocalPlayer
	local gd = game:GetService("ReplicatedStorage"):FindFirstChild("GameData")
	local itStr = gd and gd:FindFirstChild("It")
	if itStr and itStr.Value == lp.Name then
		return false
	end
	local pd = lp:FindFirstChild("PlayerData")
	local inGame = pd and pd:FindFirstChild("InGame")
	return not inGame or inGame.Value
end

local function getItPlayer()
	local gd = game:GetService("ReplicatedStorage"):FindFirstChild("GameData")
	for _, p in ipairs(Players:GetPlayers()) do
		local pd = p:FindFirstChild("PlayerData")
		if pd then
			local it = pd:FindFirstChild("It")
			if it and it.Value then
				return p
			end
		end
	end
	local itStr = gd and gd:FindFirstChild("It")
	if itStr and itStr.Value and itStr.Value ~= "" then
		return Players:FindFirstChild(itStr.Value)
	end
	return nil
end

local function refreshNcParts()
	local char = Players.LocalPlayer.Character
	ncChar = char
	ncParts = {}
	ncOrig = {}
	if not char then
		return
	end
	local function walk(v)
		if v:IsA("BasePart") then
			table.insert(ncParts, v)
			ncOrig[v] = v.CanCollide
		end
		for _, c in ipairs(v:GetChildren()) do
			walk(c)
		end
	end
	walk(char)
end

local function startNoclip()
	if noclipStep then
		return
	end
	refreshNcParts()
	noclipStep = RunService.Stepped:Connect(function()
		local char = Players.LocalPlayer.Character
		if char ~= ncChar then
			refreshNcParts()
		end
		for _, p in ipairs(ncParts) do
			p.CanCollide = false
		end
	end)
	noclipRender = RunService.RenderStepped:Connect(function()
		local root = myRoot()
		if not root then
			return
		end
		local params = RaycastParams.new()
		params.FilterType = Enum.RaycastFilterType.Exclude
		params.FilterDescendantsInstances = { Players.LocalPlayer.Character }
		local result = workspace:Raycast(root.Position + Vector3.new(0, 2, 0), Vector3.new(0, -30, 0), params)
		local floorY = result and result.Position.Y or (root.Position.Y - 0.5)
		local pos = root.Position
		root.CFrame = CFrame.new(pos.X, math.max(pos.Y, floorY + 3.5), pos.Z)
	end)
end

local function stopNoclip()
	if noclipStep then
		noclipStep:Disconnect()
		noclipStep = nil
	end
	if noclipRender then
		noclipRender:Disconnect()
		noclipRender = nil
	end
	for p, v in pairs(ncOrig) do
		p.CanCollide = v
	end
	ncParts = {}
	ncOrig = {}
	ncChar = nil
end

local function dodgeIt()
	local it = getItPlayer()
	local itRoot = it and it.Character and it.Character:FindFirstChild("HumanoidRootPart")
	local root = myRoot()
	if not root or not itRoot then
		log("Dodge: can't find It (" .. (it and it.Name or "nil") .. ")")
		return false
	end
	local itPos = itRoot.Position
	local candidates = {}
	for _, c in ipairs(getUncollectedCoins()) do
		table.insert(candidates, c)
	end
	for _, h in ipairs(getAliveHiders()) do
		if h.Character then
			table.insert(candidates, h.Character)
		end
	end
	local best, bestD = nil, -math.huge
	for _, cand in ipairs(candidates) do
		local part = cand:FindFirstChild("HumanoidRootPart") or cand
		local d = (part.Position - itPos).Magnitude
		if d > bestD then
			best, bestD = cand, d
		end
	end
	if best then
		teleportTo(best, 3)
		log("Dodge It (" .. it.Name .. ") -> " .. best.Name .. " (" .. string.format("%.0f studs from It)", bestD))
		window:Toast({
			title = "Dodged the It!",
			subtitle = "-> " .. best.Name .. " (" .. string.format("%.0f studs)", bestD),
			duration = 2,
		})
		return true
	end
	log("Dodge: no candidates")
	return false
end

window = Rayfield:CreateWindow({
	name = "TP Hider",
	subtitle = "Hide and Seek Extreme",
})

local tab = window:CreateTab({ name = "Teleport", icon = "target" })
local coinTab = window:CreateTab({ name = "Coin", icon = "circle-dollar" })
local dodgeTab = window:CreateTab({ name = "Dodge", icon = "user-x" })

local stat = tab:CreateStat({
	name = "Alive hiders",
	value = 0,
})

local coinStat = coinTab:CreateStat({
	name = "Coins left",
	value = 0,
})

local dodgeStat = dodgeTab:CreateStat({
	name = "Distance to It",
	prefix = "",
	suffix = " studs",
	value = 0,
})

dodgeTab:CreateToggle({
	name = "Noclip (walk through walls)",
	value = false,
	description = "Walk through walls while keeping your feet on the floor.",
	callback = function(value)
		noclipping = value
		if value then
			startNoclip()
			log("Noclip ON")
		else
			stopNoclip()
			log("Noclip OFF")
		end
	end,
})

dodgeTab:CreateToggle({
	name = "Auto dodge the It",
	value = false,
	description = "Auto-teleport to the spot farthest from the It when they get close.",
	callback = function(value)
		dodgeOn = value
		log("Auto dodge " .. (value and "ON" or "OFF"))
	end,
})

dodgeTab:CreateSlider({
	name = "Dodge distance (studs)",
	range = { 5, 50 },
	increment = 1,
	value = 20,
	suffix = " studs",
	callback = function(value)
		dodgeDist = value
	end,
})

dodgeTab:CreateSlider({
	name = "Dodge cooldown (s)",
	range = { 0.2, 3 },
	increment = 0.1,
	value = 0.6,
	suffix = "s",
	callback = function(value)
		dodgeCd = value
	end,
})

dodgeTab:CreateButton({
	name = "Dodge now (manual)",
	callback = function()
		dodgeIt()
	end,
})

local function cycleAndTeleport()
	local hiders = getAliveHiders()
	if #hiders == 0 then
		log("No alive hiders to teleport to")
		stat:Set(0)
		return
	end
	idx = idx % #hiders
	local target = hiders[idx + 1]
	idx = idx + 1
	local ok = teleportTo(target.Character, 3)
	log("TP -> " .. target.Name .. " (" .. idx .. "/" .. #hiders .. " alive)" .. (ok and "" or " FAILED (no root)"))
	stat:Set(#hiders)
	window:Toast({
		title = "TP -> " .. target.Name,
		subtitle = ok and (idx .. "/" .. #hiders .. " hiders alive") or "failed",
		duration = 2,
	})
end

tab:CreateKeybind({
	name = "Teleport to next alive hider (X)",
	value = Enum.KeyCode.X,
	description = "Press to teleport to the next alive hider. Click the box to rebind.",
	callback = function()
		cycleAndTeleport()
	end,
})

coinTab:CreateToggle({
	name = "Auto TP to coin",
	value = false,
	description = "Auto-teleport to the nearest uncollected coin (Credit).",
	callback = function(value)
		coinAutoOn = value
		log("Coin auto-TP " .. (value and "ON" or "OFF"))
	end,
})

coinTab:CreateToggle({
	name = "Coin locator (ESP)",
	value = false,
	description = "Draw a line + distance to the nearest uncollected coin.",
	callback = function(value)
		coinEspOn = value
		log("Coin ESP " .. (value and "ON" or "OFF"))
	end,
})

coinTab:CreateSlider({
	name = "Auto-TP coin cooldown (s)",
	range = { 0.2, 5 },
	increment = 0.1,
	value = 1.2,
	suffix = "s",
	callback = function(value)
		coinCd = value
	end,
})

coinTab:CreateButton({
	name = "TP to nearest coin (manual)",
	callback = function()
		local coins = getUncollectedCoins()
		if #coins == 0 then
			log("No coins")
			window:Toast({ title = "No coins", duration = 2 })
			return
		end
		local root = myRoot()
		local best, bestD = nil, math.huge
		for _, c in ipairs(coins) do
			local d = root and (c.Position - root.Position).Magnitude or 0
			if d < bestD then
				best, bestD = c, d
			end
		end
		if best then
			teleportTo(best, 1)
			log("TP -> coin @ " .. tostring(best.Position) .. " (" .. string.format("%.0f", bestD) .. " studs)")
			window:Toast({ title = "TP -> coin", subtitle = string.format("%.0f studs", bestD), duration = 2 })
		end
	end,
})

local coinLine = Drawing.new("Line")
local coinText = Drawing.new("Text")
coinLine.Thickness = 2
coinLine.Color = Color3.fromRGB(255, 215, 0)
coinLine.Transparency = 1
coinText.Size = 14
coinText.Center = true
coinText.Outline = true
coinText.Color = Color3.fromRGB(255, 215, 0)
coinText.Font = Drawing.Fonts.Monospace
table.insert(drawingObjs, coinLine)
table.insert(drawingObjs, coinText)

local function updateCoinEsp()
	local root = myRoot()
	if not root then
		coinLine.Visible = false
		coinText.Visible = false
		return
	end
	local coins = getUncollectedCoins()
	if #coins == 0 then
		coinLine.Visible = false
		coinText.Visible = false
		return
	end
	local best, bestD = nil, math.huge
	for _, c in ipairs(coins) do
		local d = (c.Position - root.Position).Magnitude
		if d < bestD then
			best, bestD = c, d
		end
	end
	if not best then
		coinLine.Visible = false
		coinText.Visible = false
		return
	end
	local screen, onScreen = Camera:WorldToViewportPoint(best.Position)
	local center = Vector2.new(screen.X, screen.Y)
	if not onScreen then
		coinLine.Visible = false
		coinText.Visible = false
		return
	end
	coinLine.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
	coinLine.To = center
	coinLine.Visible = true
	coinText.Position = center + Vector2.new(0, -18)
	coinText.Text = "Coin  " .. string.format("%.0f studs", bestD)
	coinText.Visible = true
end

conn = RunService.Heartbeat:Connect(function()
	stat:Set(#getAliveHiders())

	local it = getItPlayer()
	local itRoot = it and it.Character and it.Character:FindFirstChild("HumanoidRootPart")
	local myr = myRoot()
	if itRoot and myr then
		dodgeStat:Set((itRoot.Position - myr.Position).Magnitude)
	else
		dodgeStat:Set(0)
	end

	if dodgeOn and amIHider() then
		local root = myRoot()
		if itRoot and root then
			local now = os.clock()
			if (itRoot.Position - root.Position).Magnitude <= dodgeDist and now - lastDodge >= dodgeCd then
				lastDodge = now
				dodgeIt()
			end
		end
	end

	local coins = getUncollectedCoins()
	coinStat:Set(#coins)

	if coinAutoOn and #coins > 0 then
		local root = myRoot()
		local now = os.clock()
		local best, bestD = nil, math.huge
		for _, c in ipairs(coins) do
			local d = root and (c.Position - root.Position).Magnitude or 0
			if d < bestD then
				best, bestD = c, d
			end
		end
		if best then
			local last = lastCoinTP[best] or 0
			if now - last >= coinCd then
				lastCoinTP[best] = now
				teleportTo(best, 1)
			end
		end
	end

	if coinEspOn then
		updateCoinEsp()
	else
		coinLine.Visible = false
		coinText.Visible = false
	end
end)

STATE.onCleanup(function()
	if conn then
		conn:Disconnect()
	end
	if noclipping then
		stopNoclip()
	end
	for _, d in ipairs(drawingObjs) do
		d:Remove()
	end
	table.clear(lastCoinTP)
	window:Unload()
end)

Features & Information

### Teleport * Teleport to Next Alive Hider * Alive Hiders Counter ### Coin * Auto TP to Coin * Coin Locator (ESP) * Auto-TP Coin Cooldown * TP to Nearest Coin (Manual) * Coins Left Counter ### Dodge * Noclip (Walk Through Walls) * Auto Dodge the It * Dodge Distance * Dodge Cooldown * Dodge Now (Manual) * Distance to It Counter ### ESP / Visuals * Coin ESP Line * Coin Distance Display ### Automation * Automatic Coin Farming * Automatic Threat Evasion * Automatic Closest Coin Detection * Automatic Alive Hider Detection ### Utility * Toast Notifications * Rebindable Teleport Hotkey (Default: X) * Real-Time Statistics Tracking * Character State Monitoring * Round Role Detection (Hider / It)

Community Comments (0)

No comments yet for this script.

More Scripts for Hide and Seek Extreme