Rick c-137 portal gun bye me
Key RequiredUniversal

Rick c-137 portal gun bye me

Universal Scriptg00byd0landoficialg00byd0landoficial 2K views 31.2K executesUpdated Aug 20, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•512 lines (18282 chars)
-- Universal C-137 Portal Gun (Fixed Cylinder Vertical Rotation)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer

-- Безопасный поиск контейнера для интерфейса
local function getGuiContainer()
	if gethui then
		local ok, res = pcall(gethui)
		if ok and res then return res end
	end
	return player:WaitForChild("PlayerGui", 5) or game:GetService("CoreGui")
end

-- ====================================================================
-- 0. БЕЗОПАСНЫЕ ЗВУКИ
-- ====================================================================
local SOUNDS = {
	OPEN = 1013378689,
	TELEPORT = 289556450,
	CLOSE = 210114962
}

local function playSound(soundId, volume, pitch, parent)
	pcall(function()
		local sound = Instance.new("Sound")
		sound.SoundId = "rbxassetid://" .. tostring(soundId)
		sound.Volume = volume or 0.2
		sound.Pitch = pitch or 1
		sound.Parent = parent or workspace
		sound:Play()
		game:GetService("Debris"):AddItem(sound, 4)
	end)
end

-- ====================================================================
-- 1. ДЕТАЛИЗИРОВАННАЯ 3D-ПУШКА (ИСПРАВЛЕНА ОРИЕНТАЦИЯ КОЛБЫ)
-- ====================================================================
local function buildHighDetailGun(tool)
	local handle = Instance.new("Part")
	handle.Name = "Handle"
	handle.Size = Vector3.new(0.3, 0.8, 0.3)
	handle.Transparency = 1
	handle.Parent = tool
	tool.PrimaryPart = handle

	local function createPart(size, cframe, color, material, shape)
		local p = Instance.new("Part")
		p.Size = size
		p.Color = color or Color3.fromRGB(200, 200, 200)
		p.Material = material or Enum.Material.SmoothPlastic
		p.CanCollide = false
		p.Massless = true
		if shape then p.Shape = shape end
		p.Parent = tool
		
		local weld = Instance.new("WeldConstraint")
		weld.Part0 = handle
		weld.Part1 = p
		weld.Parent = p
		
		p.CFrame = handle.CFrame * cframe
		return p
	end

	-- Основной корпус
	createPart(Vector3.new(0.85, 0.45, 1.8), CFrame.new(0, 0.4, -0.4), Color3.fromRGB(185, 190, 195))
	
	-- Рукоятка
	local grip = createPart(Vector3.new(0.9, 0.35, 0.35), CFrame.new(0, -0.2, 0.1) * CFrame.Angles(0, 0, math.rad(90)) * CFrame.Angles(math.rad(-15), 0, 0), Color3.fromRGB(130, 135, 140), Enum.Material.SmoothPlastic, Enum.PartType.Cylinder)

	-- Дисплей
	createPart(Vector3.new(0.3, 0.18, 0.18), CFrame.new(0, 0.63, 0.35), Color3.fromRGB(30, 30, 30))
	createPart(Vector3.new(0.55, 0.02, 0.35), CFrame.new(0, 0.63, 0.05), Color3.fromRGB(220, 30, 30), Enum.Material.Glass)
	
	-- === ВЕРТИКАЛЬНАЯ КОЛБА И ОСНОВАНИЕ (ПОВОРОТ ПО Z НА 90 ДЛЯ ВЕРТИКАЛИ) ===
	-- Разворачиваем цилиндр Roblox так, чтобы его высота была направлена ВВЕРХ (по Y)
	local verticalCylinderRotation = CFrame.Angles(0, 0, math.rad(90))

	-- Металлическое основание под колбу
	createPart(Vector3.new(0.1, 0.65, 0.65), CFrame.new(0, 0.65, -0.6) * verticalCylinderRotation, Color3.fromRGB(170, 175, 180), Enum.Material.SmoothPlastic, Enum.PartType.Cylinder)
	
	-- СТЕКЛЯННАЯ КОЛБА (Теперь вытянута строго вертикально!)
	local bulbGlass = createPart(Vector3.new(0.85, 0.55, 0.55), CFrame.new(0, 1.05, -0.6) * verticalCylinderRotation, Color3.fromRGB(200, 255, 200), Enum.Material.Glass, Enum.PartType.Cylinder)
	bulbGlass.Transparency = 0.65

	-- Зеленая шарообразная энергия внутри колбы
	local core = createPart(Vector3.new(0.35, 0.35, 0.35), CFrame.new(0, 1.0, -0.6), Color3.fromRGB(0, 255, 60), Enum.Material.Neon, Enum.PartType.Ball)
	local light = Instance.new("PointLight", core)
	light.Color = Color3.fromRGB(50, 255, 80)
	light.Range = 5
	light.Brightness = 2

	local coreSparks = Instance.new("ParticleEmitter", core)
	coreSparks.Texture = "rbxassetid://243664672"
	coreSparks.Color = ColorSequence.new(Color3.fromRGB(50, 255, 100))
	coreSparks.Size = NumberSequence.new(0.18, 0.03)
	coreSparks.Lifetime = NumberRange.new(0.15, 0.3)
	coreSparks.Rate = 22
	coreSparks.Speed = NumberRange.new(0.5, 1.2)

	-- Передняя часть дула
	createPart(Vector3.new(0.86, 0.46, 0.05), CFrame.new(0, 0.4, -1.3), Color3.fromRGB(60, 65, 70))

	for i = -1, 1 do
		local lens = createPart(Vector3.new(0.08, 0.2, 0.2), CFrame.new(i * 0.26, 0.4, -1.31) * verticalCylinderRotation, Color3.fromRGB(0, 255, 70), Enum.Material.Neon, Enum.PartType.Cylinder)
	end
