Rick portal gun
Key RequiredUniversal

Rick portal gun

Universal ScriptQUASAR69QUASAR69 4K views 35K executesUpdated Aug 18, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•3989 lines (55199 chars)
local Players = game:GetService("Players")

local player = Players.LocalPlayer

-- Создаём GUI
local gui = Instance.new("ScreenGui")
gui.Name = "CodeVerification"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

-- Окно
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 350, 0, 180)
frame.Position = UDim2.new(0.5, -175, 0.5, -90)
frame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
frame.Parent = gui

-- Заголовок
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 45)
title.BackgroundTransparency = 1
title.Text = "Введите код"
title.TextColor3 = Color3.new(1, 1, 1)
title.TextSize = 24
title.Font = Enum.Font.GothamBold
title.Parent = frame

-- Поле ввода
local input = Instance.new("TextBox")
input.Size = UDim2.new(1, -40, 0, 45)
input.Position = UDim2.new(0, 20, 0, 55)
input.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
input.PlaceholderText = "Введите код..."
input.Text = ""
input.TextColor3 = Color3.new(1, 1, 1)
input.TextSize = 18
input.Font = Enum.Font.Gotham
input.ClearTextOnFocus = false
input.Parent = frame

-- Кнопка
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, -40, 0, 40)
button.Position = UDim2.new(0, 20, 0, 115)
button.BackgroundColor3 = Color3.fromRGB(70, 120, 255)
button.Text = "Проверить"
button.TextColor3 = Color3.new(1, 1, 1)
button.TextSize = 18
button.Font = Enum.Font.GothamBold
button.Parent = frame

