I have a script, the main game script for a trvia game I'm making, and my only issues with it are:
It doesn't work with FilteringEnabled, no matter how hard I try to make it compatible. It usually keeps the same chosen contestant if I run it with FilteringEnabled off, so this could lead to unfairity.
--Core requirements local Event = game.ReplicatedStorage.GameEvent local Questions = game.ServerStorage.Questions local Status = game.ServerStorage.Status local Screen = game.Workspace.Screen local Stage = game.Workspace.Stage local StageTele = Stage.StageTele local NormLight = game.Workspace.Light.NormLight local GreenLight = game.Workspace.Light.GreenLight local RedLight = game.Workspace.Light.RedLight local RoundTime = 30 local datastore = game:GetService("DataStoreService"):GetDataStore("Wins") playerdata = {} Spawns = game.Workspace.Spawns:GetChildren() --Table of EnabledTopics. local Topics = { Questions["Language Arts"], Questions.Math, Questions.History, Questions.Science, Questions["Nerdy Shows"], Questions["Nerdy Games"] } --Table of DisabledTopics. local DisabledTopics = { } --Main Game Loop while true do wait(5) while true do wait(1) Contestants = game.Players:GetPlayers() if #Contestants > 0 then Guesser = Contestants[math.random(1, #Contestants)] end if Guesser then local GuesserChar = Guesser.Character if GuesserChar then local GuesserHuman = GuesserChar:FindFirstChild("Humanoid") if GuesserHuman and GuesserHuman.Health > 0 then Status.Value = 1 CurrentTopic = Topics[math.random(1, #Topics)] PossibleQuestions = CurrentTopic:GetChildren() wait(5) Status.Value = 4 CurrQuestion = PossibleQuestions[math.random(1, #PossibleQuestions)] GuesserChar.Torso.CFrame = CFrame.new(StageTele.Position + Vector3.new(0, 3, 0)) Screen.Screen.SurfaceGui.TextLabel.Text = CurrQuestion.Value Event:FireClient(Guesser, "A1", CurrQuestion.One.Value, CurrQuestion.One.Correct.Value) Event:FireClient(Guesser, "A2", CurrQuestion.Two.Value, CurrQuestion.Two.Correct.Value) Event:FireClient(Guesser, "A3", CurrQuestion.Three.Value, CurrQuestion.Three.Correct.Value) Event:FireClient(Guesser, "A4", CurrQuestion.Four.Value, CurrQuestion.Four.Correct.Value) local localtimer = RoundTime while localtimer > 0 do wait(1) localtimer = localtimer - 1 Screen.Screen.SurfaceGui.Time.Text = "Time Left in this Round: "..localtimer SpawnTele = Spawns[math.random(1, #Spawns)] Event.OnServerEvent:connect(function(player, ...) if player == Guesser then local tuple = {...} if tuple[1] == "Win" then Status.Value = 3 localtimer = -1 Event:FireClient(Guesser, "Begone") NormLight.Enabled = false GreenLight.Enabled = true RedLight.Enabled = false wait(3) GuesserChar.Torso.CFrame = CFrame.new(SpawnTele.Position + Vector3.new(0, 3, 0)) elseif tuple[1] == "Lose" then Status.Value = 2 localtimer = -3 NormLight.Enabled = false GreenLight.Enabled = false RedLight.Enabled = true Event:FireClient(Guesser, "Begone") wait(3) GuesserChar.Torso.CFrame = CFrame.new(SpawnTele.Position + Vector3.new(0, 3, 0)) end end end) if localtimer == 0 then Status.Value = 2 localtimer = -1 NormLight.Enabled = false GreenLight.Enabled = false RedLight.Enabled = true Event:FireClient(Guesser, "Begone") wait(3) GuesserChar.Torso.CFrame = CFrame.new(SpawnTele.Position + Vector3.new(0, 3, 0)) end end wait(3) --Intermission Status.Value = 0 NormLight.Enabled = true GreenLight.Enabled = false RedLight.Enabled = false wait(10) end end end end end
I am really confused as to why it won't work.