end

local function givePortalGun()
	local bp = player:FindFirstChild("Backpack")
	if not bp then return end
	if bp:FindFirstChild("Portal Gun") or (player.Character and player.Character:FindFirstChild("Portal Gun")) then return end
	
	local tool = Instance.new("Tool")
	tool.Name = "Portal Gun"
	tool.Grip = CFrame.new(0, 0, 0)
	buildHighDetailGun(tool)
	tool.Parent = bp
end

task.spawn(function()
	task.wait(0.5)
	givePortalGun()
end)

player.CharacterAdded:Connect(function()
	task.wait(1)
	givePortalGun()
end)

-- ====================================================================
-- 2. УНИВЕРСАЛЬНОЕ МЕНЮ
-- ====================================================================
local guiTarget = getGuiContainer()

if guiTarget:FindFirstChild("RickPortalMenuV16_Fix") then
	guiTarget.RickPortalMenuV16_Fix:Destroy()
end

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RickPortalMenuV16_Fix"
screenGui.ResetOnSpawn = false
screenGui.Parent = guiTarget

local frame = Instance.new("Frame", screenGui)
frame.Size = UDim2.new(0, 200, 0, 255)
frame.Position = UDim2.new(0.02, 0, 0.25, 0)
frame.BackgroundColor3 = Color3.fromRGB(15, 18, 22)
frame.ClipsDescendants = true
frame.Active = true
frame.Draggable = true
frame.Visible = false
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 6)

local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1, 0, 0, 20)
title.Text = "  PORTAL GUN C-137"
title.TextColor3 = Color3.fromRGB(50, 255, 100)
title.BackgroundColor3 = Color3.fromRGB(20, 25, 30)
title.BackgroundTransparency = 0.2
title.Font = Enum.Font.SourceSansBold
title.TextSize = 11
title.TextXAlignment = Enum.TextXAlignment.Left
Instance.new("UICorner", title).CornerRadius = UDim.new(0, 6)

