Koalin Forest hub
Key RequiredUniversal

Koalin Forest hub

Universal ScriptSebasytbpsbSebasytbpsb 258 views 1.5K executesUpdated Sep 1, 2026
Unrated
00
Lua Script•791 lines (32210 chars)
-- Koalin Hub V5.0 Ultimate - EDICIÓN BOSQUE ENCANTADO 🌳🐨🌿
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local TeleportService = game:GetService("TeleportService")
local Lighting = game:GetService("Lighting")
local player = Players.LocalPlayer

-- GUI Principal con temática de Bosque
local gui = Instance.new("ScreenGui") gui.Name="KoalinForestV50" gui.ResetOnSpawn=false gui.Parent=player:WaitForChild("PlayerGui")

-- Botón Flotante Koala Bosque
local koalaBtn=Instance.new("TextButton") 
koalaBtn.Text="🐨🌿" 
koalaBtn.Size=UDim2.new(0,68,0,68) 
koalaBtn.Position=UDim2.new(0,20,0.5,-34) 
koalaBtn.BackgroundColor3=Color3.fromRGB(46, 92, 49) -- Verde Hoja Oscuro
koalaBtn.TextColor3=Color3.new(1,1,1)
koalaBtn.TextScaled=true 
koalaBtn.Visible=false 
koalaBtn.ZIndex=100 
koalaBtn.Parent=gui 
Instance.new("UICorner",koalaBtn).CornerRadius=UDim.new(1,0)

local koalaBtnStroke = Instance.new("UIStroke")
koalaBtnStroke.Thickness = 3
koalaBtnStroke.Color = Color3.fromRGB(139, 195, 74)
koalaBtnStroke.Parent = koalaBtn

-- Marco Principal (Madera y Bosque)
local main=Instance.new("Frame") 
main.Size=UDim2.new(0,470,0,630) 
main.Position=UDim2.new(0.5,-235,0.5,-315) 
main.BackgroundColor3=Color3.fromRGB(34, 48, 32) -- Verde Bosque Profundo
main.Visible=true 
main.Parent=gui 
Instance.new("UICorner",main).CornerRadius=UDim.new(0,22)

local mainStroke = Instance.new("UIStroke")
mainStroke.Thickness = 3
mainStroke.Color = Color3.fromRGB(85, 139, 47)
mainStroke.Parent = main

-- Fondo Decorativo con Árboles y Naturaleza
local bgForest = Instance.new("TextLabel")
bgForest.Size = UDim2.new(1, 0, 1, -50)
bgForest.Position = UDim2.new(0, 0, 0, 50)
bgForest.BackgroundTransparency = 1
bgForest.Text = "🌲  🌳  🌲  🌴  🌲  🌳  🌲\n\n\n\n\n\n\n\n🌾  🍄  🌱  🌿  🌸  ☘️  🍃"
bgForest.TextColor3 = Color3.fromRGB(55, 80, 50)
bgForest.TextTransparency = 0.5
bgForest.TextSize = 22
bgForest.Font = Enum.Font.FredokaOne
bgForest.ZIndex = 2
bgForest.Parent = main

-- Cabecera Bosque (Madera Troncada)
local header=Instance.new("Frame") 
header.Name="DragBar" 
header.Size=UDim2.new(1,0,0,55) 
header.BackgroundColor3=Color3.fromRGB(77, 52, 34) -- Color Madera/Tierra
header.ZIndex=5 
header.Parent=main 
Instance.new("UICorner",header).CornerRadius=UDim.new(0,22)

local headerStroke = Instance.new("UIStroke")
headerStroke.Thickness = 2
headerStroke.Color = Color3.fromRGB(121, 85, 61)
headerStroke.Parent = header

local title=Instance.new("TextLabel") 
title.Text="🌲 KOALIN FOREST HUB 🐨" 
title.Size=UDim2.new(1,-100,1,0) 
title.Position=UDim2.new(0,15,0,0) 
title.BackgroundTransparency=1 
title.Font=Enum.Font.FredokaOne 
title.TextSize=15 
title.TextColor3=Color3.fromRGB(220, 245, 200) 
title.ZIndex=6 
title.Parent=header

local minBtn=Instance.new("TextButton") 
minBtn.Text="🍃" 
minBtn.Size=UDim2.new(0,38,0,38) 
minBtn.Position=UDim2.new(1,-48,0,8) 
minBtn.BackgroundColor3=Color3.fromRGB(100, 142, 60) 
minBtn.ZIndex=6 
minBtn.Parent=header 
Instance.new("UICorner",minBtn).CornerRadius=UDim.new(0,10)

