Before you criticize me for the sloppy script, I just want you to know this is a modified script from the Roblox Wiki because I am not sure how to make loading screen.

local ContentProvider = game:GetService("ContentProvider")
local function LoadAssets(AssetList)
	for _, AssetId in pairs(AssetList) do
		ContentProvider:Preload("rbxgameasset://Images/loading")
		ContentProvider:Preload("rbxgameasset://Images/loading.")
		ContentProvider:Preload("rbxgameasset://Images/loading..")
		ContentProvider:Preload("rbxassetid://615862109")
	end
end

LoadAssets({581799298, 581232901, 581232594, 581232318})
wait(.1)
local PlayerGui = game.Players.LocalPlayer:WaitForChild("PlayerGui")
PlayerGui:SetTopbarTransparency(0)

local holder = game.ReplicatedStorage.GUIHolder

local screen = Instance.new("ScreenGui")
screen.Parent = PlayerGui

local imageLabel1 = Instance.new("ImageLabel")
imageLabel1.Image = "rbxgameasset://Images/loading"
imageLabel1.Size = UDim2.new(1,0,1,0)

local imageLabel2 = Instance.new("ImageLabel")
imageLabel2.Image = "rbxgameasset://Images/loading."
imageLabel2.Size = UDim2.new(1,0,1,0)

local imageLabel3 = Instance.new("ImageLabel")
imageLabel3.Image = "rbxgameasset://Images/loading.."
imageLabel3.Size = UDim2.new(1,0,1,0)

local imageLabel0 = Instance.new("ImageLabel")
imageLabel0.Image = "rbxgameasset://Images/loading..."
imageLabel0.Size = UDim2.new(1,0,1,0)

script.Parent:RemoveDefaultLoadingScreen()

local count = 0
local start = tick()
while tick() - start < 6 do
	imageLabel0.Parent = screen
	wait(.5)
	imageLabel0.Parent = holder
	imageLabel1.Parent = screen
	wait(.5)
	imageLabel1.Parent = holder
	imageLabel2.Parent = screen
	wait(.5)
	imageLabel2.Parent = holder
	imageLabel3.Parent = screen
	wait(.5)
	imageLabel3.Parent = holder
	count = (count + 1) % 4
end
 
screen.Parent = nil