-- Проверка
button.MouseButton1Click:Connect(function()
	if input.Text == "T12E48X" then
		gui:Destroy()

		-- =========================================
		--============================================================

--              RICK & MORTY PORTAL GUN

--                  FULL LOCAL SCRIPT

--

-- Поместить в:

-- StarterPlayer

--   └── StarterPlayerScripts

--       └── LocalScript

--

-- ВСЁ РАБОТАЕТ В ОДНОМ LOCALSCRIPT

--============================================================

local Players = game:GetService("Players")

local TweenService = game:GetService("TweenService")

local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")

local player = Players.LocalPlayer

local backpack = player:WaitForChild("Backpack")

--============================================================

-- НАСТРОЙКИ

--============================================================

-- Размер всей пушки.

-- 1 = исходный размер

-- 0.75 = на 25% меньше

-- 0.65 = текущий уменьшенный размер

-- 0.5 = в 2 раза меньше

local GUN_SCALE = 0.4

local GREEN = Color3.fromRGB(45, 255, 90)

local LIGHT_GREEN = Color3.fromRGB(150, 255, 170)

local BODY_COLOR = Color3.fromRGB(150, 150, 145)

local BODY_DARK = Color3.fromRGB(55, 57, 55)

local PORTAL_LIFETIME = 10

-- Режим телепортации: "Coordinates" или "PlaceId"
local teleportMode = "Coordinates"

local currentPortal = nil

local portalAnimationConnection = nil

local coordinateConnection = nil

local gunAnimationConnection = nil

--============================================================

-- GUI

--============================================================

local gui = Instance.new("ScreenGui")

gui.Name = "PortalGunGUI"

gui.ResetOnSpawn = false

gui.IgnoreGuiInset = true

gui.Parent = player:WaitForChild("PlayerGui")

--============================================================

-- ГЛАВНОЕ ОКНО

--============================================================

local main = Instance.new("Frame")

main.Name = "PortalMenu"

main.Size =

    UDim2.fromOffset(

        390,

        310

    )

main.Position =

    UDim2.fromScale(

        0.5,

        0.5

    )

main.AnchorPoint =

    Vector2.new(

        0.5,

        0.5

    )

main.BackgroundColor3 =

    Color3.fromRGB(

        12,

        15,

        18

    )

main.BackgroundTransparency = 0.04

main.Visible = false

main.Parent = gui

local mainCorner =

    Instance.new("UICorner")

mainCorner.CornerRadius =

    UDim.new(

        0,

        16

    )

mainCorner.Parent = main

local mainStroke =

    Instance.new("UIStroke")

mainStroke.Color = GREEN

mainStroke.Thickness = 2

mainStroke.Parent = main

--============================================================

-- ЗАГОЛОВОК

--============================================================

local title =

    Instance.new("TextLabel")

title.Size =

    UDim2.new(

        1,

        -60,

        0,

        45

    )

title.Position =

    UDim2.fromOffset(

        15,

        10

    )

title.BackgroundTransparency = 1

title.Text = "🌀 PORTAL GUN"

title.TextColor3 =

    Color3.fromRGB(

        220,

        255,

        230

    )

title.Font =

    Enum.Font.GothamBold

title.TextSize = 25

title.Parent = main

--============================================================

-- ПОДЗАГОЛОВОК

--============================================================

local subtitle =

    Instance.new("TextLabel")

subtitle.Size =

    UDim2.new(

        1,

        -30,

        0,

        25

    )

subtitle.Position =

    UDim2.fromOffset(

        15,

        48

    )

subtitle.BackgroundTransparency = 1

subtitle.Text =

    "Введите координаты назначения"

subtitle.TextColor3 =

    Color3.fromRGB(

        130,

        160,

        140

    )

subtitle.Font =

    Enum.Font.Gotham

subtitle.TextSize = 14

subtitle.Parent = main

--============================================================

-- СОЗДАНИЕ ПОЛЯ

--============================================================

local coordinatesModeButton = Instance.new("TextButton")
coordinatesModeButton.Name = "CoordinatesMode"
coordinatesModeButton.Size = UDim2.fromOffset(155, 32)
coordinatesModeButton.Position = UDim2.fromOffset(30, 72)
coordinatesModeButton.BackgroundColor3 = Color3.fromRGB(25, 150, 65)
coordinatesModeButton.Text = "📍 КООРДИНАТЫ"
coordinatesModeButton.TextColor3 = Color3.fromRGB(235, 255, 240)
coordinatesModeButton.Font = Enum.Font.GothamBold
coordinatesModeButton.TextSize = 12
coordinatesModeButton.AutoButtonColor = false
coordinatesModeButton.Parent = main

local coordinatesModeCorner = Instance.new("UICorner")
coordinatesModeCorner.CornerRadius = UDim.new(0, 8)
coordinatesModeCorner.Parent = coordinatesModeButton

local placeIdModeButton = Instance.new("TextButton")
placeIdModeButton.Name = "PlaceIdMode"
placeIdModeButton.Size = UDim2.fromOffset(155, 32)
placeIdModeButton.Position = UDim2.fromOffset(205, 72)
placeIdModeButton.BackgroundColor3 = Color3.fromRGB(24, 29, 32)
placeIdModeButton.Text = "🌍 PLACE ID"
placeIdModeButton.TextColor3 = Color3.fromRGB(170, 190, 180)
placeIdModeButton.Font = Enum.Font.GothamBold
placeIdModeButton.TextSize = 12
placeIdModeButton.AutoButtonColor = false
placeIdModeButton.Parent = main

local placeIdModeCorner = Instance.new("UICorner")
placeIdModeCorner.CornerRadius = UDim.new(0, 8)
placeIdModeCorner.Parent = placeIdModeButton

local function createField(

    name,

    placeholder,

    position

)

    local box =

        Instance.new("TextBox")

    box.Name = name

    box.Size =

        UDim2.fromOffset(

            105,

            50

        )

    box.Position = position

    box.BackgroundColor3 =

        Color3.fromRGB(

            24,

            29,

            32

        )

    box.TextColor3 =

        Color3.fromRGB(

            235,

            255,

            240

        )

    box.PlaceholderColor3 =

        Color3.fromRGB(

            100,

            120,

            105

        )

    box.PlaceholderText =

        placeholder

    box.Text = ""

    box.Font =

        Enum.Font.GothamMedium

    box.TextSize = 17

    box.ClearTextOnFocus = false

    box.Parent = main

    local corner =

        Instance.new("UICorner")

    corner.CornerRadius =

        UDim.new(

            0,

            10

        )

    corner.Parent = box

    local stroke =

        Instance.new("UIStroke")

    stroke.Color =

        Color3.fromRGB(

            55,

            90,

            65

        )

    stroke.Thickness = 1

    stroke.Parent = box

    return box

end

local xBox =

    createField(

        "X",

        "X",

        UDim2.fromOffset(

            30,

            115

        )

    )

local yBox =

    createField(

        "Y",

        "Y",

        UDim2.fromOffset(

            142,

            115

        )

    )

local zBox =

    createField(

        "Z",

        "Z",

        UDim2.fromOffset(

            254,

            115

        )

    )

local placeIdBox = createField(
    "PlaceId",
    "Place ID",
    UDim2.fromOffset(30, 115)
)

placeIdBox.Size = UDim2.fromOffset(330, 50)
placeIdBox.Visible = false

--============================================================

-- КНОПКА

--============================================================

local createButton =

    Instance.new("TextButton")

createButton.Name =

    "CreatePortal"

createButton.Size =

    UDim2.new(

        1,

        -60,

        0,

        55

    )

createButton.Position =

    UDim2.fromOffset(

        30,

        180

    )

createButton.BackgroundColor3 =

    Color3.fromRGB(

        25,

        150,

        65

    )

createButton.Text =

    "ОТКРЫТЬ ПОРТАЛ"

createButton.TextColor3 =

    Color3.fromRGB(

        235,

        255,

        240

    )

createButton.Font =

    Enum.Font.GothamBold

createButton.TextSize = 17

createButton.AutoButtonColor = false

createButton.Parent = main

local buttonCorner =

    Instance.new("UICorner")

buttonCorner.CornerRadius =

    UDim.new(

        0,

        12

    )

buttonCorner.Parent =

    createButton

local buttonStroke =

    Instance.new("UIStroke")

buttonStroke.Color =

    Color3.fromRGB(

        80,

        255,

        130

    )

buttonStroke.Thickness = 1

buttonStroke.Parent =

    createButton

createButton.MouseEnter:Connect(

    function()

        TweenService:Create(

            createButton,

            TweenInfo.new(0.15),

            {

                BackgroundColor3 =

                    Color3.fromRGB(

                        35,

                        190,

                        80

                    )

            }

        ):Play()

    end

)

createButton.MouseLeave:Connect(

    function()

        TweenService:Create(

            createButton,

            TweenInfo.new(0.15),

            {

                BackgroundColor3 =

                    Color3.fromRGB(

                        25,

                        150,

                        65

                    )

            }

        ):Play()

    end

)

--============================================================

-- КНОПКА ЗАКРЫТИЯ

--============================================================

local closeButton =

    Instance.new("TextButton")

closeButton.Size =

    UDim2.fromOffset(

        32,

        32

    )

closeButton.Position =

    UDim2.new(

        1,

        -43,

        0,

        12

    )

closeButton.BackgroundTransparency = 1

closeButton.Text = "×"

closeButton.TextColor3 =

    Color3.fromRGB(

        170,

        180,

        175

    )

closeButton.Font =

    Enum.Font.GothamBold

closeButton.TextSize = 28

closeButton.Parent = main

closeButton.MouseButton1Click:Connect(

    function()

        main.Visible = false

    end

)

--============================================================

-- STATUS

--============================================================

local status =

    Instance.new("TextLabel")

status.Size =

    UDim2.new(

        1,

        -60,

        0,

        30

    )

status.Position =

    UDim2.fromOffset(

        30,

        245

    )

status.BackgroundTransparency = 1

status.Text =

    "Введите X, Y и Z"

status.TextColor3 =

    Color3.fromRGB(

        110,

        140,

        120

    )

status.Font =

    Enum.Font.Gotham

status.TextSize = 13

status.Parent = main

local function updateTeleportMode(mode)
    teleportMode = mode

    local coordinates = mode == "Coordinates"

    xBox.Visible = coordinates
    yBox.Visible = coordinates
    zBox.Visible = coordinates
    placeIdBox.Visible = not coordinates

    if coordinates then
        coordinatesModeButton.BackgroundColor3 = Color3.fromRGB(25, 150, 65)
        coordinatesModeButton.TextColor3 = Color3.fromRGB(235, 255, 240)

        placeIdModeButton.BackgroundColor3 = Color3.fromRGB(24, 29, 32)
        placeIdModeButton.TextColor3 = Color3.fromRGB(170, 190, 180)

        subtitle.Text = "Введите координаты назначения"
        status.Text = "Введите X, Y и Z"
    else
        coordinatesModeButton.BackgroundColor3 = Color3.fromRGB(24, 29, 32)
        coordinatesModeButton.TextColor3 = Color3.fromRGB(170, 190, 180)

        placeIdModeButton.BackgroundColor3 = Color3.fromRGB(25, 150, 65)
        placeIdModeButton.TextColor3 = Color3.fromRGB(235, 255, 240)

        subtitle.Text = "Введите Place ID назначения"
        status.Text = "Введите Place ID"
    end

    status.TextColor3 = Color3.fromRGB(110, 140, 120)
end

coordinatesModeButton.MouseButton1Click:Connect(function()
    updateTeleportMode("Coordinates")
end)

placeIdModeButton.MouseButton1Click:Connect(function()
    updateTeleportMode("PlaceId")
end)

updateTeleportMode("Coordinates")

--============================================================

-- GUI КООРДИНАТ

--============================================================

local coordinatesFrame =

    Instance.new("Frame")

coordinatesFrame.Name =

    "CurrentCoordinates"

coordinatesFrame.Size =

    UDim2.fromOffset(

        200,

        88

    )

coordinatesFrame.Position =

    UDim2.new(

        1,

        -225,

        1,

        -175

    )

coordinatesFrame.BackgroundColor3 =

    Color3.fromRGB(

        10,

        14,

        12

    )

coordinatesFrame.BackgroundTransparency = 0.12

coordinatesFrame.Visible = false

coordinatesFrame.Parent = gui

local coordinatesCorner =

    Instance.new("UICorner")

coordinatesCorner.CornerRadius =

    UDim.new(

        0,

        12

    )

coordinatesCorner.Parent =

    coordinatesFrame

local coordinatesStroke =

    Instance.new("UIStroke")

coordinatesStroke.Color = GREEN

coordinatesStroke.Thickness = 1.5

coordinatesStroke.Parent =

    coordinatesFrame

local coordinatesTitle =

    Instance.new("TextLabel")

coordinatesTitle.Size =

    UDim2.new(

        1,

        -16,

        0,

        25

    )

coordinatesTitle.Position =

    UDim2.fromOffset(

        8,

        5

    )

coordinatesTitle.BackgroundTransparency = 1

coordinatesTitle.Text =

    "📍 CURRENT POSITION"

coordinatesTitle.TextColor3 = GREEN

coordinatesTitle.Font =

    Enum.Font.GothamBold

coordinatesTitle.TextSize = 12

coordinatesTitle.Parent =

    coordinatesFrame

local coordinatesLabel =

    Instance.new("TextLabel")

coordinatesLabel.Size =

    UDim2.new(

        1,

        -16,

        0,

        52

    )

coordinatesLabel.Position =

    UDim2.fromOffset(

        8,

        30

    )

coordinatesLabel.BackgroundTransparency = 1

coordinatesLabel.Text =

    "X: 0.0\nY: 0.0\nZ: 0.0"

coordinatesLabel.TextColor3 =

    Color3.fromRGB(

        220,

        255,

        225

    )

coordinatesLabel.Font =

    Enum.Font.Code

coordinatesLabel.TextSize = 13

coordinatesLabel.TextXAlignment =

    Enum.TextXAlignment.Left

coordinatesLabel.TextYAlignment =

    Enum.TextYAlignment.Top

coordinatesLabel.Parent =

    coordinatesFrame

--============================================================

-- HUD КООРДИНАТ

--============================================================

local function startCoordinateHUD()

    if coordinateConnection then

        coordinateConnection:Disconnect()

    end

    coordinatesFrame.Visible = true

    coordinateConnection =

        RunService.RenderStepped:Connect(

            function()

                local character =

                    player.Character

                if not character then

                    return

                end

                local root =

                    character:FindFirstChild(

                        "HumanoidRootPart"

                    )

                if not root then

                    return

                end

                local position =

                    root.Position

                coordinatesLabel.Text =

                    string.format(

                        "X: %.1f\nY: %.1f\nZ: %.1f",

                        position.X,

                        position.Y,

                        position.Z

                    )

            end

        )

end

local function stopCoordinateHUD()

    coordinatesFrame.Visible = false

    if coordinateConnection then

        coordinateConnection:Disconnect()

        coordinateConnection = nil

    end

end

--============================================================

-- УДАЛЕНИЕ ПОРТАЛА

--============================================================

local function removePortal()

    if portalAnimationConnection then

        portalAnimationConnection:Disconnect()

        portalAnimationConnection = nil

    end

    if currentPortal then

        currentPortal:Destroy()

        currentPortal = nil

    end

end

--============================================================

-- СОЗДАНИЕ PART

--============================================================

local function makePart(

    parent,

    name,

    size,

    color,

    material,

    cframe

)

    local part =

        Instance.new("Part")

    part.Name = name

    part.Size = size

    part.Color = color

    part.Material = material

    part.CFrame = cframe

    part.CanCollide = false

    part.CanTouch = false

    part.CanQuery = false

    part.Massless = true

    part.CastShadow = false

    part.Parent = parent

    return part

end

--============================================================

-- WELD

--============================================================

local function weldPart(

    part,

    handle

)

    local weld =

        Instance.new(

            "WeldConstraint"

        )

    weld.Part0 = handle

    weld.Part1 = part

    weld.Parent = part

end

--============================================================

-- СОЗДАНИЕ ПУШКИ

--============================================================

local function createPortalGun()

    local tool =

        Instance.new("Tool")

    tool.Name =

        "Portal Gun"

    tool.RequiresHandle = true

    tool.CanBeDropped = false

    tool.ToolTip =

        "ЛКМ — открыть портал"

    --========================================================

    -- HANDLE

    --

    -- Это настоящая рукоятка.

    --========================================================

    local handle =

        Instance.new("Part")

    handle.Name = "Handle"

    handle.Size =

        Vector3.new(

            0.72,

            2.35,

            0.72

        )

    handle.Color =

        Color3.fromRGB(

            55,

            57,

            55

        )

    handle.Material =

        Enum.Material.SmoothPlastic

    handle.CanCollide = false

    handle.CanTouch = false

    handle.CanQuery = false

    handle.Massless = true

    handle.CastShadow = false

    handle.Parent = tool

    --========================================================

    -- ПОЛОЖЕНИЕ В РУКЕ

    --========================================================

    tool.Grip =

        CFrame.new(

            0,

            -0.05,

            -0.15

        )

        *

        CFrame.Angles(

            math.rad(90),

            190,

            math.rad(-90)

        )

    --========================================================

    -- ОСНОВНОЙ КОРПУС

    --========================================================

    local body =

        makePart(

            tool,

            "MainBody",

            Vector3.new(

                3.6,

                0.75,

                2.1

            ),

            BODY_COLOR,

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    -1.55,

                    1.40,

                    0

                )

        )

    weldPart(

        body,

        handle

    )

    --========================================================

    -- НИЖНЯЯ ЧАСТЬ

    --========================================================

    local bottom =

        makePart(

            tool,

            "BottomBody",

            Vector3.new(

                3.25,

                0.18,

                1.8

            ),

            Color3.fromRGB(

                90,

                92,

                90

            ),

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    -1.55,

                    0.97,

                    0

                )

        )

    weldPart(

        bottom,

        handle

    )

    --========================================================

    -- ПЕРЕДНЯЯ ПАНЕЛЬ

    --========================================================

    local frontPanel =

        makePart(

            tool,

            "FrontPanel",

            Vector3.new(

                0.15,

                0.62,

                1.75

            ),

            Color3.fromRGB(

                65,

                67,

                65

            ),

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    -3.37,

                    1.40,

                    0

                )

        )

    weldPart(

        frontPanel,

        handle

    )

    --========================================================

    -- ТРИ ЗЕЛЁНЫХ ИЗЛУЧАТЕЛЯ

    --========================================================

    for i = -1, 1 do

        local emitter =

            Instance.new("Part")

        emitter.Name =

            "GreenEmitter"

        emitter.Shape =

            Enum.PartType.Cylinder

        emitter.Size =

            Vector3.new(

                0.16,

                0.43,

                0.43

            )

        emitter.Color = GREEN

        emitter.Material =

            Enum.Material.Neon

        emitter.CanCollide = false

        emitter.CanTouch = false

        emitter.CanQuery = false

        emitter.Massless = true

        emitter.CFrame =

            handle.CFrame

            * CFrame.new(

                -3.46,

                1.40,

                i * 0.55

            )

            *

            CFrame.Angles(

                0,

                math.rad(90),

                0

            )

        emitter.Parent = tool

        weldPart(

            emitter,

            handle

        )

        local light =

            Instance.new(

                "PointLight"

            )

        light.Color = GREEN

        light.Brightness = 1.5

        light.Range = 4

        light.Parent = emitter

    end

    --========================================================

    -- ВЕРХНЯЯ ПЛАСТИНА

    --========================================================

    local topPlate =

        makePart(

            tool,

            "TopPlate",

            Vector3.new(

                2.9,

                0.12,

                1.75

            ),

            Color3.fromRGB(

                170,

                170,

                165

            ),

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    -1.40,

                    1.83,

                    0

                )

        )

    weldPart(

        topPlate,

        handle

    )

    --========================================================

    -- КРАСНАЯ ПАНЕЛЬ

    --========================================================

    local redPanel =

        makePart(

            tool,

            "RedPanel",

            Vector3.new(

                0.9,

                0.08,

                0.62

            ),

            Color3.fromRGB(

                210,

                45,

                45

            ),

            Enum.Material.Neon,

            handle.CFrame

                * CFrame.new(

                    -0.65,

                    1.93,

                    0

                )

        )

    weldPart(

        redPanel,

        handle

    )

    local redLight =

        Instance.new(

            "PointLight"

        )

    redLight.Color =

        Color3.fromRGB(

            255,

            40,

            40

        )

    redLight.Brightness = 0.5

    redLight.Range = 3

    redLight.Parent = redPanel

    --========================================================

    -- ОСНОВАНИЕ КОЛБЫ

    --========================================================

    local chamberBase =

        Instance.new("Part")

    chamberBase.Name =

        "ChamberBase"

    chamberBase.Shape =

        Enum.PartType.Cylinder

    chamberBase.Size =

        Vector3.new(

            0.35,

            1.05,

            1.05

        )

    chamberBase.Color =

        Color3.fromRGB(

            190,

            190,

            185

        )

    chamberBase.Material =

        Enum.Material.SmoothPlastic

    chamberBase.CanCollide = false

    chamberBase.CanTouch = false

    chamberBase.CanQuery = false

    chamberBase.Massless = true

    chamberBase.CFrame =

        handle.CFrame

        * CFrame.new(

            -2.20,

            2.20,

            0

        )

        *

        CFrame.Angles(

            0,

            0,

            math.rad(90)

        )

    chamberBase.Parent = tool

    weldPart(

        chamberBase,

        handle

    )

    --========================================================

    -- СТЕКЛЯННАЯ КОЛБА

    --========================================================

    local glass =

        Instance.new("Part")

    glass.Name =

        "EnergyGlass"

    glass.Shape =

        Enum.PartType.Cylinder

    glass.Size =

        Vector3.new(

            1.75,

            1.35,

            1.35

        )

    glass.Color =

        Color3.fromRGB(

            170,

            255,

            190

        )

    glass.Material =

        Enum.Material.Glass

    glass.Transparency = 0.48

    glass.Reflectance = 0.08

    glass.CanCollide = false

    glass.CanTouch = false

    glass.CanQuery = false

    glass.Massless = true

    glass.CFrame =

        handle.CFrame

        * CFrame.new(

            -2.20,

            2.95,

            0

        )

        *

        CFrame.Angles(

            0,

            0,

            math.rad(90)

        )

    glass.Parent = tool

    weldPart(

        glass,

        handle

    )

    --========================================================

    -- ВЕРХ КОЛБЫ

    --========================================================

    local glassTop =

        Instance.new("Part")

    glassTop.Name =

        "GlassTop"

    glassTop.Shape =

        Enum.PartType.Cylinder

    glassTop.Size =

        Vector3.new(

            0.22,

            1.35,

            1.35

        )

    glassTop.Color =

        Color3.fromRGB(

            180,

            180,

            175

        )

    glassTop.Material =

        Enum.Material.SmoothPlastic

    glassTop.CanCollide = false

    glassTop.CanTouch = false

    glassTop.CanQuery = false

    glassTop.Massless = true

    glassTop.CFrame =

        handle.CFrame

        * CFrame.new(

            -2.20,

            3.82,

            0

        )

        *

        CFrame.Angles(

            0,

            0,

            math.rad(90)

        )

    glassTop.Parent = tool

    weldPart(

        glassTop,

        handle

    )

    --========================================================

    -- ЗЕЛЁНОЕ ЯДРО

    --========================================================

    local core =

        Instance.new("Part")

    core.Name =

        "PortalCore"

    core.Shape =

        Enum.PartType.Ball

    core.Size =

        Vector3.new(

            0.65,

            0.85,

            0.65

        )

    core.Color = GREEN

    core.Material =

        Enum.Material.Neon

    core.Transparency = 0.08

    core.CanCollide = false

    core.CanTouch = false

    core.CanQuery = false

    core.Massless = true

    core.CFrame =

        handle.CFrame

        * CFrame.new(

            -2.20,

            2.97,

            0

        )

    core.Parent = tool

    weldPart(

        core,

        handle

    )

    local coreLight =

        Instance.new(

            "PointLight"

        )

    coreLight.Color = GREEN

    coreLight.Brightness = 3

    coreLight.Range = 7

    coreLight.Parent = core

    --========================================================

    -- ЧАСТИЦЫ ЯДРА

    --========================================================

    local coreAttachment =

        Instance.new(

            "Attachment"

        )

    coreAttachment.Parent = core

    local coreParticles =

        Instance.new(

            "ParticleEmitter"

        )

    coreParticles.Color =

        ColorSequence.new(

            GREEN

        )

    coreParticles.LightEmission = 1

    coreParticles.LightInfluence = 0

    coreParticles.Rate = 18

    coreParticles.Lifetime =

        NumberRange.new(

            0.3,

            0.7

        )

    coreParticles.Speed =

        NumberRange.new(

            0.2,

            0.8

        )

    coreParticles.SpreadAngle =

        Vector2.new(

            180,

            180

        )

    coreParticles.Size =

        NumberSequence.new({

            NumberSequenceKeypoint.new(

                0,

                0.09

            ),

            NumberSequenceKeypoint.new(

                1,

                0

            )

        })

    coreParticles.Parent =

        coreAttachment

    --========================================================

    -- НИЖНЯЯ ЧАСТЬ РУКОЯТКИ

    --========================================================

    local gripBottom =

        makePart(

            tool,

            "GripBottom",

            Vector3.new(

                0.82,

                0.65,

                0.82

            ),

            Color3.fromRGB(

                48,

                50,

                48

            ),

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    0.35,

                    -1.0,

                    0

                )

                *

                CFrame.Angles(

                    0,

                    0,

                    math.rad(-18)

                )

        )

    weldPart(

        gripBottom,

        handle

    )

    --========================================================

    -- ВЕРХ РУКОЯТКИ

    --========================================================

    local gripTop =

        makePart(

            tool,

            "GripTop",

            Vector3.new(

                0.85,

                0.75,

                0.85

            ),

            BODY_DARK,

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    -0.4,

                    0.8,

                    0

                )

                *

                CFrame.Angles(

                    0,

                    0,

                    math.rad(-18)

                )

        )

    weldPart(

        gripTop,

        handle

    )

    --========================================================

    -- ЧЁРНАЯ ВСТАВКА

    --========================================================

    local gripInsert =

        makePart(

            tool,

            "GripInsert",

            Vector3.new(

                0.5,

                1.7,

                0.75

            ),

            Color3.fromRGB(

                35,

                37,

                35

            ),

            Enum.Material.SmoothPlastic,

            handle.CFrame

                * CFrame.new(

                    0.02,

                    0,

                    -0.38

                )

                *

                CFrame.Angles(

                    0,

                    0,

                    math.rad(-18)

                )

        )

    weldPart(

        gripInsert,

        handle

    )

    --========================================================

    -- ЗЕЛЁНАЯ ПОЛОСА РУКОЯТКИ

    --========================================================

    local gripLight =

        makePart(

            tool,

            "GripLight",

            Vector3.new(

                0.08,

                1.1,

                0.2

            ),

            GREEN,

            Enum.Material.Neon,

            handle.CFrame

                * CFrame.new(

                    -0.35,

                    0.1,

                    -0.43

                )

                *

                CFrame.Angles(

                    0,

                    0,

                    math.rad(-18)

                )

        )

    weldPart(

        gripLight,

        handle

    )

    --========================================================

    -- ЧАСТИЦЫ ПУШКИ

    --========================================================

    local gunAttachment =

        Instance.new(

            "Attachment"

        )

    gunAttachment.Position =

        Vector3.new(

            -2.2,

            3.8,

            0

        )

    gunAttachment.Parent =

        handle

    local gunParticles =

        Instance.new(

            "ParticleEmitter"

        )

    gunParticles.Color =

        ColorSequence.new(

            GREEN

        )

    gunParticles.LightEmission = 1

    gunParticles.LightInfluence = 0

    gunParticles.Rate = 8

    gunParticles.Lifetime =

        NumberRange.new(

            0.25,

            0.6

        )

    gunParticles.Speed =

        NumberRange.new(

            0.1,

            0.6

        )

    gunParticles.SpreadAngle =

        Vector2.new(

            180,

            180

        )

    gunParticles.Size =

        NumberSequence.new({

            NumberSequenceKeypoint.new(

                0,

                0.1

            ),

            NumberSequenceKeypoint.new(

                1,

                0

            )

        })

    gunParticles.Parent =

        gunAttachment

    --========================================================

    -- УМЕНЬШЕНИЕ ВСЕЙ МОДЕЛИ

    --

    -- ВАЖНО:

    -- здесь не меняется сама конструкция пушки.

    -- Мы только пропорционально масштабируем:

    --

    -- 1. Handle

    -- 2. размеры всех деталей

    -- 3. расстояние деталей от Handle

    --

    -- Поэтому модель остаётся точно такой же,

    -- только становится меньше.

    --========================================================

    if GUN_SCALE ~= 1 then

        local originalHandleCFrame =

            handle.CFrame

        local parts = {}

        for _, object in

            ipairs(

                tool:GetChildren()

            ) do

            if object:IsA(

                "BasePart"

            ) then

                table.insert(

                    parts,

                    object

                )

            end

        end

        for _, part in

            ipairs(

                parts

            ) do

            local relativeCFrame =

                originalHandleCFrame:ToObjectSpace(

                    part.CFrame

                )

            local relativePosition =

                relativeCFrame.Position

            local rotation =

                relativeCFrame

                    - relativePosition

            part.Size =

                part.Size

                * GUN_SCALE

            part.CFrame =

                originalHandleCFrame

                *

                CFrame.new(

                    relativePosition

                        * GUN_SCALE

                )

                *

                rotation

        end

        -- Масштабируем положение Attachment

        for _, object in

            ipairs(

                tool:GetDescendants()

            ) do

            if object:IsA(

                "Attachment"

            ) then

                if object.Parent:IsA(

                    "BasePart"

                ) then

                    object.Position =

                        object.Position

                        * GUN_SCALE

                end

            end

        end

    end

    --========================================================

    -- АНИМАЦИЯ ЯДРА

    --========================================================

    tool.Equipped:Connect(

        function()

            startCoordinateHUD()

            if gunAnimationConnection then

                gunAnimationConnection:Disconnect()

            end

            gunAnimationConnection =

                RunService.RenderStepped:Connect(

                    function()

                        if not core.Parent then

                            return

                        end

                        local pulse =

                            1

                            +

                            math.sin(

                                os.clock() * 5

                            ) * 0.12

                        local baseSize =

                            Vector3.new(

                                0.65,

                                0.85,

                                0.65

                            )

                            * GUN_SCALE

                        core.Size =

                            baseSize

                            * pulse

                        coreLight.Brightness =

                            3

                            +

                            math.sin(

                                os.clock() * 5

                            )

                    end

                )

        end

    )

    --========================================================

    -- УБИРАЕМ HUD

    --========================================================

    tool.Unequipped:Connect(

        function()

            stopCoordinateHUD()

            if gunAnimationConnection then

                gunAnimationConnection:Disconnect()

                gunAnimationConnection = nil

            end

            main.Visible = false

        end

    )

    --========================================================

    -- ЛКМ

    --========================================================

    tool.Activated:Connect(

        function()

            main.Visible =

                not main.Visible

            if main.Visible then

                if teleportMode == "Coordinates" then
                    status.Text = "Введите координаты X, Y и Z"
                else
                    status.Text = "Введите Place ID"
                end

                status.TextColor3 =

                    Color3.fromRGB(

                        110,

                        140,

                        120

                    )

            end

        end

    )

    tool.Parent = backpack

    return tool

end

--============================================================

-- СОЗДАНИЕ ПОРТАЛА

--============================================================

local function createPortal(

    targetPosition,

    targetPlaceId

)

    removePortal()

    local character =

        player.Character

    if not character then

        return

    end

    local root =

        character:FindFirstChild(

            "HumanoidRootPart"

        )

    if not root then

        return

    end

    --========================================================

    -- ПОРТАЛ ПЕРЕД ИГРОКОМ

    --========================================================

    local forward =

        root.CFrame.LookVector

    local portalPosition =

        root.Position

        +

        forward * 7

    --========================================================

    -- MODEL

    --========================================================

    local model =

        Instance.new("Model")

    model.Name =

        "RickMortyGreenPortal"

    model.Parent = workspace

    currentPortal = model

    --========================================================

    -- ОСНОВА ПОРТАЛА

    --========================================================

    local portal =

        Instance.new("Part")

    portal.Name =

        "Portal"

    portal.Size =

        Vector3.new(

            7,

            10,

            0.4

        )

    portal.CFrame =

        CFrame.lookAt(

            portalPosition,

            portalPosition + forward

        )

    portal.Color = GREEN

    portal.Material =

        Enum.Material.Neon

    portal.Transparency = 0.25

    portal.Anchored = true

    portal.CanCollide = false

    portal.CanTouch = true

    portal.CanQuery = false

    portal.Parent = model

    local portalMesh =

        Instance.new(

            "SpecialMesh"

        )

    portalMesh.MeshType =

        Enum.MeshType.Sphere

    portalMesh.Scale =

        Vector3.new(

            0.55,

            1,

            0.07

        )

    portalMesh.Parent = portal

    --========================================================

    -- ЦЕНТР ПОРТАЛА

    --========================================================

    local inner =

        Instance.new("Part")

    inner.Name =

        "PortalCore"

    inner.Size =

        Vector3.new(

            6.2,

            9.2,

            0.15

        )

    inner.CFrame =

        portal.CFrame

        *

        CFrame.new(

            0,

            0,

            -0.12

        )

    inner.Color =

        LIGHT_GREEN

    inner.Material =

        Enum.Material.Neon

    inner.Transparency = 0.35

    inner.Anchored = true

    inner.CanCollide = false

    inner.CanTouch = false

    inner.CanQuery = false

    inner.Parent = model

    local innerMesh =

        Instance.new(

            "SpecialMesh"

        )

    innerMesh.MeshType =

        Enum.MeshType.Sphere

    innerMesh.Scale =

        Vector3.new(

            0.55,

            1,

            0.05

        )

    innerMesh.Parent = inner

    --========================================================

    -- СВЕТ

    --========================================================

    local light =

        Instance.new(

            "PointLight"

        )

    light.Color = GREEN

    light.Brightness = 8

    light.Range = 18

    light.Parent = portal

    --========================================================

    -- ЧАСТИЦЫ

    --========================================================

    local attachment =

        Instance.new(

            "Attachment"

        )

    attachment.Parent = portal

    local particles =

        Instance.new(

            "ParticleEmitter"

        )

    particles.Color =

        ColorSequence.new({

            ColorSequenceKeypoint.new(

                0,

                Color3.fromRGB(

                    0,

                    255,

                    70

                )

            ),

            ColorSequenceKeypoint.new(

                0.5,

                Color3.fromRGB(

                    100,

                    255,

                    140

                )

            ),

            ColorSequenceKeypoint.new(

                1,

                Color3.fromRGB(

                    0,

                    180,

                    50

                )

            )

        })

    particles.LightEmission = 1

    particles.LightInfluence = 0

    particles.Rate = 120

    particles.Lifetime =

        NumberRange.new(

            0.4,

            1

        )

    particles.Speed =

        NumberRange.new(

            1,

            4

        )

    particles.SpreadAngle =

        Vector2.new(

            180,

            180

        )

    particles.Rotation =

        NumberRange.new(

            0,

            360

        )

    particles.RotSpeed =

        NumberRange.new(

            -250,

            250

        )

    particles.Size =

        NumberSequence.new({

            NumberSequenceKeypoint.new(

                0,

                0.2

            ),

            NumberSequenceKeypoint.new(

                0.5,

                0.08

            ),

            NumberSequenceKeypoint.new(

                1,

                0

            )

        })

    particles.Parent = attachment

    --========================================================

    -- ЭНЕРГЕТИЧЕСКИЕ КОЛЬЦА

    --========================================================

    for i = 1, 4 do

        local ring =

            Instance.new("Part")

        ring.Name =

            "EnergyRing"

        ring.Shape =

            Enum.PartType.Cylinder

        ring.Size =

            Vector3.new(

                0.08,

                6 + i * 0.55,

                6 + i * 0.55

            )

        ring.CFrame =

            portal.CFrame

            *

            CFrame.Angles(

                math.rad(90),

                0,

                math.rad(

                    i * 45

                )

            )

        ring.Color = GREEN

        ring.Material =

            Enum.Material.Neon

        ring.Transparency = 0.3

        ring.Anchored = true

        ring.CanCollide = false

        ring.CanTouch = false

        ring.CanQuery = false

        ring.Parent = model

    end

    --========================================================

    -- НАДПИСЬ

    --========================================================

    local billboard =

        Instance.new(

            "BillboardGui"

        )

    billboard.Size =

        UDim2.fromOffset(

            250,

            50

        )

    billboard.StudsOffset =

        Vector3.new(

            0,

            6,

            0

        )

    billboard.AlwaysOnTop = true

    billboard.Parent = portal

    local label =

        Instance.new(

            "TextLabel"

        )

    label.Size =

        UDim2.fromScale(

            1,

            1

        )

    label.BackgroundTransparency = 1

    label.Text = "PORTAL"

    label.TextColor3 = GREEN

    label.TextStrokeTransparency = 0.3

    label.Font =

        Enum.Font.GothamBold

    label.TextSize = 20

    label.Parent = billboard

    --========================================================

    -- АНИМАЦИЯ

    --========================================================

    local startTime =

        os.clock()

    portalAnimationConnection =

        RunService.RenderStepped:Connect(

            function()

                if not model.Parent then

                    if portalAnimationConnection then

                        portalAnimationConnection:Disconnect()

                        portalAnimationConnection = nil

                    end

                    return

                end

                local elapsed =

                    os.clock()

                    -

                    startTime

                local pulse =

                    1

                    +

                    math.sin(

                        elapsed * 5

                    )

                    * 0.06

                portal.Size =

                    Vector3.new(

                        7 * pulse,

                        10 * pulse,

                        0.4

                    )

                for i, object in

                    ipairs(

                        model:GetChildren()

                    ) do

                    if object.Name ==

                        "EnergyRing" then

                        object.CFrame =

                            portal.CFrame

                            *

                            CFrame.Angles(

                                math.rad(90),

                                elapsed *

                                    (i * 0.8),

                                math.rad(

                                    i * 45

                                )

                            )

                    end

                end

            end

        )

    --========================================================

    -- ТЕЛЕПОРТАЦИЯ

    --========================================================

    local teleportDebounce = false

    portal.Touched:Connect(

        function(hit)

            if teleportDebounce then

                return

            end

            local character =

                player.Character

            if not character then

                return

            end

            if not hit:IsDescendantOf(

                character

            ) then

                return

            end

            local humanoid =

                character:FindFirstChildOfClass(

                    "Humanoid"

                )

            local rootPart =

                character:FindFirstChild(

                    "HumanoidRootPart"

                )

            if not humanoid

                or not rootPart then

                return

            end

            teleportDebounce = true

            if targetPlaceId then
                -- PlaceId-режим: Teleport() поддерживается из LocalScript.
                local success, err = pcall(function()
                    TeleportService:Teleport(targetPlaceId, player)
                end)

                if not success then
                    warn("Teleport failed: " .. tostring(err))
                    status.Text = "⚠ Ошибка телепортации: " .. tostring(err)
                    status.TextColor3 = Color3.fromRGB(255, 100, 100)
                    teleportDebounce = false
                    return
                end
            else
                -- Режим координат: телепортация внутри текущего Place.
                rootPart.CFrame =

                    CFrame.new(

                        targetPosition

                        +

                        Vector3.new(

                            0,

                            4,

                            0

                        )

                    )

                rootPart.AssemblyLinearVelocity =

                    Vector3.zero

                rootPart.AssemblyAngularVelocity =

                    Vector3.zero

                task.wait(0.15)
                removePortal()
            end

        end

    )

    --========================================================

    -- АВТОУДАЛЕНИЕ ЧЕРЕЗ 10 СЕКУНД

    --========================================================

    task.delay(

        PORTAL_LIFETIME,

        function()

            if currentPortal ~= model then

                return

            end

            for _, object in

                ipairs(

                    model:GetDescendants()

                ) do

                if object:IsA(

                    "BasePart"

                ) then

                    TweenService:Create(

                        object,

                        TweenInfo.new(

                            0.3,

                            Enum.EasingStyle.Quad,

                            Enum.EasingDirection.Out

                        ),

                        {

                            Transparency = 1

                        }

                    ):Play()

                elseif object:IsA(

                    "ParticleEmitter"

                ) then

                    object.Enabled = false

                elseif object:IsA(

                    "PointLight"

                ) then

                    TweenService:Create(

                        object,

                        TweenInfo.new(0.3),

                        {

                            Brightness = 0

                        }

                    ):Play()

                end

            end

            task.wait(0.35)

            removePortal()

        end

    )

end

--============================================================

-- КНОПКА СОЗДАНИЯ ПОРТАЛА

--============================================================

createButton.MouseButton1Click:Connect(
    function()
        if teleportMode == "Coordinates" then
            local x = tonumber(xBox.Text)
            local y = tonumber(yBox.Text)
            local z = tonumber(zBox.Text)

            if not x or not y or not z then
                status.Text = "⚠ Введите корректные координаты!"
                status.TextColor3 = Color3.fromRGB(255, 100, 100)
                return
            end

            local targetPosition = Vector3.new(x, y, z)

            createPortal(targetPosition, nil)

            status.Text = string.format(
                "Портал → X: %.1f | Y: %.1f | Z: %.1f",
                x,
                y,
                z
            )
            status.TextColor3 = GREEN
            main.Visible = false
        else
            local placeId = tonumber(placeIdBox.Text)

            if not placeId or placeId <= 0 or placeId % 1 ~= 0 then
                status.Text = "⚠ Введите корректный Place ID!"
                status.TextColor3 = Color3.fromRGB(255, 100, 100)
                return
            end

            placeId = math.floor(placeId)

            createPortal(nil, placeId)

            status.Text = "Портал → Place ID: " .. tostring(placeId)
            status.TextColor3 = GREEN
            main.Visible = false
        end
    end
)

