99 nigths in the forest script in progress
Key Required

99 nigths in the forest script in progress

99 Nights in the Forest 🔦davidinox708davidinox708 1.4K views 13.2K executesUpdated Jan 18, 2026
Unrated
00
Lua Script•716 lines (19832 chars)
-- LocalScript | Hacker Sandbox Panel (FULL WORKING + HACKER UI)

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

--================ CONFIG =================
local FONT = Enum.Font.Code

local COLORS = {
	bg = Color3.fromRGB(6, 10, 10),
	sidebar = Color3.fromRGB(8, 16, 14),
	panel = Color3.fromRGB(12, 22, 20),
	accent = Color3.fromRGB(0, 255, 170),
	text = Color3.fromRGB(220, 255, 240),
	button = Color3.fromRGB(18, 30, 28),
	danger = Color3.fromRGB(200, 60, 60)
}

--================ SCREEN GUI =================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "HackerPanelGUI"
screenGui.ResetOnSpawn = false
screenGui.DisplayOrder = 999999
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Global
screenGui.Parent = playerGui

--================ MAIN =================
local main = Instance.new("Frame", screenGui)
main.Size = UDim2.new(0,720,0,440)
main.Position = UDim2.new(0.5,-360,0.5,-220)
main.BackgroundColor3 = COLORS.bg
main.BorderSizePixel = 0
main.Active = true
Instance.new("UICorner", main).CornerRadius = UDim.new(0,14)

local stroke = Instance.new("UIStroke", main)
stroke.Color = COLORS.accent
stroke.Thickness = 1
stroke.Transparency = 0.6

-- scanlines
local scan = Instance.new("ImageLabel", main)
scan.Size = UDim2.new(1,0,1,0)
scan.Image = "rbxassetid://13836237337"
scan.ImageTransparency = 0.93
scan.ScaleType = Enum.ScaleType.Tile
scan.TileSize = UDim2.new(0,4,0,4)
scan.BackgroundTransparency = 1
scan.ZIndex = 50

--================ TOP BAR =================
local topBar = Instance.new("Frame", main)
topBar.Size = UDim2.new(1,0,0,40)
topBar.BackgroundColor3 = COLORS.panel
topBar.BorderSizePixel = 0

local title = Instance.new("TextLabel", topBar)
title.Size = UDim2.new(1,0,1,0)
title.Text = "ACCESS GRANTED :: HACKER PANEL"
title.Font = FONT
title.TextSize = 16
title.TextColor3 = COLORS.accent
title.BackgroundTransparency = 1

local closeBtn = Instance.new("TextButton", topBar)
closeBtn.Size = UDim2.new(0,36,0,26)
closeBtn.Position = UDim2.new(1,-42,0.5,-13)
closeBtn.Text = "X"
closeBtn.Font = FONT
closeBtn.TextColor3 = Color3.new(1,1,1)
closeBtn.BackgroundColor3 = COLORS.danger
Instance.new("UICorner", closeBtn)

local minimizeBtn = Instance.new("TextButton", topBar)
minimizeBtn.Size = UDim2.new(0,36,0,26)
minimizeBtn.Position = UDim2.new(1,-84,0.5,-13)
minimizeBtn.Text = "-"
minimizeBtn.Font = FONT
minimizeBtn.TextColor3 = COLORS.text
minimizeBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", minimizeBtn)

--================ SIDEBAR =================
local sidebar = Instance.new("Frame", main)
sidebar.Size = UDim2.new(0,190,1,-40)
sidebar.Position = UDim2.new(0,0,0,40)
sidebar.BackgroundColor3 = COLORS.sidebar

local sideStroke = Instance.new("UIStroke", sidebar)
sideStroke.Color = COLORS.accent
sideStroke.Transparency = 0.7

local sideLayout = Instance.new("UIListLayout", sidebar)
sideLayout.Padding = UDim.new(0,8)
sideLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center