local btnMinimize = Instance.new("TextButton", title)
btnMinimize.Size = UDim2.new(0, 18, 0, 14)
btnMinimize.Position = UDim2.new(1, -20, 0, 3)
btnMinimize.Text = "—"
btnMinimize.TextColor3 = Color3.fromRGB(200, 200, 200)
btnMinimize.BackgroundColor3 = Color3.fromRGB(40, 45, 50)
btnMinimize.Font = Enum.Font.SourceSansBold
btnMinimize.TextSize = 10
Instance.new("UICorner", btnMinimize).CornerRadius = UDim.new(0, 3)

local contentFrame = Instance.new("Frame", frame)
contentFrame.Size = UDim2.new(1, 0, 1, -20)
contentFrame.Position = UDim2.new(0, 0, 0, 20)
contentFrame.BackgroundTransparency = 1

local isMinimized = false
btnMinimize.MouseButton1Click:Connect(function()
	isMinimized = not isMinimized
	if isMinimized then
		frame:TweenSize(UDim2.new(0, 200, 0, 20), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
		contentFrame.Visible = false
		btnMinimize.Text = "+"
	else
		frame:TweenSize(UDim2.new(0, 200, 0, 255), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
		task.wait(0.1)
		contentFrame.Visible = true
		btnMinimize.Text = "—"
	end
end)

local coordDisplay = Instance.new("TextLabel", contentFrame)
coordDisplay.Size = UDim2.new(0.92, 0, 0, 12)
coordDisplay.Position = UDim2.new(0.04, 0, 0, 2)
coordDisplay.Text = "XYZ: 0, 0, 0"
coordDisplay.TextColor3 = Color3.fromRGB(180, 255, 180)
coordDisplay.BackgroundTransparency = 1
coordDisplay.TextSize = 10
coordDisplay.Font = Enum.Font.SourceSansBold

-- === БЛОКИ XYZ ===
local function createXYZBlock(yPos, placeholder, btnColor)
	local inp = Instance.new("TextBox", contentFrame)
	inp.Size = UDim2.new(0.58, 0, 0, 20)
	inp.Position = UDim2.new(0.04, 0, 0, yPos)
	inp.PlaceholderText = placeholder
	inp.BackgroundColor3 = Color3.fromRGB(20, 25, 30)
	inp.BackgroundTransparency = 0.2
	inp.TextColor3 = Color3.new(1, 1, 1)
	inp.TextSize = 10
	inp.ClearTextOnFocus = false
	Instance.new("UICorner", inp).CornerRadius = UDim.new(0, 4)

	local btnSave = Instance.new("TextButton", contentFrame)
	btnSave.Size = UDim2.new(0.32, 0, 0, 20)
	btnSave.Position = UDim2.new(0.64, 0, 0, yPos)
	btnSave.Text = "📍 Записать"
	btnSave.BackgroundColor3 = Color3.fromRGB(200, 130, 0)
	btnSave.Font = Enum.Font.SourceSansBold
	btnSave.TextColor3 = Color3.new(1, 1, 1)
	btnSave.TextSize = 9
	Instance.new("UICorner", btnSave).CornerRadius = UDim.new(0, 4)

	local btnTele = Instance.new("TextButton", contentFrame)
	btnTele.Size = UDim2.new(0.92, 0, 0, 20)
	btnTele.Position = UDim2.new(0.04, 0, 0, yPos + 23)
	btnTele.Text = "Портал на " .. placeholder
	btnTele.BackgroundColor3 = btnColor
	btnTele.Font = Enum.Font.SourceSansBold
	btnTele.TextColor3 = Color3.new(1, 1, 1)
	btnTele.TextSize = 10
	Instance.new("UICorner", btnTele).CornerRadius = UDim.new(0, 4)

	btnSave.MouseButton1Click:Connect(function()
		local p = player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player.Character.HumanoidRootPart.Position
		if p then inp.Text = string.format("%.0f, %.0f, %.0f", p.X, p.Y, p.Z) end
	end)

	return inp, btnTele
end

local inputCoords1, btnCreateCoords1 = createXYZBlock(16, "XYZ-1", Color3.fromRGB(0, 180, 80))
local inputCoords2, btnCreateCoords2 = createXYZBlock(64, "XYZ-2", Color3.fromRGB(0, 140, 180))
local inputCoords3, btnCreateCoords3 = createXYZBlock(112, "XYZ-3", Color3.fromRGB(0, 100, 200))

-- === БЛОК ИГРОК ===
local inputPlayer = Instance.new("TextBox", contentFrame)
inputPlayer.Size = UDim2.new(0.92, 0, 0, 20)
inputPlayer.Position = UDim2.new(0.04, 0, 0, 160)
inputPlayer.PlaceholderText = "Имя игрока"
inputPlayer.BackgroundColor3 = Color3.fromRGB(20, 25, 30)
inputPlayer.BackgroundTransparency = 0.2
inputPlayer.TextColor3 = Color3.new(1, 1, 1)
inputPlayer.TextSize = 10
inputPlayer.ClearTextOnFocus = false
Instance.new("UICorner", inputPlayer).CornerRadius = UDim.new(0, 4)

local btnTeleportPlayer = Instance.new("TextButton", contentFrame)
btnTeleportPlayer.Size = UDim2.new(0.92, 0, 0, 20)
btnTeleportPlayer.Position = UDim2.new(0.04, 0, 0, 183)
btnTeleportPlayer.Text = "Портал к Игроку"
btnTeleportPlayer.BackgroundColor3 = Color3.fromRGB(110, 0, 180)
btnTeleportPlayer.Font = Enum.Font.SourceSansBold
btnTeleportPlayer.TextColor3 = Color3.new(1, 1, 1)
btnTeleportPlayer.TextSize = 10
Instance.new("UICorner", btnTeleportPlayer).CornerRadius = UDim.new(0, 4)

local statusLabel = Instance.new("TextLabel", contentFrame)
statusLabel.Size = UDim2.new(0.92, 0, 0, 14)
statusLabel.Position = UDim2.new(0.04, 0, 0, 208)
statusLabel.Text = "Готов к выстрелу"
statusLabel.TextColor3 = Color3.fromRGB(0, 255, 150)
statusLabel.BackgroundTransparency = 1
statusLabel.TextSize = 10
statusLabel.Font = Enum.Font.SourceSansBold

-- ====================================================================
-- 3. СОЗДАНИЕ ПОРТАЛА
-- ====================================================================
local function buildVerticalPortalDisk(cframe)
	local model = Instance.new("Model")
	model.Name = "StandingPortalModel"
	model.Parent = workspace

	local baseCF = cframe * CFrame.Angles(0, math.rad(90), 0)

	local outerRing = Instance.new("Part")
	outerRing.Name = "StandingPortal"
	outerRing.Size = Vector3.new(1, 1, 1)
	outerRing.CFrame = baseCF
	outerRing.Color = Color3.fromRGB(20, 255, 60)
	outerRing.Material = Enum.Material.Neon
	outerRing.Transparency = 0.2
	outerRing.Anchored = true
	outerRing.CanCollide = false
	outerRing.Parent = model

	local outerMesh = Instance.new("SpecialMesh", outerRing)
	outerMesh.MeshType = Enum.MeshType.Sphere
	outerMesh.Scale = Vector3.new(0.4, 10.2, 8.0)

	local innerCore = Instance.new("Part")
	innerCore.Name = "Core"
	innerCore.Size = Vector3.new(1, 1, 1)
	innerCore.CFrame = baseCF
	innerCore.Color = Color3.fromRGB(220, 255, 220)
	innerCore.Material = Enum.Material.Neon
	innerCore.Transparency = 0.25
	innerCore.Anchored = true
	innerCore.CanCollide = false
	innerCore.Parent = model

	local innerMesh = Instance.new("SpecialMesh", innerCore)
	innerMesh.MeshType = Enum.MeshType.Sphere
	innerMesh.Scale = Vector3.new(0.2, 7.2, 5.2)

	local attGreen = Instance.new("Attachment", outerRing)
	local particlesGreen = Instance.new("ParticleEmitter", attGreen)
	particlesGreen.Texture = "rbxassetid://258121021"
	particlesGreen.Color = ColorSequence.new({
		ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)),
		ColorSequenceKeypoint.new(0.5, Color3.fromRGB(80, 255, 120)),
		ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 200, 50))
	})
	particlesGreen.Size = NumberSequence.new(0.5, 0.1)
	particlesGreen.Lifetime = NumberRange.new(0.8, 1.4)
	particlesGreen.Rate = 35
	particlesGreen.Speed = NumberRange.new(2, 5)
	particlesGreen.SpreadAngle = Vector2.new(360, 360)

	local attSparks = Instance.new("Attachment", outerRing)
	local whiteSparks = Instance.new("ParticleEmitter", attSparks)
	whiteSparks.Texture = "rbxassetid://258121021"
	whiteSparks.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255))
	whiteSparks.Size = NumberSequence.new({
		NumberSequenceKeypoint.new(0, 0.2),
		NumberSequenceKeypoint.new(0.5, 0.1),
		NumberSequenceKeypoint.new(1, 0)
	})
	whiteSparks.Lifetime = NumberRange.new(0.6, 1.2)
	whiteSparks.Rate = 50
	whiteSparks.Speed = NumberRange.new(6, 12)
	whiteSparks.SpreadAngle = Vector2.new(360, 360)

	local light = Instance.new("PointLight", outerRing)
	light.Color = Color3.fromRGB(40, 255, 80)
	light.Range = 10
	light.Brightness = 1.8

	task.delay(4.6, function()
		if outerRing and outerRing.Parent then
			playSound(SOUNDS.CLOSE, 0.2, 1.3, outerRing)
		end
	end)

	game:GetService("Debris"):AddItem(model, 5)
	return outerRing