-- Barra de Pestañas estilo Rama/Enredadera
local tabBar=Instance.new("Frame") 
tabBar.Size=UDim2.new(1,-12,0,36) 
tabBar.Position=UDim2.new(0,6,0,58) 
tabBar.BackgroundColor3=Color3.fromRGB(48, 68, 44) 
tabBar.ZIndex=5 
tabBar.Parent=main 
Instance.new("UICorner",tabBar).CornerRadius=UDim.new(0,10)

local function makeTab(name,x,w) 
    local b=Instance.new("TextButton") 
    b.Text=name 
    b.Size=UDim2.new(0,w,1,-4) 
    b.Position=UDim2.new(0,x,0,2) 
    b.BackgroundColor3=Color3.fromRGB(68, 98, 62) 
    b.TextColor3=Color3.fromRGB(240, 255, 230)
    b.Font=Enum.Font.GothamBold 
    b.TextSize=8 
    b.ZIndex=6 
    b.Parent=tabBar 
    Instance.new("UICorner",b).CornerRadius=UDim.new(0,8) 
    return b 
end

local tabMov=makeTab("🏃 MOV",2,44) 
local tabTP=makeTab("📍 TP",48,38) 
local tabTik=makeTab("🎁 TIK",88,38) 
local tabEvent=makeTab("🌧️ EVENT",128,48) 
local tabTroll=makeTab("🌀 TROLL",178,48) 
local tabCombat=makeTab("⚔️ COMBATE",228,58) 
local tabPlayer=makeTab("🦊 JUGADOR",288,58)
local tabServer=makeTab("🌲 SERVIDOR",348,60)

local content=Instance.new("ScrollingFrame") 
content.Size=UDim2.new(1,-16,1,-110) 
content.Position=UDim2.new(0,8,0,100) 
content.BackgroundTransparency=1 
content.CanvasSize=UDim2.new(0,0,0,2500) 
content.ScrollBarThickness=6 
content.ScrollBarImageColor3=Color3.fromRGB(120, 180, 90)
content.Visible=false 
content.ZIndex=5 
content.Parent=main

-- Selector de Plataforma estilo Entrada del Bosque
local selector=Instance.new("Frame") 
selector.Size=UDim2.new(1,0,1,0) 
selector.BackgroundColor3=Color3.fromRGB(34, 48, 32) 
selector.ZIndex=10 
selector.Visible=true 
selector.Parent=main 
Instance.new("UICorner",selector).CornerRadius=UDim.new(0,22)

local selectorTitle = Instance.new("TextLabel")
selectorTitle.Text = "🏡 SELECCIONA TU MUNDO 🌳"
selectorTitle.Size = UDim2.new(1, 0, 0, 40)
selectorTitle.Position = UDim2.new(0, 0, 0, 30)
selectorTitle.BackgroundTransparency = 1
selectorTitle.Font = Enum.Font.FredokaOne
selectorTitle.TextSize = 16
selectorTitle.TextColor3 = Color3.fromRGB(210, 240, 180)
selectorTitle.ZIndex = 11
selectorTitle.Parent = selector

local btnPC=Instance.new("TextButton") 
btnPC.Text="💻 PC\n\n🌲 Bosque Ligero" 
btnPC.Size=UDim2.new(0,160,0,160) 
btnPC.Position=UDim2.new(0.5,-170,0.5,-20) 
btnPC.BackgroundColor3=Color3.fromRGB(60, 110, 50) 
btnPC.TextColor3=Color3.new(1,1,1) 
btnPC.Font=Enum.Font.GothamBold 
btnPC.ZIndex=11 
btnPC.Parent=selector 
Instance.new("UICorner",btnPC).CornerRadius=UDim.new(0,18)

local btnMovil=Instance.new("TextButton") 
btnMovil.Text="📱 MÓVIL\n\n🐾 Bosque Táctil" 
btnMovil.Size=UDim2.new(0,160,0,160) 
btnMovil.Position=UDim2.new(0.5,10,0.5,-20) 
btnMovil.BackgroundColor3=Color3.fromRGB(180, 110, 40) 
btnMovil.TextColor3=Color3.new(1,1,1) 
btnMovil.Font=Enum.Font.GothamBold 
btnMovil.ZIndex=11 
btnMovil.Parent=selector 
Instance.new("UICorner",btnMovil).CornerRadius=UDim.new(0,18)

-- Variables Globales y Estado
local isMobileMode=false 
local flying,noclip,infJump=false,false,false 
local flySpeed=65 
local attach,linVel,align 
local flyUp,flyDown=false,false 
local savedPos=nil 
local currentTab="MOV"
local antiAFK, autoRejoin, antiCheatON = false,false,false
local espON, hitboxON, tracersON, aimbotON = false, false, false, false
local hitboxSize = 10
local walkSpeedVal, jumpPowerVal = 16, 50

