Dead Shore Script (November 2026) – Keyless

PUBLISHEDUPDATED
1 Available ScriptKeyless

Playing smarter on mobile usually means finding every shortcut possible, and adding a Dead Shore script to your session makes the whole island run a lot smoother.

You wake up stranded on a mysterious island after a massive storm, and now you have to survive the dark while exploring abandoned places and reading notes left by past visitors.

Grabbing what you need and getting around the map is way easier with the right tools ready to go, so here is the working code to try out right now.

Dead Shore Script – Working Script

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

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local LocalPlayer = Players.LocalPlayer

--------------------------------------------------------------------- config u dawg
local CONFIG = {
	Font = Enum.Font.Michroma, 
	TextSize = 13,
	MaxDistance = 1500, -- labels hidden beyond this many studs
	UpdateRate = 0.2,   -- seconds between distance updates

	Monster = {
		Fill = Color3.fromRGB(255, 30, 30),
		Outline = Color3.fromRGB(255, 120, 120),
		Text = Color3.fromRGB(255, 90, 90),
	},
	Player = {
		Fill = Color3.fromRGB(0, 200, 255),
		Outline = Color3.fromRGB(150, 235, 255),
		Text = Color3.fromRGB(150, 235, 255),
	},
}

local TELEPORTS = {
	{ "Power Sourcer 1", Vector3.new(155, 198, -313) },
	{ "Bunker", Vector3.new(-260, 61, 62) },
	{ "Fuel Refill", Vector3.new(-532, 73, 341) },
	{ "Cabin", Vector3.new(367, 55, 426) },
	{ "Radio Tower", Vector3.new(1204, 271, -115) },
	{ "Power Sourcer 2", Vector3.new(318, 168, -42) },
	{ "Power Sourcer 3", Vector3.new(156, 199, -309) },
}

--------------------------------------------------------------------- ui
local window = Rayfield:CreateWindow({
	name = "Dead Shore",
	subtitle = "Rayfield Gen2",
	sidebarLayout = true,
})

--------------------------------------------------------------------- core of le esp
local container = Instance.new("Folder")
container.Name = "DeadShoreESP"

if not pcall(function()
	container.Parent = (gethui and gethui()) or game:GetService("CoreGui")
end) then
	container.Parent = LocalPlayer:WaitForChild("PlayerGui")
end

local function getRoot(char)
	return char and char:FindFirstChild("HumanoidRootPart")
end

local function getAdorneePart(model)
	if model:IsA("BasePart") then return model end
	if model:IsA("Model") and model.PrimaryPart then return model.PrimaryPart end
	return model:FindFirstChild("HumanoidRootPart")
		or model:FindFirstChild("Head")
		or model:FindFirstChildWhichIsA("BasePart", true)
end

local trackers = {}

local function createTracker(colors)
	local tracker = { enabled = false, items = {}, colors = colors }

	function tracker:Remove(model)
		local item = self.items[model]
		if not item then return end
		self.items[model] = nil
		item.highlight:Destroy()
		item.gui:Destroy()
		item.conn:Disconnect()
	end

	function tracker:Add(model)
		if not self.enabled or self.items[model] then return end

		local highlight = Instance.new("Highlight")
		highlight.FillColor = colors.Fill
		highlight.OutlineColor = colors.Outline
		highlight.FillTransparency = 0.6
		highlight.OutlineTransparency = 0
		highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
		highlight.Adornee = model
		highlight.Parent = container

		local gui = Instance.new("BillboardGui")
		gui.Size = UDim2.fromOffset(180, 20) -- fixed pixel size, never gets huge
		gui.StudsOffsetWorldSpace = Vector3.new(0, 3, 0)
		gui.AlwaysOnTop = true
		gui.LightInfluence = 0
		gui.MaxDistance = CONFIG.MaxDistance
		gui.ResetOnSpawn = false
		gui.Parent = container

		local label = Instance.new("TextLabel")
		label.Size = UDim2.fromScale(1, 1)
		label.BackgroundTransparency = 1
		label.Text = model.Name
		label.Font = CONFIG.Font
		label.TextSize = CONFIG.TextSize
		label.TextColor3 = colors.Text
		label.TextStrokeColor3 = Color3.new(0, 0, 0)
		label.TextStrokeTransparency = 0.4
		label.Parent = gui

		local item = {
			highlight = highlight,
			gui = gui,
			label = label,
			name = model.Name,
			part = nil,
		}

		item.conn = model.AncestryChanged:Connect(function(_, parent)
			if not parent then self:Remove(model) end
		end)

		self.items[model] = item

		-- the part to measure from / attach the label to may load late
		task.spawn(function()
			for _ = 1, 20 do
				if self.items[model] ~= item then return end
				local part = getAdorneePart(model)
				if part then
					item.part = part
					gui.Adornee = part
					return
				end
				task.wait(0.25)
			end
		end)
	end

	function tracker:Clear()
		for model in pairs(self.items) do
			self:Remove(model)
		end
	end

	table.insert(trackers, tracker)
	return tracker
