-- discord.gg/NCcTwpNQ2S warn("Initializing basic exploit..") -- Configuration Variables local ENABLE_AIMBOT = true local ENABLE_ESP = true local ENABLE_SPEED = true -- Configurable options local PLAYER_SPEED = 150 local ESP_VISIBLE_COLOR = Color3.fromRGB(144, 238, 144) local ESP_HIDDEN_COLOR = Color3.fromRGB(250, 120, 120) local ESP_FILL_TRANSPARENCY = 0.5 local ESP_OUTLINE_COLOR = Color3.fromRGB(255, 255, 255) local ESP_OUTLINE_TRANSPARENCY = 1 -- Config / keybinds local AIMBOT_HOLD_KEY = Enum.UserInputType.MouseButton2 local SPEED_TOGGLE_KEY = Enum.KeyCode.Q local KILL_SWITCH_KEY = Enum.KeyCode.F1 local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local localPlayer = Players.LocalPlayer local gameCamera = workspace.CurrentCamera local playerMouse = localPlayer:GetMouse() local isAimbotActive = false local isSpeedActive = false local isScriptRunning = true local playerHighlights = {} local activeConnections = {} local currentAimbotTarget = nil local function getPlayerCharacter(player) return player and player.Character end local function getCharacterHead(character) return character and character:FindFirstChild("Head") end local function findNearestPlayerToMouse() local closestPlayer = nil local shortestDistance = math.huge local mousePosition = Vector2.new(playerMouse.X, playerMouse.Y) for _, player in ipairs(Players:GetPlayers()) do if player ~= localPlayer then local character = getPlayerCharacter(player) local head = getCharacterHead(character) if head then local headScreenPosition, isOnScreen = gameCamera:WorldToViewportPoint(head.Position) if isOnScreen then local screenPosition = Vector2.new(headScreenPosition.X, headScreenPosition.Y) local distanceToMouse = (screenPosition - mousePosition).Magnitude if distanceToMouse < shortestDistance then shortestDistance = distanceToMouse closestPlayer = player end end end end end return closestPlayer end local function createPlayerESP(player) if playerHighlights[player] then return end local character = getPlayerCharacter(player) if not character then return end local highlight = Instance.new("Highlight") highlight.FillColor = ESP_VISIBLE_COLOR highlight.FillTransparency = ESP_FILL_TRANSPARENCY highlight.OutlineColor = ESP_OUTLINE_COLOR highlight.OutlineTransparency = ESP_OUTLINE_TRANSPARENCY highlight.Parent = character playerHighlights[player] = highlight end local function removePlayerESP(player) if playerHighlights[player] then playerHighlights[player]:Destroy() playerHighlights[player] = nil end end local function isPlayerVisible(player) local character = getPlayerCharacter(player) local head = getCharacterHead(character) if not head then return false end local localCharacter = getPlayerCharacter(localPlayer) if not localCharacter then return false end local localHead = getCharacterHead(localCharacter) if not localHead then return false end local origin = localHead.Position local direction = (head.Position - origin).Unit local distance = (head.Position - origin).Magnitude local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude raycastParams.FilterDescendantsInstances = {localCharacter, character} local raycastResult = workspace:Raycast(origin, direction * distance, raycastParams) return raycastResult == nil end local function updateESPColors() for player, highlight in pairs(playerHighlights) do if highlight and highlight.Parent then if isPlayerVisible(player) then highlight.FillColor = ESP_VISIBLE_COLOR else highlight.FillColor = ESP_HIDDEN_COLOR end end end end local function initializeESPSystem() if not ENABLE_ESP then return end for _, player in ipairs(Players:GetPlayers()) do if player ~= localPlayer then if player.Character then createPlayerESP(player) end player.CharacterAdded:Connect(function(character) if not isScriptRunning then return end task.wait() createPlayerESP(player) end) end end activeConnections.playerJoined = Players.PlayerAdded:Connect(function(player) if not isScriptRunning or player == localPlayer then return end player.CharacterAdded:Connect(function(character) if not isScriptRunning then return end task.wait() createPlayerESP(player) end) if player.Character then task.wait() createPlayerESP(player) end end) activeConnections.playerLeft = Players.PlayerRemoving:Connect(function(player) removePlayerESP(player) end) activeConnections.espColorUpdater = RunService.Heartbeat:Connect(function() if not isScriptRunning then return end updateESPColors() end) end local function updateWalkSpeed(newSpeed) local character = getPlayerCharacter(localPlayer) if character then local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.WalkSpeed = newSpeed end end end local function toggleSpeedModification() if not ENABLE_SPEED then return end isSpeedActive = not isSpeedActive if isSpeedActive then updateWalkSpeed(PLAYER_SPEED) activeConnections.speedMaintainer = RunService.Heartbeat:Connect(function() if not isScriptRunning or not isSpeedActive then return end updateWalkSpeed(PLAYER_SPEED) end) activeConnections.speedOnRespawn = localPlayer.CharacterAdded:Connect(function(character) if not isScriptRunning or not isSpeedActive then return end task.wait() updateWalkSpeed(PLAYER_SPEED) end) else if activeConnections.speedMaintainer then activeConnections.speedMaintainer:Disconnect() activeConnections.speedMaintainer = nil end if activeConnections.speedOnRespawn then activeConnections.speedOnRespawn:Disconnect() activeConnections.speedOnRespawn = nil end updateWalkSpeed(16) end end local function startAimbotTracking() if not ENABLE_AIMBOT then return end activeConnections.aimbotTracker = RunService.RenderStepped:Connect(function() if not isScriptRunning or not isAimbotActive then return end if not currentAimbotTarget then currentAimbotTarget = findNearestPlayerToMouse() end if currentAimbotTarget then local character = getPlayerCharacter(currentAimbotTarget) local head = getCharacterHead(character) if head then gameCamera.CFrame = CFrame.new(gameCamera.CFrame.Position, head.Position) else currentAimbotTarget = nil end end end) end local function setupInputHandling() activeConnections.inputStarted = UserInputService.InputBegan:Connect(function(input, gameProcessedEvent) if gameProcessedEvent or not isScriptRunning then return end if input.UserInputType == AIMBOT_HOLD_KEY then isAimbotActive = true if not activeConnections.aimbotTracker then startAimbotTracking() end elseif input.KeyCode == SPEED_TOGGLE_KEY then toggleSpeedModification() elseif input.KeyCode == KILL_SWITCH_KEY then isScriptRunning = false warn("Kill switch clicked") for connectionName, connection in pairs(activeConnections) do if connection then connection:Disconnect() end end for player, _ in pairs(playerHighlights) do removePlayerESP(player) end if isSpeedActive then updateWalkSpeed(16) end activeConnections = {} playerHighlights = {} end end) activeConnections.inputEnded = UserInputService.InputEnded:Connect(function(input, gameProcessedEvent) if not isScriptRunning then return end if input.UserInputType == AIMBOT_HOLD_KEY then isAimbotActive = false currentAimbotTarget = nil if activeConnections.aimbotTracker then activeConnections.aimbotTracker:Disconnect() activeConnections.aimbotTracker = nil end end end) end initializeESPSystem() setupInputHandling() warn("Basic expoit loaded")