
Key Required

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")
local CoreGui = game:GetService("CoreGui")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer or Players.PlayerAdded:Wait()
-- Locate SharedCharacter module for Stamina Bypass
local SharedCharacter = nil
pcall(function()
SharedCharacter = require(ReplicatedStorage:WaitForChild("Shared", 3):WaitForChild("Classes", 3):WaitForChild("SharedCharacter", 3))
end)
local OriginalDepleteStamina = nil
if SharedCharacter and type(SharedCharacter.DepleteStamina) == "function" then
OriginalDepleteStamina = SharedCharacter.DepleteStamina
end
-- Configuration for Revive Aura
local maxDistance = 15
-- Attempt to locate the Downed module inside ReplicatedStorage.Shared.Downed
local DownedModule = nil
local SharedFolder = ReplicatedStorage:FindFirstChild("Shared")
if SharedFolder then
DownedModule = SharedFolder:FindFirstChild("Downed")
end
local function GetSafeParent()
if gethui then return gethui() end
if syn and syn.protect_gui then
local f = Instance.new("Folder")
syn.protect_gui(f)
f.Parent = CoreGui
return f
end
return CoreGui
end
local TargetParent = GetSafeParent()
local existing = TargetParent:FindFirstChild("DH_Hub_PreAlpha") or LocalPlayer:WaitForChild("PlayerGui"):FindFirstChild("DH_Hub_PreAlpha")
if existing then existing:Destroy() end
local MainGui = Instance.new("ScreenGui")
MainGui.Name = "DH_Hub_PreAlpha"
MainGui.ResetOnSpawn = false
MainGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
MainGui.Parent = TargetParent
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 850, 0, 540)
MainFrame.Position = UDim2.new(0.5, -425, 0.5, -270)
MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = MainGui
local FrameCorner = Instance.new("UICorner")
FrameCorner.CornerRadius = UDim.new(0, 8)
FrameCorner.Parent = MainFrame
local FrameStroke = Instance.new("UIStroke")
FrameStroke.Color = Color3.fromRGB(120, 80, 255)
FrameStroke.Thickness = 1.5
FrameStroke.Parent = MainFrame
local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, 0, 0, 42)
TopBar.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
TopBar.BorderSizePixel = 0
TopBar.Parent = MainFrame
local TitleLabel = Instance.new("TextLabel")
TitleLabel.Size = UDim2.new(0, 400, 1, 0)
TitleLabel.Position = UDim2.new(0, 14, 0, 0)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Font = Enum.Font.GothamBold
TitleLabel.Text = "darkest hours hub - pre-alpha 1.0"
TitleLabel.TextColor3 = Color3.fromRGB(245, 245, 250)
TitleLabel.TextSize = 13
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left
TitleLabel.Parent = TopBar
local Dragging, DragInput, DragStart, StartPos
TopBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
Dragging = true
DragStart = input.Position
StartPos = MainFrame.Position
end
end)
TopBar.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
DragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == DragInput and Dragging then
local Delta = input.Position - DragStart
MainFrame.Position = UDim2.new(StartPos.X.Scale, StartPos.X.Offset + Delta.X, StartPos.Y.Scale, StartPos.Y.Offset + Delta.Y)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
Dragging = false
end
end)
local NotificationContainer = Instance.new("Frame")
NotificationContainer.Size = UDim2.new(0, 260, 1, -20)
NotificationContainer.Position = UDim2.new(1, -270, 0, 10)
NotificationContainer.BackgroundTransparency = 1
NotificationContainer.Parent = MainGui
local NotificationLayout = Instance.new("UIListLayout")
NotificationLayout.SortOrder = Enum.SortOrder.LayoutOrder
NotificationLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
NotificationLayout.Padding = UDim.new(0, 6)
NotificationLayout.Parent = NotificationContainer
local function Notify(title, msg)
local Toast = Instance.new("Frame")
Toast.Size = UDim2.new(1, 0, 0, 48)
Toast.BackgroundColor3 = Color3.fromRGB(24, 24, 32)
Toast.BorderSizePixel = 0
Toast.Parent = NotificationContainer
local ToastCorner = Instance.new("UICorner")
ToastCorner.CornerRadius = UDim.new(0, 6)
ToastCorner.Parent = Toast
local ToastStroke = Instance.new("UIStroke")
ToastStroke.Color = Color3.fromRGB(120, 80, 255)
ToastStroke.Thickness = 1
ToastStroke.Parent = Toast
local TTitle = Instance.new("TextLabel")
TTitle.Size = UDim2.new(1, -10, 0, 18)
TTitle.Position = UDim2.new(0, 10, 0, 4)
TTitle.BackgroundTransparency = 1
TTitle.Font = Enum.Font.GothamBold
TTitle.Text = title:lower()
TTitle.TextColor3 = Color3.fromRGB(120, 80, 255)
TTitle.TextSize = 11
TTitle.TextXAlignment = Enum.TextXAlignment.Left
TTitle.Parent = Toast
local TMsg = Instance.new("TextLabel")
TMsg.Size = UDim2.new(1, -10, 0, 22)
TMsg.Position = UDim2.new(0, 10, 0, 20)
TMsg.BackgroundTransparency = 1
TMsg.Font = Enum.Font.Gotham
TMsg.Text = msg:lower()
TMsg.TextColor3 = Color3.fromRGB(220, 220, 230)
TMsg.TextSize = 11
TMsg.TextXAlignment = Enum.TextXAlignment.Left
TMsg.Parent = Toast
task.delay(4, function()
if Toast and Toast.Parent then
TweenService:Create(Toast, TweenInfo.new(0.3), {BackgroundTransparency = 1}):Play()
task.wait(0.3)
Toast:Destroy()
end
end)
end
local MainScroll = Instance.new("ScrollingFrame")
MainScroll.Size = UDim2.new(1, -24, 1, -52)
MainScroll.Position = UDim2.new(0, 12, 0, 46)
MainScroll.BackgroundTransparency = 1
MainScroll.BorderSizePixel = 0
MainScroll.ScrollBarThickness = 4
MainScroll.ScrollBarImageColor3 = Color3.fromRGB(80, 80, 100)
MainScroll.Parent = MainFrame
local ScrollLayout = Instance.new("UIListLayout")
ScrollLayout.SortOrder = Enum.SortOrder.LayoutOrder
ScrollLayout.Padding = UDim.new(0, 10)
ScrollLayout.Parent = MainScroll
ScrollLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
MainScroll.CanvasSize = UDim2.new(0, 0, 0, ScrollLayout.AbsoluteContentSize.Y + 20)
end)
local function CreateHeader(text)
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(1, 0, 0, 22)
Label.BackgroundTransparency = 1
Label.Font = Enum.Font.GothamBold
Label.Text = text:lower()
Label.TextColor3 = Color3.fromRGB(120, 80, 255)
Label.TextSize = 12
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = MainScroll
end
local function CreateToggle(title, defaultState, callback)
local ToggleFrame = Instance.new("Frame")
ToggleFrame.Size = UDim2.new(1, 0, 0, 38)
ToggleFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
ToggleFrame.Parent = MainScroll
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 5)
Corner.Parent = ToggleFrame
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(1, -55, 1, 0)
Label.Position = UDim2.new(0, 10, 0, 0)
Label.BackgroundTransparency = 1
Label.Font = Enum.Font.Gotham
Label.Text = title:lower()
Label.TextColor3 = Color3.fromRGB(220, 220, 230)
Label.TextSize = 11
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = ToggleFrame
local Switch = Instance.new("Frame")
Switch.Size = UDim2.new(0, 36, 0, 18)
Switch.Position = UDim2.new(1, -46, 0.5, -9)
Switch.BackgroundColor3 = defaultState and Color3.fromRGB(120, 80, 255) or Color3.fromRGB(45, 45, 55)
Switch.Parent = ToggleFrame
local SwitchCorner = Instance.new("UICorner")
SwitchCorner.CornerRadius = UDim.new(1, 0)
SwitchCorner.Parent = Switch
local Circle = Instance.new("Frame")
Circle.Size = UDim2.new(0, 14, 0, 14)
Circle.Position = defaultState and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
Circle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Circle.Parent = Switch
local CircleCorner = Instance.new("UICorner")
CircleCorner.CornerRadius = UDim.new(1, 0)
CircleCorner.Parent = Circle
local State = defaultState
local Button = Instance.new("TextButton")
Button.Size = UDim2.new(1, 0, 1, 0)
Button.BackgroundTransparency = 1
Button.Text = ""
Button.Parent = ToggleFrame
Button.MouseButton1Click:Connect(function()
State = not State
TweenService:Create(Switch, TweenInfo.new(0.18), {BackgroundColor3 = State and Color3.fromRGB(120, 80, 255) or Color3.fromRGB(45, 45, 55)}):Play()
TweenService:Create(Circle, TweenInfo.new(0.18), {Position = State and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)}):Play()
callback(State)
end)
end
local function CreateButton(title, callback)
local ButtonFrame = Instance.new("TextButton")
ButtonFrame.Size = UDim2.new(1, 0, 0, 36)
ButtonFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
ButtonFrame.Font = Enum.Font.GothamMedium
ButtonFrame.Text = title:lower()
ButtonFrame.TextColor3 = Color3.fromRGB(230, 230, 240)
ButtonFrame.TextSize = 11
ButtonFrame.Parent = MainScroll
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 5)
Corner.Parent = ButtonFrame
ButtonFrame.MouseButton1Click:Connect(function()
TweenService:Create(ButtonFrame, TweenInfo.new(0.1), {BackgroundColor3 = Color3.fromRGB(120, 80, 255)}):Play()
task.wait(0.1)
TweenService:Create(ButtonFrame, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(28, 28, 36)}):Play()
callback()
end)
return ButtonFrame
end
local function CreateSlider(title, min, max, default, callback)
local SliderFrame = Instance.new("Frame")
SliderFrame.Size = UDim2.new(1, 0, 0, 46)
SliderFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
SliderFrame.Parent = MainScroll
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 5)
Corner.Parent = SliderFrame
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(0.7, 0, 0, 22)
Label.Position = UDim2.new(0, 10, 0, 2)
Label.BackgroundTransparency = 1
Label.Font = Enum.Font.Gotham
Label.Text = title:lower()
Label.TextColor3 = Color3.fromRGB(220, 220, 230)
Label.TextSize = 11
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = SliderFrame
local ValLabel = Instance.new("TextLabel")
ValLabel.Size = UDim2.new(0.3, -10, 0, 22)
ValLabel.Position = UDim2.new(0.7, 0, 0, 2)
ValLabel.BackgroundTransparency = 1
ValLabel.Font = Enum.Font.GothamBold
ValLabel.Text = tostring(default)
ValLabel.TextColor3 = Color3.fromRGB(120, 80, 255)
ValLabel.TextSize = 11
ValLabel.TextXAlignment = Enum.TextXAlignment.Right
ValLabel.Parent = SliderFrame
local Track = Instance.new("Frame")
Track.Size = UDim2.new(1, -20, 0, 5)
Track.Position = UDim2.new(0, 10, 0, 30)
Track.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
Track.Parent = SliderFrame
local Fill = Instance.new("Frame")
Fill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
Fill.BackgroundColor3 = Color3.fromRGB(120, 80, 255)
Fill.Parent = Track
local Active = false
local function Update(input)
local Relative = math.clamp((input.Position.X - Track.AbsolutePosition.X) / Track.AbsoluteSize.X, 0, 1)
local Value = math.floor(min + (max - min) * Relative)
Fill.Size = UDim2.new(Relative, 0, 1, 0)
ValLabel.Text = tostring(Value)
callback(Value)
end
Track.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
Active = true
Update(input)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
Active = false
end
end)
UserInputService.InputChanged:Connect(function(input)
if Active and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
Update(input)
end
end)
end
local function SmoothMoveTo(targetCFrame, speed)
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local dist = (hrp.Position - targetCFrame.Position).Magnitude
local duration = math.max(0.01, dist / (speed or 85))
local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Linear)
local tween = TweenService:Create(hrp, tweenInfo, {CFrame = targetCFrame})
tween:Play()
tween.Completed:Wait()
end
local function GetAllEntities()
local entities = {}
local searchedContainers = {
Workspace:FindFirstChild("Entities"),
Workspace:FindFirstChild("Monsters"),
Workspace:FindFirstChild("Spawns"),
Workspace
}
local function ScanContainer(container)
if not container then return end
for _, item in ipairs(container:GetChildren()) do
if item:IsA("Model") then
if item:FindFirstChildOfClass("Humanoid") or item:FindFirstChild("HumanoidRootPart") or item:FindFirstChild("Head") then
if not Players:GetPlayerFromCharacter(item) then
table.insert(entities, item)
end
else
ScanContainer(item)
end
elseif item:IsA("Folder") then
ScanContainer(item)
elseif item:IsA("BasePart") and item.Name:lower():find("monster") then
table.insert(entities, item)
end
end
end
for _, c in ipairs(searchedContainers) do
if c then ScanContainer(c) end
end
local unique = {}
local hash = {}
for _, ent in ipairs(entities) do
if not hash[ent] then
hash[ent] = true
table.insert(unique, ent)
end
end
return unique
end
CreateHeader("monster showcase")
local ShowcaseFrame = Instance.new("Frame")
ShowcaseFrame.Size = UDim2.new(1, 0, 0, 240)
ShowcaseFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 16)
ShowcaseFrame.Parent = MainScroll
local ShowcaseCorner = Instance.new("UICorner")
ShowcaseCorner.CornerRadius = UDim.new(0, 6)
ShowcaseCorner.Parent = ShowcaseFrame
local Viewport = Instance.new("ViewportFrame")
Viewport.Size = UDim2.new(1, -220, 1, -10)
Viewport.Position = UDim2.new(0, 5, 0, 5)
Viewport.BackgroundColor3 = Color3.fromRGB(8, 8, 12)
Viewport.Parent = ShowcaseFrame
local ViewportCorner = Instance.new("UICorner")
ViewportCorner.CornerRadius = UDim.new(0, 5)
ViewportCorner.Parent = Viewport
local ViewportWorld = Instance.new("WorldModel")
ViewportWorld.Parent = Viewport
local ViewportCamera = Instance.new("Camera")
Viewport.CurrentCamera = ViewportCamera
ViewportCamera.Parent = Viewport
local ViewportLight = Instance.new("PointLight")
ViewportLight.Color = Color3.fromRGB(255, 255, 255)
ViewportLight.Range = 60
ViewportLight.Brightness = 2
local MonsterListFrame = Instance.new("ScrollingFrame")
MonsterListFrame.Size = UDim2.new(0, 205, 1, -10)
MonsterListFrame.Position = UDim2.new(1, -210, 0, 5)
MonsterListFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
MonsterListFrame.BorderSizePixel = 0
MonsterListFrame.ScrollBarThickness = 3
MonsterListFrame.Parent = ShowcaseFrame
local MonsterListCorner = Instance.new("UICorner")
MonsterListCorner.CornerRadius = UDim.new(0, 5)
MonsterListCorner.Parent = MonsterListFrame
local MonsterListLayout = Instance.new("UIListLayout")
MonsterListLayout.SortOrder = Enum.SortOrder.LayoutOrder
MonsterListLayout.Padding = UDim.new(0, 4)
MonsterListLayout.Parent = MonsterListFrame
MonsterListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
MonsterListFrame.CanvasSize = UDim2.new(0, 0, 0, MonsterListLayout.AbsoluteContentSize.Y + 5)
end)
local CurrentPreviewClone = nil
local RotateAngle = 0
local function ClearPreview()
ViewportWorld:ClearAllChildren()
CurrentPreviewClone = nil
end
local function LoadMonsterInPreview(monsterModel)
ClearPreview()
if not monsterModel or not (monsterModel:IsA("Model") or monsterModel:IsA("BasePart")) then return end
local clone = monsterModel:Clone()
for _, scriptObj in ipairs(clone:GetDescendants()) do
if scriptObj:IsA("LuaSourceContainer") then scriptObj:Destroy() end
end
clone.Parent = ViewportWorld
CurrentPreviewClone = clone
local primary = clone:IsA("BasePart") and clone or (clone.PrimaryPart or clone:FindFirstChild("HumanoidRootPart") or clone:FindFirstChild("Head") or clone:FindFirstChildWhichIsA("BasePart"))
if primary then
if clone:IsA("Model") then
local humanoid = clone:FindFirstChildOfClass("Humanoid") or Instance.new("Humanoid", clone)
local animator = humanoid:FindFirstChildOfClass("Animator") or Instance.new("Animator", humanoid)
local origAnim = monsterModel:FindFirstChildOfClass("Animation") or monsterModel:FindFirstChild("Run") or monsterModel:FindFirstChild("Walk")
if origAnim and origAnim:IsA("Animation") then
local track = animator:LoadAnimation(origAnim)
track.Looped = true
track:Play()
end
end
ViewportLight.Parent = primary
end
end
RunService.RenderStepped:Connect(function()
if CurrentPreviewClone then
local primary = CurrentPreviewClone:IsA("BasePart") and CurrentPreviewClone or (CurrentPreviewClone.PrimaryPart or CurrentPreviewClone:FindFirstChild("HumanoidRootPart") or CurrentPreviewClone:FindFirstChild("Head") or CurrentPreviewClone:FindFirstChildWhichIsA("BasePart"))
if primary then
RotateAngle = RotateAngle + 0.015
local dist = 10
local x = primary.Position.X + math.cos(RotateAngle) * dist
local z = primary.Position.Z + math.sin(RotateAngle) * dist
ViewportCamera.CFrame = CFrame.new(Vector3.new(x, primary.Position.Y + 2, z), primary.Position)
end
end
end)
local function PopulateMonsterShowcase()
for _, c in ipairs(MonsterListFrame:GetChildren()) do
if c:IsA("TextButton") then c:Destroy() end
end
local entities = GetAllEntities()
if #entities > 0 then
for idx, ent in ipairs(entities) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -8, 0, 30)
btn.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
btn.Font = Enum.Font.GothamMedium
btn.Text = " " .. ent.Name:lower() .. " [" .. tostring(idx) .. "]"
btn.TextColor3 = Color3.fromRGB(220, 220, 230)
btn.TextSize = 11
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.Parent = MonsterListFrame
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 4)
c.Parent = btn
btn.MouseButton1Click:Connect(function()
LoadMonsterInPreview(ent)
Notify("showcase", "showing: " .. ent.Name:lower())
end)
end
else
Notify("showcase", "no entities found in workspace")
end
end
CreateButton("refresh monster showcase list", function()
PopulateMonsterShowcase()
end)
PopulateMonsterShowcase()
CreateHeader("event survivals")
local AutoDodgerActive = false
local AutoDodgeDist = 25
local AntiInvisActive = false
local AlertSoundActive = false
local AutoDollyActive = false
CreateToggle("auto dodge", false, function(v)
AutoDodgerActive = v
if v then
task.spawn(function()
Notify("event survivals", "auto dodger on")
while AutoDodgerActive do
task.wait(0.1)
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hrp and hum and hum.MoveDirection.Magnitude == 0 then
local entities = GetAllEntities()
for _, ent in ipairs(entities) do
if not AutoDodgerActive then break end
local ePart = ent:IsA("BasePart") and ent or (ent:IsA("Model") and (ent.PrimaryPart or ent:FindFirstChild("HumanoidRootPart") or ent:FindFirstChild("Head") or ent:FindFirstChildWhichIsA("BasePart")))
if ePart then
local dist = (ePart.Position - hrp.Position).Magnitude
if dist < AutoDodgeDist then
local dodgeDir = (hrp.Position - ePart.Position).Unit
hrp.CFrame = CFrame.new(hrp.Position + (dodgeDir * 6), hrp.Position + dodgeDir * 10)
Notify("auto dodge", "dodged monster")
task.wait(0.2)
end
end
end
end
end
end)
end
end)
CreateSlider("auto dodge radius", 10, 50, 25, function(v)
AutoDodgeDist = v
end)
CreateToggle("auto survive dolly event", false, function(v)
AutoDollyActive = v
if v then
Notify("dolly event", "auto survive dolly event active")
end
end)
CreateToggle("reveal invisible monsters", false, function(v)
AntiInvisActive = v
if v then
task.spawn(function()
while AntiInvisActive do
task.wait(0.5)
local entities = GetAllEntities()
for _, ent in ipairs(entities) do
for _, child in ipairs(ent:GetDescendants()) do
if child:IsA("BasePart") and child.Transparency > 0.5 then
child.Transparency = 0.2
end
end
end
end
end)
end
end)
CreateToggle("monster sound alarm alert", false, function(v)
AlertSoundActive = v
if v then
task.spawn(function()
while AlertSoundActive do
task.wait(1)
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hrp then
local entities = GetAllEntities()
for _, ent in ipairs(entities) do
local ePart = ent:IsA("BasePart") and ent or (ent:IsA("Model") and (ent.PrimaryPart or ent:FindFirstChild("HumanoidRootPart") or ent:FindFirstChild("Head") or ent:FindFirstChildWhichIsA("BasePart")))
if ePart then
local dist = (ePart.Position - hrp.Position).Magnitude
if dist < 45 then
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://9114223177"
sound.Volume = 1
sound.Parent = Workspace
sound:Play()
task.wait(1.5)
sound:Destroy()
end
end
end
end
end
end)
end
end)
CreateButton("instant panic teleport to safe spot", function()
local hrp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.CFrame = hrp.CFrame + Vector3.new(0, 120, 0)
Notify("panic teleport", "teleported up in the air")
end
end)
CreateHeader("auto mechanics & capture zone")
local AutoScrapActive = false
local AutoCaptureActive = false
local ReviveAuraActive = false
local function GetDebrisFolder()
local debris = Workspace:FindFirstChild("Debris") or Workspace:FindFirstChild("debris")
if debris then
local mapInDebris = debris:FindFirstChild("Map") or debris:FindFirstChild("map")
if mapInDebris then
return mapInDebris
end
return debris
end
local mapFolder = Workspace:FindFirstChild("Map") or Workspace:FindFirstChild("map")
if mapFolder then
return mapFolder:FindFirstChild("Debris") or mapFolder:FindFirstChild("debris") or mapFolder
end
return Workspace
end
local function GetClosestScrap(hrp)
local targetContainer = GetDebrisFolder()
if not targetContainer then return nil end
local closest, minDistance = nil, math.huge
for _, item in ipairs(targetContainer:GetDescendants()) do
local part = nil
if item:IsA("BasePart") then
part = item
elseif item:IsA("Model") then
part = item.PrimaryPart or item:FindFirstChildWhichIsA("BasePart")
end
if part and item.Parent and part:IsDescendantOf(Workspace) then
local dist = (part.Position - hrp.Position).Magnitude
if dist < minDistance then
minDistance = dist
closest = {Item = item, Part = part}
end
end
end
return closest
end
CreateToggle("auto collect scrap", false, function(v)
AutoScrapActive = v
if v then
task.spawn(function()
Notify("auto scrap", "started scrap collection loop")
while AutoScrapActive do
task.wait(0.05)
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hrp then
local target = GetClosestScrap(hrp)
if target and target.Item and target.Item.Parent and target.Part then
local item = target.Item
local part = target.Part
hrp.CFrame = part.CFrame * CFrame.new(0, 0.5, 0)
local prompt = item:FindFirstChildWhichIsA("ProximityPrompt", true)
if prompt and fireproximityprompt then
fireproximityprompt(prompt)
end
if firetouchinterest then
firetouchinterest(hrp, part, 0)
task.wait(0.02)
firetouchinterest(hrp, part, 1)
end
local clickDetector = item:FindFirstChildWhichIsA("ClickDetector", true)
if clickDetector and fireclickdetector then
fireclickdetector(clickDetector)
end
local startTime = tick()
repeat
task.wait(0.02)
until not item or not item.Parent or (tick() - startTime > 0.15) or not AutoScrapActive
else
task.wait(0.2)
end
end
end
Notify("auto scrap", "stopped auto scrap collection")
end)
end
end)
CreateToggle("auto capture zone collect", false, function(v)
AutoCaptureActive = v
if v then
task.spawn(function()
Notify("capture zones", "auto zone capture active...")
while AutoCaptureActive do
task.wait(0.1)
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hrp then
local zones = {}
local mapFolder = Workspace:FindFirstChild("MapFolder") or Workspace:FindFirstChild("mapfolder") or Workspace
for _, obj in ipairs(mapFolder:GetDescendants()) do
local n = obj.Name:lower()
if n:find("controlpoint") or n:find("capture") or n:find("generator") then
if obj:IsA("BasePart") or obj:IsA("Model") then
table.insert(zones, obj)
end
end
end
if #zones > 0 then
for _, zone in ipairs(zones) do
if not AutoCaptureActive then break end
local targetPart = zone:IsA("BasePart") and zone or (zone.PrimaryPart or zone:FindFirstChildWhichIsA("BasePart"))
if targetPart then
Notify("capture zones", "moving to zone: " .. zone.Name:lower())
SmoothMoveTo(targetPart.CFrame * CFrame.new(0, 3, 0), 40)
Notify("capture zones", "capturing zone (spinning)...")
local spinStart = tick()
local currentAngle = 0
while (tick() - spinStart < 63) and AutoCaptureActive do
task.wait(0.03)
currentAngle = currentAngle + 0.15
hrp.CFrame = CFrame.new(targetPart.Position + Vector3.new(0, 3, 0)) * CFrame.Angles(0, currentAngle, 0)
end
end
end
else
task.wait(1.5)
end
end
end
Notify("capture zones", "stopped auto capture zones")
end)
end
end)
local function IsPlayerDowned(player)
if not player or not player.Character then return false end
local char = player.Character
local hum = char:FindFirstChildOfClass("Humanoid")
if hum and (hum.Health <= 0 or hum:GetState() == Enum.HumanoidStateType.Dead) then
return true
end
if DownedModule then
local success, downedResult = pcall(function()
local moduleTable = require(DownedModule)
if type(moduleTable) == "function" then
return moduleTable(player) or moduleTable(char)
elseif type(moduleTable) == "table" then
if moduleTable.IsDowned then return moduleTable.IsDowned(player) end
if moduleTable.Check then return moduleTable.Check(player) end
if moduleTable[player] or moduleTable[player.Name] then return true end
end
return false
end)
if success and downedResult == true then
return true
end
end
local hasDownedAttr = char:GetAttribute("Downed") == true
or char:GetAttribute("IsDowned") == true
or char:GetAttribute("Knocked") == true
or char:GetAttribute("KO") == true
local isRagdolled = char:FindFirstChild("Ragdoll") ~= nil or char:FindFirstChild("Downed") ~= nil
return hasDownedAttr or isRagdolled
end
local function doReviveAura()
if not LocalPlayer.Character or not LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then return end
local myPos = LocalPlayer.Character.HumanoidRootPart.Position
for _, obj in ipairs(Workspace:GetDescendants()) do
if obj:IsA("ProximityPrompt") then
if obj.ObjectText == "Revive" or obj.ActionText == "Revive" or string.match(obj.Name:lower(), "revive") then
local promptParent = obj:FindFirstAncestorOfClass("Model")
if promptParent and promptParent:FindFirstChild("HumanoidRootPart") then
local targetPos = promptParent.HumanoidRootPart.Position
local distance = (myPos - targetPos).Magnitude
if distance <= maxDistance then
if fireproximityprompt then
fireproximityprompt(obj)
end
end
end
end
end
end
end
CreateToggle("revive aura", false, function(v)
ReviveAuraActive = v
if v then
task.spawn(function()
Notify("revive aura", "revive aura activated")
while ReviveAuraActive do
task.wait(0.1)
pcall(doReviveAura)
end
Notify("revive aura", "revive aura disabled")
end)
end
end)
local function GetTargetTimerModel()
local cilentFolder = Workspace:FindFirstChild("Cilent") or Workspace:FindFirstChild("cilent") or Workspace:FindFirstChild("Client")
if cilentFolder then
local timerModel = cilentFolder:FindFirstChild("Timer") or cilentFolder:FindFirstChild("timer") or cilentFolder:FindFirstChild("Model")
if timerModel then
return timerModel
end
return cilentFolder
end
return Workspace:FindFirstChild("Timer") or Workspace:FindFirstChild("timer")
end
CreateToggle("show or hide timer", true, function(state)
local target = GetTargetTimerModel()
if target then
if target:IsA("Model") or target:IsA("Folder") then
for _, obj in ipairs(target:GetDescendants()) do
if obj:IsA("BasePart") then
obj.Transparency = state and 0 or 1
elseif obj:IsA("BillboardGui") or obj:IsA("SurfaceGui") then
obj.Enabled = state
end
end
elseif target:IsA("BasePart") then
target.Transparency = state and 0 or 1
end
Notify("timer toggle", state and "timer visible" or "timer hidden")
else
Notify("timer toggle", "timer folder not found in workspace.cilent")
end
end)
CreateButton("teleport to exit", function()
local hrp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if hrp then
for _, exit in ipairs(Workspace:GetDescendants()) do
local n = exit.Name:lower()
if n:find("exitpoint") or n:find("escapedoor") or n:find("exit") then
local part = exit:IsA("BasePart") and exit or exit:FindFirstChildWhichIsA("BasePart")
if part then
hrp.CFrame = part.CFrame + Vector3.new(0, 3, 0)
Notify("exit teleport", "teleported to exit")
return
end
end
end
Notify("exit teleport", "exit door not found")
end
end)
CreateHeader("scrap counter display")
local TrackerFrame = Instance.new("Frame")
TrackerFrame.Size = UDim2.new(0, 220, 0, 75)
TrackerFrame.Position = UDim2.new(0, 20, 0.4, 0)
TrackerFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 26)
TrackerFrame.Visible = false
TrackerFrame.Parent = MainGui
local TrackerCorner = Instance.new("UICorner")
TrackerCorner.CornerRadius = UDim.new(0, 6)
TrackerCorner.Parent = TrackerFrame
local TrackerStroke = Instance.new("UIStroke")
TrackerStroke.Color = Color3.fromRGB(255, 215, 0)
TrackerStroke.Thickness = 1.5
TrackerStroke.Parent = TrackerFrame
local TrackerText = Instance.new("TextLabel")
TrackerText.Size = UDim2.new(1, 0, 1, 0)
TrackerText.BackgroundTransparency = 1
TrackerText.Font = Enum.Font.GothamBold
TrackerText.Text = "scrap counter\nremaining scrap: 0\ncollected scrap: 0"
TrackerText.TextColor3 = Color3.fromRGB(255, 215, 0)
TrackerText.TextSize = 11
TrackerText.Parent = TrackerFrame
CreateToggle("show scrap counter box", false, function(v) TrackerFrame.Visible = v end)
task.spawn(function()
while task.wait(0.5) do
if TrackerFrame.Visible then
local count = 0
local debris = GetDebrisFolder()
if debris then
for _, item in ipairs(debris:GetChildren()) do
if item:IsA("BasePart") or item:IsA("Model") then
count = count + 1
end
end
end
local myScrap = LocalPlayer:GetAttribute("Scrap") or LocalPlayer:GetAttribute("ScrapVal") or 0
TrackerText.Text = "scrap counter\nremaining scrap: " .. tostring(count) .. "\ncollected scrap: " .. tostring(myScrap)
end
end
end)
CreateHeader("visuals & esp")
local ESPState = { Player = false, Monster = false, Scrap = false, Capture = false }
local ESPCache = { Player = {}, Monster = {}, Scrap = {}, Capture = {} }
local ArrowToMonstersActive = false
local ArrowCache = {}
local function ClearCategory(cat)
for inst, elements in pairs(ESPCache[cat]) do
for _, el in ipairs(elements) do
if el and el.Parent then el:Destroy() end
end
end
ESPCache[cat] = {}
end
local function ClearArrows()
for inst, arrowGui in pairs(ArrowCache) do
if arrowGui and arrowGui.Parent then
arrowGui:Destroy()
end
end
ArrowCache = {}
end
local function ApplyESP(inst, color, cat, text)
if not inst or not inst.Parent or ESPCache[cat][inst] then return end
local elements = {}
local targetPart = inst:IsA("BasePart") and inst or (inst:IsA("Model") and (inst.PrimaryPart or inst:FindFirstChild("HumanoidRootPart") or inst:FindFirstChild("Head") or inst:FindFirstChildWhichIsA("BasePart")))
if not targetPart then return end
local hl = Instance.new("Highlight")
hl.Name = "DH_HL"
hl.FillColor = color
hl.OutlineColor = Color3.fromRGB(255, 255, 255)
hl.FillTransparency = 0.5
hl.OutlineTransparency = 0.1
hl.Adornee = inst
hl.Parent = inst
table.insert(elements, hl)
if text then
local bb = Instance.new("BillboardGui")
bb.Name = "DH_BB"
bb.AlwaysOnTop = true
bb.Size = UDim2.new(0, 140, 0, 24)
bb.StudsOffset = Vector3.new(0, 3, 0)
bb.Adornee = targetPart
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.GothamBold
lbl.Text = text:lower()
lbl.TextColor3 = color
lbl.TextSize = 11
lbl.TextStrokeTransparency = 0.2
lbl.Parent = bb
bb.Parent = inst
table.insert(elements, bb)
end
ESPCache[cat][inst] = elements
end
CreateToggle("arrow to monsters", false, function(v)
ArrowToMonstersActive = v
if not v then
ClearArrows()
Notify("visuals", "arrow to monsters disabled")
else
Notify("visuals", "arrow to monsters enabled")
end
end)
CreateToggle("player esp", false, function(v) ESPState.Player = v if not v then ClearCategory("Player") end end)
CreateToggle("monster esp", false, function(v) ESPState.Monster = v if not v then ClearCategory("Monster") end end)
CreateToggle("scrap esp", false, function(v) ESPState.Scrap = v if not v then ClearCategory("Scrap") end end)
CreateToggle("control point / capture esp", false, function(v) ESPState.Capture = v if not v then ClearCategory("Capture") end end)
CreateToggle("fullbright & remove fog", false, function(v)
if v then
Lighting.Ambient = Color3.fromRGB(255, 255, 255)
Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255)
Lighting.FogEnd = 1e6
else
Lighting.Ambient = Color3.fromRGB(120, 120, 120)
Lighting.OutdoorAmbient = Color3.fromRGB(120, 120, 120)
Lighting.FogEnd = 100000
end
end)
CreateSlider("camera fov", 70, 120, 70, function(v)
Workspace.CurrentCamera.FieldOfView = v
end)
-- Real-time RenderStepped update loop for direction-accurate tracking arrows
RunService.RenderStepped:Connect(function()
if not ArrowToMonstersActive then
ClearArrows()
return
end
local char = LocalPlayer.Character
local head = char and (char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart"))
local cam = Workspace.CurrentCamera
if not head or not cam then
ClearArrows()
return
end
local entities = GetAllEntities()
local currentEntities = {}
for idx, ent in ipairs(entities) do
currentEntities[ent] = true
local targetPart = ent:IsA("BasePart") and ent or (ent:IsA("Model") and (ent.PrimaryPart or ent:FindFirstChild("HumanoidRootPart") or ent:FindFirstChild("Head") or ent:FindFirstChildWhichIsA("BasePart")))
if targetPart then
local arrowGui = ArrowCache[ent]
if not arrowGui or not arrowGui.Parent then
arrowGui = Instance.new("BillboardGui")
arrowGui.Name = "MonsterArrowGui"
arrowGui.AlwaysOnTop = true
arrowGui.Size = UDim2.new(0, 40, 0, 40)
arrowGui.Adornee = head
arrowGui.Parent = MainGui
local arrowImg = Instance.new("ImageLabel")
arrowImg.Name = "Arrow"
arrowImg.Size = UDim2.new(0, 24, 0, 24)
arrowImg.Position = UDim2.new(0.5, -12, 0.5, -12)
arrowImg.BackgroundTransparency = 1
arrowImg.Image = "rbxassetid://6034818372"
arrowImg.ImageColor3 = Color3.fromRGB(255, 50, 50)
arrowImg.Parent = arrowGui
local distLbl = Instance.new("TextLabel")
distLbl.Name = "Dist"
distLbl.Size = UDim2.new(1, 0, 0, 12)
distLbl.Position = UDim2.new(0, 0, 0, -10)
distLbl.BackgroundTransparency = 1
distLbl.Font = Enum.Font.GothamBold
distLbl.TextSize = 9
distLbl.TextColor3 = Color3.fromRGB(255, 255, 255)
distLbl.TextStrokeTransparency = 0.3
distLbl.Parent = arrowGui
ArrowCache[ent] = arrowGui
end
-- Alternates arrows on the sides of player head to avoid overlapping
local isEven = (idx % 2 == 0)
local sideMultiplier = isEven and 1 or -1
local stackOffset = math.floor((idx - 1) / 2) * 1.2
local xOffset = sideMultiplier * (2.2 + stackOffset)
local yOffset = 1.5
arrowGui.StudsOffset = Vector3.new(xOffset, yOffset, 0)
-- ACCURATE POINT-AT-TARGET ROTATION MATH
local targetPos = targetPart.Position
local dist = math.floor((targetPos - head.Position).Magnitude)
-- Compute angle using camera-relative coordinate space
local localDir = cam.CFrame:VectorToObjectSpace(targetPos - cam.CFrame.Position)
local angle = math.atan2(-localDir.X, -localDir.Z)
local arrowImg = arrowGui:FindFirstChild("Arrow")
local distLbl = arrowGui:FindFirstChild("Dist")
if arrowImg then
arrowImg.Rotation = math.deg(angle)
if dist < 30 then
arrowImg.ImageColor3 = Color3.fromRGB(255, 40, 40)
elseif dist < 70 then
arrowImg.ImageColor3 = Color3.fromRGB(255, 180, 30)
else
arrowImg.ImageColor3 = Color3.fromRGB(80, 255, 120)
end
end
if distLbl then
distLbl.Text = tostring(dist) .. "m"
end
end
end
-- Clean up despawned entity arrows
for ent, arrowGui in pairs(ArrowCache) do
if not currentEntities[ent] or not ent.Parent then
if arrowGui and arrowGui.Parent then arrowGui:Destroy() end
ArrowCache[ent] = nil
end
end
end)
task.spawn(function()
while task.wait(0.4) do
if ESPState.Monster then
local entities = GetAllEntities()
for _, ent in ipairs(entities) do
ApplyESP(ent, Color3.fromRGB(255, 45, 45), "Monster", "monster: " .. ent.Name)
end
end
if ESPState.Scrap then
local debris = GetDebrisFolder()
if debris then
for _, item in ipairs(debris:GetChildren()) do
if item:IsA("BasePart") or item:IsA("Model") then
ApplyESP(item, Color3.fromRGB(255, 215, 0), "Scrap", "scrap")
end
end
end
end
if ESPState.Capture then
for _, obj in ipairs(Workspace:GetDescendants()) do
local n = obj.Name:lower()
if n:find("controlpoint") or n:find("capture") or n:find("generator") or n:find("zone") then
if obj:IsA("BasePart") or obj:IsA("Model") then
ApplyESP(obj, Color3.fromRGB(80, 255, 120), "Capture", "control point")
end
end
end
end
if ESPState.Player then
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then
ApplyESP(p.Character, Color3.fromRGB(0, 200, 255), "Player", p.Name)
end
end
end
end
end)
CreateHeader("player modifications")
local CustomSpeedEnabled = false
local CustomSpeedMult = 20
local CustomJumpEnabled = false
local CustomJumpPower = 50
local InfStamina = false
local NoclipActive = false
local ClickTPEnabled = false
CreateToggle("enable walkspeed", false, function(v) CustomSpeedEnabled = v end)
CreateSlider("walkspeed multiplier", 16, 100, 20, function(v) CustomSpeedMult = v end)
CreateToggle("enable jump power", false, function(v) CustomJumpEnabled = v end)
CreateSlider("jump power force", 50, 180, 50, function(v) CustomJumpPower = v end)
CreateToggle("infinite stamina", false, function(v)
InfStamina = v
if SharedCharacter then
if InfStamina then
SharedCharacter.DepleteStamina = function(self, ...)
if self.State then
self.State.Stamina = self.State.MaxStamina or 100
self.State.BadStamina = false
self.State.StaminaCooldown = 0
end
end
Notify("stamina bypass", "module stamina depletion overridden")
else
if OriginalDepleteStamina then
SharedCharacter.DepleteStamina = OriginalDepleteStamina
end
Notify("stamina bypass", "stamina depletion restored")
end
else
Notify("stamina bypass", "SharedCharacter module not found, using attribute fallback")
end
end)
CreateToggle("noclip mode", false, function(v) NoclipActive = v end)
CreateToggle("click teleport (hold ctrl + left click)", false, function(v) ClickTPEnabled = v end)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if ClickTPEnabled and input.UserInputType == Enum.UserInputType.MouseButton1 and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
local mouse = LocalPlayer:GetMouse()
if mouse and mouse.Hit and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(mouse.Hit.Position + Vector3.new(0, 3, 0))
Notify("click tp", "teleported to mouse cursor")
end
end
end)
RunService.RenderStepped:Connect(function()
local char = LocalPlayer.Character
if char then
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if hrp and hum then
if CustomSpeedEnabled and hum.MoveDirection.Magnitude > 0 then
hrp.CFrame = hrp.CFrame + (hum.MoveDirection * (CustomSpeedMult / 40))
end
if CustomJumpEnabled and UserInputService:IsKeyDown(Enum.KeyCode.Space) and hum:GetState() ~= Enum.HumanoidStateType.Freefall then
hrp.Velocity = Vector3.new(hrp.Velocity.X, CustomJumpPower, hrp.Velocity.Z)
end
end
if InfStamina then
char:SetAttribute("Stamina", 100)
char:SetAttribute("Energy", 100)
end
if NoclipActive then
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then part.CanCollide = false end
end
end
end
end)
CreateHeader("map checkout & spectator povs")
local CheckingMap = false
CreateToggle("map orbit camera view", false, function(v)
CheckingMap = v
if v then
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
task.spawn(function()
local angle = 0
while CheckingMap do
task.wait(0.02)
angle = angle + 0.005
local center = Vector3.new(0, 30, 0)
local x = center.X + math.cos(angle) * 120
local z = center.Z + math.sin(angle) * 120
Workspace.CurrentCamera.CFrame = CFrame.new(Vector3.new(x, center.Y + 60, z), center)
end
Workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
end)
else
Workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
end
end)
local ViewingPOV = false
local POVTarget = nil
local POVMode = "3rd"
local function StopPOV()
ViewingPOV = false
POVTarget = nil
Workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then
Workspace.CurrentCamera.CameraSubject = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
end
end
local function GetTargetPart(target)
if not target then return nil end
if target:IsA("BasePart") then return target end
return target:FindFirstChild("Head") or target:FindFirstChild("HumanoidRootPart") or target.PrimaryPart or target:FindFirstChildWhichIsA("BasePart")
end
local function SetCameraTarget(target)
if not target or not target.Parent then
StopPOV()
return
end
if POVMode == "3rd" then
local hum = target:FindFirstChildOfClass("Humanoid")
if hum then
Workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
Workspace.CurrentCamera.CameraSubject = hum
else
local primary = GetTargetPart(target)
if primary then
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
Workspace.CurrentCamera.CFrame = primary.CFrame * CFrame.new(0, 2, 6)
else
StopPOV()
end
end
elseif POVMode == "1st" then
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
local head = GetTargetPart(target)
if head then
Workspace.CurrentCamera.CFrame = head.CFrame * CFrame.new(0, 0.2, -0.2)
end
end
end
local ModeBtn = CreateButton("spectate mode: third person", function() end)
local function UpdateModeButton()
ModeBtn.Text = "spectate mode: " .. (POVMode == "3rd" and "third person (orbit)" or "first person (head)")
if ViewingPOV and POVTarget then
SetCameraTarget(POVTarget)
end
end
ModeBtn.MouseButton1Click:Connect(function()
POVMode = (POVMode == "3rd") and "1st" or "3rd"
UpdateModeButton()
Notify("pov mode", "switched view mode to: " .. (POVMode == "3rd" and "third person" or "first person"))
end)
CreateButton("reset camera back to character", function()
StopPOV()
Notify("pov system", "camera reset back to local character")
end)
local MonsterScroll = Instance.new("ScrollingFrame")
MonsterScroll.Size = UDim2.new(1, 0, 0, 90)
MonsterScroll.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
MonsterScroll.BorderSizePixel = 0
MonsterScroll.ScrollBarThickness = 3
MonsterScroll.Parent = MainScroll
local MonsterLayout = Instance.new("UIListLayout")
MonsterLayout.SortOrder = Enum.SortOrder.LayoutOrder
MonsterLayout.Padding = UDim.new(0, 4)
MonsterLayout.Parent = MonsterScroll
MonsterLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
MonsterScroll.CanvasSize = UDim2.new(0, 0, 0, MonsterLayout.AbsoluteContentSize.Y + 5)
end)
local PlayerScroll = Instance.new("ScrollingFrame")
PlayerScroll.Size = UDim2.new(1, 0, 0, 90)
PlayerScroll.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
PlayerScroll.BorderSizePixel = 0
PlayerScroll.ScrollBarThickness = 3
PlayerScroll.Parent = MainScroll
local PlayerLayout = Instance.new("UIListLayout")
PlayerLayout.SortOrder = Enum.SortOrder.LayoutOrder
PlayerLayout.Padding = UDim.new(0, 4)
PlayerLayout.Parent = PlayerScroll
PlayerLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
PlayerScroll.CanvasSize = UDim2.new(0, 0, 0, PlayerLayout.AbsoluteContentSize.Y + 5)
end)
local function RefreshPOVS()
for _, child in ipairs(MonsterScroll:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end
for _, child in ipairs(PlayerScroll:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end
local entities = GetAllEntities()
for idx, ent in ipairs(entities) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -8, 0, 26)
btn.BackgroundColor3 = Color3.fromRGB(45, 25, 30)
btn.Font = Enum.Font.Gotham
btn.Text = "watch monster: " .. ent.Name:lower() .. " [" .. tostring(idx) .. "]"
btn.TextColor3 = Color3.fromRGB(255, 120, 120)
btn.TextSize = 11
btn.Parent = MonsterScroll
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 4)
c.Parent = btn
btn.MouseButton1Click:Connect(function()
POVTarget = ent
ViewingPOV = true
SetCameraTarget(ent)
Notify("pov system", "spectating monster: " .. ent.Name:lower())
end)
end
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -8, 0, 26)
btn.BackgroundColor3 = Color3.fromRGB(25, 35, 45)
btn.Font = Enum.Font.Gotham
btn.Text = "watch player: " .. p.Name:lower()
btn.TextColor3 = Color3.fromRGB(120, 200, 255)
btn.TextSize = 11
btn.Parent = PlayerScroll
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 4)
c.Parent = btn
btn.MouseButton1Click:Connect(function()
POVTarget = p.Character
ViewingPOV = true
SetCameraTarget(p.Character)
Notify("pov system", "spectating player: " .. p.Name:lower())
end)
end
end
end
CreateButton("refresh spectator pov targets", function() RefreshPOVS() end)
RunService.RenderStepped:Connect(function()
if ViewingPOV then
if POVTarget and POVTarget.Parent then
if POVMode == "1st" then
local head = GetTargetPart(POVTarget)
if head then
Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
Workspace.CurrentCamera.CFrame = head.CFrame * CFrame.new(0, 0.2, -0.2)
else
StopPOV()
end
elseif POVMode == "3rd" then
local hum = POVTarget:FindFirstChildOfClass("Humanoid")
if not hum then
local primary = GetTargetPart(POVTarget)
if primary then
Workspace.CurrentCamera.CFrame = primary.CFrame * CFrame.new(0, 2, 6)
else
StopPOV()
end
end
end
else
StopPOV()
end
end
end)
local function TeleportToNearestAlivePlayer()
if IsPlayerDowned(LocalPlayer) then return end
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local nearest, minDist = nil, math.huge
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then
local pHum = p.Character:FindFirstChildOfClass("Humanoid")
local pHrp = p.Character:FindFirstChild("HumanoidRootPart")
if pHum and pHum.Health > 0 and pHrp and not IsPlayerDowned(p) then
local dist = (pHrp.Position - hrp.Position).Magnitude
if dist < minDist then
minDist = dist
nearest = pHrp
end
end
end
end
if nearest then
hrp.CFrame = nearest.CFrame * CFrame.new(0, 0, 3)
Notify("downed tp", "teleported to nearest alive player: " .. nearest.Parent.Name:lower())
end
end
local function HideInSmartSpot()
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local mapFolder = Workspace:FindFirstChild("MapFolder")
local mainMap = mapFolder and mapFolder:FindFirstChild("Main")
if mainMap then
local validSpots = {}
for _, part in ipairs(mainMap:GetDescendants()) do
if part:IsA("BasePart") and part.Size.Y > 4 and part.CanCollide then
table.insert(validSpots, part)
end
end
if #validSpots > 0 then
local chosen = validSpots[math.random(1, #validSpots)]
hrp.CFrame = chosen.CFrame * CFrame.new(0, chosen.Size.Y/2 + 3, 0)
Notify("smart hide", "placed character in map hiding spot")
return
end
end
hrp.CFrame = hrp.CFrame * CFrame.new(0, 20, 0)
Notify("smart hide", "map main folder not found, teleported up")
end
local function FreeCharacterFromDolly()
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hrp then
hrp.Anchored = false
for _, p in ipairs(char:GetDescendants()) do
if p:IsA("BasePart") then p.Anchored = false end
end
end
if hum then
hum.PlatformStand = false
hum:ChangeState(Enum.HumanoidStateType.GettingUp)
end
Notify("dolly event", "freed character from dolly lock")
end
local function SetupSoundListener(sound)
if not sound or not sound:IsA("Sound") then return end
sound.Played:Connect(function()
local sId = sound.SoundId
local sName = sound.Name:lower()
if AutoDollyActive and (sName == "look" or sId:find("86427561503613")) then
FreeCharacterFromDolly()
end
if sName == "downedmus" or sId:find("124126285504791") then
TeleportToNearestAlivePlayer()
end
if sName == "spawnextrainindicator" or sId:find("131800688834543") then
HideInSmartSpot()
end
end)
end
for _, desc in ipairs(ReplicatedFirst:GetDescendants()) do
if desc:IsA("Sound") then
SetupSoundListener(desc)
end
end
ReplicatedFirst.DescendantAdded:Connect(function(desc)
if desc:IsA("Sound") then
SetupSoundListener(desc)
end
end)
RefreshPOVS()
task.spawn(function()
task.wait(1)
local vu = game:GetService("VirtualUser")
LocalPlayer.Idled:Connect(function()
vu:Button2Down(Vector2.new(0,0), Workspace.CurrentCamera.CFrame)
task.wait(1)
vu:Button2Up(Vector2.new(0,0), Workspace.CurrentCamera.CFrame)
end)
end)
Notify("script hub", "pre-alpha 1.0 loaded")No comments yet for this script.



