What I want to happen is, once there are two players, the round starts in 20 seconds, then all the players are teleported to either map 1 or map 2, but I have a couple of issues.
here are a few that I noticed.
-player1 spawns in wrong place --not sure if this is a roblox error or not -bikes are same color -sometimes instances are created twice
this is my main script where the "Start" bindableevent is fired when a player joins, there are at least two players, and a game is not in progress
game.ReplicatedStorage.Bindables.Start.Event:Connect(function()
local MAPS = {"DeadlineMap1","DeadlineMap2"}
for i = 20, 0, -1 do
game.ReplicatedStorage.RemoteEvents.Timer:FireAllClients(i)
wait(1)
end
game.ReplicatedStorage.RemoteEvents.GAMETIMER:FireAllClients()
local MAP_CHOSEN = MAPS[math.random(1,#MAPS)]
local PLAYERS = game.Players:GetPlayers()
print("this thing started")
for _, v in pairs(PLAYERS) do
PART_COLOR = Instance.new("Color3Value")
PART_COLOR.Parent = v
PART_COLOR.Name = "playerColor"
PART_COLOR.Value = BrickColor.Random().Color
local I = Instance.new("IntValue")
I.Parent = v
I.Name = "I"
for i = 1, #PLAYERS do
I.Value = i
end
end
for i = 1,#PLAYERS do
bike = game.ServerStorage.Deadline["DeadlineBike"..(i)]:Clone()
for _, colors in pairs(bike:GetChildren()) do
if colors.Name == "Neon" then
colors.Color = PART_COLOR.Value
end
if colors.Name == "Neon1" then
colors.Color = PART_COLOR.Value
end
if colors.Name == "Neon2" then
colors.Color = PART_COLOR.Value
end
if colors.Name == "Neon3" then
colors.Color = PART_COLOR.Value
end
end
for _, colormes in pairs(bike.COLOR_ME:GetChildren()) do
colormes.Color = PART_COLOR.Value
end
for _, tires in pairs(bike:GetChildren()) do
if tires.Name == "Tire" then
local trail = tires:FindFirstChild("Trail")
if trail then
trail.Color = ColorSequence.new(PART_COLOR.Value, PART_COLOR.Value)
end
end
end
bike.Parent = workspace
bike:MakeJoints()
end
if MAP_CHOSEN == "DeadlineMap1" then
print(MAP_CHOSEN.." was selected")
game.ServerStorage.Deadline.DeadlineMap1:Clone().Parent = workspace
for _, players in pairs(game.Players:GetPlayers()) do
local X = math.random(-147.75,148.25)
local Z = math.random(-154.15,143.85)
local PlayersPosition = Vector3.new(X,1244,Z)
local PLR_POS = Instance.new("Vector3Value")
PLR_POS.Value = PlayersPosition
PLR_POS.Name = "SpawnPos"
PLR_POS.Parent = players:WaitForChild("leaderstats")
players.Character:MoveTo(PlayersPosition)
players.Character.Humanoid.JumpPower = 0
players.Character.Humanoid.WalkSpeed = 1
bike:SetPrimaryPartCFrame(CFrame.new(players.Character.HumanoidRootPart.Position-Vector3.new(0,6.5,0)))
end
elseif MAP_CHOSEN == "DeadlineMap2" then
print(MAP_CHOSEN.." was selected")
game.ServerStorage.Deadline.DeadlineMap2:Clone().Parent = workspace
for _, players in pairs(game.Players:GetPlayers()) do
local X = math.random(-147.75,148.25)
local Z = math.random(-154.15,143.85)
local PlayersPosition = Vector3.new(X,1244,Z)
local PLR_POS = Instance.new("Vector3Value")
PLR_POS.Value = PlayersPosition
PLR_POS.Name = "SpawnPos"
PLR_POS.Parent = players:WaitForChild("leaderstats")
players.Character:MoveTo(PlayersPosition)
players.Character.Humanoid.JumpPower = 0
players.Character.Humanoid.WalkSpeed = 1
bike:SetPrimaryPartCFrame(CFrame.new(players.Character.HumanoidRootPart.Position-Vector3.new(0,6.5,0)))
end
end
for _, plrs in pairs(game.Players:GetPlayers()) do
local lives = Instance.new("IntValue")
lives.Name = "Lives"
lives.Parent = plrs.leaderstats
lives.Value = 6
game.ReplicatedStorage.RemoteEvents.TweenGui:FireClient(plrs)
end
for i = 1, #PLAYERS do
game.ReplicatedStorage.RemoteEvents.CreatePlayerLabels:FireAllClients(PLAYERS)
end
game.ReplicatedStorage.RemoteEvents.SAddThATColoRBRO:FireAllClients()
end)
game.ReplicatedStorage.RemoteEvents.PlayerDied.OnServerEvent:Connect(function(plr)
print(plr.Name.." deaded")
plr.CharacterAdded:Connect(function(char)
if plr.leaderstats.Lives ~= 0 then
wait()
char:MoveTo(plr.leaderstats.SpawnPos.Value)
local i = plr.I.Value
bike = game.ServerStorage.Deadline["DeadlineBike"..(i)]:Clone()
for _, colors in pairs(bike:GetChildren()) do
if colors.Name == "Neon" then
PART_COLOR = plr.playerColor
colors.Color = PART_COLOR.Value
end
if colors.Name == "Neon1" then
colors.Color = PART_COLOR.Value
end
if colors.Name == "Neon2" then
colors.Color = PART_COLOR.Value
end
if colors.Name == "Neon3" then
colors.Color = PART_COLOR.Value
end
end
for _, colormes in pairs(bike.COLOR_ME:GetChildren()) do
colormes.Color = PART_COLOR.Value
end
for _, tires in pairs(bike:GetChildren()) do
if tires.Name == "Tire" then
local trail = tires:FindFirstChild("Trail")
if trail then
trail.Color = ColorSequence.new(PART_COLOR.Value, PART_COLOR.Value)
end
end
end
bike:SetPrimaryPartCFrame(CFrame.new(plr.Character.HumanoidRootPart.Position - Vector3.new(0,6,0)))
bike.Parent = workspace
bike:MakeJoints()
plr.Character.Humanoid.JumpPower = 0
else
--send message to server that player is out of lives
game.ReplicatedStorage.RemoteEvents.OutOfLives:FireClient(plr)
end
end)
end)
game.ReplicatedStorage.RemoteEvents.RemoteEventNumberNine.OnServerEvent:Connect(function(player, lives, color)
game.ReplicatedStorage.RemoteEvents.RemoteEventNumberTen:FireAllClients(player, lives, color)
end)
game.ReplicatedStorage.RemoteEvents.SendThatColorBRO.OnServerEvent:Connect(function(player, color)
game.ReplicatedStorage.RemoteEvents.SendThatColorBackBRO:FireAllClients(player,color)
end)
any help is GREATLY appreciated