-- UI Móvil Volar
local mobileFlyUI=Instance.new("Frame") mobileFlyUI.Size=UDim2.new(0,120,0,120) mobileFlyUI.Position=UDim2.new(1,-130,1,-130) mobileFlyUI.BackgroundTransparency=1 mobileFlyUI.Visible=false mobileFlyUI.ZIndex=15 mobileFlyUI.Parent=gui
local upBtn=Instance.new("TextButton") upBtn.Text="🍃 ⬆️" upBtn.Size=UDim2.new(0,55,0,55) upBtn.BackgroundColor3=Color3.fromRGB(76, 140, 60) upBtn.Parent=mobileFlyUI Instance.new("UICorner",upBtn)
local downBtn=Instance.new("TextButton") downBtn.Text="🍂 ⬇️" downBtn.Size=UDim2.new(0,55,0,55) downBtn.Position=UDim2.new(0,0,0,60) downBtn.BackgroundColor3=Color3.fromRGB(140, 70, 50) downBtn.Parent=mobileFlyUI Instance.new("UICorner",downBtn)
upBtn.MouseButton1Down:Connect(function() flyUp=true end) upBtn.MouseButton1Up:Connect(function() flyUp=false end) downBtn.MouseButton1Down:Connect(function() flyDown=true end) downBtn.MouseButton1Up:Connect(function() flyDown=false end)

-- Creadores de Botones estilo Madera y Hoja
local function makeBtn(t,y,cb,big) 
    local b=Instance.new("TextButton") 
    b.Text=t 
    local h=big and 52 or 38 
    b.Size=UDim2.new(1,-12,0,h) 
    b.Position=UDim2.new(0,6,0,y) 
    b.BackgroundColor3=Color3.fromRGB(65, 115, 55) 
    b.TextColor3=Color3.fromRGB(245, 255, 235) 
    b.Font=Enum.Font.GothamBold 
    b.TextSize=big and 12 or 10 
    b.ZIndex=6 
    b.Parent=content 
    Instance.new("UICorner",b).CornerRadius=UDim.new(0,10) 
    
    local stroke = Instance.new("UIStroke")
    stroke.Thickness = 1.5
    stroke.Color = Color3.fromRGB(110, 170, 80)
    stroke.Parent = b

    b.MouseButton1Click:Connect(cb) 
    return b 
end

local function makeInput(ph,y,big) 
    local tb=Instance.new("TextBox") 
    tb.PlaceholderText=ph 
    tb.Text="" 
    tb.Size=UDim2.new(1,-12,0,big and 42 or 32) 
    tb.Position=UDim2.new(0,6,0,y) 
    tb.BackgroundColor3=Color3.fromRGB(45, 60, 40) 
    tb.TextColor3=Color3.fromRGB(230, 255, 210) 
    tb.PlaceholderColor3=Color3.fromRGB(140, 170, 130)
    tb.Font=Enum.Font.Gotham 
    tb.TextSize=big and 13 or 11 
    tb.ZIndex=6 
    tb.Parent=content 
    Instance.new("UICorner",tb).CornerRadius=UDim.new(0,8) 
    return tb 
end

-- ESP System con Tema de Bosque (Etiqueta Verde)
local function applyESP(plr)
    if plr == player then return end
    local function createBillboard(char)
        if not char then return end
        local head = char:WaitForChild("Head", 5)
        local hum = char:WaitForChild("Humanoid", 5)
        if not head or not hum then return end
        if head:FindFirstChild("KoalinESP") then head.KoalinESP:Destroy() end

        local bgui = Instance.new("BillboardGui")
        bgui.Name = "KoalinESP"
        bgui.Adornee = head
        bgui.Size = UDim2.new(0, 150, 0, 50)
        bgui.StudsOffset = Vector3.new(0, 2.5, 0)
        bgui.AlwaysOnTop = true
        bgui.Parent = head

        local nameLbl = Instance.new("TextLabel")
        nameLbl.Size = UDim2.new(1, 0, 0.5, 0)
        nameLbl.BackgroundTransparency = 1
        nameLbl.Text = "🦊 " .. plr.Name
        nameLbl.TextColor3 = Color3.fromRGB(190, 255, 140)
        nameLbl.TextStrokeTransparency = 0
        nameLbl.Font = Enum.Font.GothamBold
        nameLbl.TextSize = 13
        nameLbl.Parent = bgui

        local hpLbl = Instance.new("TextLabel")
        hpLbl.Size = UDim2.new(1, 0, 0.5, 0)
        hpLbl.Position = UDim2.new(0, 0, 0.5, 0)
        hpLbl.BackgroundTransparency = 1
        hpLbl.Text = "❤️ Vida: " .. math.floor(hum.Health) .. " / " .. math.floor(hum.MaxHealth)
        hpLbl.TextColor3 = Color3.fromRGB(255, 230, 130)
        hpLbl.TextStrokeTransparency = 0
        hpLbl.Font = Enum.Font.Gotham
        hpLbl.TextSize = 11
        hpLbl.Parent = bgui

        hum.HealthChanged:Connect(function(newHp)
            hpLbl.Text = "❤️ Vida: " .. math.floor(newHp) .. " / " .. math.floor(hum.MaxHealth)
        end)
    end

    if plr.Character then createBillboard(plr.Character) end
    plr.CharacterAdded:Connect(createBillboard)
