I'm still struggling with this one. I get the idea of containing everything that applies to just one client within a local script (like GUIs and stuff), and I get the idea of data protection using server scripts to hide access to code from the clients, but I'm still not sure exactly what goes where. For example, here's a script I'm working on right now to create a randomized battle within my game:
-- The following is on a local script in starterplayer: local player = script.Parent.Parent local encounterEvent = game.ReplicatedStorage:WaitForChild("EncounterEvent") local encounterRate = .8 math.randomseed(tick()) while wait(5) do if player.Character.Stats.Encounter.Value == true then local chance = math.random() if chance < encounterRate then encounterEvent:FireServer() end end end -- The following is in the server script: local encounterEvent = game.ReplicatedStorage:WaitForChild("EncounterEvent") local function startEncounter(player) -- Get names local zone = player.Character.Stats.Zone.Value local stats = player.Character.Stats local humanoid = player.Character.Humanoid print("Starting Encounter in "..zone) -- Turn off encounters for battle stats.Encounter.Value = false -- Create part at player's position to return after battle local returnPoint = game.ServerStorage.ReturnPoint:Clone() returnPoint.Parent = player.Character returnPoint.Position = player.Character.Head.Position -- Warp to correct zone battlefield if zone == "Slime Woods" then print("Warping to battle") player.Character.Head.CFrame = workspace.SlimeWoods.EncounterP1.CFrame end -- Turn off player movement local speed = humanoid.WalkSpeed local jump = humanoid.JumpPower humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 -- Set Camera -- Battle control loop local battleOver = false while not battleOver do wait(5) battleOver = true end -- Return player to zone player.Character.Head.CFrame = returnPoint.CFrame -- Restore player movement humanoid.WalkSpeed = speed humanoid.JumpPower = jump -- Restore camera -- Turn encounters back on stats.Encounter.Value = true end encounterEvent.OnServerEvent:Connect(startEncounter)
Now I just can't really look at this and figure out what is supposed to go where. Any help?