-- [[ 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 ]] --[[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/v2/client.lua?s=6aab163ac9ac0feb6732774a"))() end) end) --[[rscripts:analytics:end]] -- @hidevin | +1 Speed Squish keyboard Escape! -- ObsidianUltra | design tokens from UI_STYLE.json | features from GAME_FEATURES.md local Repo = "https://raw.githubusercontent.com/joustingmatch/ObsidianUltra/main/" local Library = loadstring(game:HttpGet(Repo .. "Library.lua"))() local ThemeManager = loadstring(game:HttpGet(Repo .. "addons/ThemeManager.lua"))() local SaveManager = loadstring(game:HttpGet(Repo .. "addons/SaveManager.lua"))() local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local ReplicatedStorage = game:GetService("ReplicatedStorage") local VirtualUser = game:GetService("VirtualUser") local LocalPlayer = Players.LocalPlayer local Options = Library.Options local Toggles = Library.Toggles local TOK = { Bg = Color3.fromRGB(13,13,13), Card = Color3.fromRGB(40,40,40), Border = Color3.fromRGB(58,58,58), Accent = Color3.fromRGB(88,101,242), Heading = Color3.fromRGB(255,255,255) } pcall(function() Library.Scheme.BackgroundColor = TOK.Bg Library.Scheme.MainColor = TOK.Card Library.Scheme.OutlineColor = TOK.Border Library.Scheme.AccentColor = TOK.Accent Library.Scheme.FontColor = TOK.Heading end) local Cfg = nil pcall(function() Cfg = require(ReplicatedStorage:WaitForChild("Config")) end) local STEP_AWARDS = (Cfg and Cfg.STEP_AWARDS) or { Award1={Bonus=1,ReqWins=0},Award2={Bonus=2,ReqWins=3},Award3={Bonus=5,ReqWins=15},Award4={Bonus=25,ReqWins=100}, Award5={Bonus=50,ReqWins=500},Award6={Bonus=100,ReqWins=2500},Award7={Bonus=250,ReqWins=15000},Award8={Bonus=500,ReqWins=50000}, } local TRAILS_CFG = (Cfg and Cfg.TRAILS) or { GreenTrail={Multiplier=1.5,Price=500},BlueTrail={Multiplier=2,Price=1500},PurpleTrail={Multiplier=3,Price=5000}, RedTrail={Multiplier=4,Price=25000},RainbowTrail={Multiplier=5,Price=100000},GalaxyTrail={Multiplier=10,Price=0}, CosmicTrail={Multiplier=100,Price=5000000},VoidTrail={Multiplier=1000,Price=50000000}, SupernovaTrail={Multiplier=10000,Price=500000000},GodlikeTrail={Multiplier=100000,Price=5000000000},InfinityTrail={Multiplier=5000000,Price=0}, } local SPEED_UPGRADES = (Cfg and Cfg.SPEED_UPGRADES) or { {Tier=1,Multiplier=2,Price=3},{Tier=2,Multiplier=4,Price=9},{Tier=3,Multiplier=8,Price=24},{Tier=4,Multiplier=16,Price=39}, {Tier=5,Multiplier=32,Price=79},{Tier=6,Multiplier=64,Price=129},{Tier=7,Multiplier=128,Price=199},{Tier=8,Multiplier=256,Price=299}, {Tier=9,Multiplier=512,Price=449},{Tier=10,Multiplier=1024,Price=649},{Tier=11,Multiplier=2048,Price=949},{Tier=12,Multiplier=4096,Price=1375}, } local WIN_AMOUNTS = (Cfg and Cfg.WIN_AMOUNTS) or {WinBlock1=1,WinBlock2=3,WinBlock3=10,WinBlock4=20,WinBlock5=50,WinBlock6=100,WinBlock7=150,WinBlock8=300,WinBlock9=500,WinBlock10=1000,WinBlock11=2500,WinBlock12=10000,WinBlock13=25000} local Remotes = ReplicatedStorage:WaitForChild("Remotes") local ClientState = nil pcall(function() ClientState = require(ReplicatedStorage:WaitForChild("ClientState")) end) local function Data() if ClientState and type(ClientState.Data)=="table" then return ClientState.Data end return nil end local function GetWins() local d=Data() if d and d.Wins then return tonumber(d.Wins) or 0 end local ls=LocalPlayer:FindFirstChild("leaderstats") local w=ls and ls:FindFirstChild("Wins") return (w and tonumber(w.Value)) or 0 end local function GetLevel() local d=Data() if d and d.Level then return tonumber(d.Level) or 1 end return 1 end local function GetEquippedStep() local d=Data() if d and d.EquippedStepAward then return tostring(d.EquippedStepAward) end return "Award1" end local function GetOwnedTrails() local d=Data() if d and type(d.OwnedTrails)=="table" then return d.OwnedTrails end return {} end local function GetEquippedTrail() local d=Data() if d and d.EquippedTrail then return tostring(d.EquippedTrail) end return "None" end local function GetSpeedTier() local d=Data() if d and d.CurrentSpeedTier then return tonumber(d.CurrentSpeedTier) or 0 end return 0 end local function HRP() local c=LocalPlayer.Character if c then return c:FindFirstChild("HumanoidRootPart") end return nil end local function TeleportTo(pos) local hrp=HRP() if not hrp then return false end pcall(function() hrp.CFrame = CFrame.new(pos + Vector3.new(0,4,0)) end) return true end local function Notify(msg,title) pcall(function() Library:Notify({Title=title or "@hidevin",Description=tostring(msg),Time=3}) end) end local function ScanTreadmills() local out={} for _,m in pairs(Workspace:GetChildren()) do if m:IsA("Model") and string.find(m.Name,"Treadmill") then local ok,cf=pcall(function() return m:GetPivot() end) if ok and cf then table.insert(out,{Name=m.Name,Pos=cf.Position}) end end end local names,seen,map={},{},{} for _,t in pairs(out) do local n=t.Name local c=1 while seen[n] do c=c+1 n=t.Name.."-"..c end seen[n]=true table.insert(names,n) map[n]=t.Pos end table.sort(names) return names,map end -- Full map from fly-crawl (StreamingEnabled hides far plates until visited) local WIN_POSITIONS={ ["WinBlock1 (+1)"]=Vector3.new(-501.27,202.86,-1960.38), ["WinBlock2 (+3)"]=Vector3.new(-505.15,202.39,-1498.51), ["WinBlock3 (+10)"]=Vector3.new(-504.63,202.39,-1746.96), ["WinBlock4 (+20)"]=Vector3.new(-505.16,202.69,-1246.94), ["WinBlock5 (+50)"]=Vector3.new(-502.99,253.38,-763.21), ["WinBlock6 (+100)"]=Vector3.new(-500.15,247.38,-283.24), ["WinBlock7 (+150)"]=Vector3.new(-499.82,202.68,-966.49), ["WinBlock8 (+300)"]=Vector3.new(-498.87,247.34,638.20), ["WinBlock9 (+500)"]=Vector3.new(-501.72,222.33,2560.09), ["WinBlock10 (+1000)"]=Vector3.new(-504.03,222.32,1848.49), ["WinBlock11 (+2500)"]=Vector3.new(-500.53,612.33,2667.91), ["WinBlock12 (+10000)"]=Vector3.new(-501.38,612.33,3312.97), ["WinBlock13 (+25000)"]=Vector3.new(-498.89,612.33,4314.18), } local function ScanWinBlocks() local names,map={},{} for label,pos in pairs(WIN_POSITIONS) do table.insert(names,label) map[label]=pos end for _,v in pairs(Workspace:GetDescendants()) do if v:IsA("BasePart") and string.find(v.Name,"WinBlock") then local amt=WIN_AMOUNTS[v.Name] or 0 local label=v.Name.." (+"..tostring(amt)..")" if not map[label] then table.insert(names,label) map[label]=v.Position else map[label]=v.Position end end end table.sort(names, function(a,b) local na=tonumber(string.match(a,"%+(%d+)")) or 0 local nb=tonumber(string.match(b,"%+(%d+)")) or 0 return na15 then TeleportTo(pos) end end) end end) end) local W=FarmWins:AddLeftGroupbox("Auto Win","trophy") W:AddDropdown("WinTarget",{Text="Win plate",Values=WinNames,Default=#WinNames,Searchable=true}) W:AddToggle("AutoWin",{Text="Auto Win (selected plate)",Default=false,Tooltip="Re-teleports to the selected plate every 1.1s"}) W:AddButton({Text="Teleport to Selected Plate",Func=function() local sel=Options.WinTarget.Value local pos=WinMap[sel] if pos then TeleportTo(pos) Notify("Teleported: "..tostring(sel)) else Notify("Plate not found") end end}) W:AddButton({Text="Rescan Win Plates",Func=function() WinNames,WinMap=ScanWinBlocks() pcall(function() Options.WinTarget:SetValues(WinNames) end) Notify("Found "..#WinNames.." win plates") end}) local WR=FarmWins:AddRightGroupbox("Notes","info") WR:AddLabel("All 13 plates mapped by fly-crawl (amounts +1 to +25K). List sorted by wins.",true) Toggles.AutoWin:OnChanged(function() if not Toggles.AutoWin.Value then return end task.spawn(function() while Toggles.AutoWin.Value and not Library.Unloaded do pcall(function() local sel=Options.WinTarget.Value or WinNames[#WinNames] local pos=WinMap[sel] if pos then TeleportTo(pos) end end) task.wait(1.1) end end) end) end Tabs.Inventory:SetSubTabAlignment("Center") local InvSteps=Tabs.Inventory:AddSubTab({Name="Steps",Icon="footprints"}) local InvTrails=Tabs.Inventory:AddSubTab({Name="Trails",Icon="wind"}) do local S=InvSteps:AddLeftGroupbox("Steps","footprints") S:AddToggle("AutoBuySteps",{Text="Auto Buy Steps",Default=false,Tooltip="Buys next tier when affordable (1s)"}) S:AddToggle("AutoBestStep",{Text="Auto Equip Best Step",Default=false,Tooltip="Equips highest Award unlocked (1s)"}) S:AddButton({Text="Equip Best Now",Func=function() local wins=GetWins() local best="Award1" local bestReq=-1 for id,info in pairs(STEP_AWARDS) do if wins>=(info.ReqWins or 0) and (info.ReqWins or 0)>=bestReq then best=id bestReq=info.ReqWins end end pcall(function() Remotes.EquipStepAward:FireServer(best) end) Notify("Equipped "..best) end}) Toggles.AutoBestStep:OnChanged(function() if not Toggles.AutoBestStep.Value then return end task.spawn(function() while Toggles.AutoBestStep.Value and not Library.Unloaded do task.wait(1) pcall(function() local wins=GetWins() local cur=GetEquippedStep() local curInfo=STEP_AWARDS[cur] local curReq=curInfo and curInfo.ReqWins or -1 local best=cur local bestReq=curReq for id,info in pairs(STEP_AWARDS) do if wins>=(info.ReqWins or 0) and (info.ReqWins or 0)>bestReq then best=id bestReq=info.ReqWins end end if best~=GetEquippedStep() then Remotes.EquipStepAward:FireServer(best) end end) end end) end) Toggles.AutoBuySteps:OnChanged(function() if not Toggles.AutoBuySteps.Value then return end task.spawn(function() while Toggles.AutoBuySteps.Value and not Library.Unloaded do task.wait(1) pcall(function() local wins=GetWins() local tier=GetSpeedTier() local nextUp=nil for _,u in pairs(SPEED_UPGRADES) do if u.Tier==tier+1 then nextUp=u break end end if nextUp and wins>=(nextUp.Price or 0) then pcall(function() Remotes.FunnelShop:FireServer(nextUp.Tier) end) pcall(function() Remotes.FunnelShop:FireServer("Buy",nextUp.Tier) end) end end) end end) end) local T=InvTrails:AddLeftGroupbox("Trails","wind") T:AddToggle("AutoBuyTrails",{Text="Auto Buy Trails",Default=false,Tooltip="Buys cheapest affordable (1s)"}) T:AddToggle("AutoBestTrail",{Text="Auto Equip Best Trail",Default=false,Tooltip="Equips best owned (1s)"}) T:AddButton({Text="Equip Best Owned Now",Func=function() local owned=GetOwnedTrails() local best=nil local bestMult=-1 for k,_ in pairs(owned) do local cfg=TRAILS_CFG[k] local m=(type(cfg)=="table" and cfg.Multiplier) or 0 if m>bestMult then best=k bestMult=m end end if best then pcall(function() Remotes.EquipTrail:FireServer(best) end) Notify("Equipped "..best) else Notify("No trails owned yet") end end}) Toggles.AutoBuyTrails:OnChanged(function() if not Toggles.AutoBuyTrails.Value then return end task.spawn(function() while Toggles.AutoBuyTrails.Value and not Library.Unloaded do task.wait(1) pcall(function() local wins=GetWins() local owned=GetOwnedTrails() local order={} for k,cfg in pairs(TRAILS_CFG) do local price=(type(cfg)=="table" and cfg.Price) or math.huge if price>0 and not owned[k] and wins>=price then table.insert(order,{k=k,price=price}) end end table.sort(order,function(a,b) return a.pricebestMult then best=k bestMult=m end end if best~=GetEquippedTrail() then Remotes.EquipTrail:FireServer(best) end end) end end) end) end do local R=Tabs.Rebirth:AddLeftGroupbox("Rebirth","refresh-ccw") R:AddToggle("AutoRebirth",{Text="Auto Rebirth",Default=false,Tooltip="Fires when eligible (1s)"}) R:AddButton({Text="Rebirth Now",Func=function() pcall(function() Remotes.Rebirth:FireServer() end) end}) local N=Tabs.Rebirth:AddRightGroupbox("Tiers","list") N:AddLabel("Lv15 x1.5, Lv25 x2, Lv40 x2.5, Lv60 x3, Lv100 x4, Lv200 x10. Endgame x100M+.",true) Toggles.AutoRebirth:OnChanged(function() if not Toggles.AutoRebirth.Value then return end task.spawn(function() while Toggles.AutoRebirth.Value and not Library.Unloaded do task.wait(1) pcall(function() Remotes.Rebirth:FireServer() end) end end) end) end do local M=Tabs.Settings:AddLeftGroupbox("Menu","wrench") M:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind",{Default="RightShift",NoUI=true,Text="Menu keybind"}) M:AddToggle("ShowCustomCursor",{Text="Custom Cursor",Default=Library.ShowCustomCursor,Callback=function(v) Library.ShowCustomCursor=v end}) M:AddSlider("CornerRadius",{Text="Corner Radius",Default=10,Min=0,Max=20,Rounding=0,Callback=function(v) Window:SetCornerRadius(v) end}) M:AddButton("Unload",function() Library:Unload() end) Library.ToggleKeybind=Options.MenuKeybind local A=Tabs.Settings:AddRightGroupbox("Safety","shield") A:AddToggle("AntiAFK",{Text="Anti-AFK",Default=true,Tooltip="Prevents idle kick"}) Toggles.AntiAFK:OnChanged(function() end) pcall(function() LocalPlayer.Idled:Connect(function() if Toggles.AntiAFK and Toggles.AntiAFK.Value then VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end end) end) ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() SaveManager:SetIgnoreIndexes({"MenuKeybind"}) ThemeManager:SetFolder("@hidevin") SaveManager:SetFolder("@hidevin/"..GameName) SaveManager:BuildConfigSection(Tabs.Settings) ThemeManager:ApplyToTab(Tabs.Settings) SaveManager:LoadAutoloadConfig() end Library:OnUnload(function() print("[@hidevin] unloaded") end) Notify("Loaded — Farming/Inventory use subtabs, Main is status only.")