basic menu gui
Key Required

basic menu gui

ArmsOfSolitaire BETAtrashbot76trashbot76 2.1K views 55 executesUpdated Oct 12, 2025
3.8/ 5(4 votes)
3175% Positive
Lua Script•1034 lines (29601 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")
local Camera = Workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

local settings = {
	esp = false,
	noclip = false,
	teamCheck = true,
	fogRemover = true,
	hitbox = false,
	infjump = false,
	speed = false,
	triggerbot = false,
	hitboxSize = 10,
	jumpPower = 50,
	speedMultiplier = 2,
	triggerbotDelay = 0.3,
	maxDistance = 300,
	keybinds = {
		esp = Enum.KeyCode.F1,
		noclip = Enum.KeyCode.F2,
		teamCheck = Enum.KeyCode.F3,
		fogRemover = Enum.KeyCode.F4,
		hitbox = Enum.KeyCode.F5,
		infjump = Enum.KeyCode.F6,
		speed = Enum.KeyCode.F7,
		triggerbot = Enum.KeyCode.F8
	}
}

local state = {
	noclipConnection = nil,
	speedConnection = nil,
	hitboxConnection = nil,
	triggerbotConnection = nil,
	espObjects = {},
	hitboxParts = {},
	changingKeybind = nil,
	canJump = true,
	lastShot = 0,
	playerCharacters = {}
}

local COLORS = {
	background = Color3.fromRGB(15, 15, 18),
	surface = Color3.fromRGB(22, 22, 26),
	surfaceLight = Color3.fromRGB(32, 32, 36),
	accent = Color3.fromRGB(88, 101, 242),
	accentHover = Color3.fromRGB(71, 82, 196),
	success = Color3.fromRGB(67, 181, 129),
	text = Color3.fromRGB(224, 225, 227),
	textDim = Color3.fromRGB(148, 152, 157),
	border = Color3.fromRGB(38, 38, 42)
}

local function createGUI()
	local sg = Instance.new("ScreenGui")
	sg.Name = "AceHelper"
	sg.ResetOnSpawn = false
	sg.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	sg.IgnoreGuiInset = true
	
	local main = Instance.new("Frame")
	main.Name = "Main"
	main.Size = UDim2.new(0, 280, 0, 420)
	main.Position = UDim2.new(0.5, -140, 0.5, -210)
	main.BackgroundColor3 = COLORS.background
	main.BorderSizePixel = 0
	main.Active = true
	main.ClipsDescendants = true
	main.BackgroundTransparency = 1
	main.AnchorPoint = Vector2.new(0.5, 0.5)
	main.Parent = sg
	
	local mainCorner = Instance.new("UICorner")
	mainCorner.CornerRadius = UDim.new(0, 10)
	mainCorner.Parent = main
	
	local mainStroke = Instance.new("UIStroke")
	mainStroke.Color = COLORS.border
	mainStroke.Thickness = 1
	mainStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
	mainStroke.Transparency = 1
	mainStroke.Parent = main
	
	local title = Instance.new("Frame")
	title.Name = "Title"
	title.Size = UDim2.new(1, 0, 0, 38)
	title.BackgroundColor3 = COLORS.surface
	title.BorderSizePixel = 0
	title.Parent = main
	
	local titleCorner = Instance.new("UICorner")
	titleCorner.CornerRadius = UDim.new(0, 10)
	titleCorner.Parent = title
	
	local titleFix = Instance.new("Frame")
	titleFix.Size = UDim2.new(1, 0, 0, 10)
	titleFix.Position = UDim2.new(0, 0, 1, -10)
	titleFix.BackgroundColor3 = COLORS.surface
	titleFix.BorderSizePixel = 0
	titleFix.Parent = title
	
	local titleText = Instance.new("TextLabel")
	titleText.Size = UDim2.new(1, -20, 1, 0)
	titleText.Position = UDim2.new(0, 20, 0, 0)
	titleText.BackgroundTransparency = 1
	titleText.Text = "ACE HELPER"
	titleText.TextColor3 = COLORS.text
	titleText.Font = Enum.Font.GothamBold
	titleText.TextSize = 14
	titleText.TextXAlignment = Enum.TextXAlignment.Left
	titleText.Parent = title
	
	local accent = Instance.new("Frame")
	accent.Size = UDim2.new(1, 0, 0, 2)
	accent.Position = UDim2.new(0, 0, 0, 38)
	accent.BackgroundColor3 = COLORS.accent
	accent.BorderSizePixel = 0
	accent.Parent = main
	
	local scrollContainer = Instance.new("Frame")
	scrollContainer.Name = "ScrollContainer"
	scrollContainer.Size = UDim2.new(1, 0, 1, -40)
	scrollContainer.Position = UDim2.new(0, 0, 0, 40)
	scrollContainer.BackgroundTransparency = 1
	scrollContainer.ClipsDescendants = true
	scrollContainer.Parent = main
	
	local scroll = Instance.new("ScrollingFrame")
	scroll.Name = "Scroll"
	scroll.Size = UDim2.new(1, 0, 1, 0)
	scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
	scroll.BackgroundTransparency = 1
	scroll.BorderSizePixel = 0
	scroll.ScrollBarThickness = 4
	scroll.ScrollBarImageColor3 = COLORS.accent
	scroll.ScrollingDirection = Enum.ScrollingDirection.Y
	scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
	scroll.ScrollBarImageTransparency = 0.5
	scroll.Parent = scrollContainer
	
	local content = Instance.new("Frame")
	content.Name = "Content"
	content.Size = UDim2.new(1, -24, 1, 0)
	content.Position = UDim2.new(0, 12, 0, 8)
	content.BackgroundTransparency = 1
	content.AutomaticSize = Enum.AutomaticSize.Y
	content.Parent = scroll
	
	local layout = Instance.new("UIListLayout")
	layout.Padding = UDim.new(0, 6)
	layout.SortOrder = Enum.SortOrder.LayoutOrder
	layout.Parent = content
	
	local topGradient = Instance.new("Frame")
	topGradient.Name = "TopGradient"
	topGradient.Size = UDim2.new(1, 0, 0, 20)
	topGradient.Position = UDim2.new(0, 0, 0, 40)
	topGradient.BackgroundColor3 = COLORS.background
	topGradient.BorderSizePixel = 0
	topGradient.ZIndex = 10
	topGradient.Parent = main
	
	local topGrad = Instance.new("UIGradient")
	topGrad.Rotation = 90
	topGrad.Transparency = NumberSequence.new({
		NumberSequenceKeypoint.new(0, 0),
		NumberSequenceKeypoint.new(1, 1)
	})
	topGrad.Parent = topGradient
	
	local bottomGradient = Instance.new("Frame")
	bottomGradient.Name = "BottomGradient"
	bottomGradient.Size = UDim2.new(1, 0, 0, 20)
	bottomGradient.Position = UDim2.new(0, 0, 1, -20)
	bottomGradient.BackgroundColor3 = COLORS.background
	bottomGradient.BorderSizePixel = 0
	bottomGradient.ZIndex = 10
	bottomGradient.Parent = main
	
	local bottomGrad = Instance.new("UIGradient")
	bottomGrad.Rotation = 90
	bottomGrad.Transparency = NumberSequence.new({
		NumberSequenceKeypoint.new(0, 1),
		NumberSequenceKeypoint.new(1, 0)
	})
	bottomGrad.Parent = bottomGradient
	
	local bottomCorner = Instance.new("UICorner")
	bottomCorner.CornerRadius = UDim.new(0, 10)
	bottomCorner.Parent = bottomGradient
	
	return sg, content, main, mainStroke, title
end

local gui, content, mainFrame, mainStroke, titleFrame = createGUI()
local yOffset = 0

local function createToggle(name: string, setting: string)
	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(1, 0, 0, 32)
	frame.BackgroundColor3 = COLORS.surface
	frame.BorderSizePixel = 0
	frame.LayoutOrder = yOffset
	frame.Parent = content
	yOffset += 1
	
	local frameCorner = Instance.new("UICorner")
	frameCorner.CornerRadius = UDim.new(0, 6)
	frameCorner.Parent = frame
	
	local label = Instance.new("TextLabel")
	label.Size = UDim2.new(0, 110, 1, 0)
	label.Position = UDim2.new(0, 10, 0, 0)
	label.BackgroundTransparency = 1
	label.Text = name
	label.TextColor3 = COLORS.text
	label.Font = Enum.Font.GothamMedium
	label.TextSize = 12
	label.TextXAlignment = Enum.TextXAlignment.Left
	label.Parent = frame
	
	local toggle = Instance.new("TextButton")
	toggle.Name = "Toggle"
	toggle.Size = UDim2.new(0, 42, 0, 20)
	toggle.Position = UDim2.new(0, 115, 0.5, -10)
	toggle.BackgroundColor3 = COLORS.surfaceLight
	toggle.BorderSizePixel = 0
	toggle.AutoButtonColor = false
	toggle.Text = "OFF"
	toggle.TextColor3 = COLORS.textDim
	toggle.Font = Enum.Font.GothamBold
	toggle.TextSize = 9
	toggle.Parent = frame
	
	local toggleCorner = Instance.new("UICorner")
	toggleCorner.CornerRadius = UDim.new(0, 5)
	toggleCorner.Parent = toggle
	
	local keybind = Instance.new("TextButton")
	keybind.Name = "Keybind"
	keybind.Size = UDim2.new(0, 50, 0, 20)
	keybind.Position = UDim2.new(1, -60, 0.5, -10)
	keybind.BackgroundColor3 = COLORS.surfaceLight
	keybind.BorderSizePixel = 0
	keybind.AutoButtonColor = false
	keybind.Text = settings.keybinds[setting].Name
	keybind.TextColor3 = COLORS.textDim
	keybind.Font = Enum.Font.GothamMedium
	keybind.TextSize = 9
	keybind.Parent = frame
	
	local keybindCorner = Instance.new("UICorner")
	keybindCorner.CornerRadius = UDim.new(0, 5)
	keybindCorner.Parent = keybind
	
	return toggle, keybind
end

local function createSlider(name: string, min: number, max: number, default: number, setting: string)
	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(1, 0, 0, 44)
	frame.BackgroundColor3 = COLORS.surface
	frame.BorderSizePixel = 0
	frame.LayoutOrder = yOffset
	frame.Parent = content
	yOffset += 1
	
	local frameCorner = Instance.new("UICorner")
	frameCorner.CornerRadius = UDim.new(0, 6)
	frameCorner.Parent = frame
	
	local label = Instance.new("TextLabel")
	label.Size = UDim2.new(0, 110, 0, 16)
	label.Position = UDim2.new(0, 10, 0, 6)
	label.BackgroundTransparency = 1
	label.Text = name
	label.TextColor3 = COLORS.text
	label.Font = Enum.Font.GothamMedium
	label.TextSize = 11
	label.TextXAlignment = Enum.TextXAlignment.Left
	label.Parent = frame
	
	local valueBox = Instance.new("TextBox")
	valueBox.Size = UDim2.new(0, 50, 0, 16)
	valueBox.Position = UDim2.new(1, -60, 0, 6)
	valueBox.BackgroundColor3 = COLORS.surfaceLight
	valueBox.BorderSizePixel = 0
	valueBox.Text = tostring(default)
	valueBox.TextColor3 = COLORS.text
	valueBox.Font = Enum.Font.GothamMedium
	valueBox.TextSize = 10
	valueBox.Parent = frame
	
	local valueCorner = Instance.new("UICorner")
	valueCorner.CornerRadius = UDim.new(0, 4)
	valueCorner.Parent = valueBox
	
	local sliderBg = Instance.new("Frame")
	sliderBg.Size = UDim2.new(1, -20, 0, 5)
	sliderBg.Position = UDim2.new(0, 10, 0, 30)
	sliderBg.BackgroundColor3 = COLORS.surfaceLight
	sliderBg.BorderSizePixel = 0
	sliderBg.Parent = frame
	
	local sliderBgCorner = Instance.new("UICorner")
	sliderBgCorner.CornerRadius = UDim.new(1, 0)
	sliderBgCorner.Parent = sliderBg
	
	local sliderFill = Instance.new("Frame")
	sliderFill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
	sliderFill.BackgroundColor3 = COLORS.accent
	sliderFill.BorderSizePixel = 0
	sliderFill.Parent = sliderBg
	
	local sliderFillCorner = Instance.new("UICorner")
	sliderFillCorner.CornerRadius = UDim.new(1, 0)
	sliderFillCorner.Parent = sliderFill
	
	local sliderBtn = Instance.new("Frame")
	sliderBtn.Size = UDim2.new(0, 12, 0, 12)
	sliderBtn.Position = UDim2.new((default - min) / (max - min), -6, 0.5, -6)
	sliderBtn.BackgroundColor3 = COLORS.text
	sliderBtn.BorderSizePixel = 0
	sliderBtn.Parent = sliderBg
	
	local sliderBtnCorner = Instance.new("UICorner")
	sliderBtnCorner.CornerRadius = UDim.new(1, 0)
	sliderBtnCorner.Parent = sliderBtn
	
	local dragDetector = Instance.new("TextButton")
	dragDetector.Size = UDim2.new(1, 20, 1, 20)
	dragDetector.Position = UDim2.new(0, -10, 0, -10)
	dragDetector.BackgroundTransparency = 1
	dragDetector.Text = ""
	dragDetector.Parent = sliderBg
	
	local dragging = false
	local dragConnection = nil
	
	local function updateValue(value: number, animate: boolean)
		value = math.clamp(value, min, max)
		local percent = (value - min) / (max - min)
		
		if animate then
			local tweenInfo = TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
			TweenService:Create(sliderFill, tweenInfo, {Size = UDim2.new(percent, 0, 1, 0)}):Play()
			TweenService:Create(sliderBtn, tweenInfo, {Position = UDim2.new(percent, -6, 0.5, -6)}):Play()
		else
			sliderFill.Size = UDim2.new(percent, 0, 1, 0)
			sliderBtn.Position = UDim2.new(percent, -6, 0.5, -6)
		end
		
		valueBox.Text = tostring(math.floor(value * 100) / 100)
		settings[setting] = value
	end
	
	dragDetector.MouseButton1Down:Connect(function()
		dragging = true
		if dragConnection then dragConnection:Disconnect() end
		
		dragConnection = RunService.RenderStepped:Connect(function()
			if dragging then
				local mouse = LocalPlayer:GetMouse()
				local relativeX = mouse.X - sliderBg.AbsolutePosition.X
				local percent = math.clamp(relativeX / sliderBg.AbsoluteSize.X, 0, 1)
				local value = min + (max - min) * percent
				updateValue(value, false)
			end
		end)
	end)
	
	UserInputService.InputEnded:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			dragging = false
			if dragConnection then
				dragConnection:Disconnect()
				dragConnection = nil
			end
		end
	end)
	
	valueBox.FocusLost:Connect(function()
		local value = tonumber(valueBox.Text)
		if value then
			updateValue(value, true)
		else
			valueBox.Text = tostring(settings[setting])
		end
	end)
	
	return frame