end

-- ====================================================================
-- 4. ВЫСТРЕЛ ВПЕРЁД
-- ====================================================================
local function launchPortalProjectile(startCFrame, targetPosition, onHitCallback)
	local proj = Instance.new("Part")
	proj.Name = "PortalEnergyBall"
	proj.Size = Vector3.new(0.5, 0.5, 0.5)
	proj.Shape = Enum.PartType.Ball
	proj.Color = Color3.fromRGB(0, 255, 100)
	proj.Material = Enum.Material.Neon
	proj.CanCollide = false
	proj.Anchored = true
	proj.CFrame = startCFrame
	proj.Parent = workspace

	local light = Instance.new("PointLight", proj)
	light.Color = Color3.fromRGB(50, 255, 100)
	light.Range = 6
	light.Brightness = 2

	local trail = Instance.new("ParticleEmitter", proj)
	trail.Texture = "rbxassetid://243664672"
	trail.Color = ColorSequence.new(Color3.fromRGB(50, 255, 100))
	trail.Size = NumberSequence.new(0.3, 0)
	trail.Lifetime = NumberRange.new(0.15, 0.25)
	trail.Rate = 90
	trail.Speed = NumberRange.new(1, 2)

	local startPos = startCFrame.Position
	local distance = (targetPosition - startPos).Magnitude
	local speed = 45
	local duration = math.clamp(distance / speed, 0.15, 1.2)
	local elapsed = 0

	local connection
	connection = RunService.Heartbeat:Connect(function(dt)
		elapsed = elapsed + dt
		local alpha = math.clamp(elapsed / duration, 0, 1)
		proj.Position = startPos:Lerp(targetPosition, alpha)

		if alpha >= 1 then
			connection:Disconnect()
			proj:Destroy()
			if onHitCallback then onHitCallback() end
		end
	end)
