-- 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)