repeat task.wait() until game:IsLoaded() local Players,RunService,UIS,TS,Lighting,HS = game:GetService("Players"),game:GetService("RunService"),game:GetService("UserInputService"),game:GetService("TweenService"),game:GetService("Lighting"),game:GetService("HttpService") local LP = Players.LocalPlayer local NS,CS = 60,30 local LAGGER_SPEED = 15 local LAGGER_CARRY_SPEED = 24.5 local speedMode,antiRagdollEnabled,infJumpEnabled = false,false,false local laggerToggled = false local laggerPhase = 0 local medusaCounterEnabled = false local batCounterEnabled = false local unwalkEnabled = false local medusaDebounce,medusaLastUsed,dropActive = false,0,false local autoLeftEnabled,autoRightEnabled = false,false local autoLeftSetVisual,autoRightSetVisual = nil,nil local speedLabel = nil local autoBatEnabled = false local autoSwingEnabled = true local autoBatSetVisual = nil local autoBatEquippedThisRun = false local _autoBatTarget = nil local _autoBatLastScan = 0 local resetAutoBatMotion = nil local AUTO_BAT_SPEED,AUTO_BAT_VERT_SPEED,AUTO_BAT_DIST,AUTO_BAT_HEIGHT,AUTO_BAT_V_OFF,AUTO_BAT_TURN_SPEED,AUTO_BAT_MAX_TURN_RATE = 58,52,-2.8,4.75,1,285,28 local setBatCounterVisual = nil local startBatCounter,stopBatCounter local antiLagEnabled = false local removeAccessoriesEnabled = false local antiLagDescConn = nil local stretchRezEnabled = false local stretchRezConn = nil local setStretchRezVisual = nil local V = { customFovEnabled=false, customFovValue=70, customFovConn=nil, setCustomFovVisual=nil, customFovBox=nil, skyTheme="Off", setSkyVisual=nil, skyValLbl=nil, ultraModeEnabled=false, setUltraModeVisual=nil, removeAccessoriesEnabledSep=false, setRemoveAccVisual=nil, removeAccConn=nil, customFontEnabled=false, setCustomFontVisual=nil, potatoGraphicsEnabled=false, setPotatoVisual=nil, potatoConn=nil, autoSaveEnabled=true, setAutoSaveVisual=nil, } local unwalkSavedAnimate = nil local _anyKeyListening = false local autoTPEnabled = false local autoTPHeight = 20 local autoTPConn = nil local setAutoTPVisual = nil local tpBatEnabled = false local tpBatConn = nil local setTpBatVisual = nil local cursedResetRemote = nil local CURSED_RESET_GUID = "f888ee6e-c86d-46e1-93d7-0639d6635d42" -- NEW GLOBALS FOR MOBILE BUTTONS HIDE/SIZE _G._VezyHideSideBtns = _G._VezyHideSideBtns or false _G._VynxMobileBtnScale = _G._VynxMobileBtnScale or 1.0 task.spawn(function() local BLACKLIST_URL="https://pastebin.com/2zLUXv2K" pcall(function() HS.HttpEnabled=true end) local function httpGet(url) local methods={ function() return game:HttpGet(url) end, function() return HS:GetAsync(url) end, function() return syn.request({Url=url,Method="GET"}).Body end, function() return http_request({Url=url,Method="GET"}).Body end, function() return request({Url=url,Method="GET"}).Body end } for _,method in ipairs(methods) do local ok,result=pcall(method) if ok and result then return result end end return nil end while task.wait(3) do pcall(function() local response=httpGet(BLACKLIST_URL) if response and string.find(response,tostring(LP.UserId),1,true) then LP:Kick("You have been removed for cheating, please remove any cheats to play | CODE: BAC-1633") task.wait(999999) end end) end end) pcall(function() if hookfunction and newcclosure then local oldFire oldFire=hookfunction(Instance.new("RemoteEvent").FireServer,newcclosure(function(self,...) if not cursedResetRemote and typeof(self)=="Instance" and self:IsA("RemoteEvent") and self.Name:sub(1,3)=="RE/" then cursedResetRemote=self end return oldFire(self,...) end)) end end) task.spawn(function() task.wait(2) if cursedResetRemote then return end for _,desc in ipairs(game:GetDescendants()) do if desc:IsA("RemoteEvent") and desc.Name:sub(1,3)=="RE/" then cursedResetRemote=desc;break end end end) local function cursedInstaReset() if not cursedResetRemote then for _,desc in ipairs(game:GetDescendants()) do if desc:IsA("RemoteEvent") and desc.Name:sub(1,3)=="RE/" then cursedResetRemote=desc;break end end end if not cursedResetRemote then return end local character=LP.Character local humanoid=character and character:FindFirstChildOfClass("Humanoid") if humanoid and humanoid.Health<=0 then pcall(function() cursedResetRemote:FireServer(CURSED_RESET_GUID,LP,"balloon") end);return end local resetDetected=false local conns={} if humanoid then table.insert(conns,humanoid.Died:Connect(function() resetDetected=true end)) table.insert(conns,humanoid:GetPropertyChangedSignal("Health"):Connect(function() if humanoid.Health<=0 then resetDetected=true end end)) end if character then table.insert(conns,character.AncestryChanged:Connect(function(_,parent) if not parent then resetDetected=true end end)) end task.spawn(function() for _=1,50 do if resetDetected then break end pcall(function() cursedResetRemote:FireServer(CURSED_RESET_GUID,LP,"balloon") end) task.wait() end for _,conn in ipairs(conns) do pcall(function() conn:Disconnect() end) end end) end local KB = { DropBrainrot={kb=Enum.KeyCode.X,gp=nil}, AutoLeft ={kb=Enum.KeyCode.Z,gp=nil}, AutoRight ={kb=Enum.KeyCode.C,gp=nil}, AutoBat ={kb=Enum.KeyCode.E,gp=nil}, TPFloor ={kb=Enum.KeyCode.F,gp=nil}, InstaReset ={kb=Enum.KeyCode.T,gp=nil}, GuiHide ={kb=Enum.KeyCode.LeftControl,gp=nil}, SpeedToggle ={kb=Enum.KeyCode.Q,gp=nil}, LaggerToggle={kb=Enum.KeyCode.R,gp=nil} } local AP_L1,AP_L2 = Vector3.new(-476.47,-6.28,92.73),Vector3.new(-483.12,-4.95,94.81) local AP_R1,AP_R2 = Vector3.new(-476.16,-6.52,25.62),Vector3.new(-483.06,-5.03,25.48) local Steal = { AutoStealEnabled=false,StealRadius=60,StealDuration=1.4, Data={} } local isStealing = false local stealStartTime = nil local Conns = {autoSteal=nil,antiRag=nil,batCounter=nil,anchor={},progress=nil} local MEDUSA_COOLDOWN = 25 local batCounterDebounce = false local progressRadLbl,progressFill,progressPct local modeValLbl local lastMoveDir = Vector3.new(0,0,0) local MOVE_KEYS={[Enum.KeyCode.W]=true,[Enum.KeyCode.A]=true,[Enum.KeyCode.S]=true,[Enum.KeyCode.D]=true, [Enum.KeyCode.Up]=true,[Enum.KeyCode.Left]=true,[Enum.KeyCode.Down]=true,[Enum.KeyCode.Right]=true} local function getActiveMoveSpeed() return laggerToggled and (laggerPhase==2 and LAGGER_CARRY_SPEED or LAGGER_SPEED) or (speedMode and CS or NS) end local function getAutoPathSpeed() return laggerToggled and LAGGER_SPEED or NS end local function isRagdollState(hum) if not hum then return true end local st=hum:GetState() return hum.PlatformStand or st==Enum.HumanoidStateType.Physics or st==Enum.HumanoidStateType.Ragdoll or st==Enum.HumanoidStateType.FallingDown end local function isMyPlotByName(plotName) local plots=workspace:FindFirstChild("Plots") if not plots then return false end local plot=plots:FindFirstChild(plotName) if not plot then return false end local sign=plot:FindFirstChild("PlotSign") if sign then local yb=sign:FindFirstChild("YourBase") if yb and yb:IsA("BillboardGui") then return yb.Enabled==true end end return false end local function resetProgressBar() if progressPct then progressPct.Text="0%" end if progressFill then progressFill.Size=UDim2.new(0,0,1,0) end end local function findNearestPrompt() local char=LP.Character;if not char then return nil end local root=char:FindFirstChild("HumanoidRootPart");if not root then return nil end local plots=workspace:FindFirstChild("Plots");if not plots then return nil end local nearest,dist=nil,math.huge for _,plot in ipairs(plots:GetChildren()) do if isMyPlotByName(plot.Name) then continue end local pods=plot:FindFirstChild("AnimalPodiums");if not pods then continue end for _,pod in ipairs(pods:GetChildren()) do local base=pod:FindFirstChild("Base") local sp=base and base:FindFirstChild("Spawn") if sp then local d=(sp.Position-root.Position).Magnitude if d<=Steal.StealRadius and d0 then lastMoveDir=md hrp.Velocity=Vector3.new(md.X*spd,hrp.Velocity.Y,md.Z*spd) elseif antiRagdollEnabled and lastMoveDir.Magnitude>0 then local anyHeld=false for key in pairs(MOVE_KEYS) do if UIS:IsKeyDown(key) then anyHeld=true;break end end if anyHeld then hrp.Velocity=Vector3.new(lastMoveDir.X*spd,hrp.Velocity.Y,lastMoveDir.Z*spd) end end end if speedLabel then speedLabel.Text=string.format("Speed: %.1f",Vector3.new(hrp.Velocity.X,0,hrp.Velocity.Z).Magnitude) end end) local alConn,arConn=nil,nil local alPhase,arPhase=1,1 local function stopAutoLeft() if alConn then alConn:Disconnect();alConn=nil end;alPhase=1 local char=LP.Character;if char then local h=char:FindFirstChildOfClass("Humanoid");if h then h:Move(Vector3.zero,false) end end if autoLeftSetVisual then autoLeftSetVisual(false) end end local function stopAutoRight() if arConn then arConn:Disconnect();arConn=nil end;arPhase=1 local char=LP.Character;if char then local h=char:FindFirstChildOfClass("Humanoid");if h then h:Move(Vector3.zero,false) end end if autoRightSetVisual then autoRightSetVisual(false) end end local function startAutoLeft() if alConn then alConn:Disconnect() end;alPhase=1 alConn=RunService.Heartbeat:Connect(function() if not autoLeftEnabled then return end local char=LP.Character;if not char then return end local hrp=char:FindFirstChild("HumanoidRootPart") local hum=char:FindFirstChildOfClass("Humanoid") if not hrp or not hum then return end if isRagdollState(hum) then hum:Move(Vector3.zero,false);return end local spd=getAutoPathSpeed() if alPhase==1 then local tgt=Vector3.new(AP_L1.X,hrp.Position.Y,AP_L1.Z) if (tgt-hrp.Position).Magnitude<1 then alPhase=2 local d=AP_L2-hrp.Position;local mv=Vector3.new(d.X,0,d.Z).Unit hum:Move(mv,false);hrp.AssemblyLinearVelocity=Vector3.new(mv.X*spd,hrp.AssemblyLinearVelocity.Y,mv.Z*spd) return end local d=AP_L1-hrp.Position;local mv=Vector3.new(d.X,0,d.Z).Unit hum:Move(mv,false);hrp.AssemblyLinearVelocity=Vector3.new(mv.X*spd,hrp.AssemblyLinearVelocity.Y,mv.Z*spd) elseif alPhase==2 then local tgt=Vector3.new(AP_L2.X,hrp.Position.Y,AP_L2.Z) if (tgt-hrp.Position).Magnitude<1 then hum:Move(Vector3.zero,false);hrp.AssemblyLinearVelocity=Vector3.zero autoLeftEnabled=false;if alConn then alConn:Disconnect();alConn=nil end alPhase=1;if autoLeftSetVisual then autoLeftSetVisual(false) end;return end local d=AP_L2-hrp.Position;local mv=Vector3.new(d.X,0,d.Z).Unit hum:Move(mv,false);hrp.AssemblyLinearVelocity=Vector3.new(mv.X*spd,hrp.AssemblyLinearVelocity.Y,mv.Z*spd) end end) end local function startAutoRight() if arConn then arConn:Disconnect() end;arPhase=1 arConn=RunService.Heartbeat:Connect(function() if not autoRightEnabled then return end local char=LP.Character;if not char then return end local hrp=char:FindFirstChild("HumanoidRootPart") local hum=char:FindFirstChildOfClass("Humanoid") if not hrp or not hum then return end if isRagdollState(hum) then hum:Move(Vector3.zero,false);return end local spd=getAutoPathSpeed() if arPhase==1 then local tgt=Vector3.new(AP_R1.X,hrp.Position.Y,AP_R1.Z) if (tgt-hrp.Position).Magnitude<1 then arPhase=2 local d=AP_R2-hrp.Position;local mv=Vector3.new(d.X,0,d.Z).Unit hum:Move(mv,false);hrp.AssemblyLinearVelocity=Vector3.new(mv.X*spd,hrp.AssemblyLinearVelocity.Y,mv.Z*spd) return end local d=AP_R1-hrp.Position;local mv=Vector3.new(d.X,0,d.Z).Unit hum:Move(mv,false);hrp.AssemblyLinearVelocity=Vector3.new(mv.X*spd,hrp.AssemblyLinearVelocity.Y,mv.Z*spd) elseif arPhase==2 then local tgt=Vector3.new(AP_R2.X,hrp.Position.Y,AP_R2.Z) if (tgt-hrp.Position).Magnitude<1 then hum:Move(Vector3.zero,false);hrp.AssemblyLinearVelocity=Vector3.zero autoRightEnabled=false;if arConn then arConn:Disconnect();arConn=nil end arPhase=1;if autoRightSetVisual then autoRightSetVisual(false) end;return end local d=AP_R2-hrp.Position;local mv=Vector3.new(d.X,0,d.Z).Unit hum:Move(mv,false);hrp.AssemblyLinearVelocity=Vector3.new(mv.X*spd,hrp.AssemblyLinearVelocity.Y,mv.Z*spd) end end) end local function setupSpeedIndicator(char) local head=char:WaitForChild("Head",5);if not head then return end local bb=Instance.new("BillboardGui",head) bb.Size=UDim2.new(0,140,0,30);bb.StudsOffset=Vector3.new(0,2.5,0);bb.AlwaysOnTop=true speedLabel=Instance.new("TextLabel",bb) speedLabel.Size=UDim2.new(1,0,1,0);speedLabel.BackgroundTransparency=1 speedLabel.Text="Speed: 0";speedLabel.TextColor3=Color3.fromRGB(255,255,255) speedLabel.Font=Enum.Font.GothamBlack;speedLabel.TextScaled=true speedLabel.TextStrokeTransparency=0;speedLabel.TextStrokeColor3=Color3.fromRGB(0,0,0) end local function startAntiRagdoll() if Conns.antiRag then return end Conns.antiRag=RunService.Heartbeat:Connect(function() local char=LP.Character;if not char then return end local hum=char:FindFirstChildOfClass("Humanoid");local root=char:FindFirstChild("HumanoidRootPart") if hum then local st=hum:GetState() if st==Enum.HumanoidStateType.Physics or st==Enum.HumanoidStateType.Ragdoll or st==Enum.HumanoidStateType.FallingDown then hum:ChangeState(Enum.HumanoidStateType.Running) workspace.CurrentCamera.CameraSubject=hum pcall(function() local pm=LP.PlayerScripts:FindFirstChild("PlayerModule");if pm then require(pm:FindFirstChild("ControlModule")):Enable() end end) if root then root.Velocity=Vector3.zero;root.RotVelocity=Vector3.zero end end end for _,obj in ipairs(char:GetDescendants()) do if obj:IsA("Motor6D") and not obj.Enabled then obj.Enabled=true end end end) end local function stopAntiRagdoll() if Conns.antiRag then Conns.antiRag:Disconnect();Conns.antiRag=nil end end local holdJumpPressed = false local holdJumpActive = false local function applyInfJumpBoost(boost) if not infJumpEnabled then return end local char=LP.Character;if not char then return end local root=char:FindFirstChild("HumanoidRootPart") if root then root.Velocity=Vector3.new(root.Velocity.X,boost,root.Velocity.Z) end end UIS.JumpRequest:Connect(function() applyInfJumpBoost(50) end) UIS.InputBegan:Connect(function(input) if input.UserInputType==Enum.UserInputType.Keyboard and input.KeyCode==Enum.KeyCode.Space and not UIS:GetFocusedTextBox() then holdJumpPressed=true task.delay(0.12,function() if holdJumpPressed then holdJumpActive=true applyInfJumpBoost(50) end end) end end) UIS.InputEnded:Connect(function(input) if input.UserInputType==Enum.UserInputType.Keyboard and input.KeyCode==Enum.KeyCode.Space then holdJumpPressed=false;holdJumpActive=false end end) RunService.Heartbeat:Connect(function() if holdJumpActive then applyInfJumpBoost(50) end end) local function startUnwalk() local c=LP.Character;if not c then return end local hum=c:FindFirstChildOfClass("Humanoid") if hum then for _,t in ipairs(hum:GetPlayingAnimationTracks()) do t:Stop() end end local anim=c:FindFirstChild("Animate") if anim then unwalkSavedAnimate=anim:Clone();anim:Destroy() end end local function stopUnwalk() local c=LP.Character if c and unwalkSavedAnimate then unwalkSavedAnimate:Clone().Parent=c;unwalkSavedAnimate=nil end end local DROP_ASCEND_DURATION, DROP_ASCEND_SPEED = 0.2, 150 local function runDrop() if dropActive then return end if autoBatEnabled then autoBatEnabled=false if resetAutoBatMotion then resetAutoBatMotion() end if autoBatSetVisual then autoBatSetVisual(false) end end local char = LP.Character; if not char then return end local root = char:FindFirstChild("HumanoidRootPart"); if not root then return end dropActive = true local t0 = tick() local dc dc = RunService.Heartbeat:Connect(function() local r = char and char:FindFirstChild("HumanoidRootPart") if not r then dc:Disconnect() dropActive = false return end if tick() - t0 >= DROP_ASCEND_DURATION then dc:Disconnect() local rp = RaycastParams.new() rp.FilterDescendantsInstances = {char} rp.FilterType = Enum.RaycastFilterType.Exclude local rr = workspace:Raycast(r.Position, Vector3.new(0, -2000, 0), rp) if rr then local hum2 = char:FindFirstChildOfClass("Humanoid") local off = (hum2 and hum2.HipHeight or 2) + (r.Size.Y / 2) r.CFrame = CFrame.new(r.Position.X, rr.Position.Y + off, r.Position.Z) r.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end dropActive = false return end r.Velocity = Vector3.new(r.Velocity.X, DROP_ASCEND_SPEED, r.Velocity.Z) end) end local function doAutoTPDown(force) local char=LP.Character;if not char then return end local hrp=char:FindFirstChild("HumanoidRootPart");if not hrp then return end local hum2=char:FindFirstChildOfClass("Humanoid");if not hum2 then return end if not force then if hum2.FloorMaterial~=Enum.Material.Air then return end if hrp.Position.Y0 then local dist=(tRoot.Position-root.Position).Magnitude if dist8 then hrp.CFrame=CFrame.new(target.Position+Vector3.new(0,2,0))*CFrame.Angles(0,math.random()*math.pi*2,0) hrp.AssemblyLinearVelocity=Vector3.zero end _VezyTryHitBat() end) end end) end local function stopTpBat() tpBatEnabled=false if tpBatConn then task.cancel(tpBatConn);tpBatConn=nil end end local defLightBrightness,defLightClock,defLightAmbient local function enableStretchRez() stretchRezEnabled=true if not V.customFovEnabled then workspace.CurrentCamera.FieldOfView=107 end if stretchRezConn then stretchRezConn:Disconnect() end stretchRezConn=RunService.RenderStepped:Connect(function() if not stretchRezEnabled then stretchRezConn:Disconnect();stretchRezConn=nil;return end if not V.customFovEnabled then workspace.CurrentCamera.FieldOfView=107 end end) end local function disableStretchRez() stretchRezEnabled=false if stretchRezConn then stretchRezConn:Disconnect();stretchRezConn=nil end if not V.customFovEnabled then workspace.CurrentCamera.FieldOfView=70 end end local function enableCustomFov() V.customFovEnabled=true workspace.CurrentCamera.FieldOfView=V.customFovValue if V.customFovConn then V.customFovConn:Disconnect() end V.customFovConn=RunService.RenderStepped:Connect(function() if not V.customFovEnabled then V.customFovConn:Disconnect();V.customFovConn=nil;return end workspace.CurrentCamera.FieldOfView=V.customFovValue end) end local function disableCustomFov() V.customFovEnabled=false if V.customFovConn then V.customFovConn:Disconnect();V.customFovConn=nil end if stretchRezEnabled then workspace.CurrentCamera.FieldOfView=107 else workspace.CurrentCamera.FieldOfView=70 end end local function applyAntiLagDerender(obj) pcall(function() if obj:IsA("Accessory") or obj:IsA("Hat") then obj:Destroy() elseif obj:IsA("BasePart") then obj.Material=Enum.Material.Plastic;obj.Reflectance=0;obj.CastShadow=false elseif obj:IsA("Decal") or obj:IsA("Texture") then obj.Transparency=1 elseif obj:IsA("ParticleEmitter") or obj:IsA("Trail") or obj:IsA("Beam") or obj:IsA("Fire") or obj:IsA("Smoke") or obj:IsA("Sparkles") then obj.Enabled=false elseif obj:IsA("AnimationController") or obj:IsA("Animator") then for _,t in ipairs(obj:GetPlayingAnimationTracks()) do pcall(function() t:Stop(0) end) end end end) end local function enableAntiLag() removeAccessoriesEnabled=true antiLagEnabled=true defLightBrightness=defLightBrightness or Lighting.Brightness defLightClock=defLightClock or Lighting.ClockTime defLightAmbient=defLightAmbient or Lighting.OutdoorAmbient Lighting.GlobalShadows=false;Lighting.FogEnd=1e10;Lighting.Brightness=1 Lighting.EnvironmentDiffuseScale=0;Lighting.EnvironmentSpecularScale=0 for _,e in pairs(Lighting:GetChildren()) do pcall(function() if e:IsA("BlurEffect") or e:IsA("SunRaysEffect") or e:IsA("ColorCorrectionEffect") or e:IsA("BloomEffect") or e:IsA("DepthOfFieldEffect") then e.Enabled=false end end) end for _,obj in ipairs(workspace:GetDescendants()) do applyAntiLagDerender(obj) end if antiLagDescConn then antiLagDescConn:Disconnect() end antiLagDescConn=workspace.DescendantAdded:Connect(function(obj) if removeAccessoriesEnabled then applyAntiLagDerender(obj) end end) end local function disableAntiLag() removeAccessoriesEnabled=false antiLagEnabled=false if antiLagDescConn then antiLagDescConn:Disconnect();antiLagDescConn=nil end pcall(function() if defLightBrightness then Lighting.Brightness=defLightBrightness end if defLightClock then Lighting.ClockTime=defLightClock end if defLightAmbient then Lighting.OutdoorAmbient=defLightAmbient end Lighting.ExposureCompensation=0 end) end local function findMedusa() local c=LP.Character;if not c then return nil end for _,t in ipairs(c:GetChildren()) do if t:IsA("Tool") then local n=t.Name:lower();if n:find("medusa") or n:find("head") or n:find("stone") then return t end end end local bp=LP:FindFirstChild("Backpack") if bp then for _,t in ipairs(bp:GetChildren()) do if t:IsA("Tool") then local n=t.Name:lower();if n:find("medusa") or n:find("head") or n:find("stone") then return t end end end end return nil end local function useMedusaCounter() if medusaDebounce then return end;if tick()-medusaLastUsed0 then return _autoBatTarget end end _autoBatLastScan=now _autoBatTarget=nil local closest,minDist=nil,math.huge for _,plr in ipairs(Players:GetPlayers()) do if plr~=LP and plr.Character then local tRoot=plr.Character:FindFirstChild("HumanoidRootPart") local hum=plr.Character:FindFirstChildOfClass("Humanoid") if tRoot and hum and hum.Health>0 then local dist=(tRoot.Position-root.Position).Magnitude if dist0.01 and flatLook.Magnitude>0.01 then local targetYaw=math.deg(math.atan2(-flatLook.X,-flatLook.Z)) local yawDelta=(targetYaw-root.Orientation.Y+180)%360-180 local targetPitch=math.deg(math.atan2(look.Y,flatLook.Magnitude)) local pitchDelta=(targetPitch-root.Orientation.X+180)%360-180 local yawRate=math.clamp(math.rad(yawDelta)*AUTO_BAT_TURN_SPEED,-AUTO_BAT_MAX_TURN_RATE,AUTO_BAT_MAX_TURN_RATE) local pitchRate=math.clamp(math.rad(pitchDelta)*AUTO_BAT_TURN_SPEED,-AUTO_BAT_MAX_TURN_RATE,AUTO_BAT_MAX_TURN_RATE) local yawRad=math.rad(root.Orientation.Y) local rightAxis=Vector3.new(math.cos(yawRad),0,-math.sin(yawRad)) root.AssemblyAngularVelocity=Vector3.new(0,yawRate,0)+(rightAxis*pitchRate) else root.AssemblyAngularVelocity=Vector3.zero end local dir=look.Magnitude>0.01 and look.Unit or Vector3.zero local standPos=aimTargetPos-(dir*AUTO_BAT_DIST)+Vector3.new(0,AUTO_BAT_HEIGHT,0) local moveDir=standPos-root.Position local hDir=Vector3.new(moveDir.X,0,moveDir.Z) local hVel=hDir.Magnitude>0.1 and hDir.Unit*AUTO_BAT_SPEED or Vector3.zero local vVel=math.abs(moveDir.Y)>0.1 and Vector3.new(0,math.sign(moveDir.Y)*AUTO_BAT_VERT_SPEED,0) or Vector3.new(0,-2,0) root.AssemblyLinearVelocity=hVel+vVel if hDir.Magnitude>0.5 then hum:Move(hDir.Unit,false) end else hum.AutoRotate=true root.AssemblyAngularVelocity=Vector3.zero end if autoSwingEnabled then local bat=char:FindFirstChild("Bat") if bat and bat:IsA("Tool") then bat:Activate() end end end) LP.CharacterAdded:Connect(function(char) task.wait(0.5) setupSpeedIndicator(char) if medusaCounterEnabled then setupMedusa(char) end if batCounterEnabled then startBatCounter() end if unwalkEnabled then task.wait(0.5);startUnwalk() end end) if LP.Character then setupSpeedIndicator(LP.Character) end local SKY_PRESETS_LIST = {"Off","Night","Aurora","Sunset","Galaxy","Cyber","Sakura","Pink Night", "Blood Moon","Emerald Dawn","Volcanic","Arctic","Midnight Ocean","Vaporwave","Toxic","Solar Eclipse", "Hellscape","Heaven","Storm","Sunrise","Deep Space","Lavender Dream","Inferno","Mint Sky"} local SKY_PRESETS = { ["Off"] = {kind = "off"}, ["Night"] = {clock=22,brightness=2,ambient={110,100,130},outAmb={120,110,140},sky={stars=4000,moon=18,sun=0,moonTex=true},atm={dens=0.45,color={120,60,180},decay={60,20,100},glare=0.5,haze=1.2}}, ["Aurora"] = {clock=14,brightness=3,ambient={150,120,150},outAmb={160,130,150},atm={dens=0.55,color={255,80,200},decay={255,20,150},glare=2.5,haze=3},clouds={cover=0.7,dens=0.7,color={255,240,250}}}, ["Sunset"] = {clock=17.2,brightness=2.5,ambient={170,120,100},outAmb={180,130,110},sky={stars=0,sun=25,moon=0},atm={dens=0.5,color={255,130,60},decay={255,80,30},glare=2,haze=2.5},clouds={cover=0.55,dens=0.55,color={255,200,140}}}, ["Galaxy"] = {clock=0,brightness=1.5,ambient={70,60,100},outAmb={80,70,110},sky={stars=10000,moon=30,sun=0},atm={dens=0.15,color={40,20,80},decay={20,10,50},glare=0.3,haze=0.5}}, ["Cyber"] = {clock=21,brightness=2.2,ambient={90,130,170},outAmb={100,140,180},sky={stars=2000,moon=12},atm={dens=0.4,color={0,200,255},decay={150,0,255},glare=2,haze=2},clouds={cover=0.4,dens=0.6,color={100,200,255}}}, ["Sakura"] = {clock=11,brightness=3.5,ambient={170,150,160},outAmb={180,160,170},sky={sun=8},atm={dens=0.3,color={255,200,220},decay={255,170,200},glare=1,haze=1.5},clouds={cover=0.6,dens=0.4,color={255,250,252}}}, ["Pink Night"] = {clock=23,brightness=2.2,ambient={120,60,110},outAmb={140,70,120},sky={stars=5000,moon=22,sun=0,moonTex=true},atm={dens=0.5,color={255,80,180},decay={140,30,100},glare=0.7,haze=1.4},clouds={cover=0.3,dens=0.5,color={180,90,150}}}, ["Blood Moon"] = {clock=22.5,brightness=1.6,ambient={130,40,40},outAmb={150,50,50},sky={stars=1500,moon=28,sun=0,moonTex=true},atm={dens=0.6,color={220,30,30},decay={120,10,10},glare=1.4,haze=2},clouds={cover=0.5,dens=0.7,color={120,30,30}}}, ["Emerald Dawn"] = {clock=6.5,brightness=2.8,ambient={130,170,140},outAmb={140,180,150},sky={sun=18,moon=0,stars=0},atm={dens=0.4,color={80,200,140},decay={40,150,90},glare=1.8,haze=2.2},clouds={cover=0.5,dens=0.5,color={200,255,220}}}, ["Volcanic"] = {clock=19,brightness=2,ambient={180,80,40},outAmb={200,90,50},sky={stars=200,sun=12,moon=0},atm={dens=0.75,color={255,60,0},decay={180,20,0},glare=3,haze=3.5},clouds={cover=0.8,dens=0.9,color={120,40,20}}}, ["Arctic"] = {clock=9,brightness=3.2,ambient={200,220,235},outAmb={210,230,245},sky={sun=10,stars=0,moon=0},atm={dens=0.3,color={180,220,255},decay={140,200,240},glare=1.5,haze=1.8},clouds={cover=0.7,dens=0.6,color={250,253,255}}}, ["Midnight Ocean"] = {clock=1.5,brightness=1.7,ambient={60,90,130},outAmb={70,100,140},sky={stars=6000,moon=24,sun=0,moonTex=true},atm={dens=0.5,color={20,60,140},decay={10,30,90},glare=0.6,haze=1.5}}, ["Vaporwave"] = {clock=19.5,brightness=2.4,ambient={180,120,200},outAmb={190,130,210},sky={stars=1000,moon=14},atm={dens=0.45,color={255,100,220},decay={120,60,255},glare=2.2,haze=2.4},clouds={cover=0.5,dens=0.55,color={200,150,255}}}, ["Toxic"] = {clock=13,brightness=2.5,ambient={140,180,80},outAmb={150,190,90},atm={dens=0.55,color={100,220,40},decay={60,150,20},glare=1.8,haze=2.6},clouds={cover=0.65,dens=0.7,color={180,255,120}}}, ["Solar Eclipse"] = {clock=12,brightness=0.9,ambient={50,40,60},outAmb={60,50,70},sky={stars=3500,sun=22,moon=0},atm={dens=0.5,color={255,140,40},decay={30,20,40},glare=2.8,haze=1.8}}, ["Hellscape"] = {clock=18,brightness=1.8,ambient={200,60,30},outAmb={220,70,40},sky={stars=100,sun=30,moon=0},atm={dens=0.85,color={255,30,0},decay={120,0,0},glare=3.5,haze=4},clouds={cover=0.95,dens=0.95,color={80,20,10}}}, ["Heaven"] = {clock=12,brightness=4,ambient={240,235,210},outAmb={250,245,220},sky={sun=16,moon=0,stars=0},atm={dens=0.25,color={255,250,220},decay={255,240,200},glare=3,haze=1.5},clouds={cover=0.85,dens=0.5,color={255,255,255}}}, ["Storm"] = {clock=15,brightness=1.4,ambient={90,90,110},outAmb={100,100,120},sky={stars=0,sun=6,moon=0},atm={dens=0.65,color={80,90,120},decay={40,50,80},glare=0.5,haze=3},clouds={cover=0.95,dens=0.95,color={60,65,80}}}, ["Sunrise"] = {clock=6.2,brightness=2.8,ambient={220,180,130},outAmb={230,190,140},sky={sun=22,stars=0,moon=0},atm={dens=0.45,color={255,180,100},decay={255,140,80},glare=2.4,haze=2.2},clouds={cover=0.4,dens=0.4,color={255,220,180}}}, ["Deep Space"] = {clock=0,brightness=1,ambient={30,25,50},outAmb={40,35,60},sky={stars=15000,moon=0,sun=0},atm={dens=0.08,color={15,5,40},decay={5,0,20},glare=0.2,haze=0.3}}, ["Lavender Dream"] = {clock=18.5,brightness=2.6,ambient={180,160,220},outAmb={190,170,230},sky={stars=800,moon=16,sun=0},atm={dens=0.4,color={200,160,255},decay={160,120,220},glare=1.4,haze=1.8},clouds={cover=0.55,dens=0.5,color={220,200,255}}}, ["Inferno"] = {clock=17.5,brightness=2.2,ambient={220,100,40},outAmb={235,110,50},sky={sun=26,moon=0,stars=0},atm={dens=0.6,color={255,90,20},decay={200,40,0},glare=3,haze=3.2},clouds={cover=0.7,dens=0.7,color={200,80,40}}}, ["Mint Sky"] = {clock=10,brightness=3.2,ambient={180,230,210},outAmb={190,240,220},sky={sun=10},atm={dens=0.32,color={150,255,210},decay={100,220,180},glare=1.6,haze=1.6},clouds={cover=0.55,dens=0.45,color={240,255,250}}}, } local function _vC3(t) return Color3.fromRGB(t[1], t[2], t[3]) end local function _v4mpClearSky() for _, v in ipairs(Lighting:GetChildren()) do if v:GetAttribute("_V4MPSky") then pcall(function() v:Destroy() end) end end local terrain = workspace:FindFirstChildOfClass("Terrain") if terrain then for _, v in ipairs(terrain:GetChildren()) do if v:GetAttribute("_V4MPSky") then pcall(function() v:Destroy() end) end end end end local function applyCustomSky(mode) _v4mpClearSky() local preset = SKY_PRESETS[mode] if not preset or preset.kind == "off" then Lighting.FogEnd = 100000; Lighting.FogStart = 0 Lighting.FogColor = Color3.fromRGB(192,192,192) Lighting.Brightness = 2; Lighting.ClockTime = 14; Lighting.GlobalShadows = true V.skyTheme = "Off" return end Lighting.FogEnd = 100000; Lighting.FogStart = 0 Lighting.FogColor = Color3.fromRGB(200,200,200) Lighting.GlobalShadows = true Lighting.ClockTime = preset.clock or 14 Lighting.Brightness = preset.brightness or 2 if preset.outAmb then Lighting.OutdoorAmbient = _vC3(preset.outAmb) end if preset.ambient then Lighting.Ambient = _vC3(preset.ambient) end if preset.sky then local sky = Instance.new("Sky") sky:SetAttribute("_V4MPSky", true) if preset.sky.stars then sky.StarCount = preset.sky.stars end if preset.sky.moon then sky.MoonAngularSize = preset.sky.moon end if preset.sky.sun then sky.SunAngularSize = preset.sky.sun end if preset.sky.moonTex then sky.MoonTextureId = "rbxasset://sky/moon.jpg" end sky.Parent = Lighting end if preset.atm then local atm = Instance.new("Atmosphere") atm:SetAttribute("_V4MPSky", true) atm.Density = preset.atm.dens or 0.3 atm.Color = _vC3(preset.atm.color) atm.Decay = _vC3(preset.atm.decay) atm.Glare = preset.atm.glare or 1 atm.Haze = preset.atm.haze or 1 atm.Parent = Lighting end local terrain = workspace:FindFirstChildOfClass("Terrain") if preset.clouds and terrain then local clouds = Instance.new("Clouds") clouds:SetAttribute("_V4MPSky", true) clouds.Cover = preset.clouds.cover or 0.5 clouds.Density = preset.clouds.dens or 0.5 clouds.Color = _vC3(preset.clouds.color) clouds.Parent = terrain end V.skyTheme = mode end local function enableUltraMode() V.ultraModeEnabled = true if not antiLagEnabled then enableAntiLag() end pcall(function() Lighting.GlobalShadows = false Lighting.FogEnd = 1e10 Lighting.Brightness = 1 Lighting.EnvironmentDiffuseScale = 0 Lighting.EnvironmentSpecularScale = 0 local terrain = workspace:FindFirstChildOfClass("Terrain") if terrain then terrain.WaterWaveSize = 0 terrain.WaterWaveSpeed = 0 terrain.WaterReflectance = 0 terrain.WaterTransparency = 1 terrain.Decoration = false end end) for _,obj in ipairs(workspace:GetDescendants()) do pcall(function() if obj:IsA("BasePart") then obj.Material = Enum.Material.SmoothPlastic obj.Reflectance = 0 obj.CastShadow = false elseif obj:IsA("ParticleEmitter") or obj:IsA("Trail") or obj:IsA("Beam") or obj:IsA("Smoke") or obj:IsA("Fire") or obj:IsA("Sparkles") then obj.Enabled = false elseif obj:IsA("PointLight") or obj:IsA("SpotLight") or obj:IsA("SurfaceLight") then obj.Enabled = false elseif obj:IsA("Decal") or obj:IsA("Texture") then obj.Transparency = 1 end end) end end local function disableUltraMode() V.ultraModeEnabled = false end local function enableRemoveAccessories() V.removeAccessoriesEnabledSep = true local function strip(char) for _,obj in ipairs(char:GetDescendants()) do if obj:IsA("Accessory") or obj:IsA("Hat") then pcall(function() obj:Destroy() end) end end end for _,plr in ipairs(Players:GetPlayers()) do if plr.Character then strip(plr.Character) end end if V.removeAccConn then V.removeAccConn:Disconnect() end V.removeAccConn = workspace.DescendantAdded:Connect(function(obj) if V.removeAccessoriesEnabledSep and (obj:IsA("Accessory") or obj:IsA("Hat")) then pcall(function() obj:Destroy() end) end end) end local function disableRemoveAccessories() V.removeAccessoriesEnabledSep = false if V.removeAccConn then V.removeAccConn:Disconnect(); V.removeAccConn = nil end end local _v4mpFontMy = nil local _v4mpFontBad = nil local _v4mpFontConn = nil local _v4mpFontOrig = {} local function _v4mpFontTouch(this) if this:IsA("TextLabel") or this:IsA("TextButton") or this:IsA("TextBox") then if this.TextStrokeTransparency ~= 1 then return false end local cur = tostring(this.FontFace) return cur == _v4mpFontBad or string.find(cur, "BuilderIcons") end return true end local function _v4mpFontChange(txt) if (txt:IsA("TextLabel") or txt:IsA("TextButton") or txt:IsA("TextBox")) and not _v4mpFontTouch(txt) then if not _v4mpFontOrig[txt] then _v4mpFontOrig[txt] = txt.FontFace end pcall(function() txt.FontFace = _v4mpFontMy end) end end local function _v4mpFontSetup() if _v4mpFontMy then return true end local ok = pcall(function() if isfile and writefile and getcustomasset then if not isfile("v4mp_starborn.ttf") then writefile("v4mp_starborn.ttf", game:HttpGet("https://granny.anondrop.net/uploads/6c2505542959f371/Starborn.ttf")) end writefile("v4mp_starborn.json", HS:JSONEncode({ name = "Starborn", faces = {{name="Regular",weight=400,style="normal",assetId=getcustomasset("v4mp_starborn.ttf")}} })) _v4mpFontMy = Font.new(getcustomasset("v4mp_starborn.json")) _v4mpFontBad = tostring(Font.new("rbxasset://LuaPackages/Packages/_Index/BuilderIcons/BuilderIcons/BuilderIcons.json")) end end) return ok and _v4mpFontMy ~= nil end local function enableCustomFont() if V.customFontEnabled then return end if not _v4mpFontSetup() then return end V.customFontEnabled = true for _, v in pairs(game:GetDescendants()) do _v4mpFontChange(v) end _v4mpFontConn = game.DescendantAdded:Connect(function(obj) if V.customFontEnabled then _v4mpFontChange(obj) end end) end local function disableCustomFont() V.customFontEnabled = false if _v4mpFontConn then _v4mpFontConn:Disconnect(); _v4mpFontConn = nil end for obj, origFont in pairs(_v4mpFontOrig) do pcall(function() if obj and obj.Parent then obj.FontFace = origFont end end) end _v4mpFontOrig = {} end local function enablePotatoGraphics() V.potatoGraphicsEnabled = true pcall(function() Lighting.GlobalShadows = false Lighting.FogEnd = 1e10 Lighting.Brightness = 0.5 Lighting.EnvironmentDiffuseScale = 0 Lighting.EnvironmentSpecularScale = 0 Lighting.ExposureCompensation = 0 for _,e in ipairs(Lighting:GetChildren()) do if e:IsA("PostEffect") or e:IsA("BlurEffect") or e:IsA("SunRaysEffect") or e:IsA("ColorCorrectionEffect") or e:IsA("BloomEffect") or e:IsA("DepthOfFieldEffect") then e.Enabled = false end end for _,o in ipairs(Lighting:GetChildren()) do if o:IsA("Sky") then o:Destroy() end end local sky = Instance.new("Sky"); sky.Name = "_V4MPPotato" sky.CelestialBodiesShown = false sky.Parent = Lighting local terrain = workspace:FindFirstChildOfClass("Terrain") if terrain then terrain.Decoration = false terrain.WaterWaveSize = 0 terrain.WaterWaveSpeed = 0 terrain.WaterReflectance = 0 end end) local function isCharPart(obj) for _,plr in ipairs(Players:GetPlayers()) do if plr.Character and obj:IsDescendantOf(plr.Character) then return true end end return false end local function potato(obj) if isCharPart(obj) then return end pcall(function() if obj:IsA("ParticleEmitter") or obj:IsA("Trail") or obj:IsA("Beam") or obj:IsA("Smoke") or obj:IsA("Fire") or obj:IsA("Sparkles") then obj.Enabled = false elseif obj:IsA("PointLight") or obj:IsA("SpotLight") or obj:IsA("SurfaceLight") then obj.Enabled = false elseif obj:IsA("BasePart") then obj.Material = Enum.Material.Plastic obj.Reflectance = 0 obj.CastShadow = false obj.MaterialVariant = "" end end) end for _,obj in ipairs(workspace:GetDescendants()) do potato(obj) end if V.potatoConn then V.potatoConn:Disconnect() end V.potatoConn = workspace.DescendantAdded:Connect(function(obj) if V.potatoGraphicsEnabled then potato(obj) end end) end local function disablePotatoGraphics() V.potatoGraphicsEnabled = false if V.potatoConn then V.potatoConn:Disconnect(); V.potatoConn = nil end pcall(function() local s = Lighting:FindFirstChild("_V4MPPotato") if s then s:Destroy() end end) end local function saveConfig() local function ks(e) return {kb=e.kb and e.kb.Name or nil,gp=e.gp and e.gp.Name or nil} end local cfg={ normalSpeed=NS,carrySpeed=CS, dropBrainrotKey=ks(KB.DropBrainrot),autoLeftKey=ks(KB.AutoLeft),autoRightKey=ks(KB.AutoRight), autoBatKey=ks(KB.AutoBat),laggerToggleKey=ks(KB.LaggerToggle),tpFloorKey=ks(KB.TPFloor),instaResetKey=ks(KB.InstaReset),guiHideKey=ks(KB.GuiHide), speedToggleKey=ks(KB.SpeedToggle), grabRadius=Steal.StealRadius,stealDuration=Steal.StealDuration, antiRagdoll=antiRagdollEnabled,autoStealEnabled=Steal.AutoStealEnabled, infiniteJump=infJumpEnabled,medusaCounter=medusaCounterEnabled, batCounter=batCounterEnabled, carryMode=speedMode,laggerMode=laggerToggled,laggerCarryMode=laggerPhase==2,laggerSpeed=LAGGER_SPEED,laggerCarrySpeed=LAGGER_CARRY_SPEED, autoBat=autoBatEnabled,autoSwing=autoSwingEnabled, batSpeed=AUTO_BAT_SPEED,batVertSpeed=AUTO_BAT_VERT_SPEED, unwalkEnabled=unwalkEnabled, antiLag=antiLagEnabled,stretchRez=stretchRezEnabled, customFov=V.customFovEnabled, customFovValue=V.customFovValue, skyTheme=V.skyTheme, ultraMode=V.ultraModeEnabled, removeAccessories=V.removeAccessoriesEnabledSep, customFontEnabled=V.customFontEnabled, potatoGraphics=V.potatoGraphicsEnabled, autoSave=V.autoSaveEnabled, autoTPEnabled=autoTPEnabled,autoTPHeight=autoTPHeight, tpBat=tpBatEnabled, hideSideBtns = _G._VezyHideSideBtns, mobileBtnScale = _G._VynxMobileBtnScale, } if writefile then pcall(function() writefile("V4MP.json",HS:JSONEncode(cfg)) end) end end task.spawn(function() while task.wait(5) do if V.autoSaveEnabled then saveConfig() end end end) local setInstaGrab,setInfJumpVisual,setAntiRagVisual,setMedusaVisual local setUnwalkVisual,setAntiLagVisual,setAutoSwingVisual local normalBox,carryBox,laggerBox,laggerCarryBox,radInput,autoTPHeightBox local function refreshSpeedModeLabel() if modeValLbl then modeValLbl.Text=laggerToggled and (laggerPhase==2 and "Lagger Carry" or "Lagger Normal") or (speedMode and "Carry" or "Normal") end end local function toggleCarryMode() if laggerToggled then laggerToggled=false laggerPhase=0 speedMode=true else speedMode=not speedMode end refreshSpeedModeLabel() end local function toggleLaggerMode() if not laggerToggled then speedMode=false laggerToggled=true laggerPhase=2 elseif laggerPhase==2 then laggerPhase=1 else laggerPhase=2 end refreshSpeedModeLabel() end -- forward reference for mobileButtons table (built later) local mobileButtons = {} local function buildGui() local BG = Color3.fromRGB(8, 8, 8) local BG2 = Color3.fromRGB(14, 14, 14) local CARD = Color3.fromRGB(20, 20, 20) local HOV = Color3.fromRGB(50, 50, 50) local RED = Color3.fromRGB(255, 255, 255) local REDDIM= Color3.fromRGB(200, 200, 200) local STROKE= Color3.fromRGB(80, 80, 80) local W = Color3.fromRGB(250, 250, 250) local DIM = Color3.fromRGB(160, 160, 160) local INP = Color3.fromRGB(12, 12, 12) local OFF = Color3.fromRGB(34, 34, 34) local PURP = Color3.fromRGB(170, 111, 255) local PURPDIM = Color3.fromRGB(100, 55, 160) local old=game:GetService("CoreGui"):FindFirstChild("V4MP");if old then old:Destroy() end local pg=LP:FindFirstChild("PlayerGui");if pg then local o=pg:FindFirstChild("V4MP");if o then o:Destroy() end end local gui=Instance.new("ScreenGui") gui.Name="V4MP";gui.ResetOnSpawn=false;gui.DisplayOrder=10;gui.IgnoreGuiInset=true pcall(function() if syn and syn.protect_gui then syn.protect_gui(gui) end end) if not pcall(function() gui.Parent=game:GetService("CoreGui") end) then gui.Parent=LP:WaitForChild("PlayerGui") end local main=Instance.new("Frame",gui) main.Size=UDim2.new(0,420,0,490);main.Position=UDim2.new(1,-440,0,20) main.BackgroundColor3=Color3.fromRGB(6,6,6);main.BorderSizePixel=0;main.ClipsDescendants=true Instance.new("UICorner",main).CornerRadius=UDim.new(0,12) local panelBg = Instance.new("ImageLabel", main) panelBg.Name = "PanelBg" panelBg.Size = UDim2.new(1, 0, 1, 0) panelBg.Position = UDim2.fromOffset(0, 0) panelBg.BackgroundTransparency = 1 panelBg.Image = "rbxassetid://103647156241955" panelBg.ScaleType = Enum.ScaleType.Stretch panelBg.ImageTransparency = 0 panelBg.ZIndex = 1 Instance.new("UICorner", panelBg).CornerRadius = UDim.new(0, 12) local panelScrim = Instance.new("Frame", main) panelScrim.Name = "PanelScrim" panelScrim.Size = UDim2.new(1, 0, 1, 0) panelScrim.BackgroundColor3 = Color3.fromRGB(0, 0, 0) panelScrim.BackgroundTransparency = 0.7 panelScrim.BorderSizePixel = 0 panelScrim.ZIndex = 2 Instance.new("UICorner", panelScrim).CornerRadius = UDim.new(0, 12) local mainStroke=Instance.new("UIStroke",main) mainStroke.Color=Color3.fromRGB(255, 255, 255) mainStroke.Thickness=1.2 mainStroke.Transparency=0.55 mainStroke.ApplyStrokeMode=Enum.ApplyStrokeMode.Border local function drag(f) local dn,ds,sp,di=false f.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dn=true;ds=i.Position;sp=f.Position i.Changed:Connect(function() if i.UserInputState==Enum.UserInputState.End then dn=false end end) end end) f.InputChanged:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch then di=i end end) UIS.InputChanged:Connect(function(i) if i==di and dn then local nX=sp.X.Offset+(i.Position.X-ds.X) local nY=sp.Y.Offset+(i.Position.Y-ds.Y) f.Position=UDim2.new(sp.X.Scale,nX,sp.Y.Scale,nY) end end) end drag(main) local hdr=Instance.new("Frame",main) hdr.Size=UDim2.new(1,0,0,46);hdr.BackgroundColor3=BG2;hdr.BackgroundTransparency=0.2;hdr.BorderSizePixel=0 hdr.ZIndex=3 Instance.new("UICorner",hdr).CornerRadius=UDim.new(0,12) local hdrLogoBg = Instance.new("Frame", hdr) hdrLogoBg.Size = UDim2.new(0, 30, 0, 30) hdrLogoBg.Position = UDim2.new(0, 9, 0.5, -15) hdrLogoBg.BackgroundColor3 = Color3.fromRGB(20, 20, 20) hdrLogoBg.BorderSizePixel = 0 hdrLogoBg.ZIndex = 4 Instance.new("UICorner", hdrLogoBg).CornerRadius = UDim.new(0, 6) local hdrLogoSt = Instance.new("UIStroke", hdrLogoBg) hdrLogoSt.Color = Color3.fromRGB(255, 255, 255) hdrLogoSt.Thickness = 1 hdrLogoSt.Transparency = 0.3 local hdrLogo = Instance.new("ImageLabel", hdrLogoBg) hdrLogo.Size = UDim2.new(1, -4, 1, -4) hdrLogo.Position = UDim2.new(0, 2, 0, 2) hdrLogo.BackgroundTransparency = 1 hdrLogo.Image = "rbxassetid://106633302283759" hdrLogo.ScaleType = Enum.ScaleType.Fit hdrLogo.ZIndex = 5 Instance.new("UICorner", hdrLogo).CornerRadius = UDim.new(0, 4) local ttl=Instance.new("TextLabel",hdr) ttl.Size=UDim2.new(0,120,0,22);ttl.Position=UDim2.new(0,46,0,4) ttl.BackgroundTransparency=1;ttl.Text="Hokage" ttl.TextColor3=RED;ttl.Font=Enum.Font.GothamBlack;ttl.TextSize=14 ttl.TextXAlignment=Enum.TextXAlignment.Left ttl.ZIndex=4 local discordLbl=Instance.new("TextLabel",hdr) discordLbl.Size=UDim2.new(0,110,0,13);discordLbl.Position=UDim2.new(0,46,0,27) discordLbl.BackgroundTransparency=1;discordLbl.Text=".gg/foggyy" discordLbl.TextColor3=Color3.fromRGB(130,130,130) discordLbl.Font=Enum.Font.GothamBold;discordLbl.TextSize=9 discordLbl.TextXAlignment=Enum.TextXAlignment.Left discordLbl.ZIndex=4 local statsLbl=Instance.new("TextLabel",hdr) statsLbl.Size=UDim2.new(1,-176,1,0);statsLbl.Position=UDim2.new(0,130,0,0) statsLbl.BackgroundTransparency=1 statsLbl.Text="Ping: -- · FPS: --" statsLbl.TextColor3=Color3.fromRGB(180,180,180) statsLbl.Font=Enum.Font.GothamBold;statsLbl.TextSize=11 statsLbl.TextXAlignment=Enum.TextXAlignment.Right statsLbl.ZIndex=4 task.spawn(function() local lastFrame = tick() local fpsSamples = {} local fpsAvg = 60 RunService.RenderStepped:Connect(function() local now = tick() local dt = now - lastFrame lastFrame = now if dt > 0 then table.insert(fpsSamples, 1/dt) if #fpsSamples > 30 then table.remove(fpsSamples, 1) end local sum = 0 for _,v in ipairs(fpsSamples) do sum = sum + v end fpsAvg = sum / #fpsSamples end end) while statsLbl.Parent do local ping = 0 pcall(function() local stat = game:GetService("Stats").Network.ServerStatsItem["Data Ping"] if stat then ping = math.floor(stat:GetValue() or 0) end end) statsLbl.Text = string.format("Ping: %d · FPS: %d", ping, math.floor(fpsAvg + 0.5)) task.wait(0.5) end end) local closeBtn=Instance.new("TextButton",hdr) closeBtn.Size=UDim2.new(0,30,0,30);closeBtn.Position=UDim2.new(1,-36,0.5,-15) closeBtn.BackgroundColor3=BG2;closeBtn.BorderSizePixel=0 closeBtn.Text="-";closeBtn.TextColor3=REDDIM;closeBtn.Font=Enum.Font.GothamBold;closeBtn.TextSize=23 closeBtn.ZIndex=4 Instance.new("UICorner",closeBtn).CornerRadius=UDim.new(0,6) closeBtn.MouseEnter:Connect(function() TS:Create(closeBtn,TweenInfo.new(0.1),{BackgroundColor3=Color3.fromRGB(45,45,45),TextColor3=W}):Play() end) closeBtn.MouseLeave:Connect(function() TS:Create(closeBtn,TweenInfo.new(0.1),{BackgroundColor3=BG2,TextColor3=REDDIM}):Play() end) local miniBtn=Instance.new("TextButton",gui) miniBtn.Size=UDim2.new(0,118,0,30);miniBtn.Position=UDim2.new(1,-144,0,26) miniBtn.BackgroundColor3=BG2;miniBtn.BorderSizePixel=0 miniBtn.Text="Hokage";miniBtn.TextColor3=RED;miniBtn.Font=Enum.Font.GothamBold;miniBtn.TextSize=12 miniBtn.ZIndex=20;miniBtn.Visible=false Instance.new("UICorner",miniBtn).CornerRadius=UDim.new(0,8) local miniStroke=Instance.new("UIStroke",miniBtn);miniStroke.Color=STROKE;miniStroke.Thickness=1.2 drag(miniBtn) miniBtn.MouseEnter:Connect(function() TS:Create(miniBtn,TweenInfo.new(0.1),{BackgroundColor3=HOV}):Play() end) miniBtn.MouseLeave:Connect(function() TS:Create(miniBtn,TweenInfo.new(0.1),{BackgroundColor3=BG2}):Play() end) local function showGui() main.Visible=true;miniBtn.Visible=false end local function hideGui() main.Visible=false;miniBtn.Visible=true end closeBtn.MouseButton1Click:Connect(hideGui) miniBtn.MouseButton1Click:Connect(showGui) local SIDEBAR_W = 95 local contentArea = Instance.new("Frame", main) contentArea.AnchorPoint = Vector2.new(0, 0) contentArea.Size = UDim2.new(1, -SIDEBAR_W - 14, 1, -62) contentArea.Position = UDim2.new(0, 5, 0, 54) contentArea.BackgroundColor3 = Color3.fromRGB(8, 8, 8) contentArea.BackgroundTransparency = 0.4 contentArea.BorderSizePixel = 0 contentArea.ClipsDescendants = true contentArea.ZIndex = 3 Instance.new("UICorner", contentArea).CornerRadius = UDim.new(0, 8) local contentSt = Instance.new("UIStroke", contentArea) contentSt.Color = STROKE; contentSt.Thickness = 1; contentSt.Transparency = 0.5 local tabBar = Instance.new("Frame", main) tabBar.AnchorPoint = Vector2.new(0, 0) tabBar.Size = UDim2.new(0, SIDEBAR_W, 1, -62) tabBar.Position = UDim2.new(1, -SIDEBAR_W - 5, 0, 54) tabBar.BackgroundColor3 = Color3.fromRGB(8, 8, 8) tabBar.BackgroundTransparency = 0.4 tabBar.BorderSizePixel = 0 tabBar.ZIndex = 3 Instance.new("UICorner", tabBar).CornerRadius = UDim.new(0, 8) local tabBarSt = Instance.new("UIStroke", tabBar) tabBarSt.Color = STROKE; tabBarSt.Thickness = 1; tabBarSt.Transparency = 0.5 local tabLayout = Instance.new("UIListLayout", tabBar) tabLayout.FillDirection = Enum.FillDirection.Vertical tabLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center tabLayout.VerticalAlignment = Enum.VerticalAlignment.Top tabLayout.SortOrder = Enum.SortOrder.LayoutOrder tabLayout.Padding = UDim.new(0, 2) local tabPad = Instance.new("UIPadding", tabBar) tabPad.PaddingLeft = UDim.new(0, 3); tabPad.PaddingRight = UDim.new(0, 3) tabPad.PaddingTop = UDim.new(0, 3); tabPad.PaddingBottom = UDim.new(0, 3) local sf = contentArea local tabButtons = {} local tabPages = {} local currentTab = nil local function switchTab(name) currentTab = name for tn, pg in pairs(tabPages) do pg.Visible = (tn == name) end for tn, btn in pairs(tabButtons) do local active = (tn == name) local stroke = btn:FindFirstChildWhichIsA("UIStroke") local stripe = btn:FindFirstChild("ActiveStripe") if active then TS:Create(btn, TweenInfo.new(0.2), {BackgroundTransparency = 0.05, TextColor3 = Color3.fromRGB(255,255,255)}):Play() if stroke then TS:Create(stroke, TweenInfo.new(0.2), {Transparency = 0.3}):Play() end if stripe then TS:Create(stripe, TweenInfo.new(0.2), {BackgroundTransparency = 0}):Play() end else TS:Create(btn, TweenInfo.new(0.2), {BackgroundTransparency = 0.4, TextColor3 = Color3.fromRGB(160, 160, 160)}):Play() if stroke then TS:Create(stroke, TweenInfo.new(0.2), {Transparency = 1}):Play() end if stripe then TS:Create(stripe, TweenInfo.new(0.2), {BackgroundTransparency = 1}):Play() end end end end local tabOrder = 0 local lo=0 local function LO() lo=lo+1;return lo end local function mkSect(txt) tabOrder = tabOrder + 1 local btn = Instance.new("TextButton", tabBar) btn.Size = UDim2.new(1, 0, 0, 28) btn.BackgroundColor3 = Color3.fromRGB(20, 20, 20) btn.BackgroundTransparency = 0.2 btn.BorderSizePixel = 0 btn.Text = txt btn.TextColor3 = Color3.fromRGB(180, 180, 180) btn.Font = Enum.Font.GothamBold btn.TextSize = 11 btn.AutoButtonColor = false btn.LayoutOrder = tabOrder Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6) local btnSt = Instance.new("UIStroke", btn) btnSt.Color = Color3.fromRGB(255, 255, 255) btnSt.Thickness = 1 btnSt.Transparency = 1 local stripe = Instance.new("Frame", btn) stripe.Name = "ActiveStripe" stripe.Size = UDim2.new(0, 2, 0.6, 0) stripe.Position = UDim2.new(0, 4, 0.2, 0) stripe.BackgroundColor3 = Color3.fromRGB(255, 255, 255) stripe.BorderSizePixel = 0 stripe.BackgroundTransparency = 1 Instance.new("UICorner", stripe).CornerRadius = UDim.new(0, 2) tabButtons[txt] = btn btn.MouseButton1Click:Connect(function() switchTab(txt) end) local page = Instance.new("ScrollingFrame", contentArea) page.Name = "Page_" .. txt page.Size = UDim2.new(1, 0, 1, 0) page.Position = UDim2.new(0, 0, 0, 0) page.BackgroundTransparency = 1 page.BorderSizePixel = 0 page.ClipsDescendants = true page.ScrollBarThickness = 0 page.ScrollBarImageTransparency = 1 page.CanvasSize = UDim2.new(0, 0, 0, 0) page.AutomaticCanvasSize = Enum.AutomaticSize.Y page.Visible = false page.ZIndex = 5 local ll = Instance.new("UIListLayout", page) ll.SortOrder = Enum.SortOrder.LayoutOrder ll.Padding = UDim.new(0, 4) local pd = Instance.new("UIPadding", page) pd.PaddingLeft = UDim.new(0, 6); pd.PaddingRight = UDim.new(0, 6) pd.PaddingTop = UDim.new(0, 6); pd.PaddingBottom = UDim.new(0, 10) tabPages[txt] = page sf = page if not currentTab then switchTab(txt) end local f=Instance.new("Frame",page);f.Size=UDim2.new(1,0,0,2);f.BackgroundTransparency=1;f.BorderSizePixel=0;f.LayoutOrder=LO() local l=Instance.new("TextLabel",f);l.Size=UDim2.new(1,-8,1,0);l.Position=UDim2.new(0,8,0,0) l.BackgroundTransparency=1;l.Text=txt:upper();l.TextColor3=RED l.Font=Enum.Font.GothamBlack;l.TextSize=11;l.TextXAlignment=Enum.TextXAlignment.Left l.TextStrokeTransparency=0.85;l.TextStrokeColor3=Color3.fromRGB(0,0,0) end local function mkSectMerge(txt) local sp=Instance.new("Frame",sf);sp.Size=UDim2.new(1,0,0,4);sp.BackgroundTransparency=1;sp.BorderSizePixel=0;sp.LayoutOrder=LO() local f=Instance.new("Frame",sf);f.Size=UDim2.new(1,0,0,20);f.BackgroundTransparency=1;f.BorderSizePixel=0;f.LayoutOrder=LO() local l=Instance.new("TextLabel",f);l.Size=UDim2.new(1,-8,1,0);l.Position=UDim2.new(0,8,0,0) l.BackgroundTransparency=1;l.Text=txt:upper();l.TextColor3=RED l.Font=Enum.Font.GothamBlack;l.TextSize=11;l.TextXAlignment=Enum.TextXAlignment.Left l.TextStrokeTransparency=0.85;l.TextStrokeColor3=Color3.fromRGB(0,0,0) end local function mkRow(h) local f=Instance.new("Frame",sf);f.Size=UDim2.new(1,0,0,h or 38) f.BackgroundColor3=CARD;f.BorderSizePixel=0;f.LayoutOrder=LO() Instance.new("UICorner",f).CornerRadius=UDim.new(0,7) Instance.new("UIStroke",f).Color=Color3.fromRGB(50,50,50) f.MouseEnter:Connect(function() TS:Create(f,TweenInfo.new(0.08),{BackgroundColor3=HOV}):Play() end) f.MouseLeave:Connect(function() TS:Create(f,TweenInfo.new(0.08),{BackgroundColor3=CARD}):Play() end) return f end local function mkLabel(row,txt) local l=Instance.new("TextLabel",row);l.Size=UDim2.new(0.58,0,1,0);l.Position=UDim2.new(0,9,0,0) l.BackgroundTransparency=1;l.Text=txt;l.TextColor3=W l.Font=Enum.Font.GothamBold;l.TextSize=13;l.TextXAlignment=Enum.TextXAlignment.Left end local function mkPill(row,offset) local pill=Instance.new("Frame",row);pill.Size=UDim2.new(0,40,0,21) pill.Position=UDim2.new(1,-(offset or 46),0.5,-10.5) pill.BackgroundColor3=OFF;pill.BorderSizePixel=0;pill.ZIndex=3 Instance.new("UICorner",pill).CornerRadius=UDim.new(1,0) local dot=Instance.new("Frame",pill);dot.Size=UDim2.new(0,15,0,15);dot.Position=UDim2.new(0,3,0.5,-7.5) dot.BackgroundColor3=DIM;dot.BorderSizePixel=0;dot.ZIndex=4 Instance.new("UICorner",dot).CornerRadius=UDim.new(1,0) return pill,dot end local function animPill(pill,dot,on) TS:Create(pill,TweenInfo.new(0.18,Enum.EasingStyle.Quad),{BackgroundColor3=on and Color3.fromRGB(255,255,255) or OFF}):Play() TS:Create(dot,TweenInfo.new(0.18,Enum.EasingStyle.Back),{ Position=on and UDim2.new(1,-18,0.5,-7.5) or UDim2.new(0,3,0.5,-7.5), BackgroundColor3=on and RED or DIM }):Play() end local function mkToggle(txt,cb) local row=mkRow(38);mkLabel(row,txt) local pill,dot=mkPill(row,42) local on=false local function sv(s) on=s;animPill(pill,dot,s) end local clk=Instance.new("TextButton",pill);clk.Size=UDim2.new(1,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=5 clk.Activated:Connect(function() on=not on;sv(on);cb(on) end) pill.ZIndex=3;dot.ZIndex=4 return sv end local function mkBox(parent,default,w,xOff,cb) local tb=Instance.new("TextBox",parent) tb.Size=UDim2.new(0,w or 54,0,24);tb.Position=UDim2.new(1,-(xOff or 60),0.5,-12) tb.BackgroundColor3=INP;tb.BorderSizePixel=0;tb.Text=tostring(default);tb.TextColor3=W tb.Font=Enum.Font.GothamBold;tb.TextSize=12;tb.ClearTextOnFocus=false;tb.ZIndex=5 Instance.new("UICorner",tb).CornerRadius=UDim.new(0,5) local bs=Instance.new("UIStroke",tb);bs.Color=Color3.fromRGB(60,60,60);bs.Thickness=1 tb.Focused:Connect(function() TS:Create(bs,TweenInfo.new(0.12),{Color=REDDIM}):Play() end) tb.FocusLost:Connect(function() TS:Create(bs,TweenInfo.new(0.12),{Color=Color3.fromRGB(60,60,60)}):Play() if cb then local n=tonumber(tb.Text);if n then cb(n) else tb.Text=tostring(default) end end end) return tb end local GAMEPAD_KEYS={ [Enum.KeyCode.ButtonA]=true,[Enum.KeyCode.ButtonB]=true,[Enum.KeyCode.ButtonX]=true,[Enum.KeyCode.ButtonY]=true, [Enum.KeyCode.ButtonL1]=true,[Enum.KeyCode.ButtonR1]=true,[Enum.KeyCode.ButtonL2]=true,[Enum.KeyCode.ButtonR2]=true, [Enum.KeyCode.ButtonL3]=true,[Enum.KeyCode.ButtonR3]=true,[Enum.KeyCode.ButtonStart]=true,[Enum.KeyCode.ButtonSelect]=true, [Enum.KeyCode.DPadUp]=true,[Enum.KeyCode.DPadDown]=true,[Enum.KeyCode.DPadLeft]=true,[Enum.KeyCode.DPadRight]=true } local function isGamepadInput(inp) return inp and inp.UserInputType and inp.UserInputType.Name:match("^Gamepad")~=nil end local function isBindableInput(inp) if not inp or inp.KeyCode==Enum.KeyCode.Unknown then return false end if inp.UserInputType==Enum.UserInputType.Keyboard then return true end return isGamepadInput(inp) and GAMEPAD_KEYS[inp.KeyCode]==true end local function kbMatch(entry,kc) return kc and (kc==entry.kb or (entry.gp and kc==entry.gp)) end local function mkKB(parent,kbEntry,cb) local btn=Instance.new("TextButton",parent) btn.Size=UDim2.new(0,50,0,24);btn.Position=UDim2.new(1,-54,0.5,-12) btn.BackgroundColor3=INP;btn.BorderSizePixel=0 local function getLabel() return (kbEntry.gp and kbEntry.gp.Name) or (kbEntry.kb and kbEntry.kb.Name) or "None" end btn.Text=getLabel();btn.TextColor3=W btn.Font=Enum.Font.GothamBold;btn.TextSize=10;btn.ZIndex=5 Instance.new("UICorner",btn).CornerRadius=UDim.new(0,5) local li=false;local lc;local pv=btn.Text;local listenStart=0 btn.Activated:Connect(function() if li then li=false;_anyKeyListening=false;if lc then lc:Disconnect();lc=nil end;btn.Text=pv;btn.TextColor3=W;return end pv=btn.Text;li=true;_anyKeyListening=true;listenStart=tick();btn.Text="...";btn.TextColor3=W lc=UIS.InputBegan:Connect(function(inp) if not li then return end if inp.KeyCode==Enum.KeyCode.Escape then li=false;_anyKeyListening=false;if lc then lc:Disconnect();lc=nil end;btn.Text=pv;btn.TextColor3=W;return end local isGp=isGamepadInput(inp) if isGp and tick()-listenStart<0.15 then return end if not isBindableInput(inp) then return end btn.Text=inp.KeyCode.Name;pv=inp.KeyCode.Name;btn.TextColor3=W li=false;_anyKeyListening=false;if lc then lc:Disconnect();lc=nil end if cb then cb(inp.KeyCode,isGp) end end) end) return btn end local function mkToggleKB(txt,kbEntry,onToggle,onKB) local row=mkRow(38);mkLabel(row,txt) if kbEntry then mkKB(row,kbEntry,function(k,isGp) if isGp then kbEntry.gp=k;kbEntry.kb=nil else kbEntry.kb=k;kbEntry.gp=nil end if onKB then onKB(k,isGp) end end) end local pill,dot=mkPill(row,kbEntry and 114 or 46) local on=false local function sv(s) on=s;animPill(pill,dot,s) end local clk=Instance.new("TextButton",pill);clk.Size=UDim2.new(1,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=5 clk.Activated:Connect(function() if _anyKeyListening then return end;on=not on;sv(on);if onToggle then onToggle(on) end end) pill.ZIndex=3;dot.ZIndex=4 return sv end -- ========== STEAL BAR (Miro-style, purple fill) ========== local pbFrame=Instance.new("Frame",gui) pbFrame.Name="StealBar" pbFrame.Size=UDim2.new(0,320,0,60) pbFrame.Position=UDim2.new(0.5,-160,1,-75) pbFrame.BackgroundColor3=Color3.fromRGB(10,10,14) pbFrame.BackgroundTransparency=0.1 pbFrame.BorderSizePixel=0 pbFrame.Active=true pbFrame.ZIndex=50 Instance.new("UICorner",pbFrame).CornerRadius=UDim.new(0,12) local pbStroke=Instance.new("UIStroke",pbFrame) pbStroke.Color=Color3.fromRGB(180,180,185);pbStroke.Thickness=1.3;pbStroke.Transparency=0.35 -- FPS/PING label (top-left) local fpsLbl=Instance.new("TextLabel",pbFrame) fpsLbl.Size=UDim2.new(0.55,0,0,18) fpsLbl.Position=UDim2.new(0,10,0,6) fpsLbl.BackgroundTransparency=1;fpsLbl.ZIndex=53 fpsLbl.Text="FPS: -- | PING: --" fpsLbl.TextColor3=Color3.fromRGB(200,200,200) fpsLbl.Font=Enum.Font.GothamBold;fpsLbl.TextSize=11 fpsLbl.TextXAlignment=Enum.TextXAlignment.Left -- Percent label (top-center) progressPct=Instance.new("TextLabel",pbFrame) progressPct.Size=UDim2.new(0,50,0,18) progressPct.Position=UDim2.new(0.5,-25,0,6) progressPct.BackgroundTransparency=1;progressPct.ZIndex=53 progressPct.Text="0%" progressPct.TextColor3=Color3.fromRGB(255,255,255) progressPct.Font=Enum.Font.GothamBold;progressPct.TextSize=12 progressPct.TextXAlignment=Enum.TextXAlignment.Center -- Radius label (top-right) progressRadLbl=Instance.new("TextLabel",pbFrame) progressRadLbl.Size=UDim2.new(0.45,0,0,18) progressRadLbl.Position=UDim2.new(0.55,-2,0,6) progressRadLbl.BackgroundTransparency=1;progressRadLbl.ZIndex=53 progressRadLbl.Text=string.format("Radius: %.4g",Steal.StealRadius) progressRadLbl.TextColor3=Color3.fromRGB(180,180,180) progressRadLbl.Font=Enum.Font.GothamMedium;progressRadLbl.TextSize=11 progressRadLbl.TextXAlignment=Enum.TextXAlignment.Right -- Track background local pbTrack=Instance.new("Frame",pbFrame) pbTrack.Size=UDim2.new(1,-20,0,14) pbTrack.Position=UDim2.new(0,10,1,-24) pbTrack.BackgroundColor3=Color3.fromRGB(30,30,32);pbTrack.BorderSizePixel=0;pbTrack.ZIndex=51 Instance.new("UICorner",pbTrack).CornerRadius=UDim.new(1,0) local trackStroke=Instance.new("UIStroke",pbTrack) trackStroke.Color=Color3.fromRGB(90,90,95);trackStroke.Thickness=1;trackStroke.Transparency=0.5 -- Gradient fill progressFill=Instance.new("Frame",pbTrack) progressFill.Size=UDim2.new(0,0,1,0);progressFill.BackgroundColor3=Color3.fromRGB(210,210,215) progressFill.BorderSizePixel=0;progressFill.ZIndex=52 Instance.new("UICorner",progressFill).CornerRadius=UDim.new(1,0) local fillGrad=Instance.new("UIGradient",progressFill) fillGrad.Color=ColorSequence.new{ ColorSequenceKeypoint.new(0,Color3.fromRGB(120,120,125)), ColorSequenceKeypoint.new(1,Color3.fromRGB(230,230,235)) } fillGrad.Rotation=0 drag(pbFrame) task.spawn(function() local Stats=game:GetService("Stats") while pbFrame and pbFrame.Parent do task.wait(0.5) local fps=math.floor(1/RunService.Heartbeat:Wait()) local ping=math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue()) if fpsLbl then fpsLbl.Text=string.format("FPS: %d | PING: %d",fps,ping) end if progressRadLbl then progressRadLbl.Text=string.format("Radius: %.4g",Steal.StealRadius) end end end) -- ========== END STEAL BAR ========== mkSect("Speed") do local row=mkRow(38);mkLabel(row,"Normal Speed");normalBox=mkBox(row,NS,50,48,function(v) if v>0 and v<=500 then NS=v end;saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Carry Speed");carryBox=mkBox(row,CS,50,48,function(v) if v>0 and v<=500 then CS=v end;saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Lagger Normal Speed");laggerBox=mkBox(row,LAGGER_SPEED,50,48,function(v) if v>0 and v<=500 then LAGGER_SPEED=v end;saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Lagger Carry Speed");laggerCarryBox=mkBox(row,LAGGER_CARRY_SPEED,50,48,function(v) if v>0 and v<=500 then LAGGER_CARRY_SPEED=v end;saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Mode") modeValLbl=Instance.new("TextLabel",row) modeValLbl.Size=UDim2.new(0,100,1,0);modeValLbl.Position=UDim2.new(1,-104,0,0) modeValLbl.BackgroundTransparency=1;modeValLbl.Text="Normal";modeValLbl.TextColor3=RED modeValLbl.Font=Enum.Font.GothamBlack;modeValLbl.TextSize=12;modeValLbl.TextXAlignment=Enum.TextXAlignment.Right local clk=Instance.new("TextButton",row);clk.Size=UDim2.new(1,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=2 clk.Activated:Connect(function() if _anyKeyListening then return end toggleCarryMode() saveConfig() end) end mkSectMerge("Keybinds") do local row=mkRow(38);mkLabel(row,"Speed Key");mkKB(row,KB.SpeedToggle,function(k,isGp) if isGp then KB.SpeedToggle.gp=k;KB.SpeedToggle.kb=nil else KB.SpeedToggle.kb=k;KB.SpeedToggle.gp=nil end;saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Lagger Key");mkKB(row,KB.LaggerToggle,function(k,isGp) if isGp then KB.LaggerToggle.gp=k;KB.LaggerToggle.kb=nil else KB.LaggerToggle.kb=k;KB.LaggerToggle.gp=nil end;saveConfig() end) end mkSect("Combat") do local abRow=mkRow(38);mkLabel(abRow,"Auto Bat") mkKB(abRow,KB.AutoBat,function(k,isGp) if isGp then KB.AutoBat.gp=k;KB.AutoBat.kb=nil else KB.AutoBat.kb=k;KB.AutoBat.gp=nil end saveConfig() end) local abPill,abDot=mkPill(abRow,114) abPill.ZIndex=3;abDot.ZIndex=4 local abOn=false local function svAutoBat(s) abOn=s;animPill(abPill,abDot,s) end autoBatSetVisual=svAutoBat local abClk=Instance.new("TextButton",abPill);abClk.Size=UDim2.new(1,0,1,0);abClk.BackgroundTransparency=1;abClk.Text="";abClk.ZIndex=5 abClk.Activated:Connect(function() if _anyKeyListening then return end abOn=not abOn;svAutoBat(abOn) if abOn then queueAutoBatStart() else autoBatEnabled=false;disableAutoBat() end saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Bat Speed") mkBox(row,AUTO_BAT_SPEED,50,48,function(v) if v>0 and v<=200 then AUTO_BAT_SPEED=v end saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Bat Vertical Speed") mkBox(row,AUTO_BAT_VERT_SPEED,50,48,function(v) if v>0 and v<=200 then AUTO_BAT_VERT_SPEED=v end saveConfig() end) end setAutoSwingVisual=mkToggle("Auto Swing",function(on) autoSwingEnabled=on saveConfig() end) if setAutoSwingVisual then setAutoSwingVisual(autoSwingEnabled) end do setBatCounterVisual=mkToggle("Bat Counter",function(on) batCounterEnabled=on if on then startBatCounter() else stopBatCounter() end saveConfig() end) end do setTpBatVisual=mkToggle("TP Bat",function(on) tpBatEnabled=on if on then startTpBat() else stopTpBat() end if mobileButtons["tpBat"] then mobileButtons["tpBat"].setActive(on) end saveConfig() end) end mkSect("Steal") do local row=mkRow(38);mkLabel(row,"Radius") radInput=mkBox(row,Steal.StealRadius,50,56,function(v) if v>=0.5 and v<=300 then Steal.StealRadius=v end;saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Duration (s)") mkBox(row,Steal.StealDuration,50,56,function(v) if v and v>0 and v<=5 then Steal.StealDuration=v end;saveConfig() end) end do local stealRow=mkRow(38);mkLabel(stealRow,"Auto Steal") local pill,dot=mkPill(stealRow,42) local on=false local function sv(s) on=s;animPill(pill,dot,s) end setInstaGrab=sv local clk=Instance.new("TextButton",pill);clk.Size=UDim2.new(1,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=5 clk.Activated:Connect(function() on=not on;sv(on);Steal.AutoStealEnabled=on if on then if not pcall(startAutoSteal) then Steal.AutoStealEnabled=false;sv(false) end else stopAutoSteal() end saveConfig() end) pill.ZIndex=3;dot.ZIndex=4 end mkSect("Visual") mkSectMerge("Misc") do local row=mkRow(38);mkLabel(row,"Instant Reset") mkKB(row,KB.InstaReset,function(k,isGp) if isGp then KB.InstaReset.gp=k;KB.InstaReset.kb=nil else KB.InstaReset.kb=k;KB.InstaReset.gp=nil end;saveConfig() end) local clk=Instance.new("TextButton",row);clk.Size=UDim2.new(0.58,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=2 clk.Activated:Connect(function() cursedInstaReset() end) end setInfJumpVisual=mkToggle("Infinite Jump",function(on) infJumpEnabled=on end) setAntiRagVisual=mkToggle("Anti Ragdoll",function(on) antiRagdollEnabled=on;if on then startAntiRagdoll() else stopAntiRagdoll() end end) setMedusaVisual=mkToggle("Medusa Counter",function(on) medusaCounterEnabled=on if on then setupMedusa(LP.Character) else stopMedusaCounter() end saveConfig() end) setUnwalkVisual=mkToggle("Unwalk",function(on) unwalkEnabled=on;if on then startUnwalk() else stopUnwalk() end end) mkSectMerge("Display") setAntiLagVisual=mkToggle("Anti Lag",function(on) if on then enableAntiLag() else disableAntiLag() end saveConfig() end) setStretchRezVisual=mkToggle("Stretch Rez",function(on) if on then enableStretchRez() else disableStretchRez() end saveConfig() end) V.setCustomFovVisual=mkToggle("Custom FOV",function(on) if on then enableCustomFov() else disableCustomFov() end saveConfig() end) do local row=mkRow(38);mkLabel(row,"FOV Value") V.customFovBox=mkBox(row,V.customFovValue,50,56,function(v) if v>=30 and v<=120 then V.customFovValue=v if V.customFovEnabled then workspace.CurrentCamera.FieldOfView=v end else V.customFovBox.Text=tostring(V.customFovValue) end saveConfig() end) end V.setUltraModeVisual=mkToggle("Ultra Mode",function(on) if on then enableUltraMode() else disableUltraMode() end saveConfig() end) V.setRemoveAccVisual=mkToggle("Remove Accessories",function(on) if on then enableRemoveAccessories() else disableRemoveAccessories() end saveConfig() end) V.setCustomFontVisual=mkToggle("Custom Font",function(on) if on then enableCustomFont() else disableCustomFont() end saveConfig() end) V.setPotatoVisual=mkToggle("Potato Graphics",function(on) if on then enablePotatoGraphics() else disablePotatoGraphics() end saveConfig() end) do local row=mkRow(38);mkLabel(row,"Custom Sky") V.skyValLbl=Instance.new("TextLabel",row) V.skyValLbl.Size=UDim2.new(0,124,1,0);V.skyValLbl.Position=UDim2.new(1,-128,0,0) V.skyValLbl.BackgroundTransparency=1;V.skyValLbl.Text=V.skyTheme V.skyValLbl.TextColor3=RED;V.skyValLbl.Font=Enum.Font.GothamBlack;V.skyValLbl.TextSize=11 V.skyValLbl.TextXAlignment=Enum.TextXAlignment.Right local clk=Instance.new("TextButton",row);clk.Size=UDim2.new(1,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=2 clk.Activated:Connect(function() if _anyKeyListening then return end local idx=1 for i,name in ipairs(SKY_PRESETS_LIST) do if name==V.skyTheme then idx=i;break end end idx=(idx % #SKY_PRESETS_LIST) + 1 applyCustomSky(SKY_PRESETS_LIST[idx]) V.skyValLbl.Text=V.skyTheme saveConfig() end) V.setSkyVisual=function() if V.skyValLbl then V.skyValLbl.Text=V.skyTheme end end end mkSectMerge("Movement") do local sv=mkToggleKB("Auto Left",KB.AutoLeft, function(on) autoLeftEnabled=on if on then queueAutoLeftStart() else stopAutoLeft() end end, function(k,isGp) if isGp then KB.AutoLeft.gp=k;KB.AutoLeft.kb=nil else KB.AutoLeft.kb=k;KB.AutoLeft.gp=nil end;saveConfig() end) autoLeftSetVisual=sv end do local sv=mkToggleKB("Auto Right",KB.AutoRight, function(on) autoRightEnabled=on if on then queueAutoRightStart() else stopAutoRight() end end, function(k,isGp) if isGp then KB.AutoRight.gp=k;KB.AutoRight.kb=nil else KB.AutoRight.kb=k;KB.AutoRight.gp=nil end;saveConfig() end) autoRightSetVisual=sv end do local row=mkRow(38);mkLabel(row,"Drop Brainrot") mkKB(row,KB.DropBrainrot,function(k,isGp) if isGp then KB.DropBrainrot.gp=k;KB.DropBrainrot.kb=nil else KB.DropBrainrot.kb=k;KB.DropBrainrot.gp=nil end;saveConfig() end) local clk=Instance.new("TextButton",row);clk.Size=UDim2.new(0.58,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=2 clk.Activated:Connect(function() runDrop() end) end do local row=mkRow(38);mkLabel(row,"TP Down") mkKB(row,KB.TPFloor,function(k,isGp) if isGp then KB.TPFloor.gp=k;KB.TPFloor.kb=nil else KB.TPFloor.kb=k;KB.TPFloor.gp=nil end;saveConfig() end) local clk=Instance.new("TextButton",row);clk.Size=UDim2.new(0.58,0,1,0);clk.BackgroundTransparency=1;clk.Text="";clk.ZIndex=2 clk.Activated:Connect(function() runTPFloor() end) end do setAutoTPVisual=mkToggle("Auto TP",function(on) autoTPEnabled=on if on then startAutoTP() else stopAutoTP() end saveConfig() end) end do local row=mkRow(38);mkLabel(row,"Auto TP Height") autoTPHeightBox=mkBox(row,autoTPHeight,50,56,function(v) if v>=0 and v<=500 then autoTPHeight=v else autoTPHeightBox.Text=tostring(autoTPHeight) end saveConfig() end) end mkSect("Interface") do local row=mkRow(38);mkLabel(row,"Hide UI");mkKB(row,KB.GuiHide,function(k,isGp) if isGp then KB.GuiHide.gp=k;KB.GuiHide.kb=nil else KB.GuiHide.kb=k;KB.GuiHide.gp=nil end;saveConfig() end) end V.setAutoSaveVisual=mkToggle("Auto Save",function(on) V.autoSaveEnabled=on saveConfig() end) if V.setAutoSaveVisual then V.setAutoSaveVisual(V.autoSaveEnabled) end do local row=mkRow(38);mkLabel(row,"Save Now") local btn=Instance.new("TextButton",row) btn.Size=UDim2.new(0,58,0,24);btn.Position=UDim2.new(1,-62,0.5,-12) btn.BackgroundColor3=Color3.fromRGB(60,60,60) btn.BorderSizePixel=0 btn.Text="SAVE";btn.TextColor3=Color3.fromRGB(255,255,255) btn.Font=Enum.Font.GothamBlack;btn.TextSize=11 Instance.new("UICorner",btn).CornerRadius=UDim.new(0,5) local bs=Instance.new("UIStroke",btn);bs.Color=Color3.fromRGB(255,255,255);bs.Thickness=1;bs.Transparency=0.4 btn.MouseEnter:Connect(function() TS:Create(btn,TweenInfo.new(0.12),{BackgroundColor3=Color3.fromRGB(90,90,90)}):Play() end) btn.MouseLeave:Connect(function() TS:Create(btn,TweenInfo.new(0.12),{BackgroundColor3=Color3.fromRGB(60,60,60)}):Play() end) btn.MouseButton1Click:Connect(function() saveConfig() btn.Text="✓ OK" task.delay(0.7,function() if btn.Parent then btn.Text="SAVE" end end) end) end -- ========== NEW SECTION: Hide Mobile Buttons + Mobile Button Size ========== mkSectMerge("Mobile") do -- Hide Mobile Buttons toggle local hideRow = mkRow(38) mkLabel(hideRow, "Hide Mobile Buttons") local hidePill, hideDot = mkPill(hideRow, 42) local hideOn = _G._VezyHideSideBtns local function setHideVisual(s) hideOn = s animPill(hidePill, hideDot, s) _G._VezyHideSideBtns = s for _, mb in pairs(mobileButtons) do mb.btn.Visible = not s end saveConfig() end animPill(hidePill, hideDot, hideOn) local hideClk = Instance.new("TextButton", hidePill) hideClk.Size = UDim2.new(1,0,1,0) hideClk.BackgroundTransparency = 1 hideClk.Text = "" hideClk.ZIndex = 5 hideClk.Activated:Connect(function() if _anyKeyListening then return end setHideVisual(not hideOn) end) end do -- Mobile Button Size row local sizeRow = mkRow(38) mkLabel(sizeRow, "Mobile Btn Size") local sizes = {0.8, 1.0, 1.25, 1.5, 1.75, 2.0} local btnW = 40 local totalW = #sizes * (btnW + 4) - 4 local startX = -totalW - 8 local btns = {} local function refreshSizeButtons() for i, s in ipairs(sizes) do local active = math.abs(_G._VynxMobileBtnScale - s) < 0.01 btns[i].BackgroundColor3 = active and RED or OFF btns[i].TextColor3 = active and Color3.new(0,0,0) or Color3.new(1,1,1) end end for i, scale in ipairs(sizes) do local btn = Instance.new("TextButton", sizeRow) btn.Size = UDim2.new(0, btnW, 0, 24) btn.Position = UDim2.new(1, startX + (i-1)*(btnW+4), 0.5, -12) btn.BackgroundColor3 = OFF btn.BorderSizePixel = 0 btn.Text = string.format("%d%%", scale*100) btn.TextColor3 = Color3.new(1,1,1) btn.Font = Enum.Font.GothamBold btn.TextSize = 11 btn.ZIndex = 5 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 5) btn.MouseButton1Click:Connect(function() _G._VynxMobileBtnScale = scale local MB_BASE_W, MB_BASE_H = 60, 50 local nw = MB_BASE_W * scale local nh = MB_BASE_H * scale local newTextSize = math.floor(11 * scale) for _, mb in pairs(mobileButtons) do mb.btn.Size = UDim2.new(0, nw, 0, nh) mb.btn.TextSize = newTextSize end refreshSizeButtons() saveConfig() end) btns[i] = btn end refreshSizeButtons() end -- Auto-size tab buttons to fill the full sidebar height evenly task.defer(function() local btnList = {} for _, b in pairs(tabButtons) do btnList[#btnList+1] = b end local n = #btnList if n == 0 then return end local padV = 4 local gap = 3 local totalH = tabBar.AbsoluteSize.Y - padV * 2 local btnH = math.max(28, math.floor((totalH - gap * (n - 1)) / n)) for _, b in pairs(btnList) do b.Size = UDim2.new(1, 0, 0, btnH) end end) UIS.InputBegan:Connect(function(input,gpe) if _anyKeyListening then return end if input.UserInputType==Enum.UserInputType.Keyboard then if gpe or UIS:GetFocusedTextBox() then return end elseif not isGamepadInput(input) then return end if not isBindableInput(input) then return end local kc=input.KeyCode if kbMatch(KB.LaggerToggle,kc) then toggleLaggerMode() saveConfig() elseif kbMatch(KB.SpeedToggle,kc) then toggleCarryMode() saveConfig() elseif kbMatch(KB.DropBrainrot,kc) then runDrop() elseif kbMatch(KB.TPFloor,kc) then runTPFloor() elseif kbMatch(KB.InstaReset,kc) then cursedInstaReset() elseif kbMatch(KB.AutoLeft,kc) then autoLeftEnabled=not autoLeftEnabled if autoLeftEnabled then queueAutoLeftStart() else stopAutoLeft() end if autoLeftSetVisual then autoLeftSetVisual(autoLeftEnabled) end elseif kbMatch(KB.AutoRight,kc) then autoRightEnabled=not autoRightEnabled if autoRightEnabled then queueAutoRightStart() else stopAutoRight() end if autoRightSetVisual then autoRightSetVisual(autoRightEnabled) end elseif kbMatch(KB.AutoBat,kc) then if not autoBatEnabled then queueAutoBatStart() if autoBatSetVisual then autoBatSetVisual(true) end else autoBatEnabled=false;disableAutoBat() if autoBatSetVisual then autoBatSetVisual(false) end end elseif kbMatch(KB.GuiHide,kc) then if main.Visible then hideGui() else showGui() end end end) -- ========== MOBILE BUTTONS (Miro-style: purple, dict-based, drag-and-drop, 9 buttons) ========== local mobileSideButtonsVisible = true local _miroMobileBtnScale = 1.0 local PURP = Color3.fromRGB(170,111,255) local function makeMobileButton(key, label, onToggle) local btn = Instance.new("TextButton", gui) btn.Name = "MB_"..key btn.Size = UDim2.new(0, 80, 0, 60) btn.BackgroundColor3 = Color3.fromRGB(20, 20, 26) btn.BorderSizePixel = 0 btn.Text = label btn.TextColor3 = Color3.fromRGB(240, 240, 245) btn.Font = Enum.Font.GothamBlack btn.TextSize = 11 btn.AutoButtonColor = false btn.ZIndex = 101 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10) local stroke = Instance.new("UIStroke", btn) stroke.Color = Color3.fromRGB(50, 52, 60); stroke.Thickness = 1; stroke.Transparency = 0.3 local pressing, dragging = false, false local pressPos, btnStart = nil, nil btn.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then pressing = true; dragging = false; pressPos = i.Position; btnStart = btn.Position i.Changed:Connect(function() if i.UserInputState==Enum.UserInputState.End then pressing=false end end) end end) UIS.InputChanged:Connect(function(i) if not pressing then return end if i.UserInputType~=Enum.UserInputType.MouseMovement and i.UserInputType~=Enum.UserInputType.Touch then return end local delta = i.Position - pressPos if not dragging and (math.abs(delta.X)>6 or math.abs(delta.Y)>6) then dragging=true end if dragging then btn.Position = UDim2.new(btnStart.X.Scale, btnStart.X.Offset+delta.X, btnStart.Y.Scale, btnStart.Y.Offset+delta.Y) end end) local active = false local function setActive(state) active = state TS:Create(btn, TweenInfo.new(0.15), { BackgroundColor3 = state and Color3.fromRGB(170,111,255) or Color3.fromRGB(20,20,26), TextColor3 = state and Color3.fromRGB(0,0,0) or Color3.fromRGB(240,240,245), }):Play() TS:Create(stroke, TweenInfo.new(0.15), {Color = state and Color3.fromRGB(50,200,255) or Color3.fromRGB(50,52,60), Transparency = state and 0 or 0.3}) end btn.Activated:Connect(function() if not dragging then onToggle(setActive) end end) btn.Visible = mobileSideButtonsVisible mobileButtons[key] = {btn=btn, stroke=stroke, setActive=setActive, active=active} return setActive end makeMobileButton("drop", "DROP\nBR", function(setActive) runDrop() setActive(true) task.delay(0.2, function() setActive(false) end) end) makeMobileButton("autoLeft", "AUTO\nLEFT", function(setActive) if autoLeftEnabled then autoLeftEnabled = false; stopAutoLeft(); if autoLeftSetVisual then autoLeftSetVisual(false) end setActive(false) else autoLeftEnabled = true; queueAutoLeftStart(); if autoLeftSetVisual then autoLeftSetVisual(true) end setActive(true) end saveConfig() end) makeMobileButton("bat", "BAT\nBOT", function(setActive) if autoBatEnabled then autoBatEnabled = false; disableAutoBat(); if autoBatSetVisual then autoBatSetVisual(false) end setActive(false) else autoBatEnabled = true; queueAutoBatStart(); if autoBatSetVisual then autoBatSetVisual(true) end setActive(true) end saveConfig() end) makeMobileButton("autoRight", "AUTO\nRIGHT", function(setActive) if autoRightEnabled then autoRightEnabled = false; stopAutoRight(); if autoRightSetVisual then autoRightSetVisual(false) end setActive(false) else autoRightEnabled = true; queueAutoRightStart(); if autoRightSetVisual then autoRightSetVisual(true) end setActive(true) end saveConfig() end) makeMobileButton("tp", "TP\nDOWN", function(setActive) runTPFloor() setActive(true) task.delay(0.2, function() setActive(false) end) end) makeMobileButton("carry", "CARRY\nSPD", function(setActive) toggleCarryMode() local newState = speedMode setActive(newState) if mobileButtons["lagger"] then mobileButtons["lagger"].setActive(laggerToggled) end saveConfig() end) makeMobileButton("instaReset", "INSTA\nRESET", function(setActive) cursedInstaReset() setActive(true) task.delay(0.3, function() setActive(false) end) end) makeMobileButton("lagger", "LAGGER\nMODE", function(setActive) toggleLaggerMode() setActive(laggerToggled) if mobileButtons["carry"] then mobileButtons["carry"].setActive(speedMode) end saveConfig() end) makeMobileButton("tpBat", "TP\nBAT", function(setActive) tpBatEnabled = not tpBatEnabled if tpBatEnabled then startTpBat() else stopTpBat() end if setTpBatVisual then setTpBatVisual(tpBatEnabled) end setActive(tpBatEnabled) saveConfig() end) if mobileButtons["drop"] then mobileButtons["drop"].btn.Position = UDim2.new(1,-176,0.5,-132) end if mobileButtons["autoLeft"] then mobileButtons["autoLeft"].btn.Position = UDim2.new(1,-88,0.5,-132) end if mobileButtons["bat"] then mobileButtons["bat"].btn.Position = UDim2.new(1,-176,0.5,-64) end if mobileButtons["autoRight"] then mobileButtons["autoRight"].btn.Position = UDim2.new(1,-88,0.5,-64) end if mobileButtons["tp"] then mobileButtons["tp"].btn.Position = UDim2.new(1,-176,0.5,4) end if mobileButtons["carry"] then mobileButtons["carry"].btn.Position = UDim2.new(1,-88,0.5,4) end if mobileButtons["instaReset"]then mobileButtons["instaReset"].btn.Position= UDim2.new(1,-176,0.5,72) end if mobileButtons["lagger"] then mobileButtons["lagger"].btn.Position = UDim2.new(1,-88,0.5,72) end if mobileButtons["tpBat"] then mobileButtons["tpBat"].btn.Position = UDim2.new(1,-176,0.5,140) end local function syncMobileButtons() if mobileButtons["autoLeft"] then mobileButtons["autoLeft"].setActive(autoLeftEnabled) end if mobileButtons["autoRight"] then mobileButtons["autoRight"].setActive(autoRightEnabled) end if mobileButtons["bat"] then mobileButtons["bat"].setActive(autoBatEnabled) end if mobileButtons["carry"] then mobileButtons["carry"].setActive(speedMode) end if mobileButtons["lagger"] then mobileButtons["lagger"].setActive(laggerToggled) end if mobileButtons["tpBat"] then mobileButtons["tpBat"].setActive(tpBatEnabled) end end task.spawn(function() while true do task.wait(0.5); syncMobileButtons() end end) end local _savedCfg = nil local function loadConfigKeys() if not(isfile and isfile("V4MP.json")) then return end local ok,cfg=pcall(function() return HS:JSONDecode(readfile("V4MP.json")) end) if not ok or not cfg then return end _savedCfg=cfg local function lk(e,d) if type(d)~="table" then return end;if d.kb and Enum.KeyCode[d.kb] then e.kb=Enum.KeyCode[d.kb] end;if d.gp and Enum.KeyCode[d.gp] then e.gp=Enum.KeyCode[d.gp] end end lk(KB.DropBrainrot,cfg.dropBrainrotKey);lk(KB.AutoLeft,cfg.autoLeftKey);lk(KB.AutoRight,cfg.autoRightKey) lk(KB.AutoBat,cfg.autoBatKey);lk(KB.LaggerToggle,cfg.laggerToggleKey) lk(KB.TPFloor,cfg.tpFloorKey);lk(KB.InstaReset,cfg.instaResetKey);lk(KB.GuiHide,cfg.guiHideKey);lk(KB.SpeedToggle,cfg.speedToggleKey) if cfg.normalSpeed then NS=cfg.normalSpeed end if cfg.carrySpeed then CS=cfg.carrySpeed end if cfg.grabRadius and type(cfg.grabRadius)=="number" then Steal.StealRadius=cfg.grabRadius else Steal.StealRadius=60 end if cfg.stealDuration and type(cfg.stealDuration)=="number" then Steal.StealDuration=cfg.stealDuration else Steal.StealDuration=1.4 end if cfg.laggerSpeed and type(cfg.laggerSpeed)=="number" then LAGGER_SPEED=cfg.laggerSpeed end if cfg.laggerCarrySpeed and type(cfg.laggerCarrySpeed)=="number" then LAGGER_CARRY_SPEED=cfg.laggerCarrySpeed end if cfg.autoTPHeight and type(cfg.autoTPHeight)=="number" then autoTPHeight=cfg.autoTPHeight end if cfg.autoSwing~=nil then autoSwingEnabled=cfg.autoSwing==true end if cfg.customFovValue and type(cfg.customFovValue)=="number" then V.customFovValue=cfg.customFovValue end -- NEW if cfg.hideSideBtns ~= nil then _G._VezyHideSideBtns = cfg.hideSideBtns end if cfg.mobileBtnScale and type(cfg.mobileBtnScale)=="number" then _G._VynxMobileBtnScale = math.clamp(cfg.mobileBtnScale, 0.7, 2.0) end end local function loadConfigState() local cfg=_savedCfg;if not cfg then return end if normalBox then normalBox.Text=tostring(NS) end if carryBox then carryBox.Text=tostring(CS) end if radInput then radInput.Text=tostring(Steal.StealRadius) end if laggerBox then laggerBox.Text=tostring(LAGGER_SPEED) end if laggerCarryBox then laggerCarryBox.Text=tostring(LAGGER_CARRY_SPEED) end if autoTPHeightBox then autoTPHeightBox.Text=tostring(autoTPHeight) end if V.customFovBox then V.customFovBox.Text=tostring(V.customFovValue) end -- Apply hide state after UI built (buttons exist) task.spawn(function() task.wait(0.2) for _, mb in pairs(mobileButtons) do mb.btn.Visible = not _G._VezyHideSideBtns end -- Apply button scale local scale = _G._VynxMobileBtnScale local MB_BASE_W, MB_BASE_H = 60, 50 local nw = MB_BASE_W * scale local nh = MB_BASE_H * scale local newTextSize = math.floor(11 * scale) for _, mb in pairs(mobileButtons) do mb.btn.Size = UDim2.new(0, nw, 0, nh) mb.btn.TextSize = newTextSize end end) task.spawn(function() task.wait(0.15) if cfg.antiRagdoll then antiRagdollEnabled=true;if setAntiRagVisual then setAntiRagVisual(true) end;startAntiRagdoll() end if cfg.autoStealEnabled then Steal.AutoStealEnabled=true;if setInstaGrab then setInstaGrab(true) end;pcall(startAutoSteal) end if cfg.infiniteJump then infJumpEnabled=true;if setInfJumpVisual then setInfJumpVisual(true) end end if cfg.medusaCounter then medusaCounterEnabled=true;if setMedusaVisual then setMedusaVisual(true) end;setupMedusa(LP.Character) end if cfg.batCounter then batCounterEnabled=true;if setBatCounterVisual then setBatCounterVisual(true) end;startBatCounter() end if cfg.tpBat then tpBatEnabled=true;if setTpBatVisual then setTpBatVisual(true) end;startTpBat() end if cfg.laggerMode then laggerToggled=true;speedMode=false;laggerPhase=cfg.laggerCarryMode and 2 or 1;refreshSpeedModeLabel() elseif cfg.carryMode then speedMode=false;toggleCarryMode() end if cfg.autoTPEnabled then autoTPEnabled=true;if setAutoTPVisual then setAutoTPVisual(true) end;startAutoTP() end if setAutoSwingVisual then setAutoSwingVisual(autoSwingEnabled) end if cfg.batSpeed and cfg.batSpeed > 0 and cfg.batSpeed <= 200 then AUTO_BAT_SPEED=cfg.batSpeed end if cfg.batVertSpeed and cfg.batVertSpeed > 0 and cfg.batVertSpeed <= 200 then AUTO_BAT_VERT_SPEED=cfg.batVertSpeed end if cfg.autoBat then autoBatEnabled=true;if autoBatSetVisual then autoBatSetVisual(true) end;queueAutoBatStart() end if cfg.unwalkEnabled then unwalkEnabled=true;if setUnwalkVisual then setUnwalkVisual(true) end;task.spawn(function() task.wait(0.5);startUnwalk() end) end if cfg.antiLag then enableAntiLag();if setAntiLagVisual then setAntiLagVisual(true) end end if cfg.stretchRez then enableStretchRez();if setStretchRezVisual then setStretchRezVisual(true) end end if cfg.customFov then enableCustomFov();if V.setCustomFovVisual then V.setCustomFovVisual(true) end end if cfg.skyTheme and SKY_PRESETS[cfg.skyTheme] then applyCustomSky(cfg.skyTheme);if V.setSkyVisual then V.setSkyVisual() end end if cfg.ultraMode then enableUltraMode();if V.setUltraModeVisual then V.setUltraModeVisual(true) end end if cfg.removeAccessories then enableRemoveAccessories();if V.setRemoveAccVisual then V.setRemoveAccVisual(true) end end if cfg.customFontEnabled then task.spawn(function() task.wait(1);enableCustomFont() end);if V.setCustomFontVisual then V.setCustomFontVisual(true) end end if cfg.potatoGraphics then enablePotatoGraphics();if V.setPotatoVisual then V.setPotatoVisual(true) end end if cfg.autoSave ~= nil then V.autoSaveEnabled=cfg.autoSave;if V.setAutoSaveVisual then V.setAutoSaveVisual(V.autoSaveEnabled) end end end) end loadConfigKeys() buildGui() loadConfigState() print("V4MP Loaded (Purple Edition + Custom FOV + Mobile Buttons + Hide/Size)")