Ive made a script that chooses random maps that load in the game in certain periods of time and i want to add swimmable water zones to the maps, does anyone know how i can do this?
This is the server script that picks the maps
local LobbyMinutes = 0
local LobbySeconds = 5
local GameMinutes = 4
local GameSeconds = 30
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local coinEvent = game:GetService("ServerStorage"):FindFirstChild("CoinEvent")
local multEvent = game:GetService("ServerStorage"):FindFirstChild("MultEvent")
local waterEvent = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes"):FindFirstChild("WaterEvent")
local deletecoinsevent = game:GetService("ServerStorage"):FindFirstChild("DeleteCoinsEvent")
local deletemultsevent = game:GetService("ServerStorage"):FindFirstChild("DeleteMultEvent")
local TimerValues = ReplicatedStorage:WaitForChild("TimerValues")
local waterevent = ReplicatedStorage.Remotes:WaitForChild("WaterEvent")
local gameTimer = TimerValues.GameTimer
local lobbyTimer = TimerValues.LobbyTimer
local finishline = script.Parent -- Change this
local placements = {}
local enableevent = ReplicatedStorage.Remotes.PEnableEvent
local disableevent = ReplicatedStorage.Remotes.PDisableEvent
local placeevent = game.ReplicatedStorage.Remotes.PlacementEvent
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local FadeInfo = TweenInfo.new(1.3,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false,0)
function teleportPlayers(RP,SpawnPart)
if RP ~= nil then
if SpawnPart ~= nil then
RP.CFrame = SpawnPart.CFrame
end
end
end
game.ReplicatedStorage:FindFirstChild("Remotes"):FindFirstChild("GetPoints").OnServerEvent:Connect(function(Player,Point)
local PlayerPoint = Player:FindFirstChild("Points")
if PlayerPoint ~= nil then
PlayerPoint.Value = Point
end
end)
while true do
lobbyTimer.Minutes.Value = LobbyMinutes
lobbyTimer.Seconds.Value = LobbySeconds
repeat wait(1)
if lobbyTimer.Seconds.Value > 0 then
lobbyTimer.Seconds.Value -= 1
else
if lobbyTimer.Minutes.Value > 0 then
lobbyTimer.Minutes.Value -= 1
lobbyTimer.Seconds.Value = 59
end
end
until lobbyTimer.Minutes.Value == 0 and lobbyTimer.Seconds.Value == 0
local MapstoCoins = {
["SnowMap1"] = "CoinSpawnSnow",
["DesertMap1"] = "CoinSpawnDesert",
["BeachMap1"] = "CoinSpawnBeach",
["ForestMap1"] = "CoinSpawnForest"
}
local MapstoLobby = {
["SnowMap1"] = "SnowLobby",
["DesertMap1"] = "DesertLobby",
["BeachMap1"] = "BeachLobby",
["ForestMap1"] = "ForestLobby"
}
local MapstoMult = {
["DesertMap1"] = "MultSpawnDesert",
["SnowMap1"] = "MultSpawnSnow",
["BeachMap1"] = "MultSpawnBeach",
["ForestMap1"] = "MultSpawnForest"
}
local mapHolder = game:GetService("ServerStorage").MapHolder
local coinsHolder = game:GetService("ServerStorage").CoinsHolder
local lobbyHolder = game:GetService("ServerStorage").LobbyHolder
local multHolder = game:GetService("ServerStorage").MultHolder
local waterHolder = game:GetService("ServerStorage").WaterHolder
local Children = mapHolder:GetChildren()
local CoinChildren = coinsHolder:GetChildren()
local LobChildren = lobbyHolder:GetChildren()
local MultChildren = multHolder:GetChildren()
local Index = math.random(1,#Children)
local randomInt = Children[Index]
local finalMap = mapHolder:FindFirstChild(randomInt.Name):Clone()
for _,coinmaps in pairs(CoinChildren) do
if coinmaps.Name == MapstoCoins[randomInt.Name] then
local finalcoinMap = coinmaps:Clone()
for _,lobmaps in pairs(LobChildren) do
if lobmaps.Name == MapstoLobby[randomInt.Name] then
local finalobby = lobmaps:Clone()
for _,multmap in pairs(MultChildren) do
if multmap.Name == MapstoMult[randomInt.Name] then
local finalmultMap = multmap:Clone()
finalcoinMap.Parent = workspace.ChosenCoinMap
finalmultMap.Parent = workspace.ChosenMultMap
finalobby.Parent = workspace
coinEvent:Fire(coinmaps)
multEvent:Fire(multmap)
finalMap.Parent = workspace
for _, LocalPlayer in pairs(game:GetService("Players"):GetChildren()) do
if LocalPlayer.Character then
if LocalPlayer:FindFirstChild('PlayerGui') and LocalPlayer.Character:FindFirstChild('HumanoidRootPart') then
local GUI = Instance.new("ScreenGui")
GUI.Name = "Fade"
GUI.Parent = LocalPlayer.PlayerGui
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.Enabled = true
local NewValue = Instance.new("BoolValue")
NewValue.Name = "Ingame"
NewValue.Parent = LocalPlayer.Character
NewValue.Value = false
local Frame = Instance.new("Frame")
Frame.Parent = GUI
Frame.BackgroundTransparency = 1
Frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
Frame.Visible = true
Frame.Size = UDim2.new(1,0,1,0)
Frame.Position = UDim2.new(0,0,0,0)
-- goes to riderhandler and highperfomance water
enableevent:FireClient(LocalPlayer, finalMap)
local TweenIn = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 0})
TweenIn:Play()
TweenIn.Completed:Connect(function()
teleportPlayers(LocalPlayer.Character.HumanoidRootPart,finalMap:FindFirstChild('SpawnPart'))
wait(2)
local TweenOut = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 1})
TweenOut:Play()
TweenOut.Completed:Connect(function()
GUI:Destroy()
end)
end)
end
end
end
wait(1.6 + 2)
gameTimer.Minutes.Value = GameMinutes
gameTimer.Seconds.Value = GameSeconds
repeat wait(1)
if gameTimer.Seconds.Value > 0 then
gameTimer.Seconds.Value -= 1
else
if gameTimer.Minutes.Value > 0 then
gameTimer.Minutes.Value -= 1
gameTimer.Seconds.Value = 59
end
end
until gameTimer.Minutes.Value == 0 and gameTimer.Seconds.Value == 0
for _, LocalPlayer in pairs(game:GetService("Players"):GetChildren()) do
if LocalPlayer.Character then
if LocalPlayer:FindFirstChild('PlayerGui') and LocalPlayer.Character:FindFirstChild('Ingame') then
local GUI = Instance.new("ScreenGui")
GUI.Name = "Fade"
GUI.Parent = LocalPlayer.PlayerGui
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.Enabled = true
local Frame = Instance.new("Frame")
Frame.Parent = GUI
Frame.BackgroundTransparency = 1
Frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
Frame.Visible = true
Frame.Size = UDim2.new(1,0,1,0)
Frame.Position = UDim2.new(0,0,0,0)
local TweenIn = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 0})
TweenIn:Play()
TweenIn.Completed:Connect(function()
LocalPlayer:LoadCharacter()
teleportPlayers(LocalPlayer.Character.HumanoidRootPart,game.Workspace.GameEndSpawn)
wait(2)
local TweenOut = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 1})
TweenOut:Play()
TweenOut.Completed:Connect(function()
GUI:Destroy()
end)
end)
end
end
end
game.ReplicatedStorage:FindFirstChild("Remotes"):FindFirstChild("GetPoints"):FireAllClients()
task.wait(2.5)
local placements = {}
for i,plr in pairs(game.Players:GetPlayers()) do
table.insert(placements,{['Player'] = plr,['Points'] = plr.Points.Value})
end
table.sort(placements,function(a,b)
return a.Points > b.Points
end)
placeevent:FireAllClients({placements[1],placements[2],placements[3],placements[4],placements[5],placements[6],placements[7],placements[8],placements[9],placements[10],placements[11],placements[12],placements[13],placements[14],placements[15],placements[16],placements[17],placements[18],placements[19],placements[20]})
for _,GetPl in pairs(Players:GetPlayers()) do
--goes to riderhandler
disableevent:FireClient(GetPl)
GetPl.Points.Value = 0
GetPl.PointMultiply.Value = 0
end
wait(1.6)
deletecoinsevent:Fire()
deletemultsevent:Fire()
finalMap:Destroy()
finalcoinMap:Destroy()
finalobby:Destroy()
finalmultMap:Destroy()
wait(3)
end
end
end
end
end
end
end