-- [[ 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 ]] local Players = game:GetService("Players") local Lighting = game:GetService("Lighting") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "DragonHub" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local targets = workspace:FindFirstChild("TrainingTargets") if not targets then targets = Instance.new("Folder") targets.Name = "TrainingTargets" targets.Parent = workspace end local settings = { ESP = true, TeamColors = true, Crosshair = true, Performance = false, Speed = 16, GUIScale = 1, CrosshairIndex = 1, SkyIndex = 1 } local crosshairs = { "+","×","•","◆","◇","△","□","✦","✧","⊕" } local skies = { {"Default", Color3.fromRGB(135,206,235), Color3.fromRGB(255,255,255)}, {"Dragon", Color3.fromRGB(35,0,70), Color3.fromRGB(180,40,255)}, {"Night", Color3.fromRGB(5,8,25), Color3.fromRGB(80,100,180)}, {"Blood", Color3.fromRGB(55,0,0), Color3.fromRGB(255,60,40)}, {"Ocean", Color3.fromRGB(0,45,80), Color3.fromRGB(30,180,255)}, {"Purple", Color3.fromRGB(45,0,80), Color3.fromRGB(150,50,255)}, {"Fire", Color3.fromRGB(80,20,0), Color3.fromRGB(255,140,30)}, {"Ice", Color3.fromRGB(10,50,80), Color3.fromRGB(150,230,255)}, {"Green", Color3.fromRGB(0,55,25), Color3.fromRGB(50,255,130)}, {"Void", Color3.fromRGB(2,0,8), Color3.fromRGB(100,0,180)}, {"Sunset", Color3.fromRGB(100,35,20), Color3.fromRGB(255,150,70)}, {"Storm", Color3.fromRGB(25,30,45), Color3.fromRGB(120,140,170)} } local scale = Instance.new("UIScale") scale.Scale = settings.GUIScale scale.Parent = gui local main = Instance.new("Frame") main.Size = UDim2.fromOffset(255,380) main.Position = UDim2.new(0,20,0.5,-190) main.BackgroundColor3 = Color3.fromRGB(18,10,28) main.BorderSizePixel = 0 main.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0,14) corner.Parent = main local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(150,60,255) stroke.Thickness = 2 stroke.Parent = main local title = Instance.new("TextLabel") title.Size = UDim2.new(1,0,0,42) title.BackgroundTransparency = 1 title.Text = "🐉 DRAGON HUB" title.TextColor3 = Color3.fromRGB(210,150,255) title.TextSize = 19 title.Font = Enum.Font.GothamBold title.Parent = main local scroll = Instance.new("ScrollingFrame") scroll.Position = UDim2.fromOffset(8,45) scroll.Size = UDim2.new(1,-16,1,-53) scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 3 scroll.CanvasSize = UDim2.fromOffset(0,0) scroll.Parent = main local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0,5) layout.Parent = scroll local function updateCanvas() scroll.CanvasSize = UDim2.fromOffset(0,layout.AbsoluteContentSize.Y + 10) end layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(updateCanvas) local function sectionButton(text) local b = Instance.new("TextButton") b.Size = UDim2.new(1,-4,0,32) b.BackgroundColor3 = Color3.fromRGB(38,20,55) b.Text = text b.TextColor3 = Color3.fromRGB(220,180,255) b.TextSize = 13 b.Font = Enum.Font.GothamBold b.AutoButtonColor = true b.Parent = scroll local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0,8) c.Parent = b return b end local function option(text) local b = Instance.new("TextButton") b.Size = UDim2.new(1,-4,0,30) b.BackgroundColor3 = Color3.fromRGB(27,16,38) b.TextColor3 = Color3.fromRGB(235,220,245) b.TextSize = 12 b.Font = Enum.Font.Gotham b.Text = text b.Parent = scroll local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0,7) c.Parent = b return b end local targetsSection = sectionButton("🎯 TARGETS") local crossSection = sectionButton("✚ CROSSHAIR") local movementSection = sectionButton("⚡ MOVEMENT") local visualSection = sectionButton("🌌 VISUALS") local guiSection = sectionButton("⚙ GUI") local targetOptions = {} local crossOptions = {} local movementOptions = {} local visualOptions = {} local guiOptions = {} local function addTargetOption(text, callback) local b = option(text) table.insert(targetOptions,b) b.MouseButton1Click:Connect(callback) return b end local function addCrossOption(text, callback) local b = option(text) table.insert(crossOptions,b) b.MouseButton1Click:Connect(callback) return b end local function addMovementOption(text, callback) local b = option(text) table.insert(movementOptions,b) b.MouseButton1Click:Connect(callback) return b end local function addVisualOption(text, callback) local b = option(text) table.insert(visualOptions,b) b.MouseButton1Click:Connect(callback) return b end local function addGUIOption(text, callback) local b = option(text) table.insert(guiOptions,b) b.MouseButton1Click:Connect(callback) return b end local espObjects = {} local function getTargetTeam(target) local attr = target:GetAttribute("Team") if attr ~= nil then return tostring(attr) end local value = target:FindFirstChild("Team") if value then if value:IsA("StringValue") then return value.Value elseif value:IsA("ObjectValue") and value.Value then return value.Value.Name end end return nil end local function getTargetColor(target) if not settings.TeamColors then return Color3.fromRGB(180,70,255) end local targetTeam = getTargetTeam(target) local myTeam = player.Team and player.Team.Name if targetTeam and myTeam and targetTeam == myTeam then return Color3.fromRGB(50,255,100) end return Color3.fromRGB(255,60,70) end local function clearESP(target) if espObjects[target] then espObjects[target]:Destroy() espObjects[target] = nil end end local function addESP(target) if not settings.ESP or not target:IsA("Model") then return end clearESP(target) local h = Instance.new("Highlight") h.Name = "DragonESP" h.Adornee = target h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop h.FillTransparency = 0.55 h.OutlineTransparency = 0 h.FillColor = getTargetColor(target) h.OutlineColor = getTargetColor(target) h.Parent = target espObjects[target] = h end local function refreshESP() for target in pairs(espObjects) do clearESP(target) end if settings.ESP then for _,target in ipairs(targets:GetChildren()) do addESP(target) end end end targets.ChildAdded:Connect(function(target) task.wait() addESP(target) end) targets.ChildRemoved:Connect(function(target) clearESP(target) end) local crosshair = Instance.new("TextLabel") crosshair.Size = UDim2.fromOffset(40,40) crosshair.AnchorPoint = Vector2.new(0.5,0.5) crosshair.Position = UDim2.fromScale(0.5,0.5) crosshair.BackgroundTransparency = 1 crosshair.TextColor3 = Color3.fromRGB(255,255,255) crosshair.TextStrokeTransparency = 0 crosshair.TextScaled = true crosshair.Font = Enum.Font.GothamBold crosshair.Text = crosshairs[settings.CrosshairIndex] crosshair.Visible = settings.Crosshair crosshair.Parent = gui local function applySky() local data = skies[settings.SkyIndex] Lighting.Ambient = data[2] Lighting.OutdoorAmbient = data[3] local atmosphere = Lighting:FindFirstChild("DragonAtmosphere") if not atmosphere then atmosphere = Instance.new("Atmosphere") atmosphere.Name = "DragonAtmosphere" atmosphere.Parent = Lighting end atmosphere.Color = data[2] atmosphere.Decay = data[3] atmosphere.Density = 0.25 atmosphere.Glare = 0 atmosphere.Haze = 1 if settings.Performance then Lighting.GlobalShadows = false atmosphere.Density = 0 for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("PostEffect") then v.Enabled = false end end else Lighting.GlobalShadows = true end end local espButton local teamButton local crossButton local speedButton local skyButton local performanceButton local scaleButton espButton = addTargetOption("ESP: ON",function() settings.ESP = not settings.ESP espButton.Text = "ESP: "..(settings.ESP and "ON" or "OFF") refreshESP() end) teamButton = addTargetOption("Team Colors: ON",function() settings.TeamColors = not settings.TeamColors teamButton.Text = "Team Colors: "..(settings.TeamColors and "ON" or "OFF") refreshESP() end) crossButton = addCrossOption("Crosshair: ON",function() settings.Crosshair = not settings.Crosshair crosshair.Visible = settings.Crosshair crossButton.Text = "Crosshair: "..(settings.Crosshair and "ON" or "OFF") end) local crossStyleButton = addCrossOption("Style: +",function() settings.CrosshairIndex = settings.CrosshairIndex % #crosshairs + 1 crosshair.Text = crosshairs[settings.CrosshairIndex] crossStyleButton.Text = "Style: "..crosshairs[settings.CrosshairIndex] end) speedButton = addMovementOption("Speed: 16",function() settings.Speed += 4 if settings.Speed > 100 then settings.Speed = 8 end speedButton.Text = "Speed: "..settings.Speed local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = settings.Speed end end) skyButton = addVisualOption("Sky: Default",function() settings.SkyIndex = settings.SkyIndex % #skies + 1 skyButton.Text = "Sky: "..skies[settings.SkyIndex][1] applySky() end) performanceButton = addVisualOption("Performance: OFF",function() settings.Performance = not settings.Performance performanceButton.Text = "Performance: "..(settings.Performance and "ON" or "OFF") applySky() end) scaleButton = addGUIOption("GUI Size: 100%",function() settings.GUIScale += 0.1 if settings.GUIScale > 1.3 then settings.GUIScale = 0.55 end scale.Scale = settings.GUIScale scaleButton.Text = "GUI Size: "..math.floor(settings.GUIScale*100).."%" end) local function setSection(list,visible) for _,b in ipairs(list) do b.Visible = visible end end setSection(targetOptions,true) setSection(crossOptions,false) setSection(movementOptions,false) setSection(visualOptions,false) setSection(guiOptions,false) targetsSection.MouseButton1Click:Connect(function() setSection(targetOptions,true) setSection(crossOptions,false) setSection(movementOptions,false) setSection(visualOptions,false) setSection(guiOptions,false) updateCanvas() end) crossSection.MouseButton1Click:Connect(function() setSection(targetOptions,false) setSection(crossOptions,true) setSection(movementOptions,false) setSection(visualOptions,false) setSection(guiOptions,false) updateCanvas() end) movementSection.MouseButton1Click:Connect(function() setSection(targetOptions,false) setSection(crossOptions,false) setSection(movementOptions,true) setSection(visualOptions,false) setSection(guiOptions,false) updateCanvas() end) visualSection.MouseButton1Click:Connect(function() setSection(targetOptions,false) setSection(crossOptions,false) setSection(movementOptions,false) setSection(visualOptions,true) setSection(guiOptions,false) updateCanvas() end) guiSection.MouseButton1Click:Connect(function() setSection(targetOptions,false) setSection(crossOptions,false) setSection(movementOptions,false) setSection(visualOptions,false) setSection(guiOptions,true) updateCanvas() end) local dragging = false local dragStart local startPos title.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) UIS.InputChanged:Connect(function(input) if dragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) 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) UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) player.CharacterAdded:Connect(function(char) local hum = char:WaitForChild("Humanoid") hum.WalkSpeed = settings.Speed end)