end

local function removeESP(plr)
    if plr.Character and plr.Character:FindFirstChild("Head") and plr.Character.Head:FindFirstChild("KoalinESP") then
        plr.Character.Head.KoalinESP:Destroy()
    end
end

-- Tracers verdes de naturaleza
local tracerLines = {}
local function clearTracers()
    for _, line in pairs(tracerLines) do
        line:Remove()
    end
    tracerLines = {}
end

-- Render Stepped Loop (Hitbox, Tracers, Aim)
RunService.RenderStepped:Connect(function()
    for _, plr in pairs(Players:GetPlayers()) do
        if plr ~= player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
            local hrp = plr.Character.HumanoidRootPart
            if hitboxON then
                hrp.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize)
                hrp.Transparency = 0.6
                hrp.BrickColor = BrickColor.new("Lime green")
                hrp.Material = Enum.Material.Neon
                hrp.CanCollide = false
            else
                hrp.Size = Vector3.new(2, 2, 1)
                hrp.Transparency = 1
            end
        end
    end

    if tracersON then
        clearTracers()
        local cam = workspace.CurrentCamera
        for _, plr in pairs(Players:GetPlayers()) do
            if plr ~= player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
                local hrp = plr.Character.HumanoidRootPart
                local vector, onScreen = cam:WorldToViewportPoint(hrp.Position)
                if onScreen then
                    local line = Drawing.new("Line")
                    line.From = Vector2.new(cam.ViewportSize.X / 2, cam.ViewportSize.Y)
                    line.To = Vector2.new(vector.X, vector.Y)
                    line.Color = Color3.fromRGB(100, 230, 80)
                    line.Thickness = 1.8
                    line.Transparency = 1
                    line.Visible = true
                    table.insert(tracerLines, line)
                end
            end
        end
    else
        clearTracers()
    end

    if aimbotON then
        local target = nil
        local distShortest = math.huge
        local cam = workspace.CurrentCamera
        for _, plr in pairs(Players:GetPlayers()) do
            if plr ~= player and plr.Character and plr.Character:FindFirstChild("Head") then
                local head = plr.Character.Head
                local pos, visible = cam:WorldToViewportPoint(head.Position)
                if visible then
                    local mousePos = UIS:GetMouseLocation()
                    local dist = (Vector2.new(pos.X, pos.Y) - mousePos).Magnitude
                    if dist < distShortest then
                        distShortest = dist
                        target = head
                    end
                end
            end
        end
        if target then
            cam.CFrame = CFrame.new(cam.CFrame.Position, target.Position)
        end
    end
end)

-- Mantener la velocidad/salto tras reaparecer
player.CharacterAdded:Connect(function(char)
    local hum = char:WaitForChild("Humanoid")
    hum.WalkSpeed = walkSpeedVal
    hum.UseJumpPower = true
    hum.JumpPower = jumpPowerVal
end)

-- Salto Infinito
UIS.JumpRequest:Connect(function()
    if infJump and player.Character and player.Character:FindFirstChildOfClass("Humanoid") then
        player.Character:FindFirstChildOfClass("Humanoid"):ChangeState(Enum.HumanoidStateType.Jumping)
    end
end)