--============================================================

-- СОЗДАНИЕ ПУШКИ

--============================================================

local function setup()

    local old =

        backpack:FindFirstChild(

            "Portal Gun"

        )

    if old then

        old:Destroy()

    end

    local character =

        player.Character

    if character then

        local equipped =

            character:FindFirstChild(

                "Portal Gun"

            )

        if equipped then

            equipped:Destroy()

        end

    end

    createPortalGun()

end

--============================================================

-- ЗАПУСК

--============================================================

setup()

--============================================================

-- РЕСПАВН

--============================================================

player.CharacterAdded:Connect(

    function()

        removePortal()

        stopCoordinateHUD()

        main.Visible = false

        task.wait(1)

        setup()

    end

)

		-- =========================================

		print("Код верный! Скрипт продолжается.")

	else
		player:Kick("Неверный код!")
	end
end)

Features & Information

этот скрипт выдаст вам портальную пушку (когда в руке справа, снизу отображается нынешние координаты) по нажатию на ЛКМ с пушкой в руке открывается меню где можно выбрать : перемещаться по координатам или по играм в роблокс
#rick and morty

Community Comments (3)

epicpisun234epicpisun234Aug 21, 2026

какой пароль от портальной пушки

Replying to @epicpisun234
21313232131323Sep 12, 2026

@epicpisun234 T12E48X

DADB0911DADB0911Aug 29, 2026

Very cool

More Scripts for Universal Scripts