-- [[ 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 ]] -- Auto M1 Box + Rayfield GUI -- Paste into your executor local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer -- Remotes local StartSkill = ReplicatedStorage.NetworkComm.SkillService.StartSkilll_Method local DamageCharacter = ReplicatedStorage.NetworkComm.CombatService.DamageCharacter_Method -- ========== SETTINGS (controlled by GUI) ========== local Settings = { Enabled = false, BoxSize = 10, -- studs (cubic) Transparency = 0.7, Color = Color3.fromRGB(255, 50, 50), HitsPerSecond = 10, -- how many M1s per second } local currentPlayerModel = nil local boxPart = nil local lastPunch = 0 -- ========== BOX ========== local function ensureBox() if not boxPart or not boxPart.Parent then boxPart = Instance.new("Part") boxPart.Name = "AutoM1Box" boxPart.Anchored = true boxPart.CanCollide = false boxPart.Material = Enum.Material.ForceField boxPart.Parent = workspace end boxPart.Size = Vector3.new(Settings.BoxSize, Settings.BoxSize, Settings.BoxSize) boxPart.Transparency = Settings.Transparency boxPart.Color = Settings.Color end local function destroyBox() if boxPart then boxPart:Destroy() boxPart = nil end end -- ========== CHARACTER FINDER ========== local function getMyCharacter() local playersFolder = workspace:FindFirstChild("Characters") and workspace.Characters:FindFirstChild("Server") and workspace.Characters.Server:FindFirstChild("Players") if not playersFolder then return nil end local char = playersFolder:GetChildren()[1] if char and char:IsA("Model") then return char end return nil end -- ========== HIT DETECTION ========== local function isInsideBox(npcRoot, boxCFrame, size) local relative = boxCFrame:PointToObjectSpace(npcRoot.Position) local half = size / 2 return math.abs(relative.X) <= half and math.abs(relative.Y) <= half and math.abs(relative.Z) <= half end -- ========== PUNCH ========== local function punchNPC(myChar, npc) local root = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") if not root then return end pcall(function() StartSkill:InvokeServer( "Punch", myChar, root.Position, {}, 1, 1 ) end) pcall(function() DamageCharacter:InvokeServer( { npc }, true, { OnCharacterHit = function() end, Origin = myChar:GetPivot(), CanParry = true, WindowID = myChar.Name .. "_Punch", LocalCharacter = myChar, SkillID = "Punch" } ) end) end -- ========== MAIN LOOP ========== RunService.Heartbeat:Connect(function() if not Settings.Enabled then destroyBox() return end currentPlayerModel = getMyCharacter() if not currentPlayerModel then destroyBox() return end local myRoot = currentPlayerModel:FindFirstChild("HumanoidRootPart") or currentPlayerModel:FindFirstChild("RootPart") if not myRoot then return end -- Update box every frame ensureBox() boxPart.CFrame = CFrame.new(myRoot.Position) -- Rate limit punches local now = tick() local interval = 1 / math.max(Settings.HitsPerSecond, 0.1) if now - lastPunch < interval then return end lastPunch = now -- Check NPCs local npcsFolder = workspace:FindFirstChild("Characters") and workspace.Characters:FindFirstChild("Server") and workspace.Characters.Server:FindFirstChild("NPCs") if not npcsFolder then return end for _, npc in ipairs(npcsFolder:GetChildren()) do if npc:IsA("Model") then local npcRoot = npc:FindFirstChild("HumanoidRootPart") or npc:FindFirstChild("RootPart") if npcRoot and isInsideBox(npcRoot, boxPart.CFrame, Settings.BoxSize) then punchNPC(currentPlayerModel, npc) end end end end) -- ========== RAYFIELD GUI ========== local Window = Rayfield:CreateWindow({ Name = "Auto M1 Box (be in a private server, or alone)", LoadingTitle = "Auto M1 Box", LoadingSubtitle = "by me :D", Theme = "Default", ConfigurationSaving = { Enabled = true, FolderName = "AutoM1Box", FileName = "Config" }, }) local MainTab = Window:CreateTab("Main", 4483362458) MainTab:CreateToggle({ Name = "Enable Auto M1", CurrentValue = false, Flag = "Enabled", Callback = function(Value) Settings.Enabled = Value if not Value then destroyBox() end end, }) MainTab:CreateSlider({ Name = "Box Size (studs)", Range = {1, 750}, Increment = 1, Suffix = " studs", CurrentValue = 200, Flag = "BoxSize", Callback = function(Value) Settings.BoxSize = Value if boxPart then boxPart.Size = Vector3.new(Value, Value, Value) end end, }) MainTab:CreateSlider({ Name = "Hits Per Second", Range = {1, 1000}, Increment = 1, Suffix = " /s", CurrentValue = 50, Flag = "HitsPerSecond", Callback = function(Value) Settings.HitsPerSecond = Value end, }) local VisualTab = Window:CreateTab("Visuals", 4483362458) VisualTab:CreateSlider({ Name = "Box Transparency", Range = {0, 1}, Increment = 0.05, Suffix = "", CurrentValue = 0.7, Flag = "Transparency", Callback = function(Value) Settings.Transparency = Value if boxPart then boxPart.Transparency = Value end end, }) VisualTab:CreateColorPicker({ Name = "Box Color", Color = Color3.fromRGB(255, 50, 50), Flag = "BoxColor", Callback = function(Value) Settings.Color = Value if boxPart then boxPart.Color = Value end end, }) Rayfield:Notify({ Title = "Auto M1 Box", Content = "Loaded successfully", Duration = 4, })