-- Jaula de Troncos
local function ponerEnJaula() 
    local hrp=player.Character and player.Character:FindFirstChild("HumanoidRootPart") 
    if not hrp then return end 
    local cage=Instance.new("Model") 
    cage.Name = "KoalaCage"
    cage.Parent=workspace 
    local pos=hrp.Position 
    for i=1,4 do 
        local p=Instance.new("Part") p.Size=Vector3.new(6,6,1) p.Anchored=true p.Color=Color3.fromRGB(90,60,40) p.Material=Enum.Material.Wood p.Parent=cage 
        if i==1 then p.CFrame=CFrame.new(pos+Vector3.new(0,0,3)) elseif i==2 then p.CFrame=CFrame.new(pos+Vector3.new(0,0,-3)) elseif i==3 then p.CFrame=CFrame.new(pos+Vector3.new(3,0,0))*CFrame.Angles(0,math.rad(90),0) else p.CFrame=CFrame.new(pos+Vector3.new(-3,0,0))*CFrame.Angles(0,math.rad(90),0) end 
    end 
    local top=Instance.new("Part") top.Size=Vector3.new(6,1,6) top.Anchored=true top.Position=pos+Vector3.new(0,3,0) top.Color=Color3.fromRGB(90,60,40) top.Material=Enum.Material.Wood top.Parent=cage 
    local bot=Instance.new("Part") bot.Size=Vector3.new(6,1,6) bot.Anchored=true bot.Position=pos+Vector3.new(0,-3,0) bot.Color=Color3.fromRGB(90,60,40) bot.Material=Enum.Material.Wood bot.Parent=cage 
    task.delay(4,function() cage:Destroy() end) 
end

-- Dibujado de Pestañas
local function showTab(tab) 
    currentTab=tab 
    content:ClearAllChildren() 
    local y=5 
    local big=isMobileMode 
    local function add(t,f) 
        makeBtn(t,y,f,big) 
        y+=big and 58 or 44 
    end

    if tab=="MOV" then
        add("🕊️ Modo Vuelo ON/OFF", function() 
            local char=player.Character 
            local hum=char and char:FindFirstChildOfClass("Humanoid") 
            local hrp=char and char:FindFirstChild("HumanoidRootPart") 
            if not hum or not hrp then return end 
            flying=not flying 
            if flying then 
                hum.PlatformStand=true 
                attach=Instance.new("Attachment",hrp) 
                linVel=Instance.new("LinearVelocity",hrp) 
                linVel.Attachment0=attach 
                linVel.MaxForce=9e9 
                linVel.VectorVelocity=Vector3.zero 
                align=Instance.new("AlignOrientation",hrp) 
                align.Attachment0=attach 
                align.MaxTorque=9e9 
                align.Mode=Enum.OrientationAlignmentMode.OneAttachment 
                if isMobileMode then mobileFlyUI.Visible=true end 
                RunService:BindToRenderStep("KoalinFly",300,function() 
                    align.CFrame=workspace.CurrentCamera.CFrame 
                    local dir=Vector3.zero 
                    local cam=workspace.CurrentCamera 
                    if isMobileMode then 
                        local mv=hum.MoveDirection 
                        dir+=Vector3.new(mv.X,0,mv.Z)*1.5 
                        if flyUp then dir+=Vector3.new(0,1,0) end 
                        if flyDown then dir-=Vector3.new(0,1,0) end 
                    else 
                        if UIS:IsKeyDown(Enum.KeyCode.W) then dir+=cam.CFrame.LookVector end 
                        if UIS:IsKeyDown(Enum.KeyCode.S) then dir-=cam.CFrame.LookVector end 
                        if UIS:IsKeyDown(Enum.KeyCode.A) then dir-=cam.CFrame.RightVector end 
                        if UIS:IsKeyDown(Enum.KeyCode.D) then dir+=cam.CFrame.RightVector end 
                        if UIS:IsKeyDown(Enum.KeyCode.Space) then dir+=Vector3.new(0,1,0) end 
                        if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then dir-=Vector3.new(0,1,0) end 
                    end 
                    linVel.VectorVelocity=dir.Magnitude>0 and dir.Unit*flySpeed or Vector3.zero 
                end) 
            else 
                hum.PlatformStand=false 
                RunService:UnbindFromRenderStep("KoalinFly") 
                if attach then attach:Destroy() end 
                if linVel then linVel:Destroy() end 
                if align then align:Destroy() end 
                mobileFlyUI.Visible=false 
            end 
        end)
        
        add("👻 Atravesar Paredes (NoClip) ["..(noclip and "ACTIVO" or "INACTIVO").."]", function()
            noclip = not noclip
            showTab("MOV")
        end)

        add("🦘 Salto Infinito ["..(infJump and "ACTIVO" or "INACTIVO").."]", function()
            infJump = not infJump
            showTab("MOV")
        end)

        local speedInp = makeInput("🍃 Velocidad (Por defecto: 16)", y, big) y += big and 48 or 38
        add("⚡ Cambiar Velocidad de Caminado", function()
            local num = tonumber(speedInp.Text)
            if num and player.Character then
                local hum = player.Character:FindFirstChildOfClass("Humanoid")
                if hum then
                    walkSpeedVal = num
                    hum.WalkSpeed = num
                end
            end
        end)

        local jumpInp = makeInput("🍄 Fuerza Salto (Por defecto: 50)", y, big) y += big and 48 or 38
        add("🚀 Cambiar Fuerza de Salto", function()
            local num = tonumber(jumpInp.Text)
            if num and player.Character then
                local hum = player.Character:FindFirstChildOfClass("Humanoid")
                if hum then
                    jumpPowerVal = num
                    hum.UseJumpPower = true
                    hum.JumpPower = num
                end
            end
        end)

    elseif tab=="TP" then
        add("📌 Guardar Posición del Bosque", function() savedPos=player.Character.HumanoidRootPart.CFrame end) 
        add("🏕️ Volver al Punto Guardado", function() if savedPos then player.Character.HumanoidRootPart.CFrame=savedPos end end)
        add("🔮 Varita de Teleportación (Click TP)", function()
            if not player.Backpack:FindFirstChild("ClickTP") then
                local tool = Instance.new("Tool")
                tool.Name = "ClickTP"
                tool.RequiresHandle = false
                tool.Activated:Connect(function()
                    local mouse = player:GetMouse()
                    if mouse.Hit and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
                        player.Character.HumanoidRootPart.CFrame = CFrame.new(mouse.Hit.Position + Vector3.new(0, 3, 0))
                    end
                end)
                tool.Parent = player.Backpack
            end
        end)

    elseif tab=="TIKFINITY" then
        add("🪵 Encerrar en Jaula de Madera (4s)", function() ponerEnJaula() end) 
        add("🐣 Mini Koala (Avatar Pequeño)", function() player.Character:FindFirstChildOfClass("Humanoid").BodyHeightScale.Value=0.5 end) 
        add("🐻 Koala Gigante (Avatar Grande)", function() player.Character:FindFirstChildOfClass("Humanoid").BodyHeightScale.Value=2.5 end)

    elseif tab=="EVENTOS" then
        add("🌧️ Lluvia de Frutas y Naturaleza", function() 
            for i=1,15 do 
                local p=Instance.new("Part") p.Size=Vector3.new(2,2,2) p.Color=Color3.fromRGB(80,180,70) p.Shape=Enum.PartType.Ball p.Position=player.Character.HumanoidRootPart.Position+Vector3.new(math.random(-20,20),20,math.random(-20,20)) p.Anchored=false p.Parent=workspace 
                task.delay(5,function() p:Destroy() end) 
            end 
        end)

    elseif tab=="TROLLEXTREMO" then
        add("🌀 Tornado de Hojas (Giro Rápido)", function() RunService:BindToRenderStep("TrollSpin",200,function() player.Character.HumanoidRootPart.CFrame*=CFrame.Angles(0,math.rad(20),0) end) end) 
        add("🛑 Detener Tornado", function() RunService:UnbindFromRenderStep("TrollSpin") end)

    elseif tab=="COMBATE" then
        add("👁️ Ver Jugadores (ESP Bosque) ["..(espON and "ON" or "OFF").."]", function()
            espON = not espON
            if espON then
                for _, p in pairs(Players:GetPlayers()) do applyESP(p) end
            else
                for _, p in pairs(Players:GetPlayers()) do removeESP(p) end
            end
            showTab("COMBATE")
        end)

        add("🌿 Líneas a Jugadores (Tracers) ["..(tracersON and "ON" or "OFF").."]", function()
            tracersON = not tracersON
            showTab("COMBATE")
        end)

        add("🎯 Hitbox Expandida ["..(hitboxON and "ON" or "OFF").."]", function()
            hitboxON = not hitboxON
            showTab("COMBATE")
        end)

        local hbInput = makeInput("Tamaño Hitbox (Default: 10)", y, big) y += big and 48 or 38
        add("⚙️ Cambiar Tamaño Hitbox", function()
            local num = tonumber(hbInput.Text)
            if num then hitboxSize = num end
        end)

        add("🎯 Soft Aimbot (Auto Apuntado) ["..(aimbotON and "ON" or "OFF").."]", function()
            aimbotON = not aimbotON
            showTab("COMBATE")
        end)

    elseif tab=="JUGADOR" then
        add("👻 Modo Camuflaje (Invisibilidad)", function()
            if player.Character then
                for _, part in pairs(player.Character:GetDescendants()) do
                    if part:IsA("BasePart") or part:IsA("Decal") then
                        part.Transparency = 1
                    end
                end
            end
        end)

        add("🍃 Optimizar FPS (Limpiar Gráficos)", function()
            Lighting.GlobalShadows = false
            Lighting.FogEnd = 9e9
            for _, v in pairs(workspace:GetDescendants()) do
                if v:IsA("BasePart") then
                    v.Material = Enum.Material.SmoothPlastic
                end
            end
        end)

        add("🛡️ Mantenerse en Pie (No Caer)", function()
            if player.Character and player.Character:FindFirstChildOfClass("Humanoid") then
                local hum = player.Character:FindFirstChildOfClass("Humanoid")
                hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
                hum:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)
            end
        end)

        add("🔄 Renacer Instantáneo", function()
            if player.Character and player.Character:FindFirstChildOfClass("Humanoid") then
                player.Character:FindFirstChildOfClass("Humanoid").Health = 0
            end
        end)

    elseif tab=="SERVIDOR" then
        add("--- Opciones del Servidor ---",function()end)
        add("💤 Anti AFK (Evitar Desconexión) ["..(antiAFK and "ON" or "OFF").."]", function()
            antiAFK=not antiAFK
            if antiAFK then
                local vu = game:GetService("VirtualUser")
                player.Idled:Connect(function()
                    if antiAFK then
                        vu:Button2Down(Vector2.new(0,0),workspace.CurrentCamera.CFrame)
                        task.wait(1)
                        vu:Button2Up(Vector2.new(0,0),workspace.CurrentCamera.CFrame)
                    end
                end)
            end
            showTab("SERVIDOR")
        end)
        add("🔄 Auto Rejoin ["..(autoRejoin and "ON" or "OFF").."]", function()
            autoRejoin=not autoRejoin
            showTab("SERVIDOR")
        end)
        add("🔁 Reingresar al Servidor", function()
            TeleportService:Teleport(game.PlaceId, player)
        end)
        add("🌐 Cambiar de Servidor", function()
            TeleportService:Teleport(game.PlaceId)
        end)
        add("📋 Copiar ID del Servidor", function()
            if setclipboard then
                setclipboard(tostring(game.JobId))
            end
        end)
        add("--- Chat del Servidor ---",function()end)
        local chatBox=makeInput("Escribe un mensaje aquí...",y,big) y+=big and 48 or 38
        add("📢 Enviar Anuncio al Chat", function()
            if chatBox.Text~="" then
                game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents",2)
                local chatEvent = game:GetService("ReplicatedStorage"):FindFirstChild("DefaultChatSystemChatEvents")
                if chatEvent then
                    chatEvent:FindFirstChild("SayMessageRequest"):FireServer(chatBox.Text,"All")
                else
                    game:GetService("TextChatService").TextChannels.RBXGeneral:SendAsync(chatBox.Text)
                end
                chatBox.Text=""
                task.wait(3)
            end
        end)
        add("--- Herramientas de Control ---",function()end)
        add("🛡️ Detector Anti-Cheat ["..(antiCheatON and "ON" or "OFF").."]", function()
            antiCheatON=not antiCheatON
            if antiCheatON then
                RunService.Stepped:Connect(function()
                    if antiCheatON then
                        for _,plr in pairs(Players:GetPlayers()) do
                            if plr~=player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
                                local hum=plr.Character:FindFirstChildOfClass("Humanoid")
                                if hum and hum.WalkSpeed>100 then
                                    warn("Jugador Sospechoso: "..plr.Name.." Velocidad: "..hum.WalkSpeed)
                                end
                            end
                        end
                    end
                end)
            end
            showTab("SERVIDOR")
        end)
        add("📊 Información del Juego", function()
            local count=#Players:GetPlayers()
            title.Text="🌲 Jugadores: "..count.." | ID: "..game.PlaceId
        end)
        add("🧹 Limpiar Jaulas Creadas", function()
            for _,v in pairs(workspace:GetChildren()) do if v.Name=="KoalaCage" then v:Destroy() end end
        end)
    end
    content.CanvasSize=UDim2.new(0,0,0,y+20)
end

Players.PlayerAdded:Connect(function(p)
    if espON then applyESP(p) end
end)

-- Toggle Hub
local hubAbierto=true 
local function toggleHub() 
    hubAbierto=not hubAbierto 
    main.Visible=hubAbierto 
    koalaBtn.Text=hubAbierto and "❌" or "🐨🌿" 
    if not hubAbierto then mobileFlyUI.Visible=false end 
end

-- Adaptación PC / Móvil
local function applyMode(mobile) 
    isMobileMode=mobile 
    selector.Visible=false 
    content.Visible=true 
    koalaBtn.Visible=true 
    tabBar.Visible=true 

    if mobile then 
        main.Size=UDim2.new(0.94,0,0.85,0) 
        main.Position=UDim2.new(0.03,0,0.08,0) 
        content.ScrollBarThickness = 8
    else 
        main.Size=UDim2.new(0,470,0,630) 
        main.Position=UDim2.new(0.5,-235,0.5,-315) 
        content.ScrollBarThickness = 6
    end 
    showTab("MOV") 
end

btnPC.MouseButton1Click:Connect(function() applyMode(false) end) 
btnMovil.MouseButton1Click:Connect(function() applyMode(true) end)

tabMov.MouseButton1Click:Connect(function() showTab("MOV") end) 
tabTP.MouseButton1Click:Connect(function() showTab("TP") end) 
tabTik.MouseButton1Click:Connect(function() showTab("TIKFINITY") end) 
tabEvent.MouseButton1Click:Connect(function() showTab("EVENTOS") end) 
tabTroll.MouseButton1Click:Connect(function() showTab("TROLLEXTREMO") end) 
tabCombat.MouseButton1Click:Connect(function() showTab("COMBATE") end) 
tabPlayer.MouseButton1Click:Connect(function() showTab("JUGADOR") end)
tabServer.MouseButton1Click:Connect(function() showTab("SERVIDOR") end)

-- Rejoin si te expulsan
game:GetService("CoreGui").ChildRemoved:Connect(function(child)
    if autoRejoin and child.Name=="ErrorPrompt" then
        task.wait(2)
        TeleportService:Teleport(game.PlaceId, player)
    end
end)

-- Loop NoClip
RunService.Stepped:Connect(function() 
    if noclip and player.Character then 
        for _,p in pairs(player.Character:GetDescendants()) do 
            if p:IsA("BasePart") then p.CanCollide=false end 
        end 
    end 
end)

-- Mover Ventana
local dragging,dragInput,dragStart,startPos 
header.InputBegan:Connect(function(input) 
    if input.UserInputType==Enum.UserInputType.MouseButton1 or input.UserInputType==Enum.UserInputType.Touch then 
        dragging=true dragStart=input.Position startPos=main.Position 
    end 
end) 
header.InputChanged:Connect(function(input) 
    if input.UserInputType==Enum.UserInputType.MouseMovement or input.UserInputType==Enum.UserInputType.Touch then 
        dragInput=input 
    end 
end) 
UIS.InputChanged:Connect(function(input) 
    if input==dragInput and dragging then 
        local delta=input.Position-dragStart 
        main.Position=UDim2.new(startPos.X.Scale, startPos.X.Offset+delta.X, startPos.Y.Scale, startPos.Y.Offset+delta.Y) 
    end 
end)

-- Mover Botón Koala Flotante
local koalaDragging=false 
local koalaDragStart,koalaStartPos 
koalaBtn.InputBegan:Connect(function(input) 
    if input.UserInputType==Enum.UserInputType.MouseButton1 or input.UserInputType==Enum.UserInputType.Touch then 
        koalaDragging=true koalaDragStart=input.Position koalaStartPos=koalaBtn.Position 
    end 
end) 
UIS.InputChanged:Connect(function(input) 
    if koalaDragging and (input.UserInputType==Enum.UserInputType.MouseMovement or input.UserInputType==Enum.UserInputType.Touch) then 
        local delta=input.Position-koalaDragStart 
        koalaBtn.Position=UDim2.new(koalaStartPos.X.Scale, koalaStartPos.X.Offset+delta.X, koalaStartPos.Y.Scale, koalaStartPos.Y.Offset+delta.Y) 
    end 
end) 
koalaBtn.InputEnded:Connect(function(input) 
    if input.UserInputType==Enum.UserInputType.MouseButton1 or input.UserInputType==Enum.UserInputType.Touch then 
        if koalaDragging then 
            local delta=input.Position-koalaDragStart 
            if delta.Magnitude<10 then toggleHub() end 
        end 
        koalaDragging=false 
    end 
end)

-- Tecla 'K' para abrir/cerrar en PC
UIS.InputBegan:Connect(function(input,gp) 
    if gp then return end 
    if not isMobileMode and input.KeyCode==Enum.KeyCode.K then toggleHub() end 
end)

-- Botón Minimizar estilo Hojas
local minimized=false 
minBtn.MouseButton1Click:Connect(function() 
    minimized=not minimized 
    TweenService:Create(main,TweenInfo.new(0.3),{
        Size=minimized and UDim2.new(main.Size.X.Scale,main.Size.X.Offset,0,55) or (isMobileMode and UDim2.new(0.94,0,0.85,0) or UDim2.new(0,470,0,630))
    }):Play() 
    content.Visible=not minimized and not selector.Visible 
    tabBar.Visible=not minimized 
    minBtn.Text=minimized and "🌱" or "🍃" 
end)

Features & Information

KOALIN FOREST HUB V1.0 | ULTIMATE ROBLOX SCRIPT Take your gameplay to the next level with Koalin Forest Hub V5.0! Designed with an enchanted forest Ul theme, this script packs all essential features into one clean, optimized, and easy-to-use menu. Fully compatible with both PC and Mobile!
#Universal script#Support games#PC and Movil

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts