How can make module like "RPG Textbox"

im want this


and

me want to create a textbox like rpg textbox i made a system but my module bad can someone help me

local module = {}

local Coloring = {}
local Sine = {}
local sine = 0

spawn(function()
	while wait() do
		local t = 5
		local hue = (tick() % t) / t
		local color = Color3.fromHSV(hue,1,1)
		_G.GlobalColor = color 
		pcall(function()
			for i,v in pairs(Coloring) do
				pcall(function()
					
					local x = v[1]
					local val = tostring( v[2])
					x[val] = _G.GlobalColor
				end)
			end
		end)
	end
end)

spawn(function()
	while wait() do
		pcall(function()
			for i,v in pairs(Sine) do
				sine = sine + 1
				pcall(function()
					local x = v[1]
					local val = v[2]
					x[val] = math.sin(math.rad(sine))
				end)
				sine = sine + 1
			end
		end)
	end
end)

local size = 0

function module.write(frame,text,force,color,strokecolor,strokecolortransparency) 
	if type(frame) ~= "userdata" or type(text) ~= "string" then
		return
	end
	local will = string.split(text,"")
	local label = script:FindFirstChildOfClass("Folder").Label

	for i,v in pairs(will) do
		local ex = label:Clone()
		if color == "rainbow" then
			pcall(function()
				table.insert(Coloring,#Coloring + 1,{ex,"TextColor3"})
			end)
		else 
			ex.TextColor3 = color
		end
		
		if strokecolor == "rainbow" then
			pcall(function()
				table.insert(Coloring,#Coloring + 1,{ex,"TextStrokeColor3"})
			end)
		else 
			ex.TextStrokeColor3 = Color3.fromRGB(strokecolor) 
		end
		
		if type(strokecolortransparency) == "number" then
			ex.TextStrokeTransparency = strokecolortransparency
		else if strokecolortransparency == "sine" then
				table.insert(Sine,#Sine + 1,{ex,"TextStrokeTransparency"})
			end
		end
		
		ex.Parent = frame
		ex.Text = v
		ex.Position = UDim2.new(size,0,0)
		size = size + 0.06
		if force then
			wait()
		end
	end
end

return module