Copy Place
Key RequiredUniversal

Copy Place

Universal ScriptMarckoqMarckoq 1.2K views 1.8K executesUpdated Sep 29, 2026
Unrated
00
Lua Script•345 lines (8584 chars)
-- ============================================
-- SERVICES
-- ============================================

local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")

-- ============================================
-- WAIT FOR CLIENT
-- ============================================

local LocalPlayer

for i = 1, 100 do
    LocalPlayer = Players.LocalPlayer

    if LocalPlayer then
        break
    end

    task.wait(0.1)
end

if not LocalPlayer then
    warn("[PulseCore] LocalPlayer was not detected.")
    return
end

local PlayerGui

for i = 1, 100 do
    PlayerGui = LocalPlayer:FindFirstChildOfClass("PlayerGui")

    if PlayerGui then
        break
    end

    task.wait(0.1)
end

if not PlayerGui then
    warn("[PulseCore] PlayerGui was not detected.")
    return
end

-- ============================================
-- STATE
-- ============================================

local Running = true
local Saving = false
local InputConnection

-- ============================================
-- ROBLOX NOTIFICATION
-- ============================================

local function Notify(text, duration)
    pcall(function()
        StarterGui:SetCore("SendNotification", {
            Title = "PulseCore",
            Text = text,
            Duration = duration or 5
        })
    end)
end

-- ============================================
-- REMOVE OLD WINDOW
-- ============================================

local OldGui = PlayerGui:FindFirstChild("PulseCorePlaceSaver")

if OldGui then
    OldGui:Destroy()
end

-- ============================================
-- GUI
-- ============================================

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "PulseCorePlaceSaver"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.DisplayOrder = 999999
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = PlayerGui

-- Overlay
local Overlay = Instance.new("Frame")
Overlay.Size = UDim2.fromScale(1, 1)
Overlay.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
Overlay.BackgroundTransparency = 0.45
Overlay.BorderSizePixel = 0
Overlay.Parent = ScreenGui

-- Main window
local Window = Instance.new("Frame")
Window.Name = "Window"
Window.AnchorPoint = Vector2.new(0.5, 0.5)
Window.Position = UDim2.fromScale(0.5, 0.5)
Window.Size = UDim2.fromOffset(440, 250)
Window.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Window.BorderSizePixel = 1
Window.BorderColor3 = Color3.fromRGB(100, 100, 100)
Window.Parent = ScreenGui

local WindowCorner = Instance.new("UICorner")
WindowCorner.CornerRadius = UDim.new(0, 10)
WindowCorner.Parent = Window

-- ============================================
-- TITLE
-- ============================================

local Title = Instance.new("TextLabel")
Title.BackgroundTransparency = 1
Title.Position = UDim2.fromOffset(22, 16)
Title.Size = UDim2.new(1, -44, 0, 28)
Title.Font = Enum.Font.GothamBold
Title.Text = "PulseCore"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 21
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = Window

local Subtitle = Instance.new("TextLabel")
Subtitle.BackgroundTransparency = 1
Subtitle.Position = UDim2.fromOffset(22, 45)
Subtitle.Size = UDim2.new(1, -44, 0, 20)
Subtitle.Font = Enum.Font.Gotham
Subtitle.Text = "Place Saver"
Subtitle.TextColor3 = Color3.fromRGB(150, 150, 150)
Subtitle.TextSize = 13
Subtitle.TextXAlignment = Enum.TextXAlignment.Left
Subtitle.Parent = Window

-- ============================================
-- WARNING
-- ============================================

local Warning = Instance.new("TextLabel")
Warning.BackgroundTransparency = 1
Warning.Position = UDim2.fromOffset(22, 82)
Warning.Size = UDim2.new(1, -44, 0, 90)
Warning.Font = Enum.Font.Gotham
Warning.Text = "Warning\n\nStarting the place save may temporarily freeze the game.\nThis is normal while the place is being processed."
Warning.TextColor3 = Color3.fromRGB(215, 215, 215)
Warning.TextSize = 13
Warning.TextWrapped = true
Warning.TextXAlignment = Enum.TextXAlignment.Left
Warning.TextYAlignment = Enum.TextYAlignment.Top
Warning.Parent = Window

-- ============================================
-- BUTTONS
-- ============================================

local Cancel = Instance.new("TextButton")
Cancel.Name = "Cancel"
Cancel.AnchorPoint = Vector2.new(1, 1)
Cancel.Position = UDim2.new(1, -22, 1, -18)
Cancel.Size = UDim2.fromOffset(125, 40)
Cancel.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
Cancel.BorderSizePixel = 0
Cancel.AutoButtonColor = true
Cancel.Font = Enum.Font.GothamBold
Cancel.Text = "Cancel"
Cancel.TextColor3 = Color3.fromRGB(235, 235, 235)
Cancel.TextSize = 13
Cancel.Parent = Window

