CCCPaste

MainScript(Horror Friends)

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

-- Variables

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

local NightStatus = game.ReplicatedStorage.NightStatus
local ObjectiveValue = game.ReplicatedStorage.Objective
local Status = game.ReplicatedStorage.Status
local MessageValue = game.ReplicatedStorage.Message
local ImageValue = game.ReplicatedStorage.Message.SpeakerImage
local SpeakerNameValue = game.ReplicatedStorage.Message.SpeakerName
local Cutscene1 = game.ReplicatedStorage.CutscenesEvent.Cutscene
local TeleportPoints = game.Workspace.TeleportPoints
local TransitionEvent = game.ReplicatedStorage.TransitionEvent

-- Setup Player Images

local RandomPlayer

PlayerImages = {}


function MakePlayerImage(Player)
    local Image = ''
    local Success,Error = pcall(function()
        local ID = PlayerService:GetUserIdFromNameAsync(Player.Name)or ''
        local PlayerImage, IsReady = PlayerService:GetUserThumbnailAsync(ID, Enum.ThumbnailType.AvatarBust, Enum.ThumbnailSize.Size420x420)
        if IsReady == true then
            -- Ready to use image
            Image = tostring(PlayerImage)
        else
            -- Use alternative picture
            Image = ("http://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username=%s"):format(Player.Name)
        end
    end)
    if Success == true then
        -- Successful
    else
        Image = ("http://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username=%s"):format(Player.Name)
    end
    PlayerImages[Player.Name] = Image
end


game.Players.PlayerAdded:Connect(function(Player)
    MakePlayerImage(Player)
end)
for _, Player in pairs(game.Players:GetChildren()) do
    MakePlayerImage(Player)  -- This is cause dosent rly activate PlayerAdded event on play testing
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 SetMessageSpeaker(Name)
    if Name == "Random" then
        RandomPlayer = game.Players:GetChildren()[math.random(1,#game.Players:GetChildren())]
        Name = RandomPlayer.Name
    end
    ImageValue.Value = PlayerImages[Name] or 'rbxassetid://12325724267'
    SpeakerNameValue.Value = Name
end

function SetMessageSpeaker2(Name)
    ImageValue.Value = 'rbxassetid://12328732473'
    SpeakerNameValue.Value = Name
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 TopStatus(number)
    for i = number, 0, -1 do
        Status.Value = "Waiting For Players("..i..")"
        wait(1)
    end
    Status.Value = "None"
end

function SetObjective(Text)
    ObjectiveValue.Value = Text
end

function ClearObjective()
    ObjectiveValue.Value = "None"
end

function ChapterComplete()
    for _, player in pairs(game.Players:GetPlayers()) do
        spawn(function()
            local NewGui = game.ServerStorage:WaitForChild("Assets"):FindFirstChild("ChapterComplete"):Clone()
            NewGui.Parent = player.PlayerGui
            wait(5)
            local TeleportData = {
                AddWins = true,
                PlayerName = player.UserId
            }
            player.Coins.Value = player.Coins.Value + 100
            player.leaderstats.Wins.Value = player.leaderstats.Wins.Value + 1
            TeleportService:Teleport(11258969850, player, TeleportData)
        end)
    end
end

function AddCoins(AddCoin)
	for i, v in pairs(game.Players:GetPlayers()) do
		spawn(function()
			v.Coins.Value += AddCoin
		end)
	end
end

-- MainScript --