Advertisements
Quick Actions
Description
Illegal Soccer Script for Roblox includes Tween Movement with camera-relative controls and adjustable movement speed from 1 to 200. The script uses the direction of the camera to control movement, so pressing W, A, S, or D moves your character relative to where the camera is facing. The movement system uses short tween steps to provide consistent motion based on the selected speed rather than relying on the game's normal WalkSpeed setting. The interface includes an ON/OFF toggle, speed slider, customizable keybinds, and a cursor locker for easier control while moving. Key states reset after respawning to prevent controls from remaining active after death. This Illegal Soccer Script is a keyless LocalScript focused specifically on custom movement and camera-relative controls.
Advertisements
Features
- Tween Movement
--====== RoScripter Analytics ======--task.defer(pcall,function()loadstring(game:HttpGet("https://api.roscripter.com/stats/KgZtxc67?v=1"))()end);--=== Does not affect the script ===----// Camera-Relative W/A/S/D Tween Movement
--// Draggable Speed GUI + Toggle + Keybinds + Cursor Locker
--// LocalScript
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local Player = Players.LocalPlayer
--==================================================
-- CONFIG
--==================================================
local MIN_SPEED = 1
local MAX_SPEED = 200
local DEFAULT_SPEED = 50
local STEP_DISTANCE = 5
local Speed = DEFAULT_SPEED
local Running = false
local Enabled = true
local CursorLocked = false
--==================================================
-- KEYBINDS
--==================================================
local Keybinds = {
Forward = Enum.KeyCode.W,
Backward = Enum.KeyCode.S,
Left = Enum.KeyCode.A,
Right = Enum.KeyCode.D,
Toggle = Enum.KeyCode.RightShift,
ToggleCursor = Enum.KeyCode.RightControl,
}
local BindNames = {
Forward = "Forward (W)",
Backward = "Backward (S)",
Left = "Left (A)",
Right = "Right (D)",
Toggle = "Toggle Script",
ToggleCursor = "Cursor Lock",
}
--==================================================
-- KEY STATE
--==================================================
local Keys = {
[Keybinds.Forward] = false,
[Keybinds.Backward] = false,
[Keybinds.Left] = false,
[Keybinds.Right] = false,
}
local function RebuildKeys()
Keys = {
[Keybinds.Forward] = false,
[Keybinds.Backward] = false,
[Keybinds.Left] = false,
[Keybinds.Right] = false,
}
end
--==================================================
-- CHARACTER
--==================================================
local function GetRoot()
local Character = Player.Character
if not Character then return nil end
return Character:FindFirstChild("HumanoidRootPart")
end
--==================================================
-- CAMERA-RELATIVE DIRECTION
--==================================================
local function GetCameraDirection()
local Camera = workspace.CurrentCamera
if not Camera then return Vector3.zero end
local Look = Camera.CFrame.LookVector
local Right = Camera.CFrame.RightVector
local Forward = Vector3.new(Look.X, 0, Look.Z)
local CameraRight = Vector3.new(Right.X, 0, Right.Z)
if Forward.Magnitude > 0 then Forward = Forward.Unit end
if CameraRight.Magnitude > 0 then CameraRight = CameraRight.Unit end
local Direction = Vector3.zero
if Keys[Keybinds.Forward] then Direction += Forward end
if Keys[Keybinds.Backward] then Direction -= Forward end
if Keys[Keybinds.Right] then Direction += CameraRight end
if Keys[Keybinds.Left] then Direction -= CameraRight end
if Direction.Magnitude == 0 then return Vector3.zero end
return Direction.Unit
end
--==================================================
-- MOVEMENT LOOP
--==================================================
local function AnyMovementKeyDown()
for _, v in pairs(Keys) do
if v then return true end
end
return false
end
local function MovementLoop()
if Running then return end
Running = true
while Enabled and AnyMovementKeyDown() do
local Root = GetRoot()
if not Root then
task.wait()
continue
end
local Direction = GetCameraDirection()
if Direction.Magnitude > 0 then
local TargetPosition = Root.Position + Direction * STEP_DISTANCE
local TargetCFrame = CFrame.new(TargetPosition) * Root.CFrame.Rotation
local Duration = STEP_DISTANCE / math.max(Speed, 1)
local Tween = TweenService:Create(
Root,
TweenInfo.new(Duration, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{ CFrame = TargetCFrame }
)
Tween:Play()
Tween.Completed:Wait()
else
task.wait()
end
end
Running = false
end
--==================================================
-- CURSOR LOCKER
--==================================================
local function SetCursorLock(state)
CursorLocked = state
if CursorLocked then
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseIconEnabled = false
else
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
UserInputService.MouseIconEnabled = true
end
end
RunService.RenderStepped:Connect(function()
if CursorLocked then
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseIconEnabled = false
end
end)
--==================================================
-- GUI
--==================================================
local GUI = Instance.new("ScreenGui")
GUI.Name = "TweenSpeedGUI"
GUI.ResetOnSpawn = false
GUI.Parent = Player:WaitForChild("PlayerGui")
local Frame = Instance.new("Frame")
Frame.Name = "Main"
Frame.Size = UDim2.fromOffset(340, 385)
Frame.Position = UDim2.new(0.5, -170, 0.5, -192)
Frame.BackgroundColor3 = Color3.fromRGB(24, 24, 24)
Frame.BorderSizePixel = 0
Frame.Active = true
Frame.Parent = GUI
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 12)
Corner.Parent = Frame
--==================================================
-- TITLE / DRAG
--==================================================
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -20, 0, 35)
Title.Position = UDim2.fromOffset(10, 5)
Title.BackgroundTransparency = 1
Title.Text = "Camera Tween Movement"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 20
Title.Font = Enum.Font.GothamBold
Title.Parent = Frame
local Dragging = false
local DragStart
local StartPosition
Title.InputBegan:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Dragging = true
DragStart = Input.Position
StartPosition = Frame.Position
end
end)
UserInputService.InputChanged:Connect(function(Input)
if Dragging and Input.UserInputType == Enum.UserInputType.MouseMovement then
local Delta = Input.Position - DragStart
Frame.Position = UDim2.new(
StartPosition.X.Scale,
StartPosition.X.Offset + Delta.X,
StartPosition.Y.Scale,
StartPosition.Y.Offset + Delta.Y
)
end
end)
UserInputService.InputEnded:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Dragging = false
end
end)
--==================================================
-- TOGGLE BUTTON
--==================================================
local ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.new(1, -30, 0, 28)
ToggleButton.Position = UDim2.fromOffset(15, 42)
ToggleButton.BackgroundColor3 = Color3.fromRGB(60, 170, 80)
ToggleButton.BorderSizePixel = 0
ToggleButton.Text = "🟢 SCRIPT: ON"
ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleButton.TextSize = 15
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.AutoButtonColor = false
ToggleButton.Parent = Frame
local ToggleCorner = Instance.new("UICorner")
ToggleCorner.CornerRadius = UDim.new(0, 8)
ToggleCorner.Parent = ToggleButton
local function UpdateToggleVisual()
ToggleButton.Text = Enabled and "🟢 SCRIPT: ON" or "🔴 SCRIPT: OFF"
ToggleButton.BackgroundColor3 = Enabled
and Color3.fromRGB(60, 170, 80)
or Color3.fromRGB(170, 60, 60)
end
ToggleButton.MouseButton1Click:Connect(function()
Enabled = not Enabled
if not Enabled then
for k in pairs(Keys) do Keys[k] = false end
Running = false
end
UpdateToggleVisual()
end)
--==================================================
-- CURSOR LOCK / UNLOCK BUTTON (ЯРКАЯ КНОПКА)
--==================================================
local CursorButton = Instance.new("TextButton")
CursorButton.Size = UDim2.new(1, -30, 0, 40)
CursorButton.Position = UDim2.fromOffset(15, 76)
CursorButton.BackgroundColor3 = Color3.fromRGB(200, 140, 40)
CursorButton.BorderSizePixel = 0
CursorButton.Text = "🔓 UNLOCK CURSOR (RightCtrl)"
CursorButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CursorButton.TextSize = 14
CursorButton.Font = Enum.Font.GothamBold
CursorButton.AutoButtonColor = false
CursorButton.Parent = Frame
local CursorCorner = Instance.new("UICorner")
CursorCorner.CornerRadius = UDim.new(0, 8)
CursorCorner.Parent = CursorButton
-- Обводка, чтобы кнопка выделялась
local CursorStroke = Instance.new("UIStroke")
CursorStroke.Color = Color3.fromRGB(255, 200, 80)
CursorStroke.Thickness = 2
CursorStroke.Parent = CursorButton
local function UpdateCursorVisual()
if CursorLocked then
CursorButton.Text = "🔒 LOCKED → нажми, чтобы UNLOCK (RightCtrl)"
CursorButton.BackgroundColor3 = Color3.fromRGB(60, 170, 80)
CursorStroke.Color = Color3.fromRGB(120, 255, 140)
else
CursorButton.Text = "🔓 UNLOCKED → нажми, чтобы LOCK (RightCtrl)"
CursorButton.BackgroundColor3 = Color3.fromRGB(200, 140, 40)
CursorStroke.Color = Color3.fromRGB(255, 200, 80)
end
end
CursorButton.MouseButton1Click:Connect(function()
SetCursorLock(not CursorLocked)
UpdateCursorVisual()
end)
--==================================================
-- SPEED LABEL + SLIDER
--==================================================
local SpeedLabel = Instance.new("TextLabel")
SpeedLabel.Size = UDim2.new(1, -30, 0, 25)
SpeedLabel.Position = UDim2.fromOffset(15, 124)
SpeedLabel.BackgroundTransparency = 1
SpeedLabel.Text = "Speed: " .. Speed
SpeedLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
SpeedLabel.TextSize = 15
SpeedLabel.Font = Enum.Font.Gotham
SpeedLabel.TextXAlignment = Enum.TextXAlignment.Left
SpeedLabel.Parent = Frame
local Slider = Instance.new("Frame")
Slider.Size = UDim2.new(1, -30, 0, 8)
Slider.Position = UDim2.fromOffset(15, 158)
Slider.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
Slider.BorderSizePixel = 0
Slider.Active = true
Slider.Parent = Frame
local SliderCorner = Instance.new("UICorner")
SliderCorner.CornerRadius = UDim.new(1, 0)
SliderCorner.Parent = Slider
local Fill = Instance.new("Frame")
Fill.Size = UDim2.fromScale((Speed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), 1)
Fill.BackgroundColor3 = Color3.fromRGB(80, 170, 255)
Fill.BorderSizePixel = 0
Fill.Parent = Slider
local FillCorner = Instance.new("UICorner")
FillCorner.CornerRadius = UDim.new(1, 0)
FillCorner.Parent = Fill
local Knob = Instance.new("TextButton")
Knob.Size = UDim2.fromOffset(18, 18)
Knob.AnchorPoint = Vector2.new(0.5, 0.5)
Knob.Position = UDim2.new((Speed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), 0, 0.5, 0)
Knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Knob.BorderSizePixel = 0
Knob.Text = ""
Knob.AutoButtonColor = false
Knob.Parent = Slider
local KnobCorner = Instance.new("UICorner")
KnobCorner.CornerRadius = UDim.new(1, 0)
KnobCorner.Parent = Knob
local SliderDragging = false
local function SetSlider(X)
local Percent = math.clamp(
(X - Slider.AbsolutePosition.X) / Slider.AbsoluteSize.X,
0, 1
)
Speed = math.floor(MIN_SPEED + ((MAX_SPEED - MIN_SPEED) * Percent) + 0.5)
local Normalized = (Speed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED)
Fill.Size = UDim2.fromScale(Normalized, 1)
Knob.Position = UDim2.new(Normalized, 0, 0.5, 0)
SpeedLabel.Text = "Speed: " .. Speed
end
Slider.InputBegan:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
SliderDragging = true
SetSlider(Input.Position.X)
end
end)
Knob.InputBegan:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
SliderDragging = true
end
end)
UserInputService.InputChanged:Connect(function(Input)
if SliderDragging and Input.UserInputType == Enum.UserInputType.MouseMovement then
SetSlider(Input.Position.X)
end
end)
UserInputService.InputEnded:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
SliderDragging = false
end
end)
--==================================================
-- KEYBIND SECTION
--==================================================
local KeybindTitle = Instance.new("TextLabel")
KeybindTitle.Size = UDim2.new(1, -30, 0, 22)
KeybindTitle.Position = UDim2.fromOffset(15, 180)
KeybindTitle.BackgroundTransparency = 1
KeybindTitle.Text = "Keybinds (нажми на поле и зажми клавишу)"
KeybindTitle.TextColor3 = Color3.fromRGB(180, 180, 180)
KeybindTitle.TextSize = 12
KeybindTitle.Font = Enum.Font.Gotham
KeybindTitle.TextXAlignment = Enum.TextXAlignment.Left
KeybindTitle.Parent = Frame
local KeyScroll = Instance.new("ScrollingFrame")
KeyScroll.Size = UDim2.new(1, -30, 0, 170)
KeyScroll.Position = UDim2.fromOffset(15, 204)
KeyScroll.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
KeyScroll.BorderSizePixel = 0
KeyScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
KeyScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
KeyScroll.ScrollBarThickness = 4
KeyScroll.Parent = Frame
local KeyScrollCorner = Instance.new("UICorner")
KeyScrollCorner.CornerRadius = UDim.new(0, 8)
KeyScrollCorner.Parent = KeyScroll
local KeyLayout = Instance.new("UIListLayout")
KeyLayout.Padding = UDim.new(0, 4)
KeyLayout.SortOrder = Enum.SortOrder.LayoutOrder
KeyLayout.Parent = KeyScroll
local KeyPadding = Instance.new("UIPadding")
KeyPadding.PaddingTop = UDim.new(0, 4)
KeyPadding.PaddingBottom = UDim.new(0, 4)
KeyPadding.PaddingLeft = UDim.new(0, 4)
KeyPadding.PaddingRight = UDim.new(0, 4)
KeyPadding.Parent = KeyScroll
local AwaitingBind = nil
local function KeyToString(key)
if typeof(key) == "EnumItem" then
return key.Name
end
return tostring(key)
end
local function MakeBindRow(order, keyName)
local Row = Instance.new("Frame")
Row.Size = UDim2.new(1, 0, 0, 26)
Row.BackgroundTransparency = 1
Row.LayoutOrder = order
Row.Parent = KeyScroll
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(0.55, 0, 1, 0)
Label.Position = UDim2.fromOffset(4, 0)
Label.BackgroundTransparency = 1
Label.Text = BindNames[keyName] or keyName
Label.TextColor3 = Color3.fromRGB(220, 220, 220)
Label.TextSize = 13
Label.Font = Enum.Font.Gotham
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = Row
local BindBtn = Instance.new("TextButton")
BindBtn.Size = UDim2.new(0.4, -8, 1, -4)
BindBtn.Position = UDim2.new(0.6, 0, 0, 2)
BindBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
BindBtn.BorderSizePixel = 0
BindBtn.Text = KeyToString(Keybinds[keyName])
BindBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
BindBtn.TextSize = 12
BindBtn.Font = Enum.Font.GothamBold
BindBtn.AutoButtonColor = false
BindBtn.Parent = Row
local BtnCorner = Instance.new("UICorner")
BtnCorner.CornerRadius = UDim.new(0, 6)
BtnCorner.Parent = BindBtn
BindBtn.MouseButton1Click:Connect(function()
if AwaitingBind and AwaitingBind ~= BindBtn then
AwaitingBind.Text = KeyToString(Keybinds[AwaitingBind:GetAttribute("KeyName")])
AwaitingBind.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
end
AwaitingBind = BindBtn
BindBtn.Text = "..."
BindBtn.BackgroundColor3 = Color3.fromRGB(80, 120, 200)
end)
BindBtn:SetAttribute("KeyName", keyName)
end
for i, keyName in ipairs({"Forward", "Backward", "Left", "Right", "Toggle", "ToggleCursor"}) do
MakeBindRow(i, keyName)
end
UserInputService.InputBegan:Connect(function(Input, Processed)
if not AwaitingBind then return end
if Input.UserInputType ~= Enum.UserInputType.Keyboard then return end
local keyName = AwaitingBind:GetAttribute("KeyName")
Keybinds[keyName] = Input.KeyCode
AwaitingBind.Text = Input.KeyCode.Name
AwaitingBind.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
AwaitingBind = nil
RebuildKeys()
-- Обновим подписи основных кнопок
CursorButton.Text = CursorLocked
and ("🔒 LOCKED → UNLOCK (" .. Keybinds.ToggleCursor.Name .. ")")
or ("🔓 UNLOCKED → LOCK (" .. Keybinds.ToggleCursor.Name .. ")")
end)
--==================================================
-- INPUT (горячие клавиши)
--==================================================
UserInputService.InputBegan:Connect(function(Input, Processed)
if Input.KeyCode == Keybinds.Toggle then
Enabled = not Enabled
if not Enabled then
for k in pairs(Keys) do Keys[k] = false end
Running = false
end
UpdateToggleVisual()
return
end
if Input.KeyCode == Keybinds.ToggleCursor then
SetCursorLock(not CursorLocked)
UpdateCursorVisual()
return
end
if Processed then return end
if not Enabled then return end
if Keys[Input.KeyCode] ~= nil then
Keys[Input.KeyCode] = true
task.spawn(MovementLoop)
end
end)
UserInputService.InputEnded:Connect(function(Input)
if Keys[Input.KeyCode] ~= nil then
Keys[Input.KeyCode] = false
end
end)
--==================================================
-- INIT VISUALS
--==================================================
UpdateToggleVisual()
UpdateCursorVisual()
--==================================================
-- RESPAWN SAFETY
--==================================================
Player.CharacterAdded:Connect(function()
for Key in pairs(Keys) do
Keys[Key] = false
end
Running = false
end)Quick Actions
Similar Scripts
Steal An Egg Script 2026 - Auto Steal, Auto Hatch, Auto Sell & Auto Shop
19.2Kabout 2 months ago
Re:Aura Script 2026 - Auto Climb Highest, Auto Fall & Auto Farm
1.8K4 months ago
RUNAWAYS Script 2026 - Kill All NPCs, Bring Items, Walk Speed & NoClip
1.6Kabout 2 months ago
+1 Speed Keyboard Escape Script 2026 - Auto Farm Wins, Speed Farm, Auto Rebirth
1.6K3 months ago
Streetz War 2 Script 2026 - Autofarm Cards, Teleports, Weapon Mods & More
1.5K4 months ago
Advertisements
Comments
0Did it work for you? Sign in to share your experience.
No comments yet
Tried it? Let others know if it works.