end

local espToggle, espKey = createToggle("ESP", "esp")
local noclipToggle, noclipKey = createToggle("Noclip", "noclip")
local teamToggle, teamKey = createToggle("Team Check", "teamCheck")
local fogToggle, fogKey = createToggle("Fog Remover", "fogRemover")
local hitboxToggle, hitboxKey = createToggle("Hitbox Expand", "hitbox")
local infjumpToggle, infjumpKey = createToggle("Inf Jump", "infjump")
local speedToggle, speedKey = createToggle("Speed", "speed")
local triggerbotToggle, triggerbotKey = createToggle("Triggerbot", "triggerbot")

createSlider("Hitbox Size", 1, 30, settings.hitboxSize, "hitboxSize")
createSlider("Jump Power", 20, 100, settings.jumpPower, "jumpPower")
createSlider("Speed Mult", 1, 5, settings.speedMultiplier, "speedMultiplier")
createSlider("Trigger Delay", 0.05, 1, settings.triggerbotDelay, "triggerbotDelay")
createSlider("Max Distance", 50, 500, settings.maxDistance, "maxDistance")

gui.Parent = game:GetService("CoreGui")

local dragging = false
local dragStart = nil
local startPos = nil

titleFrame.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		dragStart = input.Position
		startPos = mainFrame.Position
	end