end

local function executeTwoWayPortal(targetVectorB)
	local char = player.Character
	if not (char and char:FindFirstChild("HumanoidRootPart")) then return end
	local root = char.HumanoidRootPart
	
	local forwardVector = root.CFrame.LookVector
	local gunMuzzlePos = root.Position + (forwardVector * 2.5) + Vector3.new(0, 0.5, 0)
	
	local spawnPosA = root.Position + (forwardVector * 8) + Vector3.new(0, 0.5, 0)
	local spawnCFrameA = CFrame.new(spawnPosA, spawnPosA + forwardVector)
	local spawnCFrameB = CFrame.new(targetVectorB)

	local originVectorA = root.Position
	statusLabel.Text = "Выстрел..."

	launchPortalProjectile(CFrame.new(gunMuzzlePos, gunMuzzlePos + forwardVector), spawnCFrameA.Position, function()
		playSound(SOUNDS.OPEN, 0.25, 1, root)
		local portalA = buildVerticalPortalDisk(spawnCFrameA)

		playSound(SOUNDS.OPEN, 0.25, 1, nil)
		local portalB = buildVerticalPortalDisk(spawnCFrameB)

		local coolDownA, coolDownB = false, false

		portalA.Touched:Connect(function(hit)
			if hit:IsDescendantOf(char) and not coolDownA then
				coolDownB = true
				statusLabel.Text = "В Точку B!"
				playSound(SOUNDS.TELEPORT, 0.25, 1.1, root)
				root.CFrame = CFrame.new(targetVectorB) + Vector3.new(0, 3, 3)
				task.wait(1.5)
				coolDownB = false
			end
		end)

		portalB.Touched:Connect(function(hit)
			if hit:IsDescendantOf(char) and not coolDownB then
				coolDownA = true
				statusLabel.Text = "Обратно в Точку A!"
				playSound(SOUNDS.TELEPORT, 0.25, 1.1, root)
				root.CFrame = CFrame.new(originVectorA) + Vector3.new(0, 3, 3)
				task.wait(1.5)
				coolDownA = false
			end
		end)

		statusLabel.Text = "Связь готова!"
	end)