--================ CONTENT =================
local content = Instance.new("Frame", main)
content.Size = UDim2.new(1,-190,1,-40)
content.Position = UDim2.new(0,190,0,40)
content.BackgroundColor3 = COLORS.panel

--================ DRAG =================
local function makeDraggable(frame)
	local dragging, startPos, startInput
	frame.InputBegan:Connect(function(i)
		if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			startInput = i.Position
			startPos = frame.Position
		end
	end)
	UIS.InputChanged:Connect(function(i)
		if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then
			local delta = i.Position - startInput
			frame.Position = UDim2.new(startPos.X.Scale,startPos.X.Offset+delta.X,startPos.Y.Scale,startPos.Y.Offset+delta.Y)
		end
	end)
	UIS.InputEnded:Connect(function(i)
		if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then
			dragging = false
		end
	end)
end
makeDraggable(topBar)

--================ PANELS =================
local panels = {}
local function createPanel(name)
	local f = Instance.new("Frame", content)
	f.Size = UDim2.new(1,-20,1,-20)
	f.Position = UDim2.new(0,10,0,10)
	f.BackgroundTransparency = 1
	f.Visible = false
	panels[name] = f
	return f
end

local spawnPanel = createPanel("Spawn")
local teleportPanel = createPanel("Teleport")
local playersPanel = createPanel("Players")
spawnPanel.Visible = true

local function sideButton(text, panel)
	local b = Instance.new("TextButton", sidebar)
	b.Size = UDim2.new(1,-20,0,42)
	b.Text = text
	b.Font = FONT
	b.TextScaled = true
	b.TextColor3 = COLORS.text
	b.BackgroundColor3 = COLORS.button
	Instance.new("UICorner", b)

	b.MouseButton1Click:Connect(function()
		for _,p in pairs(panels) do p.Visible = false end
		panel.Visible = true
	end)
end

sideButton("Spawn", spawnPanel)
sideButton("Teleport", teleportPanel)
sideButton("Players", playersPanel)

local itemsFolder = workspace:WaitForChild("Items")

local spawnList = Instance.new("ScrollingFrame", spawnPanel)
spawnList.Size = UDim2.new(1,0,1,0)
spawnList.BackgroundTransparency = 1
spawnList.CanvasSize = UDim2.new(0,0,0,0)

local sl = Instance.new("UIListLayout", spawnList)
sl.Padding = UDim.new(0,6)

local spawnButtons = {} -- 🔑 control de botones únicos

-- ================= SPAWN FUNCTION =================
local function spawnAboveHead(name)
	local char = player.Character or player.CharacterAdded:Wait()
	local head = char:WaitForChild("Head")

	for _, m in ipairs(itemsFolder:GetChildren()) do
		if m:IsA("Model") and m.Name == name and m.PrimaryPart then

			-- quitar weld en carrot / berry
			if name == "Carrot" or name == "Berry" then
				for _, w in ipairs(m:GetDescendants()) do
					if w:IsA("WeldConstraint") and w.Name == "ItemWeld" then
						w:Destroy()
					end
				end
			end

			m:SetPrimaryPartCFrame(
				CFrame.new(head.Position + Vector3.new(0,4,0))
			)
		end
	end
end

-- ================= UPDATE LIST =================
local function updateSpawn()
	local existingNames = {}

	-- detectar modelos únicos
	for _, m in ipairs(itemsFolder:GetChildren()) do
		if m:IsA("Model") and m.PrimaryPart then
			existingNames[m.Name] = true
		end
	end

	-- borrar botones que ya no existen
	for name, btn in pairs(spawnButtons) do
		if not existingNames[name] then
			btn:Destroy()
			spawnButtons[name] = nil
		end
	end

	-- crear botones faltantes
	for name in pairs(existingNames) do
		if not spawnButtons[name] then
			local b = Instance.new("TextButton")
			b.Parent = spawnList
			b.Size = UDim2.new(1,-10,0,36)
			b.Text = name
			b.Font = FONT
			b.TextScaled = true
			b.TextColor3 = COLORS.text
			b.BackgroundColor3 = COLORS.button
			Instance.new("UICorner", b)

			b.MouseButton1Click:Connect(function()
				spawnAboveHead(name)
			end)

			spawnButtons[name] = b
		end
	end

	-- ajustar scroll
	spawnList.CanvasSize = UDim2.new(
		0,0,
		0, sl.AbsoluteContentSize.Y + 10
	)