end

-- loop for esp when esp is on
task.spawn(function()
	while true do
		task.wait(CONFIG.UpdateRate)

		local root = getRoot(LocalPlayer.Character)
		if root then
			local origin = root.Position

			for _, tracker in ipairs(trackers) do
				if tracker.enabled then
					for _, item in pairs(tracker.items) do
						local part = item.part
						if part and part.Parent then
							local dist = math.floor((part.Position - origin).Magnitude)
							item.label.Text = string.format("%s  [%d studs]", item.name, dist)
						end
					end
				end
			end
		end
	end
end)

--------------------------------------------------------------------- monsters ( located in workspace.watchers)
local monsterTracker = createTracker(CONFIG.Monster)
local watchersFolder
local watcherConns = {}

local function disconnectWatchers()
	for _, c in ipairs(watcherConns) do c:Disconnect() end
	table.clear(watcherConns)
end

local function bindWatchers(folder)
	disconnectWatchers()
	watchersFolder = folder
	if not folder then return end

	for _, monster in ipairs(folder:GetChildren()) do
		monsterTracker:Add(monster)
	end

	table.insert(watcherConns, folder.ChildAdded:Connect(function(monster)
		monsterTracker:Add(monster)
	end))
	table.insert(watcherConns, folder.ChildRemoved:Connect(function(monster)
		monsterTracker:Remove(monster)
	end))
end

-- 1 second check just incase the watchers folder is replaced or uhh tite
task.spawn(function()
	while true do
		local folder = Workspace:FindFirstChild("Watchers")
		if folder ~= watchersFolder then
			monsterTracker:Clear()
			bindWatchers(folder)
		end
		task.wait(1)
	end
end)

--------------------------------------------------------------------- playerz
local playerTracker = createTracker(CONFIG.Player)
local playerConns = {}

local function watchPlayer(player)
	if player == LocalPlayer or playerConns[player] then return end

	local conns = {}
	playerConns[player] = conns

	if player.Character then
		playerTracker:Add(player.Character)
	end

	table.insert(conns, player.CharacterAdded:Connect(function(char)
		playerTracker:Add(char)
	end))
	table.insert(conns, player.CharacterRemoving:Connect(function(char)
		playerTracker:Remove(char)
	end))
end

for _, player in ipairs(Players:GetPlayers()) do
	watchPlayer(player)
end

Players.PlayerAdded:Connect(watchPlayer)
Players.PlayerRemoving:Connect(function(player)
	local conns = playerConns[player]
	if conns then
		for _, c in ipairs(conns) do c:Disconnect() end
		playerConns[player] = nil
	end
	if player.Character then
		playerTracker:Remove(player.Character)
	end
end)

--------------------------------------------------------------------- esp bro i guess bro
local espTab = window:CreateTab({ name = "ESP" })

espTab:CreateToggle({
	name = "Monster ESP",
	callback = function(value)
		monsterTracker.enabled = value
		if value then
			if watchersFolder then
				for _, monster in ipairs(watchersFolder:GetChildren()) do
					monsterTracker:Add(monster)
				end
			end
		else
			monsterTracker:Clear()
		end
	end,
})

espTab:CreateToggle({
	name = "Player ESP",
	callback = function(value)
		playerTracker.enabled = value
		if value then
			for _, player in ipairs(Players:GetPlayers()) do
				if player ~= LocalPlayer and player.Character then
					playerTracker:Add(player.Character)
				end
			end
		else
			playerTracker:Clear()
		end
	end,
})

--------------------------------------------------------------------- super good tp tab
local teleportTab = window:CreateTab({ name = "Teleport" })

local function teleportTo(position)
	local char = LocalPlayer.Character
	local root = getRoot(char)

	if not root then
		window:Notify({ title = "Teleport", content = "Your character isn't loaded yet." })
		return
	end

	root.AssemblyLinearVelocity = Vector3.zero
	char:PivotTo(CFrame.new(position))
end

for _, spot in ipairs(TELEPORTS) do
	local name, position = spot[1], spot[2]

	teleportTab:CreateButton({
		name = name,
		callback = function()
			teleportTo(position)
		end,
	})
end
Executor compatibility changes over time. Check current reports before testing.

Copy the code above into a compatible Roblox script executor if you choose to test it.

Dead Shore Script Status

✓AvailabilityFree
$Price$0
◫CompatibilityDesktop & Mobile
★SafetyVerified

Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.

Frequently Asked Questions

What is a Dead Shore script?

A Dead Shore script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.

What features does this Dead Shore script include?

Different scripts contain different code and features. Check the script menu after it loads to see everything it offers.

How do you use the Dead Shore script?

Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.

Can a Dead Shore script get your Roblox account banned?

Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.

Does the Dead Shore script work on mobile?

Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.

Check out our Roblox Scripts hub and Roblox Games Directory for more.

Leave a Comment