Chatgpt Circle Spawner
Key RequiredUniversal

Chatgpt Circle Spawner

Universal Scriptnnormallygamernnormallygamer 25.3K views 358 executesUpdated Mar 11, 2025
Unrated
00
Lua Script•109 lines (4139 chars)
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

-- Variables
local spawnDistance = 4  -- 4 meters
local loadingTime = 10  -- Faster loading time (10 seconds for faster loading)
local circleSize = 4  -- size of the circle block
local isAccepted = false

-- Create a loading bar GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player.PlayerGui

local loadingBarBackground = Instance.new("Frame")
loadingBarBackground.Size = UDim2.new(0, 300, 0, 50)
loadingBarBackground.Position = UDim2.new(0.5, -150, 0.9, -25)
loadingBarBackground.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
loadingBarBackground.BackgroundTransparency = 0.6
loadingBarBackground.Parent = screenGui

local loadingBar = Instance.new("Frame")
loadingBar.Size = UDim2.new(0, 0, 1, 0)
loadingBar.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
loadingBar.Parent = loadingBarBackground

-- Function to update loading bar
local function updateLoadingBar(progress)
    loadingBar.Size = UDim2.new(progress, 0, 1, 0)
end

-- Function to create the bouncy circle block
local function createBouncyCircle()
    local part = Instance.new("Part")
    part.Shape = Enum.PartType.Ball
    part.Size = Vector3.new(circleSize, circleSize, circleSize)
    part.Position = character.HumanoidRootPart.Position + character.HumanoidRootPart.CFrame.LookVector * spawnDistance
    part.Anchored = false
    part.CanCollide = true
    part.Material = Enum.Material.SmoothPlastic
    part.Color = Color3.fromRGB(0, 0, 139)  -- Dark Blue as initial color
    part.Parent = workspace

    -- Change color every 2 seconds between dark cyan and dark blue
    local colors = {Color3.fromRGB(0, 139, 139), Color3.fromRGB(0, 0, 139)}
    local colorIndex = 1
    while part do
        wait(2)
        colorIndex = (colorIndex % #colors) + 1
        part.Color = colors[colorIndex]
    end

    -- Add bouncy properties (using BodyVelocity and BodyGyro)
    local bodyVelocity = Instance.new("BodyVelocity")
    bodyVelocity.MaxForce = Vector3.new(10000, 10000, 10000)
    bodyVelocity.Velocity = Vector3.new(0, 0, 0)  -- Neutral velocity initially
    bodyVelocity.Parent = part

    local bodyGyro = Instance.new("BodyGyro")
    bodyGyro.MaxTorque = Vector3.new(10000, 10000, 10000)
    bodyGyro.CFrame = part.CFrame
    bodyGyro.Parent = part

    -- Drift and bounce physics
    local moonGravity = Vector3.new(0, -32.7, 0)  -- Moon gravity (1/6th of Earth's gravity)
    local driftSpeed = 20  -- Adjust drift speed
    local bounceForce = 50  -- Bounciness on collision

    -- Function to apply drifting and gravity
    game:GetService("RunService").Heartbeat:Connect(function()
        if part and character and character:FindFirstChild("HumanoidRootPart") then
            -- Apply Moon gravity to make the ball fall naturally
            bodyVelocity.Velocity = bodyVelocity.Velocity + moonGravity

            -- Drift movement towards the player with smooth control
            local driftDirection = (character.HumanoidRootPart.Position - part.Position).unit
            bodyVelocity.Velocity = bodyVelocity.Velocity + (driftDirection * driftSpeed)

            -- Bouncing effect when hitting surfaces
            part.Touched:Connect(function(hit)
                local direction = (part.Position - hit.Position).unit
                local bounce = direction * bounceForce
                bodyVelocity.Velocity = bodyVelocity.Velocity + bounce
            end)
        end
    end)
end

-- Start loading animation
local elapsedTime = 0
while elapsedTime < loadingTime do
    elapsedTime = elapsedTime + 0.1
    local progress = math.min(elapsedTime / loadingTime, 1)
    updateLoadingBar(progress)
    wait(0.1)
end

-- After loading, spawn the circle if accepted
if elapsedTime >= loadingTime then
    isAccepted = true
    -- Remove the loading bar if accepted or not
    screenGui:Destroy()

    if isAccepted then
        createBouncyCircle()
    else
        -- Optionally handle the case where the user doesn't accept (although it's set to always accept after loading)
        print("Spawn failed!")
    end
end

Features & Information

This feature script, Has loading bar as for 10 seconds to laod, and when loaded, it creates circle, workable on fling things and people, as u can grab it and troll people around on games if games have grab system.

Community Comments (2)

nnormallygamernnormallygamerMar 11, 2025(edited)

Forgot to say, that its clientsided, so people can also touch it with their avatar, but they cant see it, and touch it in fling things and people

wynnechwynnechMar 12, 2025(edited)

Client-sided means that only you can see what you're doing, and this script is client-sided; other people cannot see or touch the ball because it's only happening on your side of the server.

More Scripts for Universal Scripts