-- [[ 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 ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6aa7f3ff69ea4aa57bf49e6b"))() end) end) --[[rscripts:analytics:end]] --========================================================-- -- AUTO GOAL CONTROLLER -- --========================================================-- local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local BALL_NAME = "Ball" local MIN_SPEED = 1 local MAX_SPEED = 1000 local SHOOT_FORCE = 100 --========================================================-- -- STATE --========================================================-- local State = { autoGoalEnabled = false, isExecuting = false } --========================================================-- -- SHOOT REMOTE (EXACT LOGIC & STRUCTURE FROM ORIGINAL) --========================================================-- local shootBallRemote local shootRemoteReady = false local function resolveShootRemotes() local ok, remote = pcall(function() local events = ReplicatedStorage:FindFirstChild("Events") return events and events:FindFirstChild("ShootBall") end) shootBallRemote = ok and remote or nil shootRemoteReady = shootBallRemote ~= nil and shootBallRemote:IsA("RemoteEvent") return shootBallRemote end resolveShootRemotes() local function fireShootRemote(direction, force, thirdArg) if not shootRemoteReady or not shootBallRemote then resolveShootRemotes() end if not shootRemoteReady or not shootBallRemote then return false end if typeof(direction) ~= "Vector3" or direction.Magnitude < 0.001 then return false end direction = direction.Unit force = math.clamp(tonumber(force) or MIN_SPEED, MIN_SPEED, MAX_SPEED) return pcall(function() shootBallRemote:FireServer(direction, force, thirdArg == nil and false or thirdArg) end) end --========================================================-- -- BALL & GOAL HELPERS --========================================================-- local function scanCharacterForBall(plr) if not plr or not plr.Character then return nil end local found = plr.Character:FindFirstChild(BALL_NAME, true) if found and found:IsA("BasePart") then return found end return nil end local function localHasBall() return scanCharacterForBall(player) ~= nil end local function findFreeBall() local direct = workspace:FindFirstChild(BALL_NAME) if direct and direct:IsA("BasePart") then return direct end for _, obj in ipairs(workspace:GetChildren()) do if obj:IsA("BasePart") and string.lower(obj.Name) == string.lower(BALL_NAME) then return obj end end return nil end local function getTeamIsHome() return player.Team and string.lower(player.Team.Name) == "home" end local function resolveGoalHitboxForTeam(homeSide) local map = workspace:FindFirstChild("Map") if not map then return nil end local goalName = homeSide and "PlayerOneGoal" or "PlayerTwoGoal" local goalModel = map:FindFirstChild(goalName) if not goalModel then return nil end local score = goalModel:FindFirstChild("ScoreHitbox") or goalModel:FindFirstChild("Score") if score and score:IsA("BasePart") then return score end local hitbox = goalModel:FindFirstChild("ScoreHitbox", true) if hitbox and hitbox:IsA("BasePart") then return hitbox end return goalModel:FindFirstChildWhichIsA("BasePart", true) end local function resolveOpponentGoalHitbox() local isHome = getTeamIsHome() return resolveGoalHitboxForTeam(not isHome) end --========================================================-- -- NOTIFICATION SYSTEM --========================================================-- local notificationHolder local function notify(titleText, bodyText, duration) duration = duration or 2.0 if not notificationHolder or not notificationHolder.Parent then return end local card = Instance.new("Frame") card.Size = UDim2.fromOffset(240, 50) card.Position = UDim2.new(0.5, -120, 0, -60) card.BackgroundColor3 = Color3.fromRGB(25, 25, 32) card.BorderSizePixel = 0 card.Parent = notificationHolder local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = card local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(60, 60, 75) stroke.Transparency = 0.2 stroke.Parent = card local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -16, 0, 20) title.Position = UDim2.fromOffset(8, 4) title.BackgroundTransparency = 1 title.Text = tostring(titleText) title.Font = Enum.Font.GothamBold title.TextSize = 12 title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = card local body = Instance.new("TextLabel") body.Size = UDim2.new(1, -16, 0, 20) body.Position = UDim2.fromOffset(8, 22) body.BackgroundTransparency = 1 body.Text = tostring(bodyText) body.Font = Enum.Font.Gotham body.TextSize = 11 body.TextColor3 = Color3.fromRGB(180, 180, 190) body.TextXAlignment = Enum.TextXAlignment.Left body.Parent = card TweenService:Create(card, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { Position = UDim2.new(0.5, -120, 0, 10) }):Play() task.delay(duration, function() if not card.Parent then return end TweenService:Create(card, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { Position = UDim2.new(0.5, -120, 0, -60) }):Play() task.delay(0.22, function() if card.Parent then card:Destroy() end end) end) end --========================================================-- -- CORE AUTO GOAL ACTION --========================================================-- local function executeGoalShot() if State.isExecuting then return end State.isExecuting = true local heldBall = scanCharacterForBall(player) if not heldBall then State.isExecuting = false notify("AUTO GOAL", "Ball not in possession!", 1.2) return false end local goalHitbox = resolveOpponentGoalHitbox() if not goalHitbox then State.isExecuting = false notify("AUTO GOAL", "Opponent goal not found!", 1.5) return false end -- 1. Tự động dùng Remote sút bóng ra khỏi người trước local camera = workspace.CurrentCamera local shootDir = camera and camera.CFrame.LookVector or Vector3.new(0, 0, -1) fireShootRemote(shootDir, SHOOT_FORCE, false) -- 2. Delay ngắn để Server giải phóng Weld/Hold task.wait(0.05) -- 3. Dịch chuyển bóng trực tiếp vào khung thành đối phương local targetBall = findFreeBall() or heldBall if targetBall and targetBall:IsA("BasePart") then targetBall.CFrame = goalHitbox.CFrame targetBall.AssemblyLinearVelocity = Vector3.zero end notify("AUTO GOAL", "Goal Action Executed!", 1.2) task.wait(0.3) State.isExecuting = false return true end --========================================================-- -- GUI BUILD --========================================================-- local gui = Instance.new("ScreenGui") gui.Name = "AutoGoalController" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = playerGui notificationHolder = Instance.new("Frame") notificationHolder.Name = "Notifications" notificationHolder.Size = UDim2.fromOffset(260, 200) notificationHolder.Position = UDim2.new(0.5, -130, 0, 0) notificationHolder.BackgroundTransparency = 1 notificationHolder.Parent = gui local main = Instance.new("Frame") main.Name = "MainFrame" main.Size = UDim2.fromOffset(260, 160) main.Position = UDim2.new(0.5, -130, 0.4, -80) main.BackgroundColor3 = Color3.fromRGB(20, 20, 26) main.BorderSizePixel = 0 main.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = main local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(55, 55, 70) stroke.Transparency = 0.2 stroke.Parent = main local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -20, 0, 30) title.Position = UDim2.fromOffset(10, 5) title.BackgroundTransparency = 1 title.Text = "⚽ AUTO GOAL" title.Font = Enum.Font.GothamBold title.TextSize = 15 title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = main local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(1, -20, 0, 42) toggleBtn.Position = UDim2.fromOffset(10, 45) toggleBtn.BackgroundColor3 = Color3.fromRGB(38, 38, 48) toggleBtn.BorderSizePixel = 0 toggleBtn.Text = "AUTO GOAL: OFF" toggleBtn.TextColor3 = Color3.fromRGB(220, 220, 230) toggleBtn.Font = Enum.Font.GothamBold toggleBtn.TextSize = 13 toggleBtn.Parent = main local toggleCorner = Instance.new("UICorner") toggleCorner.CornerRadius = UDim.new(0, 8) toggleCorner.Parent = toggleBtn local actionBtn = Instance.new("TextButton") actionBtn.Size = UDim2.new(1, -20, 0, 42) actionBtn.Position = UDim2.fromOffset(10, 97) actionBtn.BackgroundColor3 = Color3.fromRGB(45, 90, 180) actionBtn.BorderSizePixel = 0 actionBtn.Text = "SCORE GOAL (ONCE)" actionBtn.TextColor3 = Color3.fromRGB(255, 255, 255) actionBtn.Font = Enum.Font.GothamBold actionBtn.TextSize = 13 actionBtn.Parent = main local actionCorner = Instance.new("UICorner") actionCorner.CornerRadius = UDim.new(0, 8) actionCorner.Parent = actionBtn -- DRAGGABLE UI local dragging, dragStart, startPos title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) --========================================================-- -- BUTTON EVENTS --========================================================-- local function updateUI() if State.autoGoalEnabled then toggleBtn.Text = "AUTO GOAL: ON" toggleBtn.BackgroundColor3 = Color3.fromRGB(40, 160, 80) else toggleBtn.Text = "AUTO GOAL: OFF" toggleBtn.BackgroundColor3 = Color3.fromRGB(38, 38, 48) end end toggleBtn.MouseButton1Click:Connect(function() State.autoGoalEnabled = not State.autoGoalEnabled updateUI() notify("AUTO GOAL", State.autoGoalEnabled and "Auto Mode Enabled" or "Auto Mode Disabled", 1.2) end) actionBtn.MouseButton1Click:Connect(function() executeGoalShot() end) --========================================================-- -- AUTOMATIC LOOP --========================================================-- RunService.Heartbeat:Connect(function() if State.autoGoalEnabled and not State.isExecuting then if localHasBall() then executeGoalShot() end end end) notify("AUTO GOAL", "Loaded successfully", 1.5)