end

--================ TELEPORTS (TODOS) =================
local function tpBtn(text,y,cb)
	local b = Instance.new("TextButton", teleportPanel)
	b.Size = UDim2.new(0,260,0,44)
	b.Position = UDim2.new(0,0,0,y)
	b.Text = text
	b.Font = FONT
	b.TextScaled = true
	b.TextColor3 = COLORS.text
	b.BackgroundColor3 = COLORS.accent
	Instance.new("UICorner", b)
	b.MouseButton1Click:Connect(cb)
end

tpBtn("TP Campfire",0,function()
	player.Character.HumanoidRootPart.CFrame =
		workspace.Map.Campground.MainFire.InnerTouchZone.CFrame + Vector3.new(0,5,0)
end)

tpBtn("TP AlienMothership",50,function()
	player.Character.HumanoidRootPart.CFrame =
		workspace.Map.Landmarks.AlienMothership.StartRoom.Teleporter["Meshes/teleporteralien_Cylinder.001"].CFrame + Vector3.new(0,3,0)
end)

tpBtn("TP Stronghold",100,function()
	player.Character.HumanoidRootPart.CFrame =
		workspace.Map.Landmarks.Stronghold.Building.Sign.Main.CFrame + Vector3.new(0,3,0)
end)

tpBtn("TP ToolWorkshop",150,function()
	player.Character.HumanoidRootPart.CFrame =
		workspace.Map.Landmarks.ToolWorkshop.Main.CFrame + Vector3.new(0,3,0)
end)

--================ TP TO CHEST =================
local toggle = Instance.new("TextButton", teleportPanel)
toggle.Size = UDim2.new(0,260,0,44)
toggle.Position = UDim2.new(0,0,0,210)
toggle.Text = "TP to Chest ▼"
toggle.Font = FONT
toggle.TextScaled = true
toggle.TextColor3 = COLORS.text
toggle.BackgroundColor3 = COLORS.accent
Instance.new("UICorner", toggle)

local chestList = Instance.new("ScrollingFrame", teleportPanel)
chestList.Size = UDim2.new(0,260,0,180)
chestList.Position = UDim2.new(0,270,0,210)
chestList.Visible = false
chestList.BackgroundColor3 = COLORS.sidebar
local cl = Instance.new("UIListLayout", chestList)
cl.Padding = UDim.new(0,6)

local chestIndex = {}

local function tpChest(name)
	local drops = {}
	for _,m in ipairs(itemsFolder:GetChildren()) do
		if m:IsA("Model") and m.Name == name then
			local d = m:FindFirstChild("ItemDrop", true)
			if d then table.insert(drops,d) end
		end
	end
	if #drops==0 then return end
	chestIndex[name] = (chestIndex[name] or 0)+1
	if chestIndex[name]>#drops then chestIndex[name]=1 end
	player.Character.HumanoidRootPart.CFrame = drops[chestIndex[name]].CFrame * CFrame.new(0,3,0)
end

for _,n in ipairs({
	"Item Chest",
	"Item Chest2",
	"Item Chest3",
	"Item Chest4",
	"Item Chest5",
	"Item Chest6"
}) do
	local b = Instance.new("TextButton", chestList)
	b.Size = UDim2.new(1,-8,0,34)
	b.Text = n
	b.Font = FONT
	b.TextScaled = true
	b.TextColor3 = COLORS.text
	b.BackgroundColor3 = COLORS.button
	Instance.new("UICorner", b)
	b.MouseButton1Click:Connect(function()
		tpChest(n)
	end)
end

toggle.MouseButton1Click:Connect(function()
	chestList.Visible = not chestList.Visible
	toggle.Text = chestList.Visible and "TP to Chest ▲" or "TP to Chest ▼"
end)

--================ PLAYERS =================
local speedBtn = Instance.new("TextButton", playersPanel)
speedBtn.Size = UDim2.new(0,260,0,44)
speedBtn.Text = "Speed: OFF"
speedBtn.Font = FONT
speedBtn.TextScaled = true
speedBtn.TextColor3 = COLORS.text
speedBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", speedBtn)

local fast=false
speedBtn.MouseButton1Click:Connect(function()
	fast = not fast
	speedBtn.Text = fast and "Speed: ON" or "Speed: OFF"
	speedBtn.BackgroundColor3 = fast and COLORS.accent or COLORS.button
	player.Character.Humanoid.WalkSpeed = fast and 100 or 16
end)

--================ JUMP (FIX DEFINITIVO) =================
local jumpBtn = Instance.new("TextButton", playersPanel)
jumpBtn.Position = UDim2.new(0,0,0,60)
jumpBtn.Size = UDim2.new(0,260,0,46)
jumpBtn.Text = "Jump: OFF"
jumpBtn.TextScaled = true
jumpBtn.TextColor3 = COLORS.text
jumpBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", jumpBtn)

local jumpOn = false
local NORMAL_JUMP = 50
local SUPER_JUMP = 200

local function applyJump()
	local char = player.Character
	if not char then return end

	local hum = char:FindFirstChildOfClass("Humanoid")
	if not hum then return end

	-- 🔥 CLAVE ABSOLUTA
	hum.UseJumpPower = true
	hum.JumpPower = jumpOn and SUPER_JUMP or NORMAL_JUMP
end

jumpBtn.MouseButton1Click:Connect(function()
	jumpOn = not jumpOn
	jumpBtn.Text = jumpOn and "Jump: ON" or "Jump: OFF"
	jumpBtn.BackgroundColor3 = jumpOn and COLORS.accent or COLORS.button
	applyJump()
end)

-- 🔁 MUY IMPORTANTE: cuando respawnea
player.CharacterAdded:Connect(function()
	task.wait(0.2)
	applyJump()
end)

--================ GOD MODE =================

local godBtn = Instance.new("TextButton", playersPanel)
godBtn.Position = UDim2.new(0,0,0,120)
godBtn.Size = UDim2.new(0,260,0,46)
godBtn.Text = "God Mode: OFF"
godBtn.Font = FONT
godBtn.TextScaled = true
godBtn.TextColor3 = COLORS.text
godBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", godBtn)

local godEnabled = false
local godConnection = nil

local function applyGod(character)
	if not character then return end
	local hum = character:WaitForChild("Humanoid", 3)
	if not hum then return end

	-- evitar duplicados
	if godConnection then
		godConnection:Disconnect()
		godConnection = nil
	end

	godConnection = hum.Changed:Connect(function(prop)
		if not godEnabled then return end
		if prop == "Health" and hum.Health < 100 then
			game:GetService("ReplicatedStorage")
				.RemoteEvents
				.DamagePlayer
				:FireServer(math.huge * -1)
		end
	end)
end

local function disableGod()
	if godConnection then
		godConnection:Disconnect()
		godConnection = nil
	end
end

godBtn.MouseButton1Click:Connect(function()
	godEnabled = not godEnabled
	godBtn.Text = godEnabled and "God Mode: ON" or "God Mode: OFF"
	godBtn.BackgroundColor3 = godEnabled and COLORS.accent or COLORS.button

	if godEnabled then
		applyGod(player.Character)
	else
		disableGod()
	end
end)

-- reaplicar al respawn
player.CharacterAdded:Connect(function(char)
	if godEnabled then
		task.wait(0.1)
		applyGod(char)
	end
end)

--================ FULL HUNGER (FIX REAL) =================

local hungerBtn = Instance.new("TextButton", playersPanel)
hungerBtn.Position = UDim2.new(0,0,0,180)
hungerBtn.Size = UDim2.new(0,260,0,46)
hungerBtn.Text = "Full Hunger: OFF"
hungerBtn.Font = FONT
hungerBtn.TextScaled = true
hungerBtn.TextColor3 = COLORS.text
hungerBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", hungerBtn)

local hungerOn = false
local hungerLoop

local MAX_HUNGER = 200

local function startFullHunger()
	if hungerLoop then return end

	hungerLoop = task.spawn(function()
		while hungerOn do
			if player:GetAttribute("Hunger") ~= MAX_HUNGER then
				player:SetAttribute("Hunger", MAX_HUNGER)
			end
			task.wait(0.01)
		end
	end)
end

local function stopFullHunger()
	hungerOn = false
	if hungerLoop then
		task.cancel(hungerLoop)
		hungerLoop = nil
	end
end

hungerBtn.MouseButton1Click:Connect(function()
	hungerOn = not hungerOn
	hungerBtn.Text = hungerOn and "Full Hunger: ON" or "Full Hunger: OFF"
	hungerBtn.BackgroundColor3 = hungerOn and COLORS.accent or COLORS.button

	if hungerOn then
		startFullHunger()
	else
		stopFullHunger()
	end
end)

--================ COMBAT PANEL =================
local combatPanel = createPanel("Combat")
sideButton("Combat", combatPanel)

--================ KILL AURA =================
local KillAuraEnabled = false
local KillAuraDistance = 70

local distanceLabel = Instance.new("TextLabel", combatPanel)
distanceLabel.Size = UDim2.new(1, -20, 0, 24)
distanceLabel.Position = UDim2.new(0, 10, 0, 20)
distanceLabel.BackgroundTransparency = 1
distanceLabel.Text = "> Kill Aura Distance: 70"
distanceLabel.Font = FONT
distanceLabel.TextSize = 14
distanceLabel.TextColor3 = COLORS.text
distanceLabel.TextXAlignment = Enum.TextXAlignment.Left

local slider = Instance.new("Frame", combatPanel)
slider.Size = UDim2.new(0, 260, 0, 6)
slider.Position = UDim2.new(0, 10, 0, 50)
slider.BackgroundColor3 = COLORS.sidebar
Instance.new("UICorner", slider)

local fill = Instance.new("Frame", slider)
fill.Size = UDim2.new(0.3, 0, 1, 0)
fill.BackgroundColor3 = COLORS.accent
Instance.new("UICorner", fill)

local dragging = false

slider.InputBegan:Connect(function(i)
	if i.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
	end
end)

UIS.InputEnded:Connect(function(i)
	if i.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = false
	end
end)

UIS.InputChanged:Connect(function(i)
	if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then
		local x = math.clamp(
			(i.Position.X - slider.AbsolutePosition.X) / slider.AbsoluteSize.X,
			0, 1
		)
		fill.Size = UDim2.new(x, 0, 1, 0)
		KillAuraDistance = math.floor(20 + x * 980)
		distanceLabel.Text = "> Kill Aura Distance: "..KillAuraDistance
	end
end)

local toggleBtn = Instance.new("TextButton", combatPanel)
toggleBtn.Size = UDim2.new(0, 260, 0, 44)
toggleBtn.Position = UDim2.new(0, 10, 0, 80)
toggleBtn.Text = "Kill Aura: OFF"
toggleBtn.Font = FONT
toggleBtn.TextScaled = true
toggleBtn.TextColor3 = COLORS.text
toggleBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", toggleBtn)

toggleBtn.MouseButton1Click:Connect(function()
	KillAuraEnabled = not KillAuraEnabled
	toggleBtn.Text = KillAuraEnabled and "Kill Aura: ON" or "Kill Aura: OFF"
	toggleBtn.BackgroundColor3 = KillAuraEnabled and COLORS.accent or COLORS.button
end)

task.spawn(function()
	while true do
		if KillAuraEnabled then
			local char = player.Character
			local hrp = char and char:FindFirstChild("HumanoidRootPart")
			local inventory = player:FindFirstChild("Inventory")
			local characters = workspace:FindFirstChild("Characters")

			if hrp and inventory and characters then
				local weapon =
					inventory:FindFirstChild("Old Axe")
					or inventory:FindFirstChild("Good Axe")
					or inventory:FindFirstChild("Strong Axe")
					or inventory:FindFirstChild("Chainsaw")

				if weapon then
					for _, mob in ipairs(characters:GetChildren()) do
						if mob:IsA("Model") and mob.PrimaryPart and mob ~= char then
							if (mob.PrimaryPart.Position - hrp.Position).Magnitude <= KillAuraDistance then
								pcall(function()
									for i = 1, 6 do
										game.ReplicatedStorage.RemoteEvents.ToolDamageObject:InvokeServer(
											mob,
											weapon,
											999,
											hrp.CFrame
										)
									end
								end) -- 👈 AHORA SÍ
							end
						end
					end
				end
			end
		end
		task.wait(0.02)
	end
end)

--=============== BRIGHT =====================

local Lighting = game:GetService("Lighting")

local fullBright = false
local fullBrightConn

local function enableFullBright()
	if fullBrightConn then return end

	fullBrightConn = RunService.RenderStepped:Connect(function()
		Lighting.Brightness = 3
		Lighting.ClockTime = 14
		Lighting.FogEnd = 100000
		Lighting.GlobalShadows = false
		Lighting.Ambient = Color3.fromRGB(255, 255, 255)
		Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255)
	end)
end

local function disableFullBright()
	if fullBrightConn then
		fullBrightConn:Disconnect()
		fullBrightConn = nil
	end

	-- valores normales
	Lighting.Brightness = 1
	Lighting.ClockTime = 12
	Lighting.FogEnd = 1000
	Lighting.GlobalShadows = true
	Lighting.Ambient = Color3.fromRGB(128,128,128)
	Lighting.OutdoorAmbient = Color3.fromRGB(128,128,128)
end

local brightBtn = Instance.new("TextButton", playersPanel)
brightBtn.Position = UDim2.new(0,0,0,240)
brightBtn.Size = UDim2.new(0,260,0,46)
brightBtn.Text = "Full Bright: OFF"
brightBtn.Font = FONT
brightBtn.TextScaled = true
brightBtn.TextColor3 = COLORS.text
brightBtn.BackgroundColor3 = COLORS.button
Instance.new("UICorner", brightBtn)

brightBtn.MouseButton1Click:Connect(function()
	fullBright = not fullBright
	brightBtn.Text = fullBright and "Full Bright: ON" or "Full Bright: OFF"
	brightBtn.BackgroundColor3 = fullBright and COLORS.accent or COLORS.button

	if fullBright then
		enableFullBright()
	else
		disableFullBright()
	end
end)

--================ MINIMIZE =================
local float = Instance.new("TextButton", screenGui)
float.Size = UDim2.new(0,60,0,60)
float.Position = UDim2.new(0.03,0,0.5,0)
float.Text = "HACK"
float.Font = FONT
float.TextScaled = true
float.TextColor3 = COLORS.accent
float.BackgroundColor3 = COLORS.bg
float.Visible = false
Instance.new("UICorner", float).CornerRadius = UDim.new(1,0)

minimizeBtn.MouseButton1Click:Connect(function()
	main.Visible=false
	float.Visible=true
end)

float.MouseButton1Click:Connect(function()
	main.Visible=true
	float.Visible=false
end)

closeBtn.MouseButton1Click:Connect(function()
	screenGui:Destroy()
end)

--================ UPDATE =================
task.spawn(function()
	while screenGui.Parent do
		updateSpawn()
		task.wait(1)
	end
end)

Features & Information

*Spawn Panel *Teleport Panel *Players Panel *Combat Panel (This script is a work in progress; I will publish each improvement i add. feel free to suggest ideas for future additions)

Community Comments (1)

cordeliadixon325cordeliadixon325Jan 18, 2026

W

More Scripts for 99 Nights in the Forest 🔦