end)

UserInputService.InputChanged:Connect(function(input)
	if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
		local delta = input.Position - dragStart
		local newPos = UDim2.new(
			startPos.X.Scale,
			startPos.X.Offset + delta.X,
			startPos.Y.Scale,
			startPos.Y.Offset + delta.Y
		)
		mainFrame.Position = newPos
	end
end)

UserInputService.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = false
	end
end)

task.spawn(function()
	local tweenInfo = TweenInfo.new(0.4, Enum.EasingStyle.Quint, Enum.EasingDirection.Out)
	mainFrame.Size = UDim2.new(0, 0, 0, 0)
	
	TweenService:Create(mainFrame, tweenInfo, {
		Size = UDim2.new(0, 280, 0, 420),
		BackgroundTransparency = 0
	}):Play()
	
	TweenService:Create(mainStroke, tweenInfo, {Transparency = 0}):Play()
	
	task.wait(0.1)
	for _, child in ipairs(content:GetChildren()) do
		if child:IsA("Frame") then
			child.BackgroundTransparency = 1
			TweenService:Create(child, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
				BackgroundTransparency = 0
			}):Play()
			task.wait(0.02)
		end
	end
end)

local function updateToggleUI(toggle: TextButton, enabled: boolean)
	local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
	if enabled then
		TweenService:Create(toggle, tweenInfo, {BackgroundColor3 = COLORS.accent}):Play()
		toggle.Text = "ON"
		toggle.TextColor3 = COLORS.text
	else
		TweenService:Create(toggle, tweenInfo, {BackgroundColor3 = COLORS.surfaceLight}):Play()
		toggle.Text = "OFF"
		toggle.TextColor3 = COLORS.textDim
	end
end

local function disableFog()
	Lighting.FogEnd = 1e6
	Lighting.FogStart = 0
	Lighting.FogColor = Color3.new(1, 1, 1)
end

local function enableFog()
	Lighting.FogEnd = 500
	Lighting.FogStart = 0
end

local function getCenterPart(character: Model)
	if not character then return nil end
	return character:FindFirstChild("HumanoidRootPart") 
		or character:FindFirstChild("Torso") 
		or character:FindFirstChild("UpperTorso")
		or character:FindFirstChildWhichIsA("BasePart")
end

local function isSameTeam(a: Player, b: Player): boolean
	if not settings.teamCheck then return false end
	if a.Team and b.Team then
		return a.Team == b.Team
	end
	return false
end

local function updatePlayerCache()
	state.playerCharacters = {}
	for _, p in ipairs(Players:GetPlayers()) do
		if p ~= LocalPlayer and p.Character then
			state.playerCharacters[p.Character] = p
		end
	end
end

local function applyESP(player: Player)
	local function addHighlight(character: Model)
		if not settings.esp then return end
		if character:FindFirstChild("ESP_Highlight") then return end
		
		local h = Instance.new("Highlight")
		h.Name = "ESP_Highlight"
		h.Adornee = character
		h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
		h.FillTransparency = 0.7
		h.OutlineTransparency = 0
		h.OutlineColor = Color3.fromRGB(255, 255, 255)
		h.FillColor = isSameTeam(LocalPlayer, player) 
			and Color3.fromRGB(80, 150, 255) 
			or Color3.fromRGB(255, 80, 80)
		h.Parent = character
		
		state.espObjects[player] = h
	end
	
	player.CharacterAdded:Connect(function(char)
		task.wait(0.5)
		addHighlight(char)
	end)
	
	if player.Character then
		addHighlight(player.Character)
	end
end

local function removeESP(player: Player)
	if state.espObjects[player] then
		state.espObjects[player]:Destroy()
		state.espObjects[player] = nil
	end
	if player.Character then
		local h = player.Character:FindFirstChild("ESP_Highlight")
		if h then h:Destroy() end
	end
end

local function getTargetParts(character: Model)
	local parts = {}
	for _, part in ipairs(character:GetDescendants()) do
		if part:IsA("BasePart") and (
			part.Name:match("Head") or
			part.Name:match("Torso") or
			part.Name:match("Chest") or
			part.Name:match("Upper") or
			part.Name:match("HumanoidRootPart")
		) then
			table.insert(parts, part)
		end
	end
	if #parts == 0 then
		local hrp = getCenterPart(character)
		if hrp then table.insert(parts, hrp) end
	end
	return parts
end

local function createHitbox(character: Model, player: Player)
	if not character or isSameTeam(LocalPlayer, player) then return end
	
	local targetParts = getTargetParts(character)
	if #targetParts == 0 then return end
	
	for _, originalPart in ipairs(targetParts) do
		if not originalPart:FindFirstChild("HitboxExtender") then
			local hitbox = Instance.new("Part")
			hitbox.Name = "HitboxExtender"
			hitbox.Size = Vector3.new(settings.hitboxSize, settings.hitboxSize, settings.hitboxSize)
			hitbox.Transparency = 1
			hitbox.CanCollide = false
			hitbox.Massless = true
			hitbox.CFrame = originalPart.CFrame
			hitbox.Anchored = false
			
			local weld = Instance.new("WeldConstraint")
			weld.Part0 = hitbox
			weld.Part1 = originalPart
			weld.Parent = hitbox
			
			for _, existing in ipairs(originalPart:GetChildren()) do
				if existing:IsA("BodyVelocity") or existing:IsA("BodyGyro") or existing:IsA("BodyPosition") then
					existing:Destroy()
				end
			end
			
			hitbox.Parent = character
			
			if not state.hitboxParts[player] then
				state.hitboxParts[player] = {}
			end
			table.insert(state.hitboxParts[player], hitbox)
		end
	end
end

local function removeHitbox(player: Player)
	if state.hitboxParts[player] then
		for _, hitbox in ipairs(state.hitboxParts[player]) do
			if hitbox and hitbox.Parent then
				hitbox:Destroy()
			end
		end
		state.hitboxParts[player] = nil
	end
	
	if player.Character then
		for _, part in ipairs(player.Character:GetDescendants()) do
			if part.Name == "HitboxExtender" then
				part:Destroy()
			end
		end
	end
end

local function hitboxLoop()
	if not settings.hitbox then return end
	
	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= LocalPlayer and player.Character then
			if not isSameTeam(LocalPlayer, player) then
				local char = player.Character
				local needsUpdate = false
				
				if not state.hitboxParts[player] or #state.hitboxParts[player] == 0 then
					needsUpdate = true
				else
					for _, hitbox in ipairs(state.hitboxParts[player]) do
						if not hitbox or not hitbox.Parent then
							needsUpdate = true
							break
						end
					end
				end
				
				if needsUpdate then
					removeHitbox(player)
					createHitbox(char, player)
				end
			else
				removeHitbox(player)
			end
		end
	end
end

local function noclipLoop()
	if not settings.noclip then return end
	
	local char = LocalPlayer.Character
	if not char then return end
	
	for _, part in ipairs(char:GetDescendants()) do
		if part:IsA("BasePart") then
			part.CanCollide = false
		end
	end
end

local function speedLoop()
	if not settings.speed then return end
	
	local char = LocalPlayer.Character
	if not char then return end
	
	local hrp = char:FindFirstChild("HumanoidRootPart")
	if not hrp then return end
	
	local moveDir = Vector3.zero
	
	if UserInputService:IsKeyDown(Enum.KeyCode.W) then
		moveDir += Camera.CFrame.LookVector
	end
	if UserInputService:IsKeyDown(Enum.KeyCode.S) then
		moveDir -= Camera.CFrame.LookVector
	end
	if UserInputService:IsKeyDown(Enum.KeyCode.A) then
		moveDir -= Camera.CFrame.RightVector
	end
	if UserInputService:IsKeyDown(Enum.KeyCode.D) then
		moveDir += Camera.CFrame.RightVector
	end
	
	if moveDir.Magnitude > 0 then
		moveDir = Vector3.new(moveDir.X, 0, moveDir.Z).Unit
		local currentVel = hrp.AssemblyLinearVelocity
		hrp.AssemblyLinearVelocity = Vector3.new(
			moveDir.X * 16 * settings.speedMultiplier,
			currentVel.Y,
			moveDir.Z * 16 * settings.speedMultiplier
		)
	end
end

local function triggerbotLoop()
	if not settings.triggerbot then return end
	
	local now = tick()
	if now - state.lastShot < settings.triggerbotDelay then return end
	
	local mouse = LocalPlayer:GetMouse()
	local origin = Camera.CFrame.Position
	local direction = (mouse.Hit.Position - origin).Unit * settings.maxDistance
	
	local rayParams = RaycastParams.new()
	rayParams.FilterDescendantsInstances = {LocalPlayer.Character}
	rayParams.FilterType = Enum.RaycastFilterType.Exclude
	rayParams.IgnoreWater = true
	
	local result = Workspace:Raycast(origin, direction, rayParams)
	
	if result and result.Instance then
		local hitPart = result.Instance
		local hitChar = hitPart:FindFirstAncestorOfClass("Model")
		
		if hitChar and state.playerCharacters[hitChar] then
			local targetPlayer = state.playerCharacters[hitChar]
			
			if not isSameTeam(LocalPlayer, targetPlayer) then
				local hum = hitChar:FindFirstChild("Humanoid")
				if hum and hum.Health > 0 then
					local distance = (origin - result.Position).Magnitude
					
					if distance <= settings.maxDistance then
						mouse1click()
						state.lastShot = now
					end
				end
			end
		end
	end
end

local function infJumpLoop()
	if not settings.infjump then return end
	if not state.canJump then return end
	
	local char = LocalPlayer.Character
	if not char then return end
	
	local hrp = char:FindFirstChild("HumanoidRootPart")
	if not hrp then return end
	
	local vel = Instance.new("BodyVelocity")
	vel.Velocity = Vector3.new(hrp.AssemblyLinearVelocity.X, settings.jumpPower, hrp.AssemblyLinearVelocity.Z)
	vel.MaxForce = Vector3.new(0, math.huge, 0)
	vel.Parent = hrp
	
	state.canJump = false
	task.wait(0.1)
	vel:Destroy()
	task.wait(0.15)
	state.canJump = true
end

local function toggleESP()
	settings.esp = not settings.esp
	updateToggleUI(espToggle, settings.esp)
	
	if settings.esp then
		for _, p in ipairs(Players:GetPlayers()) do
			if p ~= LocalPlayer then
				applyESP(p)
			end
		end
	else
		for _, p in ipairs(Players:GetPlayers()) do
			removeESP(p)
		end
		state.espObjects = {}
	end
end

local function toggleNoclip()
	settings.noclip = not settings.noclip
	updateToggleUI(noclipToggle, settings.noclip)
	
	if settings.noclip then
		if not state.noclipConnection then
			state.noclipConnection = RunService.Stepped:Connect(noclipLoop)
		end
	else
		if state.noclipConnection then
			state.noclipConnection:Disconnect()
			state.noclipConnection = nil
		end
		local char = LocalPlayer.Character
		if char then
			for _, part in ipairs(char:GetDescendants()) do
				if part:IsA("BasePart") then
					part.CanCollide = true
				end
			end
		end
	end
end

local function toggleTeamCheck()
	settings.teamCheck = not settings.teamCheck
	updateToggleUI(teamToggle, settings.teamCheck)
	
	if settings.esp then
		for _, p in ipairs(Players:GetPlayers()) do
			if p ~= LocalPlayer and p.Character then
				local h = p.Character:FindFirstChild("ESP_Highlight")
				if h then
					h.FillColor = isSameTeam(LocalPlayer, p)
						and Color3.fromRGB(80, 150, 255)
						or Color3.fromRGB(255, 80, 80)
				end
			end
		end
	end
end

local function toggleFogRemover()
	settings.fogRemover = not settings.fogRemover
	updateToggleUI(fogToggle, settings.fogRemover)
	
	if settings.fogRemover then
		disableFog()
	else
		enableFog()
	end
end

local function toggleHitbox()
	settings.hitbox = not settings.hitbox
	updateToggleUI(hitboxToggle, settings.hitbox)
	
	if settings.hitbox then
		if not state.hitboxConnection then
			state.hitboxConnection = RunService.Heartbeat:Connect(hitboxLoop)
		end
		for _, p in ipairs(Players:GetPlayers()) do
			if p ~= LocalPlayer and p.Character then
				createHitbox(p.Character, p)
			end
		end
	else
		if state.hitboxConnection then
			state.hitboxConnection:Disconnect()
			state.hitboxConnection = nil
		end
		for _, p in ipairs(Players:GetPlayers()) do
			removeHitbox(p)
		end
		state.hitboxParts = {}
	end
end

local function toggleInfJump()
	settings.infjump = not settings.infjump
	updateToggleUI(infjumpToggle, settings.infjump)
	state.canJump = true
end

local function toggleSpeed()
	settings.speed = not settings.speed
	updateToggleUI(speedToggle, settings.speed)
	
	if settings.speed then
		if not state.speedConnection then
			state.speedConnection = RunService.Heartbeat:Connect(speedLoop)
		end
	else
		if state.speedConnection then
			state.speedConnection:Disconnect()
			state.speedConnection = nil
		end
	end
end

local function toggleTriggerbot()
	settings.triggerbot = not settings.triggerbot
	updateToggleUI(triggerbotToggle, settings.triggerbot)
	
	if settings.triggerbot then
		updatePlayerCache()
		if not state.triggerbotConnection then
			state.triggerbotConnection = RunService.RenderStepped:Connect(triggerbotLoop)
		end
	else
		if state.triggerbotConnection then
			state.triggerbotConnection:Disconnect()
			state.triggerbotConnection = nil
		end
	end
end

espToggle.MouseButton1Click:Connect(toggleESP)
noclipToggle.MouseButton1Click:Connect(toggleNoclip)
teamToggle.MouseButton1Click:Connect(toggleTeamCheck)
fogToggle.MouseButton1Click:Connect(toggleFogRemover)
hitboxToggle.MouseButton1Click:Connect(toggleHitbox)
infjumpToggle.MouseButton1Click:Connect(toggleInfJump)
speedToggle.MouseButton1Click:Connect(toggleSpeed)
triggerbotToggle.MouseButton1Click:Connect(toggleTriggerbot)

local keybindMap = {
	[espKey] = {setting = "esp", func = toggleESP},
	[noclipKey] = {setting = "noclip", func = toggleNoclip},
	[teamKey] = {setting = "teamCheck", func = toggleTeamCheck},
	[fogKey] = {setting = "fogRemover", func = toggleFogRemover},
	[hitboxKey] = {setting = "hitbox", func = toggleHitbox},
	[infjumpKey] = {setting = "infjump", func = toggleInfJump},
	[speedKey] = {setting = "speed", func = toggleSpeed},
	[triggerbotKey] = {setting = "triggerbot", func = toggleTriggerbot}
}

for btn, data in pairs(keybindMap) do
	btn.MouseButton1Click:Connect(function()
		state.changingKeybind = {button = btn, setting = data.setting}
		btn.Text = "..."
		TweenService:Create(btn, TweenInfo.new(0.15, Enum.EasingStyle.Quad), {BackgroundColor3 = COLORS.accent}):Play()
	end)
end

UserInputService.InputBegan:Connect(function(input: InputObject, gp: boolean)
	if gp then return end
	
	if state.changingKeybind then
		if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Enum.KeyCode.Escape then
			settings.keybinds[state.changingKeybind.setting] = input.KeyCode
			state.changingKeybind.button.Text = input.KeyCode.Name
			TweenService:Create(state.changingKeybind.button, TweenInfo.new(0.15, Enum.EasingStyle.Quad), {BackgroundColor3 = COLORS.surfaceLight}):Play()
		end
		state.changingKeybind = nil
		return
	end
	
	for setting, keycode in pairs(settings.keybinds) do
		if input.KeyCode == keycode then
			if setting == "esp" then toggleESP()
			elseif setting == "noclip" then toggleNoclip()
			elseif setting == "teamCheck" then toggleTeamCheck()
			elseif setting == "fogRemover" then toggleFogRemover()
			elseif setting == "hitbox" then toggleHitbox()
			elseif setting == "infjump" then toggleInfJump()
			elseif setting == "speed" then toggleSpeed()
			elseif setting == "triggerbot" then toggleTriggerbot()
			end
		end
	end
	
	if input.KeyCode == Enum.KeyCode.Space and settings.infjump then
		infJumpLoop()
	end
end)

Players.PlayerAdded:Connect(function(p)
	if p ~= LocalPlayer then
		if settings.esp then
			applyESP(p)
		end
		p.CharacterAdded:Connect(function(char)
			task.wait(0.5)
			updatePlayerCache()
			if settings.hitbox then
				createHitbox(char, p)
			end
		end)
		if p.Character then
			updatePlayerCache()
			if settings.hitbox then
				createHitbox(p.Character, p)
			end
		end
	end
end)

Players.PlayerRemoving:Connect(function(p)
	state.espObjects[p] = nil
	removeHitbox(p)
	updatePlayerCache()
end)

LocalPlayer.CharacterAdded:Connect(function()
	task.wait(0.5)
	state.canJump = true
	updatePlayerCache()
	
	if settings.noclip and not state.noclipConnection then
		state.noclipConnection = RunService.Stepped:Connect(noclipLoop)
	end
	if settings.speed and not state.speedConnection then
		state.speedConnection = RunService.Heartbeat:Connect(speedLoop)
	end
	if settings.triggerbot and not state.triggerbotConnection then
		state.triggerbotConnection = RunService.RenderStepped:Connect(triggerbotLoop)
	end
end)

if settings.fogRemover then
	disableFog()
	RunService.RenderStepped:Connect(function()
		if settings.fogRemover then
			disableFog()
		end
	end)
end

RunService.Heartbeat:Connect(function()
	if settings.triggerbot then
		updatePlayerCache()
	end
end)

updateToggleUI(teamToggle, settings.teamCheck)
updateToggleUI(fogToggle, settings.fogRemover)
updatePlayerCache()

Features & Information

trash open source script made by me lol has working esp noclip team check fog remover inf jump speed (will remove slowness after jumping and can make you strafe freely) has jump power settings too for fun hitbox expand and triggerbot may not work
#aceofspadez#armsofsolitaire#open#free#opensource

Community Comments (0)

No comments yet for this script.

More Scripts for ArmsOfSolitaire BETA