end

local function parseVector(text)
	local x, y, z = text:match("(%-?%d+%.?%d*)%s*[,%s]%s*(%-?%d+%.?%d*)%s*[,%s]%s*(%-?%d+%.?%d*)")
	if x and y and z then return Vector3.new(tonumber(x), tonumber(y), tonumber(z)) end
	return nil
end

RunService.RenderStepped:Connect(function()
	local char = player.Character
	if char then
		local hasGun = char:FindFirstChild("Portal Gun") ~= nil
		frame.Visible = hasGun
		
		if hasGun and char:FindFirstChild("HumanoidRootPart") then
			local p = char.HumanoidRootPart.Position
			coordDisplay.Text = string.format("XYZ: %.0f, %.0f, %.0f", p.X, p.Y, p.Z)
		end
	else
		frame.Visible = false
	end
end)

local function connectPortalBtn(btn, inputObj, labelName)
	btn.MouseButton1Click:Connect(function()
		local vec = parseVector(inputObj.Text)
		if vec then
			executeTwoWayPortal(vec)
		else
			statusLabel.Text = labelName .. " пустой!"
		end
	end)
end

connectPortalBtn(btnCreateCoords1, inputCoords1, "XYZ-1")
connectPortalBtn(btnCreateCoords2, inputCoords2, "XYZ-2")
connectPortalBtn(btnCreateCoords3, inputCoords3, "XYZ-3")

btnTeleportPlayer.MouseButton1Click:Connect(function()
	local targetName = string.lower(inputPlayer.Text)
	if targetName == "" then statusLabel.Text = "Введите имя!" return end
	for _, p in pairs(Players:GetPlayers()) do
		if p ~= player and string.find(string.lower(p.Name), targetName) then
			if p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
				executeTwoWayPortal(p.Character.HumanoidRootPart.Position)
				return
			end
		end
	end
	statusLabel.Text = "Игрок не найден!"
end)

Features & Information

Portal gun Rick and morty by me

Community Comments (2)

purpul_g0ypurpul_g0ySep 19, 2026

EASILY the best script EVER made

Replying to @purpul_g0y
toastifatality59toastifatality59Sep 25, 2026

@purpul_g0y i dont understand russian breh breh

More Scripts for Universal Scripts