Run it
Copy the script and paste it into your executor.
Players = :()
UserInputService = :()
TweenService = :()
Debris = :()
GuiService = :()
player = Players.LocalPlayer
mouse = player:()
camera = .CurrentCamera
lastCoords = .(, , )
currentPortal =
gui, mainFrame
minimized =
dragging =
dragStart, startPos
isFiring =
aimMode =
portalRange =
editMode =
buttonsLocked =
buttonSize =
insertBtn, createBtn
insertDragging =
createDragging =
insertDragStart, insertStartPos
createDragStart, createStartPos
insertPos = .(, , , )
createPos = .(, , , )
()
backpack = player:()
backpack:()
tool = .()
tool.Name =
tool.RequiresHandle =
tool.CanBeDropped =
tool.ToolTip =
handle = .()
handle.Name =
handle.Size = .(, , )
handle.Color = .(, , )
handle.Material = .Material.Metal
handle.Parent = tool
grip = .()
grip.Size = .(, , )
grip.Color = .(, , )
grip.Material = .Material.SmoothPlastic
grip.CanCollide =
grip.Parent = tool
weldGrip = .()
weldGrip.Part0 = handle
weldGrip.Part1 = grip
weldGrip.C0 = .(, -, ) * .(.(-), , )
weldGrip.Parent = handle
fluid = .()
fluid.Size = .(, , )
fluid.Color = .(, , )
fluid.Material = .Material.Neon
fluid.CanCollide =
fluid.Parent = tool
weldFluid = .()
weldFluid.Part0 = handle
weldFluid.Part1 = fluid
weldFluid.C0 = .(, , -)
weldFluid.Parent = handle
topTube = .()
topTube.Size = .(, , )
topTube.Color = .(, , )
topTube.Material = .Material.Metal
topTube.CanCollide =
topTube.Parent = tool
weldTube = .()
weldTube.Part0 = handle
weldTube.Part1 = topTube
weldTube.C0 = .(, , )
weldTube.Parent = handle
barrel = .()
barrel.Size = .(, , )
barrel.Color = .(, , )
barrel.Material = .Material.Metal
barrel.CanCollide =
barrel.Parent = tool
weldBarrel = .()
weldBarrel.Part0 = handle
weldBarrel.Part1 = barrel
weldBarrel.C0 = .(, , -)
weldBarrel.Parent = handle
tip = .()
tip.Size = .(, , )
tip.Color = .(, , )
tip.Material = .Material.Neon
tip.CanCollide =
tip.Parent = tool
weldTip = .()
weldTip.Part0 = barrel
weldTip.Part1 = tip
weldTip.C0 = .(, , -)
weldTip.Parent = barrel
tool.Parent = backpack
(position, normal)
portal = .()
portal.Name =
portal.Anchored =
portal.CanCollide =
portal.Material = .Material.Neon
portal.Color = .(, , )
portal.Transparency =
portal.Size = .(, , )
portal.Parent =
mesh = .()
mesh.MeshType = .MeshType.Cylinder
mesh.Parent = portal
ring = .()
ring.Name =
ring.Anchored =
ring.CanCollide =
ring.Material = .Material.Neon
ring.Color = .(, , )
ring.Transparency =
ring.Size = .(, , )
ring.Parent = portal
ringMesh = .()
ringMesh.MeshType = .MeshType.Cylinder
ringMesh.Parent = ring
portalLight = .()
portalLight.Name =
portalLight.Color = .(, , )
portalLight.Brightness =
portalLight.Range =
portalLight.Parent = portal
portalCFrame = .(position, position + normal) * .(, .(), )
portal.CFrame = portalCFrame
ring.CFrame = portalCFrame
expandInfo = TweenInfo.(, .EasingStyle.Back, .EasingDirection.Out)
TweenService:(portal, expandInfo, {
Size = .(, , )
}):()
TweenService:(ring, expandInfo, {
Size = .(, , )
}):()
TweenService:(portalLight, expandInfo, {
Brightness = ,
Range =
}):()
portal
(portal)
portal portal.Parent
ring = portal:()
light = portal:()
shrinkInfo = TweenInfo.(, .EasingStyle.Back, .EasingDirection.In)
portalTween = TweenService:(portal, shrinkInfo, {
Size = .(, , ),
Transparency =
})
ring
TweenService:(ring, shrinkInfo, {
Size = .(, , ),
Transparency =
}):()
light
TweenService:(light, shrinkInfo, {
Brightness = ,
Range =
}):()
portalTween:()
portalTween.Completed:()
portal portal.Parent
portal:()
(destination)
isFiring
character = player.Character
character
equippedGun = character:()
equippedGun equippedGun:()
isFiring =
hrp = character:()
hrp
isFiring =
aimDirection
aimMode ==
aimDirection = hrp.CFrame.LookVector
aimDirection = camera.CFrame.LookVector
startPos = hrp.Position + (aimDirection * ) + .(, , )
rayParams = RaycastParams.()
rayParams.FilterDescendantsInstances = {character}
rayParams.FilterType = .RaycastFilterType.Exclude
maxRange = .(portalRange, , )
result = :(startPos, aimDirection * maxRange, rayParams)
targetPos
normal
result
normal = result.Normal
targetPos = result.Position + normal *
portalHalfHeight =
.(normal.Y) >
normal.Y >
targetPos = targetPos + .(, portalHalfHeight, )
targetPos = targetPos - .(, portalHalfHeight * , )
targetPos = startPos + (aimDirection * maxRange)
normal = -aimDirection
ball = .()
ball.Name =
ball.Shape = .PartType.Ball
ball.Size = .(, , )
ball.Color = .(, , )
ball.Material = .Material.Neon
ball.Anchored =
ball.CanCollide =
ball.CastShadow =
ball.Position = startPos
ball.Parent =
light = .()
light.Color = .(, , )
light.Brightness =
light.Range =
light.Parent = ball
tweenInfo = TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out)
moveTween = TweenService:(ball, tweenInfo, {
Position = targetPos,
Size = .(, , )
})
moveTween:()
moveTween.Completed:()
ball:()
currentPortal currentPortal.Parent
currentPortal:()
entrancePortal = (targetPos, normal)
currentPortal = entrancePortal
entrancePos = targetPos
exitPortal =
debounce =
()
.(, ()
.(()
(entrancePortal)
)
.(()
(exitPortal)
)
currentPortal == entrancePortal
currentPortal =
)
entrancePortal.Touched:((hit)
debounce
char = hit.Parent
char == player.Character char:()
debounce =
hrp = char.HumanoidRootPart
exitPortal exitPortal.Parent
exitPos = destination + .(, , )
lookDir = hrp.CFrame.LookVector
exitPortal = (exitPos, lookDir)
exitPortal.Touched:((hit2)
debounce
char2 = hit2.Parent
char2 == player.Character char2:()
debounce =
char2.HumanoidRootPart.CFrame = .(entrancePos + .(, , ))
.()
debounce =
)
hrp.CFrame = .(destination + .(, , ))
.()
debounce =
)
()
isFiring =
()
insertBtn
insertBtn.Size = .(, buttonSize, , buttonSize)
createBtn
createBtn.Size = .(, buttonSize, , buttonSize)
()
mousePos = UserInputService:()
guisAtPos = GuiService:(mousePos.X, mousePos.Y)
#guisAtPos >
()
gui gui:()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.ZIndexBehavior = .ZIndexBehavior.Sibling
gui.Parent = player:()
insertBtn = .()
insertBtn.Name =
insertBtn.Size = .(, buttonSize, , buttonSize)
insertBtn.Position = insertPos
insertBtn.BackgroundColor3 = .(, , )
insertBtn.Text =
insertBtn.TextColor3 = .(, , )
insertBtn.Font = .Font.GothamBold
insertBtn.TextSize =
insertBtn.TextWrapped =
insertBtn.AutoButtonColor =
insertBtn.Active =
insertBtn.Parent = gui
.(, insertBtn).CornerRadius = .(, )
insertStroke = .(, insertBtn)
insertStroke.Color = .(, , )
insertStroke.Thickness =
createBtn = .()
createBtn.Name =
createBtn.Size = .(, buttonSize, , buttonSize)
createBtn.Position = createPos
createBtn.BackgroundColor3 = .(, , )
createBtn.Text =
createBtn.TextColor3 = .(, , )
createBtn.Font = .Font.GothamBold
createBtn.TextSize =
createBtn.TextWrapped =
createBtn.AutoButtonColor =
createBtn.Active =
createBtn.Parent = gui
.(, createBtn).CornerRadius = .(, )
createStroke = .(, createBtn)
createStroke.Color = .(, , )
createStroke.Thickness =
mainFrame = .()
mainFrame.Size = .(, , , )
mainFrame.Position = .(, , , )
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.Active =
mainFrame.Parent = gui
.(, mainFrame).CornerRadius = .(, )
stroke = .(, mainFrame)
stroke.Color = .(, , )
stroke.Thickness =
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundColor3 = .(, , )
titleBar.BorderSizePixel =
titleBar.Parent = mainFrame
.(, titleBar).CornerRadius = .(, )
title = .()
title.Size = .(, -, , )
title.Position = .(, , , )
title.BackgroundTransparency =
title.Text =
title.TextColor3 = .(,,)
title.Font = .Font.GothamBold
title.TextSize =
title.TextXAlignment = .TextXAlignment.Left
title.Parent = titleBar
minBtn = .()
minBtn.Size = .(, , , )
minBtn.Position = .(, -, , )
minBtn.BackgroundColor3 = .(, , )
minBtn.Text =
minBtn.TextColor3 = .(,,)
minBtn.Font = .Font.GothamBold
minBtn.TextSize =
minBtn.Parent = titleBar
.(, minBtn).CornerRadius = .(, )
closeBtn = .()
closeBtn.Size = .(, , , )
closeBtn.Position = .(, -, , )
closeBtn.BackgroundColor3 = .(, , )
closeBtn.Text =
closeBtn.TextColor3 = .(,,)
closeBtn.Font = .Font.GothamBold
closeBtn.TextSize =
closeBtn.Parent = titleBar
.(, closeBtn).CornerRadius = .(, )
content = .()
content.Name =
content.Size = .(, -, , -)
content.Position = .(, , , )
content.BackgroundTransparency =
content.Parent = mainFrame
(text, y)
l = .()
l.Size = .(, , , )
l.Position = .(, , , y)
l.BackgroundTransparency =
l.Text = text
l.TextColor3 = .(, , )
l.Font = .Font.Gotham
l.TextSize =
l.TextXAlignment = .TextXAlignment.Left
l.Parent = content
l
(, )
xBox = .()
xBox.Size = .(, -, , )
xBox.Position = .(, , , )
xBox.BackgroundColor3 = .(, , )
xBox.Text =
xBox.TextColor3 = .(,,)
xBox.Font = .Font.Gotham
xBox.TextSize =
xBox.PlaceholderText =
xBox.Parent = content
.(, xBox).CornerRadius = .(, )
yBox = .()
yBox.Size = .(, -, , )
yBox.Position = .(, , , )
yBox.BackgroundColor3 = .(, , )
yBox.Text =
yBox.TextColor3 = .(,,)
yBox.Font = .Font.Gotham
yBox.TextSize =
yBox.PlaceholderText =
yBox.Parent = content
.(, yBox).CornerRadius = .(, )
zBox = .()
zBox.Size = .(, -, , )
zBox.Position = .(, , , )
zBox.BackgroundColor3 = .(, , )
zBox.Text =
zBox.TextColor3 = .(,,)
zBox.Font = .Font.Gotham
zBox.TextSize =
zBox.PlaceholderText =
zBox.Parent = content
.(, zBox).CornerRadius = .(, )
(, )
rangeBox = .()
rangeBox.Size = .(, , , )
rangeBox.Position = .(, , , )
rangeBox.BackgroundColor3 = .(, , )
rangeBox.Text = (portalRange)
rangeBox.TextColor3 = .(,,)
rangeBox.Font = .Font.GothamBold
rangeBox.TextSize =
rangeBox.PlaceholderText =
rangeBox.ClearTextOnFocus =
rangeBox.Parent = content
.(, rangeBox).CornerRadius = .(, )
rangeStroke = .(, rangeBox)
rangeStroke.Color = .(, , )
rangeStroke.Thickness =
rangeBox.FocusLost:(()
newRange = (rangeBox.Text)
newRange
portalRange = .(newRange, , )
rangeBox.Text = (portalRange)
rangeBox.Text = (portalRange)
)
modeBtn = .()
modeBtn.Size = .(, , , )
modeBtn.Position = .(, , , )
modeBtn.BackgroundColor3 = .(, , )
modeBtn.Text =
modeBtn.TextColor3 = .(,,)
modeBtn.Font = .Font.GothamBold
modeBtn.TextSize =
modeBtn.Parent = content
.(, modeBtn).CornerRadius = .(, )
modeBtn.MouseButton1Click:(()
aimMode ==
aimMode =
modeBtn.Text =
modeBtn.BackgroundColor3 = .(, , )
aimMode =
modeBtn.Text =
modeBtn.BackgroundColor3 = .(, , )
)
(, )
(, )
sizeBox = .()
sizeBox.Size = .(, , , )
sizeBox.Position = .(, , , )
sizeBox.BackgroundColor3 = .(, , )
sizeBox.Text = (buttonSize)
sizeBox.TextColor3 = .(,,)
sizeBox.Font = .Font.GothamBold
sizeBox.TextSize =
sizeBox.Parent = content
.(, sizeBox).CornerRadius = .(, )
applySizeBtn = .()
applySizeBtn.Size = .(, -, , )
applySizeBtn.Position = .(, , , )
applySizeBtn.BackgroundColor3 = .(, , )
applySizeBtn.Text =
applySizeBtn.TextColor3 = .(,,)
applySizeBtn.Font = .Font.GothamBold
applySizeBtn.TextSize =
applySizeBtn.Parent = content
.(, applySizeBtn).CornerRadius = .(, )
applySizeBtn.MouseButton1Click:(()
newSize = (sizeBox.Text)
newSize
buttonSize = .(newSize, , )
sizeBox.Text = (buttonSize)
()
sizeBox.Text = (buttonSize)
)
lockBtn = .()
lockBtn.Size = .(, , , )
lockBtn.Position = .(, , , )
lockBtn.BackgroundColor3 = .(, , )
lockBtn.Text =
lockBtn.TextColor3 = .(,,)
lockBtn.Font = .Font.GothamBold
lockBtn.TextSize =
lockBtn.Parent = content
.(, lockBtn).CornerRadius = .(, )
lockBtn.MouseButton1Click:(()
buttonsLocked = buttonsLocked
buttonsLocked
lockBtn.Text =
lockBtn.BackgroundColor3 = .(, , )
lockBtn.Text =
lockBtn.BackgroundColor3 = .(, , )
)
editHubBtn = .()
editHubBtn.Size = .(, , , )
editHubBtn.Position = .(, , , )
editHubBtn.BackgroundColor3 = .(, , )
editHubBtn.Text =
editHubBtn.TextColor3 = .(,,)
editHubBtn.Font = .Font.GothamBold
editHubBtn.TextSize =
editHubBtn.Parent = content
.(, editHubBtn).CornerRadius = .(, )
info = .()
info.Size = .(, , , )
info.Position = .(, , , )
info.BackgroundTransparency =
info.Text =
info.TextColor3 = .(, , )
info.Font = .Font.Gotham
info.TextSize =
info.TextWrapped =
info.Parent = content
(active)
active
insertStroke.Color = .(, , )
createStroke.Color = .(, , )
insertStroke.Thickness =
createStroke.Thickness =
editHubBtn.Text =
editHubBtn.BackgroundColor3 = .(, , )
insertStroke.Color = .(, , )
createStroke.Color = .(, , )
insertStroke.Thickness =
createStroke.Thickness =
editHubBtn.Text =
editHubBtn.BackgroundColor3 = .(, , )
editHubBtn.MouseButton1Click:(()
editMode = editMode
(editMode)
editMode
insertPos = insertBtn.Position
createPos = createBtn.Position
)
insertBtn.MouseButton1Click:(()
editMode
xBox.Text = .(, lastCoords.X)
yBox.Text = .(, lastCoords.Y)
zBox.Text = .(, lastCoords.Z)
)
createBtn.MouseButton1Click:(()
editMode
newRange = (rangeBox.Text)
newRange
portalRange = .(newRange, , )
rangeBox.Text = (portalRange)
x = (xBox.Text)
y = (yBox.Text)
z = (zBox.Text)
dest = .(x, y, z)
.(()
(dest)
)
)
insertBtn.InputBegan:((input)
editMode buttonsLocked
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
insertDragging =
insertDragStart = input.Position
insertStartPos = insertBtn.Position
)
insertBtn.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
insertDragging =
)
createBtn.InputBegan:((input)
editMode buttonsLocked
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
createDragging =
createDragStart = input.Position
createStartPos = createBtn.Position
)
createBtn.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
createDragging =
)
UserInputService.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch
insertDragging editMode buttonsLocked
delta = input.Position - insertDragStart
insertBtn.Position = .(
insertStartPos.X.Scale, insertStartPos.X.Offset + delta.X,
insertStartPos.Y.Scale, insertStartPos.Y.Offset + delta.Y
)
createDragging editMode buttonsLocked
delta = input.Position - createDragStart
createBtn.Position = .(
createStartPos.X.Scale, createStartPos.X.Offset + delta.X,
createStartPos.Y.Scale, createStartPos.Y.Offset + delta.Y
)
)
minBtn.MouseButton1Click:(()
minimized = minimized
content.Visible = minimized
mainFrame.Size = minimized .(, , , ) .(, , , )
)
closeBtn.MouseButton1Click:(()
gui.Enabled =
)
titleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = mainFrame.Position
)
titleBar.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
)
UserInputService.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragStart
mainFrame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
()
unitRay = camera:(mouse.X, mouse.Y)
params = RaycastParams.()
params.FilterDescendantsInstances = {player.Character}
params.FilterType = .RaycastFilterType.Exclude
result = :(unitRay.Origin, unitRay.Direction * , params)
result
lastCoords = result.Position
UserInputService.InputBegan:((input, processed)
processed
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
()
()
)
UserInputService.TouchTapInWorld:((_, processedByUI)
processedByUI
()
)
()
()
player.CharacterAdded:(()
.()
()
)
()Portal

Universal