Run it
Copy the script and paste it into your executor.
Players = :()
UserInputService = :()
RunService = :()
StarterGui = :()
Debris = :()
CoreGui = :()
player = Players.LocalPlayer
mouse = player:()
camera = .CurrentCamera
isMobile = UserInputService.TouchEnabled
CONFIG = {
throwForce = ,
throwForceMin = ,
throwForceMax = ,
throwForceStepPC = ,
throwForceStepMobile = ,
magnetRadius = ,
magnetRadiusMin = ,
magnetRadiusMax = ,
magnetForce = ,
magnetForceMin = ,
magnetForceMax = ,
magnetForceStep = ,
magnetRadiusStep = ,
holdDistanceDefault = ,
holdDistanceMin = ,
holdDistanceMax = ,
distanceSpeed = ,
distanceKeySpeed = ,
rotationSpeed = ,
holdVelocityP = ,
holdGyroP = ,
rotationPositionP = ,
rotationPositionD = ,
pointerDragThreshold = ,
}
STATE = {
active = ,
guiVisible = ,
holding = ,
target = ,
holdDistance = CONFIG.holdDistanceDefault,
anchoredWhileHolding = ,
magnetActive = ,
magnetObjects = {},
rotationMode = ,
rotationKeys = {
up = ,
down = ,
left = ,
right = ,
},
holdQ = ,
holdE = ,
holdClose = ,
holdFar = ,
rotationPosition = ,
characterVisibilityBackup = {},
characterFrozen = ,
characterBackup = ,
pointerTouch = ,
pointerTouchStart = ,
pointerDragStarted = ,
mobileMode = ,
lastNotificationTime = ,
notificationCooldown = ,
}
()
player.Character
()
character = ()
character
character:()
()
character = ()
character
character:()
bodyVelocity = .()
bodyVelocity.Name =
bodyVelocity.MaxForce = .(, , ) *
bodyVelocity.P = CONFIG.holdVelocityP
bodyVelocity.Velocity = .zero
bodyGyro = .()
bodyGyro.Name =
bodyGyro.MaxTorque = .(, , ) *
bodyGyro.P = CONFIG.holdGyroP
rotationPositionLock = .()
rotationPositionLock.Name =
rotationPositionLock.MaxForce = .(, , ) *
rotationPositionLock.P = CONFIG.rotationPositionP
rotationPositionLock.D = CONFIG.rotationPositionD
rotationPositionLock.Position = .zero
highlightHolding = .()
highlightHolding.Name =
highlightHolding.FillColor = .(, , )
highlightHolding.OutlineColor = .(, , )
highlightHolding.FillTransparency =
highlightHolding.OutlineTransparency =
highlightHolding.DepthMode = .HighlightDepthMode.Occluded
highlightHolding.Enabled =
highlightHolding.Parent = CoreGui
highlightLooking = .()
highlightLooking.Name =
highlightLooking.FillColor = .(, , )
highlightLooking.OutlineColor = .(, , )
highlightLooking.FillTransparency =
highlightLooking.OutlineTransparency =
highlightLooking.DepthMode = .HighlightDepthMode.Occluded
highlightLooking.Enabled =
highlightLooking.Parent = CoreGui
usingDrawing =
.new
(.new) ==
magnetCircle
circleGui
circleImage
surfacePosition = .zero
actualMagnetRadius = CONFIG.magnetRadius
usingDrawing
magnetCircle = .()
magnetCircle.Visible =
magnetCircle.Transparency =
magnetCircle.Color = .(, , )
magnetCircle.Thickness =
magnetCircle.Filled =
circleGui = .()
circleGui.Name =
circleGui.Size = .(, )
circleGui.AlwaysOnTop =
circleGui.Enabled =
circleGui.Parent = CoreGui
circleImage = .()
circleImage.BackgroundTransparency =
circleImage.Image =
circleImage.ImageColor3 = .(, , )
circleImage.AnchorPoint = .(, )
circleImage.Position = .(, )
circleImage.Size = .(, )
circleImage.Parent = circleGui
UI = {}
(object, radius)
corner = .()
corner.CornerRadius = .(, radius )
corner.Parent = object
corner
(object, transparency)
stroke = .()
stroke.Color = .(, , )
stroke.Transparency = transparency
stroke.Thickness =
stroke.Parent = object
stroke
(button)
button.AutoButtonColor =
(button, )
(button, )
button
()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.Parent = CoreGui
UI.mainGui = gui
forceLabel = .()
forceLabel.Name =
forceLabel.BackgroundTransparency =
forceLabel.BackgroundColor3 = .(, , )
forceLabel.Size = .(, )
forceLabel.Position = .(, -, , -)
forceLabel.TextScaled =
forceLabel.Font = .Font.GothamBold
forceLabel.TextColor3 = .(, , )
forceLabel.TextStrokeTransparency =
forceLabel.Visible = isMobile
(forceLabel, )
(forceLabel, )
forceLabel.Parent = gui
UI.forceLabel = forceLabel
rotationLabel = .()
rotationLabel.Name =
rotationLabel.BackgroundTransparency =
rotationLabel.BackgroundColor3 = .(, , )
rotationLabel.Size = .(, )
rotationLabel.Position = .(, -, , -)
rotationLabel.TextScaled =
rotationLabel.Font = .Font.GothamBold
rotationLabel.TextColor3 = .(, , )
rotationLabel.Text =
rotationLabel.Visible =
(rotationLabel, )
(rotationLabel, )
rotationLabel.Parent = gui
UI.rotationLabel = rotationLabel
()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.Parent = CoreGui
UI.mobileGui = gui
fakePointer = .()
fakePointer.Name =
fakePointer.Size = .(, )
fakePointer.Position = .(, , , )
fakePointer.AnchorPoint = .(, )
fakePointer.BackgroundColor3 =
.(, , )
fakePointer.BackgroundTransparency =
fakePointer.Active =
fakePointer.ZIndex =
fakePointer.Parent = gui
(fakePointer, )
(fakePointer, )
UI.fakePointer = fakePointer
container = .()
container.Name =
container.Size = .(, )
container.BackgroundTransparency =
container.Parent = gui
UI.mobileContainer = container
header = .()
header.Name =
header.Size = .(, , , )
header.Position = .(, -, , )
header.BackgroundColor3 =
.(, , )
header.BackgroundTransparency =
header.ZIndex =
header.Parent = container
(header, )
(header, )
UI.header = header
modeLabel = .()
modeLabel.Name =
modeLabel.BackgroundTransparency =
modeLabel.Size = .(, -, , )
modeLabel.Position = .(, )
modeLabel.Font = .Font.GothamBold
modeLabel.TextScaled =
modeLabel.TextColor3 = .(, , )
modeLabel.Text =
modeLabel.ZIndex =
modeLabel.Parent = header
UI.modeLabel = modeLabel
hideButton = .()
hideButton.Name =
hideButton.Size = .(, )
hideButton.Position = .(, -, , )
hideButton.BackgroundColor3 =
.(, , )
hideButton.BackgroundTransparency =
hideButton.Text =
hideButton.TextScaled =
hideButton.TextColor3 = .(, , )
hideButton.ZIndex =
(hideButton)
hideButton.Parent = header
UI.hideButton = hideButton
panel = .()
panel.Name =
panel.Size = .(, , , )
panel.Position = .(, , , -)
panel.BackgroundTransparency =
panel.ZIndex =
panel.Parent = container
UI.panel = panel
actionButton = .()
actionButton.Name =
actionButton.Size = .(, )
actionButton.Position =
.(, -, , -)
actionButton.BackgroundColor3 =
.(, , )
actionButton.BackgroundTransparency =
actionButton.Text =
actionButton.TextScaled =
actionButton.Font = .Font.GothamBold
actionButton.TextColor3 = .(, , )
actionButton.ZIndex =
(actionButton)
actionButton.Parent = panel
UI.actionButton = actionButton
(
name,
position,
size,
text,
color
)
button = .()
button.Name = name
button.Size = size
button.Position = position
button.BackgroundColor3 = color
button.BackgroundTransparency =
button.Text = text
button.TextScaled =
button.Font = .Font.GothamBold
button.TextColor3 = .(, , )
button.ZIndex =
(button)
button.Parent = panel
button
UI.buttons = {}
UI.buttons.distanceDown =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.buttons.distanceUp =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.buttons.throw =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
UI.buttons.anchor =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
UI.buttons.forceDown =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.buttons.forceUp =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.buttons.magnet =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
UI.buttons.rotation =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
valueLabel = .()
valueLabel.Name =
valueLabel.Size = .(, )
valueLabel.Position =
.(, -, , -)
valueLabel.BackgroundColor3 =
.(, , )
valueLabel.BackgroundTransparency =
valueLabel.TextScaled =
valueLabel.Font = .Font.GothamBold
valueLabel.TextColor3 = .(, , )
valueLabel.ZIndex =
(valueLabel, )
(valueLabel, )
valueLabel.Parent = panel
UI.valueLabel = valueLabel
UI.magnetButtons = {}
UI.magnetButtons.forceDown =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.magnetButtons.forceUp =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.magnetButtons.radiusDown =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
UI.magnetButtons.radiusUp =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
UI.magnetButtons.exit =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.magnetButtons.massAnchor =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
UI.rotationButtons = {}
UI.rotationButtons.up =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.rotationButtons.left =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.rotationButtons.right =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.rotationButtons.down =
(
,
.(, , , -),
.(, ),
,
.(, , )
)
UI.rotationButtons.exit =
(
,
.(, -, , -),
.(, ),
,
.(, , )
)
_, button (UI.magnetButtons)
button.Visible =
_, button (UI.rotationButtons)
button.Visible =
()
isMobile
()
(title, text, duration)
STATE.active
now = .()
now - STATE.lastNotificationTime
< STATE.notificationCooldown
STATE.lastNotificationTime = now
(()
StarterGui:(
,
{
Title = title,
Text = text,
Duration = duration ,
}
)
)
(part)
part
_, otherPlayer (
Players:()
)
character =
otherPlayer.Character
character
part:(character)
(part)
_, connectedPart (
part:()
)
connectedPart ~= part
connectedPart.Anchored
()
character =
player.Character
character
(
STATE.characterVisibilityBackup
) ~=
_, object (
character:()
)
object:()
STATE.characterVisibilityBackup[
object
] =
object.LocalTransparencyModifier
object.LocalTransparencyModifier =
object:()
object:()
STATE.characterVisibilityBackup[
object
] =
object.Transparency
object.Transparency =
()
object, transparency (
STATE.characterVisibilityBackup
)
object
object:()
object:()
object.LocalTransparencyModifier =
transparency
object:()
object:()
object.Transparency =
transparency
STATE.characterVisibilityBackup = {}
()
STATE.characterFrozen
humanoid = ()
root = ()
humanoid root
STATE.characterBackup = {
WalkSpeed = humanoid.WalkSpeed,
JumpPower = humanoid.JumpPower,
JumpHeight = humanoid.JumpHeight,
AutoRotate = humanoid.AutoRotate,
RootAnchored = root.Anchored,
}
STATE.characterFrozen =
humanoid.WalkSpeed =
humanoid.JumpPower =
humanoid.JumpHeight =
humanoid.AutoRotate =
root.AssemblyLinearVelocity =
.zero
root.AssemblyAngularVelocity =
.zero
root.Anchored =
()
STATE.characterFrozen
humanoid = ()
root = ()
backup = STATE.characterBackup
STATE.characterFrozen =
STATE.characterBackup =
humanoid backup
humanoid.WalkSpeed =
backup.WalkSpeed
humanoid.JumpPower =
backup.JumpPower
humanoid.JumpHeight =
backup.JumpHeight
humanoid.AutoRotate =
backup.AutoRotate
root backup
root.Anchored =
backup.RootAnchored
()
bodyVelocity.Parent =
bodyGyro.Parent =
(target)
target
bodyVelocity.Parent = target
bodyGyro.Parent = target
()
isMobile UI.fakePointer
position =
UI.fakePointer.AbsolutePosition
size =
UI.fakePointer.AbsoluteSize
x =
position.X
+ size.X *
y =
position.Y
+ size.Y *
ray =
camera:(x, y)
Ray.(
ray.Origin,
ray.Direction *
)
ray =
camera:(
mouse.X,
mouse.Y
)
Ray.(
ray.Origin,
ray.Direction *
)
()
ray =
()
:(
ray,
{
()
}
)
()
ray =
()
ignoreList = {
()
}
_ = ,
hit, position, normal =
:(
ray,
ignoreList
)
hit
, ,
(hit)
.(
ignoreList,
hit
)
hit:()
hit.Anchored
.(
ignoreList,
hit
)
hit, position, normal
, ,
()
STATE.guiVisible
highlightHolding.Enabled =
highlightLooking.Enabled =
highlightHolding.Enabled =
highlightLooking.Enabled =
STATE.holding STATE.target
highlightHolding.Adornee =
STATE.target
highlightLooking.Adornee =
STATE.holding
highlightHolding.Adornee =
hit = ()
hit
hit:()
hit.Anchored
(hit)
highlightLooking.Adornee =
hit
highlightLooking.Adornee =
highlightHolding.Adornee =
highlightLooking.Adornee =
(visible)
STATE.guiVisible = visible
isMobile
UI.forceLabel
UI.forceLabel.Visible =
visible
UI.rotationLabel
UI.rotationLabel.Visible =
visible
STATE.rotationMode
UI.mobileContainer
UI.mobileContainer.Visible =
visible
UI.fakePointer
UI.fakePointer.Visible =
visible
visible
usingDrawing
magnetCircle
magnetCircle.Visible =
circleGui
circleGui.Enabled =
()
()
(
STATE.guiVisible
)
()
isMobile
STATE.mobileMode =
UI.modeLabel.Text =
UI.buttons.distanceDown.Visible =
UI.buttons.distanceUp.Visible =
UI.buttons.throw.Visible =
UI.buttons.anchor.Visible =
UI.buttons.forceDown.Visible =
UI.buttons.forceUp.Visible =
UI.buttons.magnet.Visible =
UI.buttons.rotation.Visible =
UI.actionButton.Visible =
UI.valueLabel.Visible =
_, button (
UI.magnetButtons
)
button.Visible =
_, button (
UI.rotationButtons
)
button.Visible =
UI.valueLabel.Text =
.. .(
CONFIG.throwForce
)
STATE.holding
UI.actionButton.Text =
UI.actionButton.BackgroundColor3 =
.(
,
,
)
UI.actionButton.Text =
UI.actionButton.BackgroundColor3 =
.(
,
,
)
()
()
isMobile
STATE.mobileMode =
UI.modeLabel.Text =
UI.buttons.distanceDown.Visible =
UI.buttons.distanceUp.Visible =
UI.buttons.throw.Visible =
UI.buttons.anchor.Visible =
UI.buttons.forceDown.Visible =
UI.buttons.forceUp.Visible =
UI.buttons.magnet.Visible =
UI.buttons.rotation.Visible =
UI.actionButton.Visible =
_, button (
UI.magnetButtons
)
button.Visible =
_, button (
UI.rotationButtons
)
button.Visible =
UI.valueLabel.Visible =
UI.valueLabel.Text =
.. .(
CONFIG.magnetForce
)
..
.. .(
CONFIG.magnetRadius
)
()
isMobile
STATE.mobileMode =
UI.modeLabel.Text =
UI.buttons.distanceDown.Visible =
UI.buttons.distanceUp.Visible =
UI.buttons.throw.Visible =
UI.buttons.anchor.Visible =
UI.buttons.forceDown.Visible =
UI.buttons.forceUp.Visible =
UI.buttons.magnet.Visible =
UI.buttons.rotation.Visible =
UI.actionButton.Visible =
_, button (
UI.magnetButtons
)
button.Visible =
_, button (
UI.rotationButtons
)
button.Visible =
UI.valueLabel.Visible =
UI.valueLabel.Text =
()
STATE.active
STATE.magnetActive
STATE.rotationMode
STATE.holding
target =
STATE.target
STATE.holding =
STATE.target =
STATE.anchoredWhileHolding =
()
target
target:()
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
isMobile
()
hit, position =
()
hit
hit:()
(hit)
hit.Anchored
hit:(
)
hit.Anchored =
hit:(
,
)
STATE.target = hit
STATE.holding =
STATE.anchoredWhileHolding =
STATE.holdDistance =
position
(
camera.CFrame.Position
- position
).Magnitude
(
camera.CFrame.Position
- hit.Position
).Magnitude
bodyGyro.CFrame =
hit.CFrame
(hit)
isMobile
()
(
,
,
)
()
STATE.active
STATE.magnetActive
STATE.rotationMode
STATE.holding
STATE.target
target =
STATE.target
STATE.holding =
STATE.target =
STATE.anchoredWhileHolding =
()
target
target:()
target.Anchored =
ray =
()
velocity =
.()
velocity.Name =
velocity.MaxForce =
.(, , ) *
velocity.P =
CONFIG.holdVelocityP
velocity.Velocity =
ray.Direction.Unit
* CONFIG.throwForce
velocity.Parent =
target
Debris:(
velocity,
)
isMobile
()
(
,
,
)
()
STATE.active
STATE.magnetActive
STATE.rotationMode
STATE.holding
STATE.target
target =
STATE.target
STATE.anchoredWhileHolding =
STATE.anchoredWhileHolding
target.Anchored =
STATE.anchoredWhileHolding
STATE.anchoredWhileHolding
target:(
,
)
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
()
target:(
,
)
(target)
(
STATE.anchoredWhileHolding
,
,
)
()
STATE.rotationKeys.up =
STATE.rotationKeys.down =
STATE.rotationKeys.left =
STATE.rotationKeys.right =
()
STATE.holding
STATE.target
(
,
,
)
STATE.anchoredWhileHolding
(
,
,
)
target =
STATE.target
STATE.rotationMode =
STATE.rotationPosition =
target.Position
()
bodyVelocity.Parent =
bodyGyro.Parent =
rotationPositionLock.Position =
STATE.rotationPosition
rotationPositionLock.Parent =
target
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
()
()
isMobile
()
UI.rotationLabel
UI.rotationLabel.Visible =
STATE.guiVisible
UI.forceLabel
UI.forceLabel.Visible =
(
,
,
)
()
STATE.rotationMode
target =
STATE.target
STATE.rotationMode =
()
rotationPositionLock.Parent =
STATE.rotationPosition =
()
()
target
target:()
STATE.anchoredWhileHolding
(target)
bodyGyro.CFrame =
target.CFrame
isMobile
()
UI.rotationLabel
UI.rotationLabel.Visible =
STATE.guiVisible
UI.forceLabel
STATE.guiVisible
UI.forceLabel.Visible =
(
,
,
)
()
STATE.rotationMode
()
()
()
STATE.rotationMode
STATE.target
target =
STATE.target
STATE.rotationPosition
rotationPositionLock.Position =
STATE.rotationPosition
horizontal =
vertical =
STATE.rotationKeys.left
horizontal -=
STATE.rotationKeys.right
horizontal +=
STATE.rotationKeys.up
vertical +=
STATE.rotationKeys.down
vertical -=
horizontal ==
vertical ==
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
horizontal ~=
target.CFrame =
target.CFrame
* .(
,
.(
horizontal
* CONFIG.rotationSpeed
),
)
vertical ~=
target.CFrame =
target.CFrame
* .(
.(
-vertical
* CONFIG.rotationSpeed
),
,
)
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
()
object (
STATE.magnetObjects
)
object
object:()
bv =
object:()
bv
bv:()
STATE.magnetObjects = {}
()
STATE.active
STATE.magnetActive
count =
object (
STATE.magnetObjects
)
object
object:()
object.Anchored =
object:(
,
)
bv =
object:()
bv
bv:()
count +=
STATE.magnetObjects = {}
(
,
.. count
.. ,
)
()
STATE.active
STATE.holding
(
,
,
)
STATE.rotationMode
STATE.magnetActive =
isMobile
()
(
,
,
)
()
STATE.magnetActive =
()
isMobile
()
(
,
,
)
()
STATE.magnetActive
()
()
(amount)
CONFIG.throwForce =
.(
CONFIG.throwForce + amount,
CONFIG.throwForceMin,
CONFIG.throwForceMax
)
isMobile
STATE.mobileMode ==
()
(
,
(
.(
CONFIG.throwForce
)
),
)
(amount)
CONFIG.magnetForce =
.(
CONFIG.magnetForce + amount,
CONFIG.magnetForceMin,
CONFIG.magnetForceMax
)
isMobile
STATE.mobileMode ==
()
(amount)
CONFIG.magnetRadius =
.(
CONFIG.magnetRadius + amount,
CONFIG.magnetRadiusMin,
CONFIG.magnetRadiusMax
)
isMobile
STATE.mobileMode ==
()
(delta)
STATE.rotationMode
STATE.magnetActive
(delta)
STATE.holding
STATE.holdDistance =
.(
STATE.holdDistance + delta,
CONFIG.holdDistanceMin,
CONFIG.holdDistanceMax
)
UserInputService.InputBegan:(
(input, gameProcessed)
STATE.active
gameProcessed
input.UserInputType ==
.UserInputType.Keyboard
key =
input.KeyCode
STATE.rotationMode
key ==
.KeyCode.C
()
key ==
.KeyCode.W
key ==
.KeyCode.Up
STATE.rotationKeys.up =
key ==
.KeyCode.S
key ==
.KeyCode.Down
STATE.rotationKeys.down =
key ==
.KeyCode.A
key ==
.KeyCode.Left
STATE.rotationKeys.left =
key ==
.KeyCode.D
key ==
.KeyCode.Right
STATE.rotationKeys.right =
key == .KeyCode.Q
STATE.holdQ =
key == .KeyCode.E
STATE.holdE =
key == .KeyCode.R
STATE.magnetActive
()
()
key == .KeyCode.F
()
key == .KeyCode.C
()
key == .KeyCode.T
()
key == .KeyCode.Z
STATE.magnetActive
(
-CONFIG.magnetForceStep
)
(
-CONFIG.throwForceStepPC
)
key == .KeyCode.X
STATE.magnetActive
(
CONFIG.magnetForceStep
)
(
CONFIG.throwForceStepPC
)
key == .KeyCode.RightControl
()
key == .KeyCode.LeftControl
(
,
..
..
..
..
..
.. ,
)
key == .KeyCode.LeftAlt
key == .KeyCode.RightAlt
(
,
,
)
input.UserInputType ==
.UserInputType.MouseButton1
()
)
UserInputService.InputEnded:(
(input)
STATE.active
input.UserInputType ==
.UserInputType.Keyboard
key =
input.KeyCode
STATE.rotationMode
key ==
.KeyCode.W
key ==
.KeyCode.Up
STATE.rotationKeys.up =
key ==
.KeyCode.S
key ==
.KeyCode.Down
STATE.rotationKeys.down =
key ==
.KeyCode.A
key ==
.KeyCode.Left
STATE.rotationKeys.left =
key ==
.KeyCode.D
key ==
.KeyCode.Right
STATE.rotationKeys.right =
key == .KeyCode.Q
STATE.holdQ =
key == .KeyCode.E
STATE.holdE =
)
(
button,
callback
)
button.Activated:(
()
STATE.active
()
)
(
button,
onBegin,
onEnd
)
activeInput =
button.InputBegan:(
(input)
STATE.active
input.UserInputType ==
.UserInputType.Touch
input.UserInputType ==
.UserInputType.MouseButton1
activeInput = input
()
)
button.InputEnded:(
(input)
input == activeInput
activeInput =
()
)
isMobile
UI.buttons
b = UI.buttons
(
UI.actionButton,
()
()
)
(
b.throw,
()
()
)
(
b.anchor,
()
()
)
(
b.distanceDown,
()
STATE.holdClose =
,
()
STATE.holdClose =
)
(
b.distanceUp,
()
STATE.holdFar =
,
()
STATE.holdFar =
)
(
b.forceDown,
()
(
-CONFIG.throwForceStepMobile
)
)
(
b.forceUp,
()
(
CONFIG.throwForceStepMobile
)
)
(
b.magnet,
()
()
)
(
b.rotation,
()
()
)
(
UI.hideButton,
()
()
)
mb =
UI.magnetButtons
(
mb.forceDown,
()
(
-CONFIG.magnetForceStep
)
)
(
mb.forceUp,
()
(
CONFIG.magnetForceStep
)
)
(
mb.radiusDown,
()
(
-CONFIG.magnetRadiusStep
)
)
(
mb.radiusUp,
()
(
CONFIG.magnetRadiusStep
)
)
(
mb.massAnchor,
()
()
)
(
mb.exit,
()
()
)
rb =
UI.rotationButtons
(
rb.up,
()
STATE.rotationKeys.up =
,
()
STATE.rotationKeys.up =
)
(
rb.down,
()
STATE.rotationKeys.down =
,
()
STATE.rotationKeys.down =
)
(
rb.left,
()
STATE.rotationKeys.left =
,
()
STATE.rotationKeys.left =
)
(
rb.right,
()
STATE.rotationKeys.right =
,
()
STATE.rotationKeys.right =
)
(
rb.exit,
()
()
)
isMobile
showButton =
.()
showButton.Name =
showButton.Size =
.(, )
showButton.Position =
.(, )
showButton.BackgroundColor3 =
.(, , )
showButton.BackgroundTransparency =
showButton.Text =
showButton.TextScaled =
showButton.Font =
.Font.GothamBold
showButton.TextColor3 =
.(, , )
showButton.Visible =
showButton.ZIndex =
(showButton)
showButton.Parent =
UI.mobileGui
UI.showButton =
showButton
showButton.Activated:(
()
()
showButton.Visible =
STATE.mobileMode ==
STATE.magnetActive
()
STATE.mobileMode ==
STATE.rotationMode
()
()
)
UI.hideButton.Activated:(
()
()
showButton.Visible =
)
isMobile
UI.fakePointer
UI.fakePointer.InputBegan:(
(input)
input.UserInputType
~= .UserInputType.Touch
STATE.pointerTouch =
input
STATE.pointerTouchStart =
input.Position
STATE.pointerDragStarted =
)
UserInputService.InputChanged:(
(input)
input.UserInputType
~= .UserInputType.Touch
input ~=
STATE.pointerTouch
STATE.pointerTouchStart
delta =
input.Position
- STATE.pointerTouchStart
STATE.pointerDragStarted
delta.Magnitude
< CONFIG.pointerDragThreshold
STATE.pointerDragStarted =
UI.fakePointer.Position =
.(
input.Position.X,
input.Position.Y
)
)
UserInputService.InputEnded:(
(input)
input ~=
STATE.pointerTouch
STATE.pointerTouch =
STATE.pointerTouchStart =
STATE.pointerDragStarted =
)
UserInputService.TouchEnded:(
(input)
input ~=
STATE.pointerTouch
STATE.pointerTouch =
STATE.pointerTouchStart =
STATE.pointerDragStarted =
)
RunService.RenderStepped:(
()
STATE.active
()
()
STATE.magnetActive
STATE.rotationMode
STATE.guiVisible
hit, position =
()
hit position
surfacePosition =
surfacePosition:(
position,
)
ray =
()
surfacePosition =
surfacePosition:(
ray.Origin
+ ray.Direction * ,
)
actualMagnetRadius +=
(
CONFIG.magnetRadius
- actualMagnetRadius
) *
percent =
(
CONFIG.magnetForce
- CONFIG.magnetForceMin
)
/
(
CONFIG.magnetForceMax
- CONFIG.magnetForceMin
)
colorScale =
.(
+ percent * ,
,
)
usingDrawing
magnetCircle
viewport =
camera:(
surfacePosition
)
magnetCircle.Visible =
magnetCircle.Position =
.(
viewport.X,
viewport.Y
)
magnetCircle.Radius =
actualMagnetRadius
magnetCircle.Color =
colorScale
circleGui
circleGui.Enabled =
circleGui.Size =
.(
actualMagnetRadius * ,
actualMagnetRadius *
)
circleGui.Position =
surfacePosition
circleImage.ImageColor3 =
colorScale
UI.forceLabel
STATE.guiVisible
isMobile
UI.forceLabel.Visible =
UI.forceLabel.Text =
.. .(
CONFIG.magnetForce
)
..
.. .(
CONFIG.magnetRadius
)
STATE.rotationMode
STATE.guiVisible
usingDrawing
magnetCircle
magnetCircle.Visible =
circleGui
circleGui.Enabled =
UI.forceLabel
isMobile
UI.forceLabel.Visible =
UI.forceLabel.Text =
.. .(
CONFIG.throwForce
)
usingDrawing
magnetCircle
magnetCircle.Visible =
circleGui
circleGui.Enabled =
UI.forceLabel
UI.forceLabel.Visible =
STATE.holding
STATE.rotationMode
STATE.magnetActive
STATE.holdClose
(
-CONFIG.distanceSpeed
)
STATE.holdFar
(
CONFIG.distanceSpeed
)
)
RunService.Heartbeat:(
()
STATE.active
STATE.holding
STATE.target
target =
STATE.target
STATE.rotationMode
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
STATE.rotationPosition
rotationPositionLock.Position =
STATE.rotationPosition
STATE.anchoredWhileHolding
ray =
()
desiredPosition =
ray.Origin
+ ray.Direction.Unit
* STATE.holdDistance
bodyVelocity.Velocity =
(
desiredPosition
- target.Position
) *
bodyGyro.CFrame =
target.CFrame
target.AssemblyLinearVelocity =
.zero
target.AssemblyAngularVelocity =
.zero
STATE.magnetActive
STATE.rotationMode
center =
surfacePosition
newObjects = {}
scaledForce =
CONFIG.magnetForce
* (
CONFIG.magnetRadius /
) ^
diameter =
CONFIG.magnetRadius *
nearby =
:(
.(center),
.(
diameter,
diameter,
diameter
)
)
_, object (
nearby
)
object:()
object.Anchored
(object)
(object)
object.Transparency <
object.CanCollide
object ~= STATE.target
offset =
center - object.Position
distance =
offset.Magnitude
distance
<= CONFIG.magnetRadius
distance >
velocity =
object:(
)
velocity
velocity =
.(
)
velocity.Name =
velocity.MaxForce =
.(
,
,
) *
velocity.P =
velocity.Parent =
object
velocity.Velocity =
offset.Unit
* scaledForce
newObjects[object] =
object (
STATE.magnetObjects
)
newObjects[object]
bv =
object
object:(
)
bv
bv:()
STATE.magnetObjects =
newObjects
()
STATE.rotationMode
STATE.magnetActive
STATE.holdQ
(
-CONFIG.magnetRadiusStep
)
STATE.holdE
(
CONFIG.magnetRadiusStep
)
STATE.holdQ
(
-CONFIG.distanceKeySpeed
)
STATE.holdE
(
CONFIG.distanceKeySpeed
)
)
player.CharacterAdded:(
()
STATE.characterFrozen =
STATE.characterBackup =
STATE.characterVisibilityBackup = {}
STATE.rotationMode
STATE.rotationMode =
()
rotationPositionLock.Parent =
)
isMobile
()
UI.showButton.Visible =
UI.forceLabel
UI.forceLabel.Visible =
(
..
..
..
)# 🧲 Script de Telequinesis para Roblox ## Descripción Breve Script avanzado de telequinesis para Roblox que permite controlar objetos con poderes mentales. Compatible con PC y móvil mediante un sistema unificado. ## 🎮 Funcionalidades Principales Agarrar y Mover Objetos - Mantén objetos suspendidos y controla su distancia Lanzar Objetos - Lanza objetos en la dirección que apuntas Modo Imán - Atrae múltiples objetos sueltos dentro de un radio configurable y atraviesa piezas no ancladas al apuntar Rotar Objetos - Gira objetos 360° manteniéndolos fijos en su posición Anclar Objetos - Congela objetos en el aire Anclaje Masivo - Ancla todos los objetos atraídos por el imán ## ⌨️ Controles PC Click Izquierdo - Agarrar/Soltar F - Lanzar Q/E - Acercar/Alejar R - Anclar/Desanclar T - Activar/Desactivar Imán C - Modo Rotación Z/X - Bajar/Subir Fuerza W/A/S/D o Flechas - Rotar Ctrl Derecho - Mostrar/Ocultar interfaz ## 📱 Compatible Móvil Interfaz táctil completa con cursor visual y controles que cambian según el modo activo. Incluye controles de agarrar, lanzar, anclar, distancia, fuerza, imán y rotación. ## ✨ Características Avanzadas Highlights visuales Círculo visual del imán F

Universal