open source
Key Required

open source

99 Nights in the Forest 🔦a2c5a2c5 1.1K views 54 executesUpdated Mar 9, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•322 lines (10571 chars)
local PLRS = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local LIGHTING = game:GetService("Lighting")
local RUN = game:GetService("RunService")
local TW = game:GetService("TweenService")
local LP = PLRS.LocalPlayer

local FLUENT = loadstring(game:HttpGet("https://github.com/ActualMasterOogway/Fluent-Renewed/releases/latest/download/Fluent.luau"))()

local WIN = FLUENT:CreateWindow({
    Title = "a2c5",
    SubTitle = "",
    Theme = "Dark",
    Acrylic = false,
    Resize = true,
    Size = UDim2.fromOffset(700, 500),
    TabWidth = 160,
    MinimizeKey = Enum.KeyCode.RightControl,
    MinSize = Vector2.new(500, 400),
})

local MAIN = WIN:CreateTab({ Title = "main", Icon = "phosphor-hammer-bold" })
local MOVE = WIN:CreateTab({ Title = "movement", Icon = "phosphor-run-bold" })
local VIS  = WIN:CreateTab({ Title = "visuals", Icon = "phosphor-eye-bold" })
local POS  = WIN:CreateTab({ Title = "positions", Icon = "phosphor-map-pin-bold" })

local CHAR = LP.Character or LP.CharacterAdded:Wait()
local HRP = CHAR:WaitForChild("HumanoidRootPart")
local HUM = CHAR:WaitForChild("Humanoid")

LP.CharacterAdded:Connect(function(c)
    CHAR = c
    HRP = c:WaitForChild("HumanoidRootPart")
    HUM = c:WaitForChild("Humanoid")
end)

local ITEMS_FOLDER = workspace:FindFirstChild("Items")
local CHARS_FOLDER = workspace:FindFirstChild("Characters")
local NPCS_FOLDER  = workspace:FindFirstChild("NPCs")

local SELECTED_ITEM = ""
local SAVED_POS = nil
local LAST_POS = nil
local GRAB_ACTIVE = false

local SG = Instance.new("ScreenGui")
SG.Name = "a2c5_back"
SG.ResetOnSpawn = false
SG.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
SG.Parent = game.CoreGui

local FRAME = Instance.new("Frame")
FRAME.Size = UDim2.new(0, 160, 0, 70)
FRAME.Position = UDim2.new(1, -180, 1, -90)
FRAME.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
FRAME.BackgroundTransparency = 0.05
FRAME.BorderSizePixel = 0
FRAME.Visible = false
FRAME.Parent = SG

Instance.new("UICorner", FRAME).CornerRadius = UDim.new(0, 12)

local STROKE = Instance.new("UIStroke", FRAME)
STROKE.Color = Color3.fromRGB(60, 60, 60)
STROKE.Thickness = 1

local LABEL = Instance.new("TextLabel", FRAME)
LABEL.Size = UDim2.new(1, 0, 0.42, 0)
LABEL.Position = UDim2.new(0, 0, 0, 4)
LABEL.BackgroundTransparency = 1
LABEL.TextColor3 = Color3.fromRGB(140, 140, 140)
LABEL.TextScaled = true
LABEL.Font = Enum.Font.Gotham
LABEL.Text = "a2c5"

local BACK_BTN = Instance.new("TextButton", FRAME)
BACK_BTN.Size = UDim2.new(1, -20, 0, 28)
BACK_BTN.Position = UDim2.new(0, 10, 1, -36)
BACK_BTN.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
BACK_BTN.BorderSizePixel = 0
BACK_BTN.TextColor3 = Color3.fromRGB(220, 220, 220)
BACK_BTN.TextScaled = true
BACK_BTN.Font = Enum.Font.GothamBold
BACK_BTN.Text = "← back"
BACK_BTN.AutoButtonColor = false

Instance.new("UICorner", BACK_BTN).CornerRadius = UDim.new(0, 8)
Instance.new("UIStroke", BACK_BTN).Color = Color3.fromRGB(55, 55, 55)

BACK_BTN.MouseEnter:Connect(function()
    TW:Create(BACK_BTN, TweenInfo.new(0.15), { BackgroundColor3 = Color3.fromRGB(50, 50, 50) }):Play()
end)
BACK_BTN.MouseLeave:Connect(function()
    TW:Create(BACK_BTN, TweenInfo.new(0.15), { BackgroundColor3 = Color3.fromRGB(30, 30, 30) }):Play()
end)

