-- [[ 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=6ac346bca677797e2821982b"))() end) end) --[[rscripts:analytics:end]] local Players=game:GetService"Players" local RunService=game:GetService"RunService" local UserInputService=game:GetService"UserInputService" local TweenService=game:GetService"TweenService" local CollectionService=game:GetService"CollectionService" local VIM=game:GetService"VirtualInputManager" local player=Players.LocalPlayer local playerGui=player:WaitForChild"PlayerGui" local GymCfg={ LiftingTag="Lifting", WindedAttribute="GymWinded", PromptName="GymPrompt" } pcall(function() local GS=require(game:GetService"ReplicatedStorage".Shared.Modules.Global.Libraries.Game_Settings) local G=GS.Gym GymCfg.LiftingTag=G.LiftingTag or GymCfg.LiftingTag GymCfg.WindedAttribute=G.WindedAttribute or GymCfg.WindedAttribute GymCfg.PromptName=G.PromptName or GymCfg.PromptName end) local enabled=true local targets={} local lastKindTag=nil local KINDS={} local OPTIONS={} local LABEL_BY_TAG={} do local ok=pcall(function() local RS=game:GetService"ReplicatedStorage" local GS=require(RS.Shared.Modules.Global.Libraries.Game_Settings) local GW=require(RS.Shared.Modules.Shared.GymWeights) for _,k in ipairs(GS.Gym.Kinds)do table.insert(KINDS,k) LABEL_BY_TAG[k.Tag]=k.Label local opts={} if k.WeightFolder then for _,w in ipairs(GW.List(k.WeightFolder))do table.insert(opts,{ id=w.Name, text=("%d LB"):format(math.floor((w.Weight or 0)+0.5)) }) end elseif k.Speeds then for _,s in ipairs(k.Speeds)do table.insert(opts,{ id=s.Id, text=(s.Label or s.Id)..(s.Sub and(" \194\183 "..s.Sub)or"") }) end end OPTIONS[k.Tag]=opts end end) if not ok then warn"[AutoGym] could not read weight lists" end end local keys={ Q=Enum.KeyCode.Q, E=Enum.KeyCode.E } local wasRed={ Q=false, E=false } local lastPress={ Q=0, E=0 } local boxes={ Q=nil, E=nil } local bar={ fill=nil, zone=nil } local lastZone={ left=nil, w=nil } local mode=nil local lastC=0 local settleUntil=0 local lastSelect=0 local gymPrompts={} local lastGymScan=0 local function isRed(c) return c.R>0.6 and c.G<0.4 and c.B<0.4 end local function isZoneColor(d) local c=d.BackgroundColor3 local mx=math.max(c.R,c.G,c.B) local mn=math.min(c.R,c.G,c.B) local t=d.BackgroundTransparency local eff=mx*(1-t)+0.06*t return mx-mn<0.08 and eff>0.3 and eff<0.95 end local function isLetter(d,letter) if not d:IsA"GuiObject"then return false end if(d:IsA"TextLabel"or d:IsA"TextButton")then local t=d.Text:gsub("%s",""):upper() if t==letter then return true end end return d.Name:upper()==letter end local function visibleChain(d) local o=d while o and o~=playerGui do if o:IsA"GuiObject"and not o.Visible then return false end if o:IsA"ScreenGui"and not o.Enabled then return false end o=o.Parent end return o==playerGui end local function pickZone(anc,fill,q,qh,needVisible) local fy=fill.AbsolutePosition.Y+fill.AbsoluteSize.Y/2 local best,bestDist for _,d in ipairs(anc:GetDescendants())do if d:IsA"GuiObject"and d~=fill and not d:IsAncestorOf(q)and d~=q and d.BackgroundTransparency<1 and isZoneColor(d)and d.AbsoluteSize.X>0 and d.AbsoluteSize.Y<=qh and(not needVisible or visibleChain(d))then local dist=math.abs(d.AbsolutePosition.Y+d.AbsoluteSize.Y/2-fy) if dist<=math.max(fill.AbsoluteSize.Y,6)and(not bestDist or dist0 and d.AbsoluteSize.Y=40 and h<=120 then table.insert(rows,d) end end end table.sort(rows,function(a,b) return a.AbsolutePosition.Y0 end end return row.Selectable end local function rowVerdict(row) for _,d in ipairs(row:GetDescendants())do if d:IsA"TextLabel"then local t=d.Text:upper():gsub("%s","") if t:find"COMFORTABLE"then return"ok" end if t:find"HEAVY"then return"heavy" end end end return nil end local function clickRow(row) local fired=false if getconnections then local ok,conns=pcall(getconnections,row.Activated) if ok and conns then for _,c in ipairs(conns)do pcall(c.Fire,c) fired=true end end end if not fired then pcall(function() local ap,sz=row.AbsolutePosition,row.AbsoluteSize local x,y=ap.X+sz.X/2,ap.Y+sz.Y/2 VIM:SendMousePosition(x,y) VIM:SendMouseButtonEvent(x,y,0,true,game,1) task.wait(0.03) VIM:SendMouseButtonEvent(x,y,0,false,game,1) end) end end local function chooseRow(rows,tag) if#rows==0 then return nil end local function find(name) for _,r in ipairs(rows)do if r.Name==name then return r end end end local want=tag and targets[tag] if want then local r=find(want) if r and rowUnlocked(r)then return r end end local lastUnlocked,lastComfortable for _,r in ipairs(rows)do if rowUnlocked(r)then lastUnlocked=r if rowVerdict(r)=="ok"then lastComfortable=r end end end return lastComfortable or lastUnlocked end local function selectWeight(sel) local rows=collectRows(sel) if#rows==0 then return false end local row=chooseRow(rows,lastKindTag) if not row then return false end clickRow(row) return true end local function restartState() if not(enabled and true)then return"off" end local ch=player.Character if playerGui:FindFirstChild"GymWeightSelect"then return"picking weight" end if ch and ch:GetAttribute(GymCfg.LiftingTag)~=nil then return"lifting" end if ch and ch:GetAttribute(GymCfg.WindedAttribute)~=nil then return"winded" end if nearestGymPrompt(true)then return"ready" end return"no machine" end local function doRestart() if not(enabled and true)then return end if tick()0.35 then lastSelect=tick() if selectWeight(sel)then settleUntil=tick()+1.4 end end elseif not lifting and not winded then local p=nearestGymPrompt(true) if p and tick()-lastC>0.45 then lastC=tick() triggerPrompt(p) end end end local function make(cls,props,parent) local o=Instance.new(cls) for k,v in pairs(props)do o[k]=v end if parent then o.Parent=parent end return o end local palette={ panel=Color3.fromRGB(22,24,31), row=Color3.fromRGB(31,34,43), stroke=Color3.fromRGB(72,77,90), text=Color3.fromRGB(236,239,246), muted=Color3.fromRGB(150,155,168), on=Color3.fromRGB(62,200,122), off=Color3.fromRGB(214,74,74), accent=Color3.fromRGB(92,162,255) } local gui=make("ScreenGui",{ Name="AutoGym", ResetOnSpawn=false, ZIndexBehavior=Enum.ZIndexBehavior.Sibling, DisplayOrder=100 },(gethui and gethui())or game:GetService"CoreGui") local root=make("Frame",{ Name="Root", AnchorPoint=Vector2.new(0,0.5), Position=UDim2.new(0,20,0.5,0), Size=UDim2.fromOffset(232,150), BackgroundColor3=palette.panel, BackgroundTransparency=0.08, BorderSizePixel=0 },gui) make("UICorner",{ CornerRadius=UDim.new(0,14) },root) make("UIStroke",{ Color=palette.stroke, Transparency=0.5, Thickness=1 },root) local header=make("Frame",{ Name="Header", Size=UDim2.new(1,0,0,40), BackgroundTransparency=1 },root) make("UICorner",{ CornerRadius=UDim.new(0,14) },header) local dot=make("Frame",{ Size=UDim2.fromOffset(9,9), Position=UDim2.fromOffset(15,16), BackgroundColor3=palette.on, BorderSizePixel=0 },header) make("UICorner",{ CornerRadius=UDim.new(1,0) },dot) make("TextLabel",{ Position=UDim2.fromOffset(31,0), Size=UDim2.new(1,-95,1,0), BackgroundTransparency=1, Font=Enum.Font.GothamBold, TextSize=13, TextColor3=palette.text, TextXAlignment=Enum.TextXAlignment.Left, Text="AUTO GYM" },header) local pill=make("TextButton",{ Name="Toggle", AnchorPoint=Vector2.new(1,0.5), Position=UDim2.new(1,-14,0.5,0), Size=UDim2.fromOffset(42,22), BackgroundColor3=palette.on, BorderSizePixel=0, Text="", AutoButtonColor=false },header) make("UICorner",{ CornerRadius=UDim.new(1,0) },pill) local knob=make("Frame",{ Size=UDim2.fromOffset(16,16), Position=UDim2.new(1,-19,0.5,-8), BackgroundColor3=Color3.new(1,1,1), BorderSizePixel=0 },pill) make("UICorner",{ CornerRadius=UDim.new(1,0) },knob) make("Frame",{ Position=UDim2.fromOffset(0,40), Size=UDim2.new(1,0,0,1), BackgroundColor3=palette.stroke, BackgroundTransparency=0.6, BorderSizePixel=0 },root) local body=make("Frame",{ Position=UDim2.fromOffset(0,40), Size=UDim2.new(1,0,1,-40), BackgroundTransparency=1 },root) local function bodyLabel(y,size,color,bold) return make("TextLabel",{ Position=UDim2.fromOffset(15,y), Size=UDim2.new(1,-30,0,15), BackgroundTransparency=1, Font=bold and Enum.Font.GothamBold or Enum.Font.GothamMedium, TextSize=size, TextColor3=color, TextXAlignment=Enum.TextXAlignment.Left, Text="" },body) end local picker=make("TextButton",{ Name="Picker", Position=UDim2.fromOffset(15,8), Size=UDim2.new(1,-30,0,28), BackgroundColor3=palette.row, BorderSizePixel=0, Text="", AutoButtonColor=false },body) make("UICorner",{ CornerRadius=UDim.new(0,8) },picker) make("UIStroke",{ Color=palette.stroke, Transparency=0.6, Thickness=1 },picker) local pickerLabel=make("TextLabel",{ Position=UDim2.fromOffset(10,0), Size=UDim2.new(1,-30,1,0), BackgroundTransparency=1, Font=Enum.Font.GothamMedium, TextSize=11, TextColor3=palette.text, TextXAlignment=Enum.TextXAlignment.Left, TextTruncate=Enum.TextTruncate.AtEnd, Text="WEIGHT \194\183 AUTO" },picker) make("TextLabel",{ AnchorPoint=Vector2.new(1,0.5), Position=UDim2.new(1,-10,0.5,0), Size=UDim2.fromOffset(12,12), BackgroundTransparency=1, Font=Enum.Font.GothamBold, TextSize=12, TextColor3=palette.muted, Text="\226\150\190" },picker) local dd=make("Frame",{ Name="Dropdown", Position=UDim2.fromOffset(15,78), Size=UDim2.fromOffset(202,0), BackgroundColor3=Color3.fromRGB(26,28,36), BackgroundTransparency=0.03, BorderSizePixel=0, ClipsDescendants=true, Visible=false, ZIndex=60 },root) make("UICorner",{ CornerRadius=UDim.new(0,10) },dd) make("UIStroke",{ Color=palette.stroke, Transparency=0.4, Thickness=1 },dd) local ddScroll=make("ScrollingFrame",{ Position=UDim2.fromOffset(0,0), Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, BorderSizePixel=0, ScrollBarThickness=3, ScrollBarImageColor3=palette.stroke, CanvasSize=UDim2.new(0,0,0,0), ZIndex=61 },dd) local modeLabel=bodyLabel(41,13,palette.text,true) local detailLabel=bodyLabel(58,11,palette.muted,false) local restartLabel=bodyLabel(74,11,palette.muted,false) local hintLabel=bodyLabel(90,10,palette.muted,false) hintLabel.Text="Drag to move \194\183 tap the switch" local function targetText(tag,id) local opts=tag and OPTIONS[tag] if opts then for _,o in ipairs(opts)do if o.id==id then return o.text end end end return tostring(id) end local function refreshPicker() local name=lastKindTag and LABEL_BY_TAG[lastKindTag]or"WEIGHT" local val=(lastKindTag and targets[lastKindTag])and targetText(lastKindTag,targets[lastKindTag])or"AUTO" pickerLabel.Text=("%s \194\183 %s"):format(name,val) end local function buildDropdown() for _,c in ipairs(ddScroll:GetChildren())do if c:IsA"TextButton"then c:Destroy() end end local tag=lastKindTag local list={ { id=nil, text="AUTO \194\183 HEAVIEST COMFORTABLE" } } if tag and OPTIONS[tag]then for _,o in ipairs(OPTIONS[tag])do table.insert(list,{ id=o.id, text=o.text }) end end local y=4 for i,opt in ipairs(list)do local selected=(tag and targets[tag]or nil)==opt.id local b=make("TextButton",{ Name="Opt"..i, Position=UDim2.fromOffset(4,y), Size=UDim2.new(1,-8,0,26), BackgroundColor3=selected and palette.accent or palette.row, BackgroundTransparency=selected and 0.25 or 0, BorderSizePixel=0, Text="", AutoButtonColor=false, ZIndex=62 },ddScroll) make("UICorner",{ CornerRadius=UDim.new(0,6) },b) local tl=make("TextLabel",{ Position=UDim2.fromOffset(10,0), Size=UDim2.new(1,-16,1,0), BackgroundTransparency=1, Font=Enum.Font.GothamMedium, TextSize=11, TextColor3=palette.text, TextXAlignment=Enum.TextXAlignment.Left, TextTruncate=Enum.TextTruncate.AtEnd, Text=opt.text, ZIndex=63 },b) b.MouseEnter:Connect(function() tl.TextColor3=Color3.new(1,1,1) end) b.MouseLeave:Connect(function() tl.TextColor3=palette.text end) b.MouseButton1Click:Connect(function() if tag then targets[tag]=opt.id end refreshPicker() dd.Visible=false end) y=y+28 end ddScroll.CanvasSize=UDim2.new(0,0,0,y+4) dd.Size=UDim2.fromOffset(202,math.min(y+8,190)) end picker.MouseButton1Click:Connect(function() if dd.Visible then dd.Visible=false else buildDropdown() refreshPicker() dd.Visible=true end end) local function refreshToggle(anim) local color=enabled and palette.on or palette.off pill.BackgroundColor3=color dot.BackgroundColor3=color local target=enabled and UDim2.new(1,-19,0.5,-8)or UDim2.new(0,3,0.5,-8) if anim then TweenService:Create(knob,TweenInfo.new(0.15,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{ Position=target }):Play() else knob.Position=target end end pill.MouseButton1Click:Connect(function() enabled=not enabled refreshToggle(true) end) do local dragging,dragStart,startPos header.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=true dragStart=i.Position startPos=root.Position dd.Visible=false end end) UserInputService.InputChanged:Connect(function(i) if dragging and(i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch)then local d=i.Position-dragStart root.Position=UDim2.new(startPos.X.Scale,startPos.X.Offset+d.X,startPos.Y.Scale,startPos.Y.Offset+d.Y) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=false end end) end refreshToggle(false) refreshPicker() local lastScan=0 local lastUi=0 RunService.Heartbeat:Connect(function() if not root.Parent then return end if tick()-lastGymScan>2 then lastGymScan=tick() refreshGymPrompts() end local kind=kindForPrompt(nearestGymPrompt(false)) if kind then lastKindTag=kind.Tag end local stale if mode=="alt"then stale=not boxes.Q.Parent or not boxes.E.Parent or not visibleChain(boxes.Q)or not visibleChain(boxes.E) elseif mode=="bar"then stale=not boxes.Q.Parent or not bar.fill.Parent or not visibleChain(boxes.Q)or not visibleChain(bar.fill)or tick()-lastScan>1 else stale=true end if stale and tick()-lastScan>0.25 then lastScan=tick() locate() wasRed.Q,wasRed.E=false,false end local modeText,detailText="Idle","" if enabled and mode=="bar"then local zoneLeft,zoneW=lastZone.left,lastZone.w if bar.zone and bar.zone.Parent then zoneLeft,zoneW=bar.zone.AbsolutePosition.X,bar.zone.AbsoluteSize.X lastZone.left,lastZone.w=zoneLeft,zoneW end if zoneLeft then local fillRight=bar.fill.AbsolutePosition.X+bar.fill.AbsoluteSize.X local target=zoneLeft+zoneW*0.2 if fillRight0.09 then task.spawn(press,"Q",boxes.Q) end local state="pushing" if fillRight>zoneLeft+zoneW then state="over" elseif fillRight>=zoneLeft then state="in zone" end modeText="Dumbbell" detailText="Tap timing \194\183 "..state end elseif enabled and mode=="alt"then for letter in pairs(keys)do local obj=boxes[letter] local red=boxIsRed(obj) if red and(not wasRed[letter]or tick()-lastPress[letter]>0.35)then task.spawn(press,letter,obj) end wasRed[letter]=red end modeText="Machine" detailText=("Q:%s E:%s"):format(boxIsRed(boxes.Q)and"RED"or"--",boxIsRed(boxes.E)and"RED"or"--") end if enabled then doRestart() end if tick()-lastUi>0.1 then lastUi=tick() local st=restartState() modeLabel.Text=enabled and modeText or"Disabled" detailLabel.Text=detailText restartLabel.Text=("Restart (C): %s"):format(st:sub(1,1):upper()..st:sub(2)) restartLabel.TextColor3=(st=="ready"and palette.on)or(st=="off"or st=="no machine")and palette.muted or palette.accent refreshPicker() end end)