Run it
Copy the script and paste it into your executor.
Players=:()
TweenService=:()
RunService=:()
UIS=:()
player=Players.LocalPlayer
backpack=player:()
GREEN=.(,,)
LIGHT_GREEN=.(,,)
BODY=.(,,)
DARK=.(,,)
GUN_SCALE=
PORTAL_COOLDOWN=
portalCooldown=
portals={Portal1=,Portal2=}
connections={Portal1=,Portal2=}
selectedPortal=
gunConnection=
gunEquipped=
(name)
connections[name]
connections[name]:()
connections[name]=
portals[name]
portals[name]:()
portals[name]=
(name,pos)
character=player.Character
character
camera=.CurrentCamera
camera
ray=camera:(pos.X,pos.Y)
params=RaycastParams.()
params.FilterType=.RaycastFilterType.Exclude
params.FilterDescendantsInstances={character}
hit=:(
ray.Origin,
ray.Direction*,
params
)
hit
(name)
position=hit.Position
normal=hit.Normal
up=.yAxis
.(normal:(up))>
up=.xAxis
portalCFrame=.(
position+normal*,
position+normal,
up
)
model=.()
model.Name=name
model.Parent=
portals[name]=model
portal=.()
portal.Name=
portal.Size=.(,,)
portal.CFrame=portalCFrame
portal.Color=GREEN
portal.Material=.Material.Neon
portal.Transparency=
portal.Anchored=
portal.CanCollide=
portal.CanTouch=
portal.CanQuery=
portal.Parent=model
mesh=.()
mesh.MeshType=.MeshType.Sphere
mesh.Scale=.(,,)
mesh.Parent=portal
inner=.()
inner.Name=
inner.Size=.(,,)
inner.CFrame=portalCFrame*.(,,-)
inner.Color=LIGHT_GREEN
inner.Material=.Material.Neon
inner.Transparency=
inner.Anchored=
inner.CanCollide=
inner.CanTouch=
inner.CanQuery=
inner.Parent=model
innerMesh=.()
innerMesh.MeshType=.MeshType.Sphere
innerMesh.Scale=.(,,)
innerMesh.Parent=inner
light=.()
light.Color=GREEN
light.Brightness=
light.Range=
light.Parent=portal
attachment=.()
attachment.Parent=portal
particles=.()
particles.Color=ColorSequence.(GREEN)
particles.LightEmission=
particles.LightInfluence=
particles.Rate=
particles.Lifetime=NumberRange.(,)
particles.Speed=NumberRange.(,)
particles.SpreadAngle=.(,)
particles.Size=NumberSequence.{
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,)
}
particles.Parent=attachment
i=,
ring=.()
ring.Name=
ring.Shape=.PartType.Cylinder
ring.Size=.(,+i*,+i*)
ring.CFrame=
portalCFrame*
.(
.(),
,
.(i*)
)
ring.Color=GREEN
ring.Material=.Material.Neon
ring.Transparency=
ring.Anchored=
ring.CanCollide=
ring.CanTouch=
ring.CanQuery=
ring.Parent=model
start=.()
connections[name]=RunService.RenderStepped:(()
model.Parent
elapsed=.()-start
pulse=+.(elapsed*)*
portal.Size=.(,,)*pulse
index=
_,object (model:())
object.Name==
index+=
object.CFrame=
portal.CFrame*
.(
.(),
elapsed*(index*),
.(index*)
)
)
portal.Touched:((hitPart)
portalCooldown
hitPart:(character)
destination=
name==
destinationModel=portals[destination]
destinationModel
destinationPortal=
destinationModel:()
destinationPortal
root=
character:()
root
portalCooldown=
.()
root.CFrame=
destinationPortal.CFrame*
.(,,-)
position=root.Position
root.CFrame=.(position)*.(
,
.(root.Orientation.Y),
)
root.AssemblyLinearVelocity=.zero
root.AssemblyAngularVelocity=.zero
.(PORTAL_COOLDOWN)
portalCooldown=
)
(parent,name,size,color,material,cframe)
part=.()
part.Name=name
part.Size=size
part.Color=color
part.Material=material
part.CFrame=cframe
part.CanCollide=
part.CanTouch=
part.CanQuery=
part.Massless=
part.CastShadow=
part.Parent=parent
part
(part,handle)
weld=.()
weld.Part0=handle
weld.Part1=part
weld.Parent=part
()
tool=.()
tool.Name=
tool.RequiresHandle=
tool.CanBeDropped=
tool.ToolTip=
handle=.()
handle.Name=
handle.Size=.(,,)
handle.Color=DARK
handle.Material=.Material.SmoothPlastic
handle.CanCollide=
handle.CanTouch=
handle.CanQuery=
handle.Massless=
handle.CastShadow=
handle.Parent=tool
tool.Grip=
.(,,)*
.(
,
.(),
)
body=(
tool,
,
.(,,),
BODY,
.Material.SmoothPlastic,
handle.CFrame*.(-,,)
)
(body,handle)
bottom=(
tool,
,
.(,,),
.(,,),
.Material.SmoothPlastic,
handle.CFrame*.(-,,)
)
(bottom,handle)
front=(
tool,
,
.(,,),
.(,,),
.Material.SmoothPlastic,
handle.CFrame*.(-,,)
)
(front,handle)
i=-,
emitter=.()
emitter.Name=
emitter.Shape=.PartType.Cylinder
emitter.Size=.(,,)
emitter.Color=GREEN
emitter.Material=.Material.Neon
emitter.CanCollide=
emitter.CanTouch=
emitter.CanQuery=
emitter.Massless=
emitter.CFrame=
handle.CFrame*
.(-,,i*)*
.(
,
.(),
)
emitter.Parent=tool
(emitter,handle)
light=.()
light.Color=GREEN
light.Brightness=
light.Range=
light.Parent=emitter
top=(
tool,
,
.(,,),
.(,,),
.Material.SmoothPlastic,
handle.CFrame*.(-,,)
)
(top,handle)
red=(
tool,
,
.(,,),
.(,,),
.Material.Neon,
handle.CFrame*.(-,,)
)
(red,handle)
chamber=.()
chamber.Name=
chamber.Shape=.PartType.Cylinder
chamber.Size=.(,,)
chamber.Color=.(,,)
chamber.Material=.Material.Glass
chamber.Transparency=
chamber.Reflectance=
chamber.CanCollide=
chamber.CanTouch=
chamber.CanQuery=
chamber.Massless=
chamber.CFrame=
handle.CFrame*
.(-,,)*
.(
,
,
.()
)
chamber.Parent=tool
(chamber,handle)
chamberTop=.()
chamberTop.Name=
chamberTop.Shape=.PartType.Cylinder
chamberTop.Size=.(,,)
chamberTop.Color=.(,,)
chamberTop.Material=.Material.SmoothPlastic
chamberTop.CanCollide=
chamberTop.CanTouch=
chamberTop.CanQuery=
chamberTop.Massless=
chamberTop.CFrame=
handle.CFrame*
.(-,,)*
.(
,
,
.()
)
chamberTop.Parent=tool
(chamberTop,handle)
core=.()
core.Name=
core.Shape=.PartType.Ball
core.Size=.(,,)
core.Color=GREEN
core.Material=.Material.Neon
core.Transparency=
core.CanCollide=
core.CanTouch=
core.CanQuery=
core.Massless=
core.CFrame=
handle.CFrame*
.(-,,)
core.Parent=tool
(core,handle)
coreLight=.()
coreLight.Color=GREEN
coreLight.Brightness=
coreLight.Range=
coreLight.Parent=core
coreAttachment=.()
coreAttachment.Parent=core
coreParticles=.()
coreParticles.Color=ColorSequence.(GREEN)
coreParticles.LightEmission=
coreParticles.LightInfluence=
coreParticles.Rate=
coreParticles.Lifetime=NumberRange.(,)
coreParticles.Speed=NumberRange.(,)
coreParticles.SpreadAngle=.(,)
coreParticles.Size=NumberSequence.{
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,)
}
coreParticles.Parent=coreAttachment
gripBottom=(
tool,
,
.(,,),
.(,,),
.Material.SmoothPlastic,
handle.CFrame*
.(,-,)*
.(
,
,
.(-)
)
)
(gripBottom,handle)
gripTop=(
tool,
,
.(,,),
DARK,
.Material.SmoothPlastic,
handle.CFrame*
.(-,,)*
.(
,
,
.(-)
)
)
(gripTop,handle)
gripInsert=(
tool,
,
.(,,),
.(,,),
.Material.SmoothPlastic,
handle.CFrame*
.(,,-)*
.(
,
,
.(-)
)
)
(gripInsert,handle)
gripLight=(
tool,
,
.(,,),
GREEN,
.Material.Neon,
handle.CFrame*
.(-,,-)*
.(
,
,
.(-)
)
)
(gripLight,handle)
parts={}
_,obj (tool:())
obj:()
.(parts,obj)
_,part (parts)
part~=handle
relative=
handle.CFrame:(part.CFrame)
p=
relative.Position*GUN_SCALE
part.Size=
part.Size*GUN_SCALE
part.CFrame=
handle.CFrame*
.(p)*
.(
.zero,
relative.XVector,
relative.YVector,
relative.ZVector
)
handle.Size=
handle.Size*GUN_SCALE
tool.Equipped:(()
gunEquipped=
gunConnection
gunConnection:()
gunConnection=
RunService.RenderStepped:(()
core.Parent
pulse=
+.(.()*)*
core.Size=
.(,,)*
GUN_SCALE*
pulse
coreLight.Brightness=
+.(.()*)
)
)
tool.Unequipped:(()
gunEquipped=
gunConnection
gunConnection:()
gunConnection=
)
tool.Parent=backpack
UIS.InputBegan:((input,processed)
processed gunEquipped
valid=
input.UserInputType==.UserInputType.MouseButton1
input.UserInputType==.UserInputType.Touch
valid
position=
.(
input.Position.X,
input.Position.Y
)
(
selectedPortal,
position
)
selectedPortal=
selectedPortal==
)
()
old=
backpack:()
old
old:()
character=
player.Character
character
equipped=
character:()
equipped
equipped:()
()
()
player.CharacterAdded:(()
()
()
gunEquipped=
portalCooldown=
.()
()
)Can teleport ricks portal or smth mobile

Universal