if getgenv().ThoriumLib_Loaded or game:GetService("CoreGui"):FindFirstChild("ThoriumLibGui") then
warn("[ThoriumLib] Скрипт уже запущен!")
return
end
getgenv().ThoriumLib_Loaded = true
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")
local HttpService = game:GetService("HttpService")
local VirtualUser = game:GetService("VirtualUser")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local activeConnections = {}
local activeLoops = {}
local function AddConnection(conn)
table.insert(activeConnections, conn)
return conn
end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "ThoriumLibGui"
ScreenGui.ResetOnSpawn = false
local success, _ = pcall(function()
ScreenGui.Parent = game:GetService("CoreGui")
end)
if not success then
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
local UIBlur = Lighting:FindFirstChild("ThoriumUIBlur") or Instance.new("BlurEffect")
UIBlur.Name = "ThoriumUIBlur"
UIBlur.Size = 14
UIBlur.Enabled = true
UIBlur.Parent = Lighting
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 740, 0, 460)
MainFrame.Position = UDim2.new(0.5, -370, 0.5, -230)
MainFrame.BackgroundColor3 = Color3.fromRGB(16, 16, 22)
MainFrame.BackgroundTransparency = 0.25
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Visible = false
MainFrame.Parent = ScreenGui
local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 12)
MainCorner.Parent = MainFrame
local MainStroke = Instance.new("UIStroke")
MainStroke.Color = Color3.fromRGB(70, 70, 95)
MainStroke.Thickness = 1
MainStroke.Transparency = 0.4
MainStroke.Parent = MainFrame
local MobileToggleBtn = Instance.new("TextButton")
MobileToggleBtn.Name = "MobileToggleBtn"
MobileToggleBtn.Size = UDim2.new(0, 46, 0, 46)
MobileToggleBtn.Position = UDim2.new(0, 18, 0.35, 0)
MobileToggleBtn.BackgroundColor3 = Color3.fromRGB(108, 92, 231)
MobileToggleBtn.BackgroundTransparency = 0.2
MobileToggleBtn.Text = "TH"
MobileToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
MobileToggleBtn.TextSize = 15
MobileToggleBtn.Font = Enum.Font.GothamBold
MobileToggleBtn.Active = true
MobileToggleBtn.Visible = false
MobileToggleBtn.Parent = ScreenGui
local MobileBtnCorner = Instance.new("UICorner")
MobileBtnCorner.CornerRadius = UDim.new(1, 0)
MobileBtnCorner.Parent = MobileToggleBtn
local SplashFrame = Instance.new("Frame")
SplashFrame.Name = "ThoriumSplash"
SplashFrame.Size = UDim2.new(1, 0, 1, 0)
SplashFrame.Position = UDim2.new(0, 0, 0, 0)
SplashFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 18)
SplashFrame.ZIndex = 100
SplashFrame.Parent = ScreenGui
local SplashTitle = Instance.new("TextLabel")
SplashTitle.Size = UDim2.new(0, 500, 0, 80)
SplashTitle.Position = UDim2.new(0.5, -250, 0.5, -40)
SplashTitle.BackgroundTransparency = 1
SplashTitle.Text = "THORIUMLIB"
SplashTitle.RichText = true
SplashTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
SplashTitle.TextTransparency = 1
SplashTitle.TextSize = 42
SplashTitle.Font = Enum.Font.GothamBold
SplashTitle.ZIndex = 101
SplashTitle.Parent = SplashFrame
local SplashSub = Instance.new("TextLabel")
SplashSub.Size = UDim2.new(0, 500, 0, 30)
SplashSub.Position = UDim2.new(0.5, -250, 0.5, 35)
SplashSub.BackgroundTransparency = 1
SplashSub.Text = "+1 Speed Keyboard Escape Edition"
SplashSub.TextColor3 = Color3.fromRGB(160, 160, 180)
SplashSub.TextTransparency = 1
SplashSub.TextSize = 13
SplashSub.Font = Enum.Font.GothamMedium
SplashSub.ZIndex = 101
SplashSub.Parent = SplashFrame
task.spawn(function()
TweenService:Create(SplashTitle, TweenInfo.new(1, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
TweenService:Create(SplashSub, TweenInfo.new(1, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {TextTransparency = 0.3}):Play()
task.wait(1.5)
TweenService:Create(SplashTitle, TweenInfo.new(0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {TextTransparency = 1}):Play()
TweenService:Create(SplashSub, TweenInfo.new(0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {TextTransparency = 1}):Play()
local splashFade = TweenService:Create(SplashFrame, TweenInfo.new(0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {BackgroundTransparency = 1})
splashFade:Play()
splashFade.Completed:Wait()
SplashFrame:Destroy()
MainFrame.Visible = true
MobileToggleBtn.Visible = true
end)
local function ToggleMenu()
MainFrame.Visible = not MainFrame.Visible
UIBlur.Enabled = MainFrame.Visible
end
MobileToggleBtn.MouseButton1Click:Connect(ToggleMenu)
local dragging, dragInput, dragStart, startPos
AddConnection(MainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = MainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end))
AddConnection(UserInputService.InputChanged:Connect(function(input)
if (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) and dragging then
local delta = input.Position - dragStart
MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end))
local toggleKey = Enum.KeyCode.K
local isListeningForKey = false
AddConnection(UserInputService.InputBegan:Connect(function(input, gameProcessed)
if isListeningForKey and input.UserInputType == Enum.UserInputType.Keyboard then
toggleKey = input.KeyCode
isListeningForKey = false
return
end
if not gameProcessed and input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == toggleKey then
ToggleMenu()
end
end))
local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 190, 1, 0)
Sidebar.BackgroundColor3 = Color3.fromRGB(12, 12, 18)
Sidebar.BackgroundTransparency = 0.45
Sidebar.BorderSizePixel = 0
Sidebar.Parent = MainFrame
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 50)
Title.BackgroundTransparency = 1
Title.Text = "Thoriumlib v1.9"
Title.RichText = true
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 18
Title.Font = Enum.Font.GothamBold
Title.Parent = Sidebar
local TabContainer = Instance.new("Frame")
TabContainer.Size = UDim2.new(1, -16, 1, -80)
TabContainer.Position = UDim2.new(0, 8, 0, 55)
TabContainer.BackgroundTransparency = 1
TabContainer.Parent = Sidebar
local TabListLayout = Instance.new("UIListLayout")
TabListLayout.SortOrder = Enum.SortOrder.LayoutOrder
TabListLayout.Padding = UDim.new(0, 6)
TabListLayout.Parent = TabContainer
local ContentArea = Instance.new("Frame")
ContentArea.Size = UDim2.new(1, -215, 1, -20)
ContentArea.Position = UDim2.new(0, 205, 0, 10)
ContentArea.BackgroundTransparency = 1
ContentArea.Parent = MainFrame
local tabs = {}
local function createTab(name, icon)
local page = Instance.new("Frame")
page.Name = name .. "Page"
page.Size = UDim2.new(1, 0, 1, 0)
page.BackgroundTransparency = 1
page.Visible = false
page.Parent = ContentArea
local leftCol = Instance.new("ScrollingFrame")
leftCol.Size = UDim2.new(0.5, -12, 1, 0)
leftCol.BackgroundTransparency = 1
leftCol.BorderSizePixel = 0
leftCol.ScrollBarThickness = 3
leftCol.ScrollBarImageColor3 = Color3.fromRGB(108, 92, 231)
leftCol.Parent = page
local leftLayout = Instance.new("UIListLayout")
leftLayout.SortOrder = Enum.SortOrder.LayoutOrder
leftLayout.Padding = UDim.new(0, 6)
leftLayout.Parent = leftCol
leftLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
leftCol.CanvasSize = UDim2.new(0, 0, 0, leftLayout.AbsoluteContentSize.Y + 10)
end)
local rightCol = Instance.new("ScrollingFrame")
rightCol.Size = UDim2.new(0.5, -12, 1, 0)
rightCol.Position = UDim2.new(0.5, 12, 0, 0)
rightCol.BackgroundTransparency = 1
rightCol.BorderSizePixel = 0
rightCol.ScrollBarThickness = 3
rightCol.ScrollBarImageColor3 = Color3.fromRGB(108, 92, 231)
rightCol.Parent = page
local rightLayout = Instance.new("UIListLayout")
rightLayout.SortOrder = Enum.SortOrder.LayoutOrder
rightLayout.Padding = UDim.new(0, 6)
rightLayout.Parent = rightCol
rightLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
rightCol.CanvasSize = UDim2.new(0, 0, 0, rightLayout.AbsoluteContentSize.Y + 10)
end)
local tabBtn = Instance.new("TextButton")
tabBtn.Size = UDim2.new(1, 0, 0, 34)
tabBtn.BackgroundColor3 = Color3.fromRGB(24, 24, 32)
tabBtn.BackgroundTransparency = 0.6
tabBtn.Text = " " .. (icon or "•") .. " " .. name
tabBtn.TextColor3 = Color3.fromRGB(160, 160, 180)
tabBtn.TextSize = 12
tabBtn.Font = Enum.Font.GothamMedium
tabBtn.TextXAlignment = Enum.TextXAlignment.Left
tabBtn.Parent = TabContainer
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = tabBtn
local activeIndicator = Instance.new("Frame")
activeIndicator.Size = UDim2.new(0, 3, 0, 18)
activeIndicator.Position = UDim2.new(0, 2, 0.5, -9)
activeIndicator.BackgroundColor3 = Color3.fromRGB(108, 92, 231)
activeIndicator.Visible = false
activeIndicator.Parent = tabBtn
local tabObj = {
Button = tabBtn,
Page = page,
LeftCol = leftCol,
RightCol = rightCol,
Indicator = activeIndicator,
ItemCount = 0
}
local function selectTab()
for _, tabData in pairs(tabs) do
tabData.Page.Visible = false
tabData.Indicator.Visible = false
TweenService:Create(tabData.Button, TweenInfo.new(0.2), {
BackgroundColor3 = Color3.fromRGB(24, 24, 32),
TextColor3 = Color3.fromRGB(160, 160, 180)
}):Play()
end
page.Visible = true
activeIndicator.Visible = true
TweenService:Create(tabBtn, TweenInfo.new(0.2), {
BackgroundColor3 = Color3.fromRGB(108, 92, 231),
TextColor3 = Color3.fromRGB(255, 255, 255)
}):Play()
end
tabBtn.MouseButton1Click:Connect(selectTab)
function tabObj:GetNextParent()
self.ItemCount = self.ItemCount + 1
return (self.ItemCount % 2 == 1) and self.LeftCol or self.RightCol
end
function tabObj:AddToggle(text, default, callback)
local targetParent = self:GetNextParent()
local state = default or false
local toggleFrame = Instance.new("Frame")
toggleFrame.Size = UDim2.new(1, 0, 0, 38)
toggleFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 30)
toggleFrame.BackgroundTransparency = 0.35
toggleFrame.Parent = targetParent
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = toggleFrame
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -50, 1, 0)
label.Position = UDim2.new(0, 10, 0, 0)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Color3.fromRGB(220, 220, 230)
label.TextSize = 11
label.Font = Enum.Font.GothamMedium
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = toggleFrame
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 34, 0, 18)
btn.Position = UDim2.new(1, -40, 0.5, -9)
btn.BackgroundColor3 = state and Color3.fromRGB(108, 92, 231) or Color3.fromRGB(40, 40, 52)
btn.Text = ""
btn.Parent = toggleFrame
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(1, 0)
btnCorner.Parent = btn
local circle = Instance.new("Frame")
circle.Size = UDim2.new(0, 14, 0, 14)
circle.Position = state and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
circle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
circle.Parent = btn
local circleCorner = Instance.new("UICorner")
circleCorner.CornerRadius = UDim.new(1, 0)
circleCorner.Parent = circle
btn.MouseButton1Click:Connect(function()
state = not state
TweenService:Create(btn, TweenInfo.new(0.2), {
BackgroundColor3 = state and Color3.fromRGB(108, 92, 231) or Color3.fromRGB(40, 40, 52)
}):Play()
TweenService:Create(circle, TweenInfo.new(0.2), {
Position = state and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
}):Play()
task.spawn(callback, state)
end)
end
function tabObj:AddSlider(text, min, max, default, callback)
local targetParent = self:GetNextParent()
local val = math.clamp(default or min, min, max)
local sliderFrame = Instance.new("Frame")
sliderFrame.Size = UDim2.new(1, 0, 0, 44)
sliderFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 30)
sliderFrame.BackgroundTransparency = 0.35
sliderFrame.Parent = targetParent
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = sliderFrame
local label = Instance.new("TextLabel")
label.Size = UDim2.new(0.7, 0, 0, 18)
label.Position = UDim2.new(0, 10, 0, 4)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Color3.fromRGB(220, 220, 230)
label.TextSize = 11
label.Font = Enum.Font.GothamMedium
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = sliderFrame
local valLabel = Instance.new("TextLabel")
valLabel.Size = UDim2.new(0.3, -10, 0, 18)
valLabel.Position = UDim2.new(0.7, 0, 0, 4)
valLabel.BackgroundTransparency = 1
valLabel.Text = tostring(val)
valLabel.TextColor3 = Color3.fromRGB(160, 160, 175)
valLabel.TextSize = 11
valLabel.Font = Enum.Font.Gotham
valLabel.TextXAlignment = Enum.TextXAlignment.Right
valLabel.Parent = sliderFrame
local track = Instance.new("Frame")
track.Size = UDim2.new(1, -20, 0, 6)
track.Position = UDim2.new(0, 10, 1, -12)
track.BackgroundColor3 = Color3.fromRGB(40, 40, 52)
track.Parent = sliderFrame
local fill = Instance.new("Frame")
fill.Size = UDim2.new((val - min)/(max - min), 0, 1, 0)
fill.BackgroundColor3 = Color3.fromRGB(108, 92, 231)
fill.Parent = track
local trigger = Instance.new("TextButton")
trigger.Size = UDim2.new(1, 0, 1, 0)
trigger.BackgroundTransparency = 1
trigger.Text = ""
trigger.Parent = sliderFrame
local draggingSlider = false
local function updateInput(input)
local posX = math.clamp((input.Position.X - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1)
val = math.floor(min + (max - min) * posX)
valLabel.Text = tostring(val)
fill.Size = UDim2.new(posX, 0, 1, 0)
task.spawn(callback, val)
end
trigger.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
draggingSlider = true
updateInput(input)
end
end)
AddConnection(UserInputService.InputChanged:Connect(function(input)
if draggingSlider and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
updateInput(input)
end
end))
AddConnection(UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
draggingSlider = false
end
end))
end
function tabObj:AddButton(text, callback)
local targetParent = self:GetNextParent()
local btnFrame = Instance.new("Frame")
btnFrame.Size = UDim2.new(1, 0, 0, 36)
btnFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 30)
btnFrame.BackgroundTransparency = 0.35
btnFrame.Parent = targetParent
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = btnFrame
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 1, 0)
btn.BackgroundTransparency = 1
btn.Text = text
btn.TextColor3 = Color3.fromRGB(220, 220, 230)
btn.TextSize = 11
btn.Font = Enum.Font.GothamSemibold
btn.Parent = btnFrame
btn.MouseButton1Click:Connect(function()
TweenService:Create(btnFrame, TweenInfo.new(0.1), {BackgroundColor3 = Color3.fromRGB(108, 92, 231)}):Play()
task.wait(0.1)
TweenService:Create(btnFrame, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(22, 22, 30)}):Play()
task.spawn(callback, btn)
end)
return btn
end
table.insert(tabs, tabObj)
if #tabs == 1 then selectTab() end
return tabObj
end
local farmPage = createTab("Farm & Speed", "⚡")
local candyPage = createTab("Candy Escape", "🍬")
local movementPage = createTab("Movement", "🏃")
local teleportsPage = createTab("Teleports", "📍")
local visualsPage = createTab("Visuals", "👁")
local miscPage = createTab("Misc", "🔧")
local autoClickSpeedLoop = nil
farmPage:AddToggle("Auto Click / Gain Speed", false, function(state)
if state then
autoClickSpeedLoop = task.spawn(function()
while true do
-- Попытка вызова стандартных рекликеров/ивентов в Speed играх
pcall(function()
local remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") or game:GetService("ReplicatedStorage")
for _, r in ipairs(remotes:GetDescendants()) do
if r:IsA("RemoteEvent") and (r.Name:find("Click") or r.Name:find("AddSpeed") or r.Name:find("Speed") or r.Name:find("Tap")) then
r:FireServer()
end
end
mouse1click()
end)
task.wait(0.01)
end
end)
table.insert(activeLoops, autoClickSpeedLoop)
else
if autoClickSpeedLoop then task.cancel(autoClickSpeedLoop) end
end
end)
local autoKeyboardFarm = nil
farmPage:AddToggle("Auto Keyboard Press / Type", false, function(state)
if state then
autoKeyboardFarm = task.spawn(function()
while true do
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
for _, obj in ipairs(Workspace:GetDescendants()) do
if (obj.Name:find("Keyboard") or obj.Name:find("Key") or obj.Name:find("Button")) and obj:IsA("BasePart") then
if (char.HumanoidRootPart.Position - obj.Position).Magnitude < 15 then
firetouchinterest(char.HumanoidRootPart, obj, 0)
firetouchinterest(char.HumanoidRootPart, obj, 1)
end
end
end
end
task.wait(0.1)
end
end)
table.insert(activeLoops, autoKeyboardFarm)
else
if autoKeyboardFarm then task.cancel(autoKeyboardFarm) end
end
end)
local autoRebirthLoop = nil
farmPage:AddToggle("Auto Rebirth / Prestige", false, function(state)
if state then
autoRebirthLoop = task.spawn(function()
while true do
pcall(function()
local remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") or game:GetService("ReplicatedStorage")
for _, r in ipairs(remotes:GetDescendants()) do
if r:IsA("RemoteEvent") and (r.Name:find("Rebirth") or r.Name:find("Prestige")) then
r:FireServer()
end
end
end)
task.wait(1)
end
end)
table.insert(activeLoops, autoRebirthLoop)
else
if autoRebirthLoop then task.cancel(autoRebirthLoop) end
end
end)
farmPage:AddButton("Instant +100 Speed Boost", function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
LocalPlayer.Character.Humanoid.WalkSpeed = LocalPlayer.Character.Humanoid.WalkSpeed + 100
end
end)
local autoCollectCandyLoop = nil
candyPage:AddToggle("Auto Collect All Candies & Chocolate", false, function(state)
if state then
autoCollectCandyLoop = task.spawn(function()
while true do
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
for _, obj in ipairs(Workspace:GetDescendants()) do
if (obj.Name:find("Candy") or obj.Name:find("Chocolate") or obj.Name:find("Coin") or obj.Name:find("Gem")) and obj:IsA("BasePart") then
pcall(function()
firetouchinterest(char.HumanoidRootPart, obj, 0)
firetouchinterest(char.HumanoidRootPart, obj, 1)
end)
end
end
end
task.wait(0.2)
end
end)
table.insert(activeLoops, autoCollectCandyLoop)
else
if autoCollectCandyLoop then task.cancel(autoCollectCandyLoop) end
end
end)
candyPage:AddButton("Auto Finish / Escape Stage", function()
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
for _, obj in ipairs(Workspace:GetDescendants()) do
if (obj.Name:find("Finish") or obj.Name:find("Win") or obj.Name:find("EscapeDoor") or obj.Name:find("End")) and obj:IsA("BasePart") then
char.HumanoidRootPart.CFrame = obj.CFrame * CFrame.new(0, 3, 0)
break
end
end
end
end)
local autoWinLoop = nil
candyPage:AddToggle("Auto Win Loop", false, function(state)
if state then
autoWinLoop = task.spawn(function()
while true do
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
for _, obj in ipairs(Workspace:GetDescendants()) do
if (obj.Name:find("Win") or obj.Name:find("FinishPad")) and obj:IsA("BasePart") then
firetouchinterest(char.HumanoidRootPart, obj, 0)
firetouchinterest(char.HumanoidRootPart, obj, 1)
end
end
end
task.wait(0.5)
end
end)
table.insert(activeLoops, autoWinLoop)
else
if autoWinLoop then task.cancel(autoWinLoop) end
end
end)
local currentWalkSpeed = 16
local currentJumpPower = 50
AddConnection(RunService.RenderStepped:Connect(function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then
local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum.WalkSpeed < currentWalkSpeed then hum.WalkSpeed = currentWalkSpeed end
if hum.JumpPower < currentJumpPower then hum.UseJumpPower = true hum.JumpPower = currentJumpPower end
end
end))
movementPage:AddSlider("Custom Walk Speed", 16, 300, 16, function(val) currentWalkSpeed = val end)
movementPage:AddSlider("Custom Jump Power", 50, 300, 50, function(val) currentJumpPower = val end)
local tpWalkSpeed = 1
local tpWalkConn = nil
movementPage:AddSlider("TP Walk Speed", 1, 10, 1, function(val) tpWalkSpeed = val end)
movementPage:AddToggle("TP Walk (Bypass)", false, function(state)
if state then
tpWalkConn = AddConnection(RunService.RenderStepped:Connect(function(delta)
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Humanoid") then
local hum = char.Humanoid
if hum.MoveDirection.Magnitude > 0 then
char.HumanoidRootPart.CFrame += hum.MoveDirection * (tpWalkSpeed * delta * 35)
end
end
end))
else
if tpWalkConn then tpWalkConn:Disconnect() end
end
end)
local flying = false
movementPage:AddToggle("Fly Mode", false, function(state)
flying = state
if flying then
local flyLoop = task.spawn(function()
while flying do
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local hrp = LocalPlayer.Character.HumanoidRootPart
local cam = Workspace.CurrentCamera
local moveDir = Vector3.zero
if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDir += cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDir -= cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir -= cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir += cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then moveDir += Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then moveDir -= Vector3.new(0, 1, 0) end
hrp.AssemblyLinearVelocity = moveDir * 70
end
task.wait()
end
end)
table.insert(activeLoops, flyLoop)
end
end)
local noclipConn = nil
movementPage:AddToggle("Noclip", false, function(state)
if state then
noclipConn = AddConnection(RunService.Stepped:Connect(function()
if LocalPlayer.Character then
for _, part in ipairs(LocalPlayer.Character:GetDescendants()) do
if part:IsA("BasePart") then part.CanCollide = false end
end
end
end))
else
if noclipConn then noclipConn:Disconnect() end
end
end)
local infJumpConn = nil
movementPage:AddToggle("Infinite Jump", false, function(state)
if state then
infJumpConn = AddConnection(UserInputService.JumpRequest:Connect(function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then
LocalPlayer.Character:FindFirstChildOfClass("Humanoid"):ChangeState("Jumping")
end
end))
else
if infJumpConn then infJumpConn:Disconnect() end
end
end)
movementPage:AddButton("Give TP Tool", function()
local tool = Instance.new("Tool")
tool.Name = "Thorium TP Tool"
tool.RequiresHandle = false
tool.Activated:Connect(function()
if Mouse and Mouse.Hit and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(Mouse.Hit.Position + Vector3.new(0, 3, 0))
end
end)
tool.Parent = LocalPlayer:WaitForChild("Backpack")
end)
teleportsPage:AddButton("Teleport to Spawn", function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(0, 10, 0)
end
end)
teleportsPage:AddButton("Teleport to Keyboard Area", function()
for _, v in ipairs(Workspace:GetDescendants()) do
if v.Name:find("Keyboard") and v:IsA("BasePart") then
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = v.CFrame * CFrame.new(0, 4, 0)
break
end
end
end
end)
teleportsPage:AddButton("Teleport to Escape / Finish", function()
for _, v in ipairs(Workspace:GetDescendants()) do
if (v.Name:find("Finish") or v.Name:find("Win")) and v:IsA("BasePart") then
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = v.CFrame * CFrame.new(0, 4, 0)
break
end
end
end
end)
local clickTpConn = nil
teleportsPage:AddToggle("Click TP (Ctrl + Click)", false, function(state)
if state then
clickTpConn = AddConnection(UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed and input.UserInputType == Enum.UserInputType.MouseButton1 then
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
if Mouse and Mouse.Hit and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(Mouse.Hit.Position + Vector3.new(0, 3, 0))
end
end
end
end))
else
if clickTpConn then clickTpConn:Disconnect() end
end
end)
local espHighlights = {}
visualsPage:AddToggle("Player ESP", false, function(state)
if state then
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
local hl = Instance.new("Highlight")
hl.Name = "ThoriumESP"
hl.FillColor = Color3.fromRGB(108, 92, 231)
hl.Parent = plr.Character
table.insert(espHighlights, hl)
end
end
else
for _, hl in ipairs(espHighlights) do if hl then hl:Destroy() end end
espHighlights = {}
end
end)
visualsPage:AddToggle("Fullbright", false, function(state)
Lighting.Ambient = state and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(127, 127, 127)
end)
visualsPage:AddToggle("No Fog", false, function(state)
Lighting.FogEnd = state and 9e9 or 1000
end)
miscPage:AddButton("Unload ThoriumLib", function()
getgenv().ThoriumLib_Loaded = nil
for _, conn in ipairs(activeConnections) do if conn then pcall(function() conn:Disconnect() end) end end
for _, loop in ipairs(activeLoops) do if loop then pcall(function() task.cancel(loop) end) end end
if UIBlur then UIBlur:Destroy() end
if ScreenGui then ScreenGui:Destroy() end
warn("[ThoriumLib] Успешно выгружен.")
end)
miscPage:AddButton("FPS Booster", function()
for _, v in ipairs(Workspace:GetDescendants()) do
if v:IsA("BasePart") then v.Material = Enum.Material.SmoothPlastic end
if v:IsA("Decal") or v:IsA("Texture") then v:Destroy() end
end
end)
local antiAfkConn = nil
miscPage:AddToggle("Anti-AFK Disconnect", false, function(state)
if state then
antiAfkConn = AddConnection(LocalPlayer.Idled:Connect(function()
VirtualUser:Button2Down(Vector2.new(0,0), Workspace.CurrentCamera.CFrame)
task.wait(1)
VirtualUser:Button2Up(Vector2.new(0,0), Workspace.CurrentCamera.CFrame)
end))
else
if antiAfkConn then antiAfkConn:Disconnect() end
end
end)
miscPage:AddButton("Rejoin Server", function()
TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer)
end)
miscPage:AddButton("Server Hop", function()
local api = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100"
local success, result = pcall(function() return HttpService:JSONDecode(game:HttpGet(api)) end)
if success and result and result.data then
for _, server in ipairs(result.data) do
if server.playing < server.maxPlayers and server.id ~= game.JobId then
TeleportService:TeleportToPlaceInstance(game.PlaceId, server.id, LocalPlayer)
break
end
end
end
end)
miscPage:AddSlider("Camera FOV", 70, 120, 70, function(val)
Workspace.CurrentCamera.FieldOfView = val
end)
miscPage:AddButton("Reset Character", function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
LocalPlayer.Character.Humanoid.Health = 0
end
end)
local keybindBtnObj
keybindBtnObj = miscPage:AddButton("Keybind: [" .. toggleKey.Name .. "] (Click to change)", function(btnRef)
isListeningForKey = true
btnRef.Text = "Press ANY key on keyboard..."
task.spawn(function()
while isListeningForKey do task.wait(0.1) end
btnRef.Text = "Keybind: [" .. toggleKey.Name .. "] (Click to change)"
end)
end)