
Key Required VerifiedUniversal

-- [[ Slap Battles Macro]] --
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")
local HttpService = game:GetService("HttpService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local PathfindingService = game:GetService("PathfindingService")
local GuiService = game:GetService("GuiService")
local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
local FileName = "MacroGloveConfig.json"
-- [[ DEFAULT SETTINGS ]] --
local Settings = {
Enabled = false,
BotType = "Closest",
IgnoreRagdoll = false,
SlapRadius = 10,
Shiftlock = false,
ShiftlockRadius = 20,
Jumps = false,
JumpChance = 10,
IgnoreOneshots = false,
DistanceRadius = 5,
StrafeEnabled = false,
StrafeRadius = 15,
UnequipFar = false,
UnequipRadius = 30,
DangerMode = false,
DangerType = "Backoff",
DangerHP = 40,
AutoAbility = false,
AbilityMode = "Combat",
ServerHopMode = "Main",
MinPlayers = 0,
IgnoreLowPlayers = false,
AutoHopTimerEnabled = false,
AutoHopMinutes = 30,
HopOnOneshotsEnabled = false,
MaxOneshotsAllowed = 1,
LastHopTick = tick(),
AutoTournament = false
}
-- [[ DATA TRACKING ]] --
local LastSlapCount = 0
local LastReachedTime = tick()
local LastClickTick = 0
local function GetSlaps()
local stats = Player:FindFirstChild("leaderstats")
local slaps = stats and stats:FindFirstChild("Slaps")
return slaps and slaps.Value or 0
end
LastSlapCount = GetSlaps()
-- [[ SAVE / LOAD LOGIC ]] --
local function SaveSettings()
local success, encoded = pcall(function() return HttpService:JSONEncode(Settings) end)
if success then writefile(FileName, encoded) end
end
local function LoadSettings()
if isfile(FileName) then
local success, decoded = pcall(function() return HttpService:JSONDecode(readfile(FileName)) end)
if success then
for k, v in pairs(decoded) do
Settings[k] = v
end
end
end
end
LoadSettings()
local GameIDs = { Main = 6403373529, NoOneshots = 9015014224, KS = 11520107397 }
local OneShotGloves = {"OVERKILL", "God's Hand", "The Flex", "Error", "rob", "Shopkeeper", "Spectator", "buddies"}
-- [[ CORE FUNCTIONS ]] --
local function ServerHop()
SaveSettings()
local targetID = GameIDs[Settings.ServerHopMode] or GameIDs.Main
TeleportService:Teleport(targetID, Player)
end
local function TriggerAbility()
local char = Player.Character
if not char or not char:FindFirstChildOfClass("Tool") then return end
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.E, false, game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.E, false, game)
end
local function MoveToTargetSmooth(targetPos)
local char = Player.Character
if not char then return end
local hum = char:FindFirstChildOfClass("Humanoid")
local root = char:FindFirstChild("HumanoidRootPart")
if not root or not hum then return end
local path = PathfindingService:CreatePath({AgentRadius = 3, AgentCanJump = true})
path:ComputeAsync(root.Position, targetPos)
if path.Status == Enum.PathStatus.Success then
local waypoints = path:GetWaypoints()
if waypoints[2] then
hum:MoveTo(waypoints[2].Position)
if waypoints[2].Action == Enum.PathWaypointAction.Jump then hum.Jump = true end
end
else
hum:MoveTo(targetPos)
end
end
local function GetTarget()
local pot = {}
local char = Player.Character
local myRoot = char and char:FindFirstChild("HumanoidRootPart")
if not myRoot then return nil end
for _, p in pairs(Players:GetPlayers()) do
if p ~= Player and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
local c = p.Character
local h = c:FindFirstChildOfClass("Humanoid")
local tRoot = c.HumanoidRootPart
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Exclude
rayParams.FilterDescendantsInstances = {c, Player.Character}
local floorCheck = workspace:Raycast(tRoot.Position, Vector3.new(0, -15, 0), rayParams)
local isOneshots = false
for _, g in pairs(OneShotGloves) do if c:FindFirstChild(g) or p.Backpack:FindFirstChild(g) then isOneshots = true break end end
if h and h.Health > 0 and not c:FindFirstChild("rock") and (not Settings.IgnoreOneshots or not isOneshots) then
if math.abs(myRoot.Position.Y - tRoot.Position.Y) < 12 and floorCheck then
if not (Settings.IgnoreRagdoll and c:FindFirstChild("Ragdolled") and c.Ragdolled.Value) then
table.insert(pot, p)
end
end
end
end
end
if #pot == 0 then return nil end
if Settings.BotType == "Closest" then table.sort(pot, function(a,b) return Player:DistanceFromCharacter(a.Character.PrimaryPart.Position) < Player:DistanceFromCharacter(b.Character.PrimaryPart.Position) end)
elseif Settings.BotType == "Furthest" then table.sort(pot, function(a,b) return Player:DistanceFromCharacter(a.Character.PrimaryPart.Position) > Player:DistanceFromCharacter(b.Character.PrimaryPart.Position) end) end
return Settings.BotType == "Random" and pot[math.random(1,#pot)] or pot[1]
end
-- [[ TOURNAMENT CLICKER ]] --
local function HandleTournamentGUI()
if tick() - LastClickTick < 1 then return end
for _, gui in pairs(PlayerGui:GetChildren()) do
if gui.Name == "Component" then
local container = gui:FindFirstChild("SlapTournament")
if container and container.Visible then
local targetButton = Settings.AutoTournament and container:FindFirstChild("AcceptButton") or container:FindFirstChild("DeclineButton")
if targetButton and targetButton.Visible then
-- Get center of button
local absPos = targetButton.AbsolutePosition
local absSize = targetButton.AbsoluteSize
-- Offset for the Roblox TopBar (approx 36-58 pixels)
local inset = GuiService:GetGuiInset()
local centerX = absPos.X + (absSize.X / 2) + inset.X
local centerY = absPos.Y + (absSize.Y / 2) + inset.Y
VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, true, game, 0)
task.wait(0.05)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, false, game, 0)
LastClickTick = tick()
warn("Tournament Button Clicked at: " .. tostring(centerX) .. ", " .. tostring(centerY))
end
end
end
end
end
-- [[ UI ENGINE ]] --
local ScreenGui = Instance.new("ScreenGui", game:GetService("CoreGui"))
local MainFrame = Instance.new("Frame", ScreenGui)
MainFrame.Size = UDim2.new(0, 480, 0, 320); MainFrame.Position = UDim2.new(0.5, -240, 0.5, -160); MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Instance.new("UICorner", MainFrame)
local Sidebar = Instance.new("Frame", MainFrame)
Sidebar.Size = UDim2.new(0, 110, 1, 0); Sidebar.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
Instance.new("UICorner", Sidebar)
local SideList = Instance.new("UIListLayout", Sidebar); SideList.Padding = UDim.new(0, 2)
local Container = Instance.new("Frame", MainFrame)
Container.Size = UDim2.new(1, -130, 1, -50); Container.Position = UDim2.new(0, 120, 0, 40); Container.BackgroundTransparency = 1
local TabFrames = {}
local function CreateTab(name)
local btn = Instance.new("TextButton", Sidebar)
btn.Size = UDim2.new(1, 0, 0, 35); btn.Text = name; btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40); btn.TextColor3 = Color3.new(1, 1, 1); btn.BorderSizePixel = 0
local page = Instance.new("ScrollingFrame", Container)
page.Size = UDim2.new(1, 0, 1, 0); page.Visible = false; page.BackgroundTransparency = 1; page.CanvasSize = UDim2.new(0, 0, 0, 0); page.ScrollBarThickness = 2
local list = Instance.new("UIListLayout", page); list.Padding = UDim.new(0, 10)
list:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() page.CanvasSize = UDim2.new(0, 0, 0, list.AbsoluteContentSize.Y + 20) end)
btn.MouseButton1Click:Connect(function() for _, v in pairs(TabFrames) do v.Visible = false end page.Visible = true end)
TabFrames[name] = page
return page
end
local function AddSlider(parent, text, min, max, default, callback)
local actualDefault = Settings[text] or default
local f = Instance.new("Frame", parent); f.Size = UDim2.new(1, -10, 0, 45); f.BackgroundTransparency = 1
local l = Instance.new("TextLabel", f); l.Text = text..": "..actualDefault; l.Size = UDim2.new(1, 0, 0, 20); l.TextColor3 = Color3.new(1,1,1); l.BackgroundTransparency = 1; l.TextXAlignment = 0
local val = actualDefault
local function update(nV) val = math.clamp(nV, min, max); l.Text = text..": "..val; callback(val); SaveSettings() end
local mi = Instance.new("TextButton", f); mi.Size = UDim2.new(0,35,0,25); mi.Position = UDim2.new(0,0,0,20); mi.Text = "-"; mi.BackgroundColor3 = Color3.fromRGB(60,60,60); mi.TextColor3 = Color3.new(1,1,1)
local pl = Instance.new("TextButton", f); pl.Size = UDim2.new(0,35,0,25); pl.Position = UDim2.new(1,-35,0,20); pl.Text = "+"; pl.BackgroundColor3 = Color3.fromRGB(60,60,60); pl.TextColor3 = Color3.new(1,1,1)
mi.MouseButton1Click:Connect(function() update(val - 1) end); pl.MouseButton1Click:Connect(function() update(val + 1) end)
end
local function AddToggle(parent, text, settingKey, callback)
local default = Settings[settingKey]
local f = Instance.new("Frame", parent); f.Size = UDim2.new(1, -10, 0, 30); f.BackgroundTransparency = 1
local l = Instance.new("TextLabel", f); l.Text = text; l.Size = UDim2.new(0.7, 0, 1, 0); l.TextColor3 = Color3.new(1,1,1); l.BackgroundTransparency = 1; l.TextXAlignment = 0
local b = Instance.new("TextButton", f); b.Size = UDim2.new(0, 45, 0, 22); b.Position = UDim2.new(1, -50, 0.5, -11); b.Text = ""
local function setVisual(val) b.BackgroundColor3 = val and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(200, 50, 50) end
setVisual(default)
Instance.new("UICorner", b)
b.MouseButton1Click:Connect(function()
Settings[settingKey] = not Settings[settingKey]
setVisual(Settings[settingKey])
callback(Settings[settingKey])
SaveSettings()
end)
end
-- [[ TABS ]] --
local MainTab = CreateTab("Main")
local BotTab = CreateTab("Bot")
local ServerTab = CreateTab("Server")
-- [[ MAIN TAB ]] --
local StartBtn = Instance.new("TextButton", MainTab); StartBtn.Size = UDim2.new(1,-10,0,50); StartBtn.Text = Settings.Enabled and "STOP MACRO" or "START MACRO"; StartBtn.BackgroundColor3 = Settings.Enabled and Color3.fromRGB(180,0,50) or Color3.fromRGB(0,180,50); StartBtn.TextColor3 = Color3.new(1,1,1)
StartBtn.MouseButton1Click:Connect(function()
Settings.Enabled = not Settings.Enabled
StartBtn.Text = Settings.Enabled and "STOP MACRO" or "START MACRO"
StartBtn.BackgroundColor3 = Settings.Enabled and Color3.fromRGB(180,0,50) or Color3.fromRGB(0,180,50)
LastReachedTime = tick()
SaveSettings()
end)
-- [[ BOT TAB ]] --
local BotTypeBtn = Instance.new("TextButton", BotTab); BotTypeBtn.Size = UDim2.new(1,-10,0,30); BotTypeBtn.Text = "Bot Type: "..Settings.BotType; BotTypeBtn.BackgroundColor3 = Color3.fromRGB(50,50,50); BotTypeBtn.TextColor3 = Color3.new(1,1,1)
BotTypeBtn.MouseButton1Click:Connect(function()
local modes = {"Closest", "Random", "Furthest"}
Settings.BotType = modes[table.find(modes, Settings.BotType) % 3 + 1]
BotTypeBtn.Text = "Bot Type: "..Settings.BotType
SaveSettings()
end)
AddToggle(BotTab, "Auto Go In Tournaments", "AutoTournament", function(v) end)
AddToggle(BotTab, "Ignore Ragdoll", "IgnoreRagdoll", function(v) end)
AddSlider(BotTab, "Slap Radius", 5, 20, 10, function(v) Settings.SlapRadius = v end)
AddToggle(BotTab, "Shiftlock Mode", "Shiftlock", function(v) end)
AddSlider(BotTab, "Shiftlock Radius", 5, 50, 20, function(v) Settings.ShiftlockRadius = v end)
AddToggle(BotTab, "Strafe Around Player", "StrafeEnabled", function(v) end)
AddSlider(BotTab, "Strafe Radius", 5, 30, 15, function(v) Settings.StrafeRadius = v end)
AddToggle(BotTab, "Jumps", "Jumps", function(v) end)
AddSlider(BotTab, "Jump Chance (%)", 1, 100, 10, function(v) Settings.JumpChance = v end)
AddToggle(BotTab, "Ignore Oneshots", "IgnoreOneshots", function(v) end)
AddSlider(BotTab, "Distance Radius", 0, 30, 5, function(v) Settings.DistanceRadius = v end)
AddToggle(BotTab, "Unequip Glove Far", "UnequipFar", function(v) end)
AddSlider(BotTab, "Unequip Radius", 5, 50, 30, function(v) Settings.UnequipRadius = v end)
AddToggle(BotTab, "Danger Mode", "DangerMode", function(v) end)
local DangerTypeBtn = Instance.new("TextButton", BotTab); DangerTypeBtn.Size = UDim2.new(1,-10,0,30); DangerTypeBtn.Text = "Danger Type: "..Settings.DangerType; DangerTypeBtn.BackgroundColor3 = Color3.fromRGB(50,50,50); DangerTypeBtn.TextColor3 = Color3.new(1,1,1)
DangerTypeBtn.MouseButton1Click:Connect(function()
local types = {"Backoff", "Give up", "Ahh"}
Settings.DangerType = types[table.find(types, Settings.DangerType) % 3 + 1]
DangerTypeBtn.Text = "Danger Type: "..Settings.DangerType
SaveSettings()
end)
AddSlider(BotTab, "Danger HP", 10, 90, 40, function(v) Settings.DangerHP = v end)
AddToggle(BotTab, "Auto Ability (E)", "AutoAbility", function(v) end)
local AbilityModeBtn = Instance.new("TextButton", BotTab); AbilityModeBtn.Size = UDim2.new(1,-10,0,30); AbilityModeBtn.Text = "Ability Mode: "..Settings.AbilityMode; AbilityModeBtn.BackgroundColor3 = Color3.fromRGB(50,50,80); AbilityModeBtn.TextColor3 = Color3.new(1,1,1)
AbilityModeBtn.MouseButton1Click:Connect(function()
local modes = {"Combat", "Defensive", "Instant", "Combo", "Camping"}
local currentIdx = table.find(modes, Settings.AbilityMode) or 1
Settings.AbilityMode = modes[currentIdx % #modes + 1]
AbilityModeBtn.Text = "Ability Mode: "..Settings.AbilityMode
SaveSettings()
end)
-- [[ SERVER TAB ]] --
local HopNow = Instance.new("TextButton", ServerTab); HopNow.Size = UDim2.new(1,-10,0,40); HopNow.Text = "SERVER HOP NOW"; HopNow.BackgroundColor3 = Color3.fromRGB(0, 120, 200); HopNow.TextColor3 = Color3.new(1,1,1)
HopNow.MouseButton1Click:Connect(ServerHop)
local HopModeBtn = Instance.new("TextButton", ServerTab); HopModeBtn.Size = UDim2.new(1,-10,0,30); HopModeBtn.Text = "Mode: "..Settings.ServerHopMode; HopModeBtn.BackgroundColor3 = Color3.fromRGB(50,50,50); HopModeBtn.TextColor3 = Color3.new(1,1,1)
HopModeBtn.MouseButton1Click:Connect(function()
local m = {"Main", "NoOneshots", "KS"}
Settings.ServerHopMode = m[table.find(m, Settings.ServerHopMode) % 3 + 1]
HopModeBtn.Text = "Mode: "..Settings.ServerHopMode
SaveSettings()
end)
AddSlider(ServerTab, "Hop if Players <", 0, 14, 0, function(v) Settings.MinPlayers = v end)
AddToggle(ServerTab, "Ignore Low Players", "IgnoreLowPlayers", function(v) end)
AddToggle(ServerTab, "Hop on Timer", "AutoHopTimerEnabled", function(v) end)
AddSlider(ServerTab, "Timer (Minutes)", 10, 300, 30, function(v) Settings.AutoHopMinutes = v end)
AddToggle(ServerTab, "Hop on Oneshots", "HopOnOneshotsEnabled", function(v) end)
AddSlider(ServerTab, "Oneshot Limit", 1, 5, 1, function(v) Settings.MaxOneshotsAllowed = v end)
-- [[ MINIMIZE SYSTEM ]] --
local Plus = Instance.new("TextButton", ScreenGui); Plus.Size = UDim2.new(0,45,0,45); Plus.Position = UDim2.new(0.05,0,0.05,0); Plus.Text = "+"; Plus.Visible = false; Plus.BackgroundColor3 = Color3.fromRGB(0,180,50); Instance.new("UICorner", Plus).CornerRadius = UDim.new(1,0)
local Minus = Instance.new("TextButton", MainFrame); Minus.Size = UDim2.new(0,30,0,30); Minus.Position = UDim2.new(1,-35,0,5); Minus.Text = "-"; Minus.BackgroundTransparency = 1; Minus.TextColor3 = Color3.new(1,1,1); Minus.TextSize = 25
Minus.MouseButton1Click:Connect(function() MainFrame.Visible = false; Plus.Visible = true end)
Plus.MouseButton1Click:Connect(function() MainFrame.Visible = true; Plus.Visible = false end)
-- [[ MOVEMENT & COMBAT LOOP ]] --
RunService.Heartbeat:Connect(function()
HandleTournamentGUI()
if not Settings.Enabled then
LastReachedTime = tick()
return
end
local char = Player.Character; local hum = char and char:FindFirstChildOfClass("Humanoid"); local root = char and char:FindFirstChild("HumanoidRootPart")
if not root or not hum then return end
local toolInChar = char:FindFirstChildOfClass("Tool")
local toolInBackpack = Player.Backpack:FindFirstChildOfClass("Tool")
-- TOURNAMENT SAFETY CHECK
local tourneyOpen = false
for _, gui in pairs(PlayerGui:GetChildren()) do
if gui.Name == "Component" and gui:FindFirstChild("SlapTournament") and gui.SlapTournament.Visible then
tourneyOpen = true break
end
end
if not toolInChar and not toolInBackpack then
if tourneyOpen and Settings.AutoTournament then
hum:Move(Vector3.new(0,0,0))
return
end
local teleport = workspace:FindFirstChild("Lobby") and workspace.Lobby:FindFirstChild("Teleport1")
if teleport then MoveToTargetSmooth(teleport.Position) end
LastReachedTime = tick()
return
end
if Settings.Jumps and math.random(1, 100) <= Settings.JumpChance then hum.Jump = true end
local target = GetTarget()
if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
local tRoot = target.Character.HumanoidRootPart
local dist = (root.Position - tRoot.Position).Magnitude
if dist <= (Settings.SlapRadius + 5) then LastReachedTime = tick() end
if tick() - LastReachedTime > 45 then
LastReachedTime = tick()
hum.Health = 0
return
end
if Settings.Shiftlock and dist <= Settings.ShiftlockRadius then
root.CFrame = CFrame.lookAt(root.Position, Vector3.new(tRoot.Position.X, root.Position.Y, tRoot.Position.Z))
end
if Settings.UnequipFar then
if dist > Settings.UnequipRadius then hum:UnequipTools()
elseif dist <= Settings.UnequipRadius and toolInBackpack then hum:EquipTool(toolInBackpack) end
elseif toolInBackpack then hum:EquipTool(toolInBackpack) end
if Settings.StrafeEnabled and dist <= Settings.StrafeRadius then
local speed = 4
local time = tick() * speed
local offset = Vector3.new(math.cos(time) * Settings.DistanceRadius, 0, math.sin(time) * Settings.DistanceRadius)
MoveToTargetSmooth(tRoot.Position + offset)
elseif dist > Settings.DistanceRadius then
MoveToTargetSmooth(tRoot.Position)
end
if dist <= Settings.SlapRadius and toolInChar then toolInChar:Activate() end
else
LastReachedTime = tick()
end
end)
-- [[ ABILITY ENGINE LOOP ]] --
task.spawn(function()
while true do
task.wait(0.1)
if not Settings.Enabled or not Settings.AutoAbility then continue end
local char = Player.Character
local tool = char and char:FindFirstChildOfClass("Tool")
if not tool then continue end
local target = GetTarget()
local dist = 999
if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
dist = (char.HumanoidRootPart.Position - target.Character.HumanoidRootPart.Position).Magnitude
end
if Settings.AbilityMode == "Combat" then
if dist <= 15 then TriggerAbility(); task.wait(1) end
elseif Settings.AbilityMode == "Defensive" then
local hum = char:FindFirstChildOfClass("Humanoid")
if (dist > 15 and dist < 30) or (hum and hum.Health < Settings.DangerHP) then
TriggerAbility(); task.wait(1)
end
elseif Settings.AbilityMode == "Instant" then
TriggerAbility()
task.wait(0.5)
elseif Settings.AbilityMode == "Combo" then
local currentSlaps = GetSlaps()
if currentSlaps > LastSlapCount then
task.wait(0.5)
TriggerAbility()
LastSlapCount = currentSlaps
end
elseif Settings.AbilityMode == "Camping" then
if dist > 50 then TriggerAbility(); task.wait(1) end
end
LastSlapCount = GetSlaps()
end
end)
MainTab.Visible = true


ITS A TRAP
Warning for all users of script, use an ALTERNATIVE account to test this script before using it on your main to prevent a possible Insta-ban. (This script has been flagged for an INSTANT BAN!)
@AdminFinderEXE hero