local function showBack()
    FRAME.Visible = true
    FRAME.Position = UDim2.new(1, -180, 1, -70)
    TW:Create(FRAME, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
        Position = UDim2.new(1, -180, 1, -90)
    }):Play()
end

local function hideBack()
    local t = TW:Create(FRAME, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {
        Position = UDim2.new(1, -180, 1, -70)
    })
    t:Play()
    t.Completed:Connect(function() FRAME.Visible = false end)
end

local TP_CONN = nil
local function tpTo(cf)
    if not HRP then return end
    LAST_POS = HRP.CFrame
    if TP_CONN then TP_CONN:Disconnect() TP_CONN = nil end
    HRP.Anchored = true
    HRP.CFrame = cf
    local elapsed = 0
    TP_CONN = RUN.Heartbeat:Connect(function(dt)
        elapsed += dt
        if not HRP then TP_CONN:Disconnect() TP_CONN = nil return end
        if elapsed < 2 then
            HRP.CFrame = cf
        else
            HRP.Anchored = false
            TP_CONN:Disconnect() TP_CONN = nil
        end
    end)
    showBack()
end

BACK_BTN.MouseButton1Click:Connect(function()
    if TP_CONN then TP_CONN:Disconnect() TP_CONN = nil end
    if HRP then HRP.Anchored = false end
    if LAST_POS and HRP then HRP.CFrame = LAST_POS end
    GRAB_ACTIVE = false
    hideBack()
end)

local function getNames(folder)
    local t = {}
    if folder then for _, v in folder:GetChildren() do table.insert(t, v.Name) end end
    return t
end

local DD_ITEMS = MAIN:CreateDropdown("ItemsDD", {
    Title = "items",
    Values = getNames(ITEMS_FOLDER),
    Multi = false,
    Default = "",
})
DD_ITEMS:OnChanged(function(v) SELECTED_ITEM = v end)

local function refreshItems()
    DD_ITEMS:SetValues(getNames(ITEMS_FOLDER))
end
if ITEMS_FOLDER then
    ITEMS_FOLDER.ChildAdded:Connect(refreshItems)
    ITEMS_FOLDER.ChildRemoved:Connect(refreshItems)
end

MAIN:CreateButton({
    Title = "teleport to item",
    Callback = function()
        if SELECTED_ITEM == "" or not ITEMS_FOLDER or GRAB_ACTIVE then return end
        local item = ITEMS_FOLDER:FindFirstChild(SELECTED_ITEM)
        if not item then return end
        local part = item:FindFirstChildWhichIsA("BasePart")
        if not part or not HRP then return end
        GRAB_ACTIVE = true
        tpTo(part.CFrame + Vector3.new(0, 3, 0))
    end,
})

MAIN:CreateButton({
    Title = "teleport to campfire",
    Callback = function()
        local map = workspace:FindFirstChild("Map")
        if not map then return end
        local camp = map:FindFirstChild("Campground")
        if not camp then return end
        local fire = camp:FindFirstChild("MainFire")
        if not fire then return end
        local center = fire:FindFirstChild("Center") or fire
        local cf = center:IsA("BasePart") and center.CFrame or CFrame.new(center:GetPivot().Position)
        tpTo(cf + Vector3.new(0, 5, 0))
    end,
})

MOVE:CreateSlider("WSSlider", {
    Title = "walkspeed",
    Min = 16, Max = 250, Default = 16, Rounding = 0,
    Callback = function(v) if HUM then HUM.WalkSpeed = v end end,
})

local INF_JUMP = false
MOVE:CreateToggle("InfJump", {
    Title = "infinite jump",
    Default = false,
    Callback = function(v) INF_JUMP = v end,
})
UIS.JumpRequest:Connect(function()
    if INF_JUMP and HUM then HUM:ChangeState(Enum.HumanoidStateType.Jumping) end
end)

local NOCLIP_CONN = nil
MOVE:CreateToggle("Noclip", {
    Title = "noclip",
    Default = false,
    Callback = function(v)
        if v then
            NOCLIP_CONN = RUN.Stepped:Connect(function()
                if not CHAR then return end
                for _, p in CHAR:GetDescendants() do
                    if p:IsA("BasePart") then p.CanCollide = false end
                end
            end)
        else
            if NOCLIP_CONN then NOCLIP_CONN:Disconnect() NOCLIP_CONN = nil end
            if CHAR then
                for _, p in CHAR:GetDescendants() do
                    if p:IsA("BasePart") then p.CanCollide = true end
                end
            end
        end
    end,
})