local CancelCorner = Instance.new("UICorner")
CancelCorner.CornerRadius = UDim.new(0, 7)
CancelCorner.Parent = Cancel

local Continue = Instance.new("TextButton")
Continue.Name = "Continue"
Continue.AnchorPoint = Vector2.new(1, 1)
Continue.Position = UDim2.new(1, -157, 1, -18)
Continue.Size = UDim2.fromOffset(125, 40)
Continue.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
Continue.BorderSizePixel = 0
Continue.AutoButtonColor = true
Continue.Font = Enum.Font.GothamBold
Continue.Text = "Continue"
Continue.TextColor3 = Color3.fromRGB(20, 20, 20)
Continue.TextSize = 13
Continue.Parent = Window

local ContinueCorner = Instance.new("UICorner")
ContinueCorner.CornerRadius = UDim.new(0, 7)
ContinueCorner.Parent = Continue

-- ============================================
-- STOP SCRIPT
-- ============================================

local function StopScript()
    Running = false

    if InputConnection then
        InputConnection:Disconnect()
        InputConnection = nil
    end

    if ScreenGui then
        ScreenGui:Destroy()
    end

    Notify("Script cancelled.", 4)

    print("[PulseCore] Script stopped.")
end

-- ============================================
-- SAVE
-- ============================================

local function SavePlace()
    if not Running or Saving then
        return
    end

    Saving = true

    if type(saveinstance) ~= "function" then
        Saving = false

        Notify("saveinstance was not found.", 7)

        warn("[PulseCore] saveinstance is unavailable.")
        return
    end

    Notify(
        "Place saving started. The game may freeze temporarily.",
        7
    )

    task.wait(0.25)

    local FileName = string.format(
        "Place_%s_%s_FULL.rbxlx",
        tostring(game.PlaceId),
        os.date("%Y%m%d_%H%M%S")
    )

    print("[PulseCore] Saving:")
    print(FileName)

    local Success, Result = pcall(function()
        return saveinstance({
            FilePath = FileName,
            Decompile = true,
            IgnoreDefaultProperties = false
        })
    end)

    Saving = false

    if Success then
        print("[PulseCore] Save completed.")
        print("[PulseCore] Result: " .. tostring(Result))

        Notify(
            "Place saved successfully.",
            7
        )

        return
    end

    warn("[PulseCore] saveinstance error:")
    warn(tostring(Result))

    Notify(
        "Save failed: " .. tostring(Result),
        10
    )
end

-- ============================================
-- CONTINUE BUTTON
-- ============================================

Continue.MouseButton1Click:Connect(function()
    if not Running or Saving then
        return
    end

    Continue.Active = false
    Cancel.Active = false

    ScreenGui:Destroy()

    task.spawn(function()
        SavePlace()
    end)
end)

-- ============================================
-- CANCEL BUTTON
-- ============================================

Cancel.MouseButton1Click:Connect(function()
    if not Running then
        return
    end

    StopScript()
end)

-- ============================================
-- RIGHTSHIFT
-- ============================================

InputConnection = UserInputService.InputBegan:Connect(function(input, processed)
    if processed or not Running then
        return
    end

    if input.KeyCode == Enum.KeyCode.RightShift then
        task.spawn(function()
            SavePlace()
        end)
    end
end)

-- ============================================
-- START
-- ============================================

print("========================================")
print("[PulseCore] Place Saver loaded.")
print("[PulseCore] Waiting for Continue or Cancel.")
print("[PulseCore] RightShift = Save Place.")
print("========================================")

Notify(
    "Place Saver loaded.",
    5
)

Features & Information

PulseCore Place Saver PulseCore Place Saver is a lightweight Roblox utility script for saving the current place using the executor's `saveinstance` functionality. Before saving, PulseCore displays a confirmation window explaining that the game may temporarily freeze while the place is being processed. The user can choose whether to continue or cancel the operation. Features Place Saver Save the current Roblox place with `saveinstance`. * Full place saving * Script decompilation when supported * Automatically generated filenames * Uses the current Place ID and timestamp in the filename * Manual saving with `RightShift` Startup Confirmation A PulseCore-styled confirmation window appears when the script starts. It warns that the game may temporarily freeze during the save process. `Continue` — Starts the place save. `Cancel` — Cancels the operation and completely stops the script. Roblox Notifications Uses Roblox's built-in notification system instead of a custom notification GUI. Notifications are shown for: * Script loaded * Save started * Save completed * Save failed * Script cancelled * Missing `saveinstance Error Handling The save operation is protected with error handling so failures can be reported through Roblox notifications without silently stopping the script. Controls `RightShift` — Save the current place again. Requirements The script requires an executor with a working `saveinstance` function. Available `saveinstance` features and parameters may vary depending on the executor.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts