CCCPaste

MainScript (Script) with ViewportFrame

--- Sungmingamerpro13

-- Services
PlayerService = game:GetService('Players')
TweenService = game:GetService('TweenService')

-- Variables
DefaultMessageDelayTime = 4
LetterInvertal = 0.05
MessageWaitSigns = {',', '?', '.'}
MessageWaitSignDelay = 1

MessageValue = game.ReplicatedStorage.Message
SpeakerEvent = game.ReplicatedStorage.Message.SpeakerEvent
ObjectiveEvent = game.ReplicatedStorage.ObjectiveEvent
HideObjectiveEvent = game.ReplicatedStorage.ObjectiveEvent.HideObjectiveEvent
TimerEvent = game.ReplicatedStorage.TimerEvent
HideTimerEvent = game.ReplicatedStorage.TimerEvent.HideTimerEvent

-- Setup Player Images

local randomCharacter
local randomCharacterName

local function getRandomCharacter()
	
	local players = PlayerService:GetPlayers()
	
	repeat
		local number = math.random(1, #players)
		local randomPlayer = players[number]
		randomCharacter = randomPlayer.Character
	until randomCharacter
	
	randomCharacterName = randomCharacter.Name
	randomCharacter.Archivable = true
	
end

-- Functions


function BroadcastMessage(Text, MessageDelayTime)
	-- This makes the message appear like a typewriter
	for i = 1,#Text,1 do
		MessageValue.Value = string.sub(Text,1,i)
		for _, L in pairs(MessageWaitSigns) do
			if string.sub(Text,i,i) == L then
				wait(MessageWaitSignDelay)
			end
		end
		wait(LetterInvertal)
	end
	if tonumber(MessageDelayTime) ~= nil then
		wait(MessageDelayTime)
	else
		wait(DefaultMessageDelayTime)
	end
	MessageValue.Value = 'None'
	return true
end

function ChangeTime(ToTime, TweenDuration)
	local Lightning = game.Lighting
	local TI = TweenInfo.new(TweenDuration,Enum.EasingStyle.Linear)
	local Tween = TweenService:Create(Lightning, TI, {ClockTime = ToTime})
	Tween:Play()
end

function ChangeFogend(ChangeTo, TweenDuration,ColourOrNone)
	if ColourOrNone ~= 'None' then
		game.Lighting.FogColor = ColourOrNone
	end
	local FogendValue = Instance.new('IntValue')
	FogendValue.Value = game.Lighting.FogEnd
	FogendValue:GetPropertyChangedSignal('Value'):Connect(function()
		game.Lighting.FogEnd = FogendValue.Value
	end)
	local TI = TweenInfo.new(TweenDuration,Enum.EasingStyle.Linear)
	local Tween = TweenService:Create(FogendValue, TI, {Value = ChangeTo})
	Tween:Play()
	spawn(function()
		Tween.Completed:Connect(function()
			FogendValue:Destroy()
		end)
	end)
end

function teleportPlayers(partCFrame)
	local players = game.Players:getPlayers()
	for _,player in pairs(players) do
		if player.Character then
			if player.Character.HumanoidRootPart.Anchored == false then
				player.Character.Humanoid.Jump = true
			end
		end
	end
	wait(.5)
	for _,player in pairs(players) do
		if player.Character then
			if player.Character.HumanoidRootPart.Anchored == false then
				player.Character:SetPrimaryPartCFrame(partCFrame)
			end
		end
	end
end

function SetObjectives(Objective)
	ObjectiveEvent:FireAllClients(Objective)
end

function ClearObjectives()
	HideObjectiveEvent:FireAllClients()
end

function TopText(Text, Time)
	for i = Time,0,-1 do
		TimerEvent:FireAllClients(Text.." ("..i..")")
		wait(1)
	end
	HideTimerEvent:FireAllClients()
end

function TransitionScreen()
	for _, player in pairs(game.Players:GetChildren()) do
		spawn(function()
			local NewGui = game.ServerStorage.Assets.TransitionScreen:Clone()
			NewGui.Parent = player.PlayerGui
		end)
	end
end

--- MainScript of Story ---