local ESP_OBJS = {}

local function clearESP(tag)
    if not ESP_OBJS[tag] then return end
    for _, o in ESP_OBJS[tag] do pcall(function() o:Destroy() end) end
    ESP_OBJS[tag] = nil
end

local function addESP(folder, tag, color)
    clearESP(tag)
    if not folder then return end
    ESP_OBJS[tag] = {}
    for _, obj in folder:GetChildren() do
        local hl = Instance.new("Highlight")
        hl.FillColor = color
        hl.OutlineColor = Color3.new(1,1,1)
        hl.FillTransparency = 0.5
        hl.OutlineTransparency = 0
        hl.Adornee = obj
        hl.Parent = game.CoreGui
        table.insert(ESP_OBJS[tag], hl)
        local root = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
        if not root then continue end
        local bb = Instance.new("BillboardGui")
        bb.Size = UDim2.new(0, 100, 0, 25)
        bb.StudsOffset = Vector3.new(0, 3, 0)
        bb.AlwaysOnTop = true
        bb.Adornee = root
        bb.Parent = game.CoreGui
        local lbl = Instance.new("TextLabel", bb)
        lbl.Size = UDim2.new(1,0,1,0)
        lbl.BackgroundTransparency = 1
        lbl.TextColor3 = color
        lbl.TextStrokeTransparency = 0
        lbl.TextScaled = true
        lbl.Font = Enum.Font.GothamBold
        lbl.Text = obj.Name
        table.insert(ESP_OBJS[tag], bb)
    end
end

VIS:CreateToggle("CharESP", { Title = "characters esp", Default = false, Callback = function(v)
    if v then addESP(CHARS_FOLDER, "chars", Color3.fromRGB(255,60,60)) else clearESP("chars") end
end })
VIS:CreateToggle("NpcESP", { Title = "npcs esp", Default = false, Callback = function(v)
    if v then addESP(NPCS_FOLDER, "npcs", Color3.fromRGB(255,165,0)) else clearESP("npcs") end
end })
VIS:CreateToggle("ItemESP", { Title = "items esp", Default = false, Callback = function(v)
    if v then addESP(ITEMS_FOLDER, "items", Color3.fromRGB(80,255,80)) else clearESP("items") end
end })
VIS:CreateToggle("AllESP", { Title = "all esp", Default = false, Callback = function(v)
    if v then
        addESP(CHARS_FOLDER, "chars", Color3.fromRGB(255,60,60))
        addESP(NPCS_FOLDER,  "npcs",  Color3.fromRGB(255,165,0))
        addESP(ITEMS_FOLDER, "items", Color3.fromRGB(80,255,80))
    else clearESP("chars") clearESP("npcs") clearESP("items") end
end })

local ORIG_BRIGHT  = LIGHTING.Brightness
local ORIG_AMBIENT = LIGHTING.Ambient
local ORIG_SHADOW  = LIGHTING.GlobalShadows

VIS:CreateToggle("Fullbright", { Title = "fullbright", Default = false, Callback = function(v)
    if v then
        LIGHTING.Brightness = 5
        LIGHTING.Ambient = Color3.fromRGB(255,255,255)
        LIGHTING.GlobalShadows = false
    else
        LIGHTING.Brightness = ORIG_BRIGHT
        LIGHTING.Ambient = ORIG_AMBIENT
        LIGHTING.GlobalShadows = ORIG_SHADOW
    end
end })

POS:CreateButton({ Title = "save position", Callback = function()
    if not HRP then return end
    SAVED_POS = HRP.CFrame
    setclipboard(tostring(HRP.Position))
end })

POS:CreateButton({ Title = "go to saved position", Callback = function()
    if SAVED_POS then tpTo(SAVED_POS) end
end })

WIN:SelectTab(1)

task.wait(1)
FLUENT:Notify({
    Title = "a2c5",
    Content = "sum annc\nits old script not that good",
    Duration = 5,
})

Features & Information

a hub
#opensource#source

Community Comments (1)

Simonahello24Simonahello24Mar 9, 2026

Not working for me

More Scripts for 99 Nights in the Forest 🔦