M
Description
Gk and reach and a lot mode Alcance de arquero para facilitar las atajas y de paso un auto Dive con auto grab Reach y ún hub minimalista
GAMEFUT ⚽ [OPEN TESTING] 🔓
UPDATEDOct 25, 2026
ACCESSKeyless
PLATFORMDesktop & Mobile
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. 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 BloxScripts Risk Notice ]]
--[[==============================================================
FUT HUB • Delta Executor
Secciones: GOALKEEPER (Auto Dive / Auto Return / Grab Reach)
REACH (Hitbox extendido)
Autor: Venice
Uso: loadstring(game:HttpGet("URL_RAW_DEL_ARCHIVO"))()
==============================================================]]
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CollectionService = game:GetService("CollectionService")
local TweenService = game:GetService("TweenService")
local LP = Players.LocalPlayer
--============================ CONFIG ============================
local C = {
GK = false,
AutoDive = true,
AutoReturn = true,
DiveRange = 30,
DivePower = 55,
GrabReach = 6,
Reach = false,
ReachAmount = 5,
}
local COL = {
BG = Color3.fromRGB(17, 18, 23),
PANEL = Color3.fromRGB(27, 29, 37),
OFF = Color3.fromRGB(45, 48, 58),
ACCENT = Color3.fromRGB(90, 170, 255),
TEXT = Color3.fromRGB(228, 231, 238),
SUB = Color3.fromRGB(138, 145, 160),
}
--============================ STATE =============================
local Char, HRP, Hum, OrigSize, Lunge
local Ball, MyGoal, StandPos, lastJump = nil, nil, nil, 0
local function clamp(v, a, b) return math.clamp(v, a, b) end
--============================ BALL SCAN ==========================
task.spawn(function()
while task.wait(1) do
local found
for _, b in ipairs(CollectionService:GetTagged("Ball")) do
if b:IsA("BasePart") and b.Parent then found = b; break end
end
if not found then
for _, o in ipairs(workspace:GetDescendants()) do
if o:IsA("BasePart") and o.Name:lower():find("ball") then
found = o; break
end
end
end
Ball = found
if C.GK and (not MyGoal or not MyGoal.Parent) then
pcall(function() refreshStand() end)
end
end
end)
local function getBall()
if Ball and Ball.Parent then return Ball end
return nil
end
--============================ GOAL / POSICIÓN ====================
local function findGoal()
if not HRP then return nil end
local best, bestD
for _, o in ipairs(workspace:GetDescendants()) do
if o:IsA("BasePart") and o.Name:lower():find("goal") then
local d = (o.Position - HRP.Position).Magnitude
if not bestD or d < bestD then best, bestD = o, d end
end
end
return best
end
function refreshStand()
if not HRP or not HRP.Parent then return end
MyGoal = findGoal()
if MyGoal then
local dir = Vector3.new(-MyGoal.Position.X, 0, -MyGoal.Position.Z)
if dir.Magnitude < 1 then dir = Vector3.new(0, 0, 1) end
dir = dir.Unit
StandPos = Vector3.new(
MyGoal.Position.X + dir.X * 5,
HRP.Position.Y,
MyGoal.Position.Z + dir.Z * 5
)
else
StandPos = HRP.Position
end
end
--============================ HITBOX / REACH =====================
local function applySize()
if not HRP or not OrigSize or not HRP.Parent then return end
local s = 1
if C.Reach then s = s + (C.ReachAmount / 20) end
if C.GK then s = s + (C.GrabReach / 20) end
HRP.Size = Vector3.new(OrigSize.X * s, OrigSize.Y, OrigSize.Z * s)
end
--============================ SETUP PERSONAJE ====================
local function setupChar(c)
Char = c
HRP = c:WaitForChild("HumanoidRootPart", 10)
Hum = c:WaitForChild("Humanoid", 10)
if not HRP or not Hum then return end
OrigSize = HRP.Size
if Lunge and Lunge.Parent then Lunge:Destroy() end
local att = Instance.new("Attachment")
att.Name = "FUT_Att"
att.Parent = HRP
Lunge = Instance.new("LinearVelocity")
Lunge.Name = "FUT_Lunge"
Lunge.Attachment0 = att
Lunge.RelativeTo = Enum.ActuatorRelativeTo.World
Lunge.MaxForce = math.huge
Lunge.MaxAxes = Enum.Axes.XZ -- Y libre: gravedad y salto normales
Lunge.Enabled = false
Lunge.Parent = HRP
task.wait(0.4)
applySize()
end
LP.CharacterAdded:Connect(function(c)
task.wait(0.4)
setupChar(c)
end)
if LP.Character then setupChar(LP.Character) end
--============================ LÓGICA AUTO DIVE ===================
RunService.Heartbeat:Connect(function()
if not HRP or not HRP.Parent or not Lunge or not Lunge.Parent then return end
if not C.GK then
Lunge.Enabled = false
return
end
Lunge.Enabled = true
local pp = HRP.Position
local ball = getBall()
-- ---- DIVE ----
if ball and C.AutoDive then
local bp = ball.Position
local bv = ball.AssemblyLinearVelocity
local dist = (bp - pp).Magnitude
if dist <= C.DiveRange then
-- salto si el balón viene alto
if (bp.Y - pp.Y) > 4.5
and Hum.FloorMaterial ~= Enum.Material.Air
and (os.clock() - lastJump) > 0.6 then
lastJump = os.clock()
Hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
-- predicción: dónde estará el balón al llegar
local lead = clamp(dist / math.max(C.DivePower, 1), 0.04, 0.35)
local target = bp + bv * lead
local to = target - pp
if to.Magnitude > 0.1 then
local u = to.Unit
local dir = Vector3.new(u.X, 0, u.Z)
if dir.Magnitude < 0.05 then dir = u end
Lunge.VectorVelocity = dir.Unit * C.DivePower
else
Lunge.VectorVelocity = Vector3.zero
end
return
end
end
-- ---- VOLVER AL ARCO ----
if C.AutoReturn and StandPos then
local r = StandPos - pp
local flat = Vector3.new(r.X, 0, r.Z)
if flat.Magnitude > 2 then
Lunge.VectorVelocity = flat.Unit * clamp(flat.Magnitude * 3, 0, 30)
else
Lunge.VectorVelocity = Vector3.zero
end
else
Lunge.VectorVelocity = Vector3.zero
end
end)
--============================ UI =================================
local function guiParent()
local ok, hui = pcall(gethui)
if ok and hui then return hui end
return game:GetService("CoreGui")
end
local Screen = Instance.new("ScreenGui")
Screen.Name = "FUT_Hub"
Screen.ResetOnSpawn = false
Screen.IgnoreGuiInset = true
Screen.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local okp = pcall(function() Screen.Parent = guiParent() end)
if not okp or not Screen.Parent then
Screen.Parent = LP:WaitForChild("PlayerGui")
end
local function new(class, props, parent)
local i = Instance.new(class)
for k, v in pairs(props) do i[k] = v end
if parent then i.Parent = parent end
return i
end
local Main = new("Frame", {
Name = "Main",
Size = UDim2.new(0, 232, 0, 0),
Position = UDim2.new(0, 20, 0.5, -190),
BackgroundColor3 = COL.BG,
BorderSizePixel = 0,
Active = true,
AutomaticSize = Enum.AutomaticSize.Y,
}, Screen)
new("UICorner", { CornerRadius = UDim.new(0, 10) }, Main)
new("UIStroke", { Color = Color3.fromRGB(38, 41, 52), Thickness = 1, Transparency = 0.3 }, Main)
local Header = new("TextButton", {
Size = UDim2.new(1, 0, 0, 34),
BackgroundColor3 = COL.PANEL,
Text = "",
AutoButtonColor = false,
BorderSizePixel = 0,
}, Main)
new("UICorner", { CornerRadius = UDim.new(0, 10) }, Header)
new("TextLabel", {
Size = UDim2.new(1, -60, 1, 0),
Position = UDim2.new(0, 12, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = "FUT • HUB",
TextSize = 13,
TextColor3 = COL.TEXT,
TextXAlignment = Enum.TextXAlignment.Left,
Active = false,
}, Header)
local MinBtn = new("TextButton", {
Size = UDim2.new(0, 24, 0, 20),
Position = UDim2.new(1, -30, 0, 7),
BackgroundColor3 = COL.OFF,
Text = "–",
Font = Enum.Font.GothamBold,
TextSize = 14,
TextColor3 = COL.TEXT,
AutoButtonColor = true,
BorderSizePixel = 0,
}, Header)
new("UICorner", { CornerRadius = UDim.new(0, 6) }, MinBtn)
local Content = new("Frame", {
Size = UDim2.new(1, 0, 0, 0),
Position = UDim2.new(0, 0, 0, 34),
BackgroundTransparency = 1,
AutomaticSize = Enum.AutomaticSize.Y,
}, Main)
new("UIPadding", {
PaddingTop = UDim.new(0, 6),
PaddingBottom = UDim.new(0, 10),
PaddingLeft = UDim.new(0, 10),
PaddingRight = UDim.new(0, 10),
}, Content)
new("UIListLayout", {
Padding = UDim.new(0, 2),
SortOrder = Enum.SortOrder.LayoutOrder,
}, Content)
local function section(text)
return new("TextLabel", {
Size = UDim2.new(1, 0, 0, 20),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = text,
TextSize = 11,
TextColor3 = COL.SUB,
TextXAlignment = Enum.TextXAlignment.Left,
}, Content)
end
local function makeToggle(label, default, cb)
local row = new("Frame", {
Size = UDim2.new(1, 0, 0, 28),
BackgroundTransparency = 1,
}, Content)
new("TextLabel", {
Size = UDim2.new(1, -44, 1, 0),
BackgroundTransparency = 1,
Font = Enum.Font.Gotham,
Text = label,
TextSize = 13,
TextColor3 = COL.TEXT,
TextXAlignment = Enum.TextXAlignment.Left,
}, row)
local btn = new("TextButton", {
Size = UDim2.new(0, 38, 0, 20),
Position = UDim2.new(1, -38, 0.5, -10),
BackgroundColor3 = COL.OFF,
Text = "",
AutoButtonColor = false,
BorderSizePixel = 0,
}, row)
new("UICorner", { CornerRadius = UDim.new(1, 0) }, btn)
local knob = new("Frame", {
Size = UDim2.new(0, 16, 0, 16),
Position = UDim2.new(0, 2, 0.5, -8),
BackgroundColor3 = Color3.fromRGB(232, 234, 240),
BorderSizePixel = 0,
}, btn)
new("UICorner", { CornerRadius = UDim.new(1, 0) }, knob)
local state = default
local function render()
TweenService:Create(btn, TweenInfo.new(0.15),
{ BackgroundColor3 = state and COL.ACCENT or COL.OFF }):Play()
TweenService:Create(knob, TweenInfo.new(0.15),
{ Position = state and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8) }):Play()
end
render()
btn.MouseButton1Click:Connect(function()
state = not state
render()
cb(state)
end)
end
local function makeSlider(label, min, max, default, cb)
local row = new("Frame", {
Size = UDim2.new(1, 0, 0, 34),
BackgroundTransparency = 1,
}, Content)
new("TextLabel", {
Size = UDim2.new(1, -44, 0, 16),
BackgroundTransparency = 1,
Font = Enum.Font.Gotham,
Text = label,
TextSize = 12,
TextColor3 = COL.TEXT,
TextXAlignment = Enum.TextXAlignment.Left,
}, row)
local val = new("TextLabel", {
Size = UDim2.new(0, 44, 0, 16),
Position = UDim2.new(1, -44, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = tostring(default),
TextSize = 12,
TextColor3 = COL.ACCENT,
TextXAlignment = Enum.TextXAlignment.Right,
}, row)
local track = new("Frame", {
Size = UDim2.new(1, 0, 0, 6),
Position = UDim2.new(0, 0, 0, 22),
BackgroundColor3 = COL.OFF,
BorderSizePixel = 0,
}, row)
new("UICorner", { CornerRadius = UDim.new(1, 0) }, track)
local ratio = (default - min) / (max - min)
local fill = new("Frame", {
Size = UDim2.new(ratio, 0, 1, 0),
BackgroundColor3 = COL.ACCENT,
BorderSizePixel = 0,
}, track)
new("UICorner", { CornerRadius = UDim.new(1, 0) }, fill)
local knob = new("Frame", {
Size = UDim2.new(0, 12, 0, 12),
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.new(ratio, 0, 0.5, 0),
BackgroundColor3 = Color3.fromRGB(240, 242, 248),
BorderSizePixel = 0,
ZIndex = 2,
}, track)
new("UICorner", { CornerRadius = UDim.new(1, 0) }, knob)
local hit = new("Frame", {
Size = UDim2.new(1, 0, 0, 24),
Position = UDim2.new(0, 0, 0, 13),
BackgroundTransparency = 1,
ZIndex = 3,
}, row)
local dragging = false
local function setFromX(x)
local rel = clamp((x - hit.AbsolutePosition.X) / hit.AbsoluteSize.X, 0, 1)
local v = math.floor(min + (max - min) * rel + 0.5)
val.Text = tostring(v)
fill.Size = UDim2.new(rel, 0, 1, 0)
knob.Position = UDim2.new(rel, 0, 0.5, 0)
cb(v)
end
hit.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
setFromX(input.Position.X)
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch) then
setFromX(input.Position.X)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
end
--============================ CONTROLES ==========================
section("GOALKEEPER")
makeToggle("Goalkeeper", C.GK, function(v)
C.GK = v
if v then refreshStand() end
applySize()
end)
makeToggle("Auto Dive", C.AutoDive, function(v)
C.AutoDive = v
end)
makeToggle("Auto Return", C.AutoReturn, function(v)
C.AutoReturn = v
end)
makeSlider("Dive Range", 10, 60, C.DiveRange, function(v)
C.DiveRange = v
end)
makeSlider("Dive Power", 20, 90, C.DivePower, function(v)
C.DivePower = v
end)
makeSlider("Grab Reach", 0, 15, C.GrabReach, function(v)
C.GrabReach = v
applySize()
end)
section("REACH")
makeToggle("Reach", C.Reach, function(v)
C.Reach = v
applySize()
end)
makeSlider("Reach Amount", 0, 15, C.ReachAmount, function(v)
C.ReachAmount = v
applySize()
end)
new("TextLabel", {
Size = UDim2.new(1, 0, 0, 18),
BackgroundTransparency = 1,
Font = Enum.Font.Gotham,
Text = "Tecla: RightShift = mostrar/ocultar",
TextSize = 10,
TextColor3 = COL.SUB,
TextXAlignment = Enum.TextXAlignment.Left,
}, Content)
--============================ BOTÓN FLOTANTE =====================
local OpenBtn = new("TextButton", {
Size = UDim2.new(0, 38, 0, 38),
Position = UDim2.new(0, 20, 0, 90),
BackgroundColor3 = COL.BG,
Text = "FUT",
Font = Enum.Font.GothamBold,
TextSize = 12,
TextColor3 = COL.ACCENT,
AutoButtonColor = false,
BorderSizePixel = 0,
Visible = false,
}, Screen)
new("UICorner", { CornerRadius = UDim.new(1, 0) }, OpenBtn)
new("UIStroke", { Color = COL.ACCENT, Thickness = 1, Transparency = 0.4 }, OpenBtn)
local function setUI(show)
Main.Visible = show
OpenBtn.Visible = not show
end
MinBtn.MouseButton1Click:Connect(function() setUI(false) end)
OpenBtn.MouseButton1Click:Connect(function() setUI(true) end)
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.RightShift then
setUI(not Main.Visible)
end
end)
--============================ DRAG ===============================
local dragging, dragStart, startPos
local function beginDrag(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = Main.Position
end
end
Header.InputBegan:Connect(beginDrag)
OpenBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = OpenBtn.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if not dragging then return end
if input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch then
local delta = input.Position - dragStart
if Main.Visible then
Main.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
else
OpenBtn.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
print("[FUT HUB] Cargado correctamente.")Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place