My forsaken script open source
Key RequiredUniversal

My forsaken script open source

Universal ScriptJoyful_PizzaPartylJoyful_PizzaPartyl 957 views 153 executesUpdated Jan 10, 2026
Unrated
00
Lua Script•210 lines (4966 chars)
-- JOY HUB v7.8
-- Made by joyful_pizza obviously
-- Rayfield-based
--BUGGY
--TRASHY
--POOP AHH SCRIPT
--remake it if you want enjoy :D


-- NOTE: Paste into executor and run

-- [ Rayfield Loader credit to sirius.menu/rayfield ]
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()

local Window = Rayfield:CreateWindow({
	Name = "joy hub",
	LoadingTitle = "made by joyful_pizza obviously",
	LoadingSubtitle = "V7.8",
	ConfigurationSaving = {
		Enabled = true,
		FolderName = "JoyHub",
		FileName = "JoyHubConfig"
	}
})

-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")

local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera


-- MAIN TAB

local MainTab = Window:CreateTab("Main", 4483362458) --default icon

local avoidKillers = false
local spectating = false
local spectateTargets = {}
local spectateIndex = 1

MainTab:CreateToggle({ 
	Name = "Avoid Killers",
	CurrentValue = false,
	Callback = function(v)
		avoidKillers = v
	end
})

MainTab:CreateToggle({
	Name = "Spectate (in-round)",
	CurrentValue = false,
	Callback = function(v)
		spectating = v
		if not v then
			Camera.CameraSubject = LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid")
		end
	end
})

MainTab:CreateButton({
	Name = "Switch Spectate Target",
	Callback = function()
		if not spectating or #spectateTargets == 0 then return end
		spectateIndex += 1
		if spectateIndex > #spectateTargets then
			spectateIndex = 1
		end
		local char = spectateTargets[spectateIndex]
		if char and char:FindFirstChildWhichIsA("Humanoid") then
			Camera.CameraSubject = char:FindFirstChildWhichIsA("Humanoid")
		end
	end
})


-- ESP TAB

local ESPTab = Window:CreateTab("ESP", 4483362458)

local espEnabled = false
local espObjects = {}

local function clearESP()
	for _, h in pairs(espObjects) do
		if h then h:Destroy() end
	end
	table.clear(espObjects)
end

local function createESP(model, color)
	if espObjects[model] then return end
	local h = Instance.new("Highlight")
	h.FillColor = color
	h.OutlineColor = color
	h.FillTransparency = 0.4
	h.OutlineTransparency = 0
	h.Adornee = model
	h.Parent = model
	espObjects[model] = h
end

local function refreshESP()
	clearESP()
	for _, obj in ipairs(Workspace:GetDescendants()) do
		if obj:IsA("Model") then
			if obj:FindFirstChild("Humanoid") then
				if obj:GetAttribute("Killer") == true then
					createESP(obj, Color3.fromRGB(255,0,0))
				elseif obj ~= LocalPlayer.Character then
					createESP(obj, Color3.fromRGB(0,255,0))
				end
			elseif obj.Name:lower():find("generator") then
				createESP(obj, Color3.fromRGB(255,255,0))
			end
		end
	end
end

ESPTab:CreateToggle({
	Name = "Enable ESP",
	CurrentValue = false,
	Callback = function(v)
		espEnabled = v
		if not v then
			clearESP()
		end
	end
})

task.spawn(function()
	while task.wait(1) do
		if espEnabled then
			refreshESP()
		end
	end
end)


-- TELEPORT TAB
--!warning! You could be banned using this, this is just teleport.
local TeleportTab = Window:CreateTab("Teleport", 4483362458)

local function teleportToModel(model)
	if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
		LocalPlayer.Character.HumanoidRootPart.CFrame = model.HumanoidRootPart.CFrame * CFrame.new(0,0,2)
	end
end

TeleportTab:CreateButton({
	Name = "Teleport to Random Survivor",
	Callback = function()
		local survivors = {}
		for _, p in ipairs(Players:GetPlayers()) do
			if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
				table.insert(survivors, p.Character)
			end
		end
		if #survivors > 0 then
			teleportToModel(survivors[math.random(#survivors)])
		end
	end
})

TeleportTab:CreateButton({
	Name = "Teleport to Killer",
	Callback = function()
		for _, obj in ipairs(Workspace:GetDescendants()) do
			if obj:IsA("Model") and obj:GetAttribute("Killer") == true and obj:FindFirstChild("HumanoidRootPart") then
				teleportToModel(obj)
				break
			end
		end
	end
})


-- AVOID KILLERS LOGIC

RunService.Heartbeat:Connect(function()
	if not avoidKillers then return end
	if not (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")) then return end

	for _, obj in ipairs(Workspace:GetDescendants()) do
		if obj:IsA("Model") and obj:GetAttribute("Killer") == true and obj:FindFirstChild("HumanoidRootPart") then
			local hrp = LocalPlayer.Character.HumanoidRootPart
			local dist = (hrp.Position - obj.HumanoidRootPart.Position).Magnitude
			if dist < 25 then
				local dir = (hrp.Position - obj.HumanoidRootPart.Position).Unit
				hrp.CFrame = hrp.CFrame + dir * 3
			end
		end
	end
end)


-- BECOME SPECTRE(jk)

task.spawn(function()
	while task.wait(2) do
		spectateTargets = {}
		for _, p in ipairs(Players:GetPlayers()) do
			if p ~= LocalPlayer and p.Character then
				table.insert(spectateTargets, p.Character)
			end
		end
	end
end)

Features & Information

I'm quitting forsaken scripts AFTER 7 YEARS I COULDNT FINISH IT AND PATCH THE BUG yall this script has a lot of bugs please fix them

Community Comments (8)

Joyful_PizzaPartylJoyful_PizzaPartylJan 10, 2026

I HATE ANTICHEAT

Joyful_PizzaPartylJoyful_PizzaPartylJan 10, 2026

I HATE FORSAKEN

Joyful_PizzaPartylJoyful_PizzaPartylJan 10, 2026

IM MAKING DOORS NOW

Replying to @Joyful_PizzaPartyl
Joyful_PizzaPartylJoyful_PizzaPartylJan 10, 2026

Nvm

StrongestBobEverStrongestBobEverJan 17, 2026

bro what u yapping about

Replying to @StrongestBobEver
Joyful_PizzaPartylJoyful_PizzaPartylJan 18, 2026

@StrongestBobEver worst script ever man

Replying to @Joyful_PizzaPartyl
StrongestBobEverStrongestBobEverJan 19, 2026

@Joyful_pizza cant even use it..

Replying to @StrongestBobEver
Joyful_PizzaPartylJoyful_PizzaPartylJan 24, 2026

@StrongestBobEver bro That's the point Its the worst script ever

More Scripts for Universal Scripts