Para muitos desenvolvedores, o desafio fundamental de se adaptar ao scripting do Roblox é a importância da localização do arquivo e da propriedade Script.RunContext.Dependendo do digitarde script, localização no Exploradore contexto de execução, os scripts podem se comportar de maneira muito diferente.Algumas chamadas de método podem falhar, objetos em sua experiência podem ser inacessíveis ou scripts podem não ser executados de todas / todos.
A razão para essa complexidade é que as experiências do Roblox são multijogador por padrão.Scripts precisam da capacidade de executar apenas no servidor, executar apenas no cliente ou ser compartilhado entre ambos.A evolução da plataforma Roblox ao longo do tempo complicou ainda mais a situação.
Tipos de script
O Roblox tem três tipos de scripts:
- Script - Código que é executado no servidor ou no cliente, dependendo de sua localização e da propriedade Script.RunContext.
- LocalScript - Código que só é executado no cliente. Não tem um contexto de execução.
- ModuleScript - Código que você pode reutilizar em outros scripts. Não tem um contexto de execução.
Quando você cria um Script, o contexto de execução padrão é Legacy, o que significa que a) é um script do lado do servidor e b) só é executado se estiver em um contêiner de servidor, como Workspace ou ServerScriptService .
- Se você alterar o contexto de execução do script para Server, agora também pode executá-lo em ReplicatedStorage, mas isso não é recomendado.O conteúdo desse local é replicado para os clientes, então é uma localização ruim para scripts do lado do servidor.
- Se você alterar o contexto de execução do script para Client, ele pode ser executado em ReplicatedStorage .Também pode ser executado em StarterCharacterScripts e StarterPlayerScripts.Contêineres iniciais são copiados para os clientes, embora, então o script original e a cópia seja executar, o que não é desejável.
Para alterar um contexto de execução de script, selecione-o no Explorer e altere o valor na janela Propriedades.

Recomendações
Usando Server e Client valores para RunContext remove a ambigüidade de como os scripts são executados e pode ajudar a manter seu projeto organizado.Os melhores casos de uso para valores não padrão RunContext são:
- Scripts de cliente que você deseja executar a partir de ReplicatedStorage ou ReplicatedFirst.
Para compartilhar código entre scripts do servidor e do cliente, use ModuleScripts em ReplicatedStorage.
Use LocalScripts em StarterCharacterScripts , StarterPlayerScripts , StarterGui e StarterPack.
Localizações de script
Localização | Descrição :--- | :--- Espaço de Trabalho | Representa o mundo do jogo.Esta localização funciona bem para scripts de servidor que se anexam diretamente a objetos e controlam seu comportamento.ReplicatedFirst | Contém objetos que se replicam para o cliente antes de qualquer outra coisa.Esta localização é ideal para o conjunto mínimo absoluto de objetos e scripts de cliente necessários para exibir uma página de carregamento.ReplicatedStorage | Contém objetos que são replicados tanto para o cliente quanto para o servidor.Esta localização é ideal para Class.ModuleScript\|ModuleScripts que você deseja usar tanto no servidor quanto no cliente.Class.LocalScript\|LocalScripts não corra desta localização, mas Class.Script\|Scripts com um contexto de execução de Client faça.Serviço de Script de Servidor | Contém scripts do servidor.Esta localização é ideal para scripts que precisam acessar funcionalidades ou objetos do lado do servidor, como lógica de jogo e armazenamento em nuvem.Armazenamento do Servidor | Contém objetos do lado do servidor.Esta localização é ideal para objetos grandes que não precisam ser imediatamente replicados aos clientes quando eles se juntam a uma experiência.Scripts não são executados a partir desta localização, mas você pode armazenar o lado do servidor Class.ModuleScript\|ModuleScriptsStarterPlayer.StarterCharacterScripts | Contém Class.LocalScript\|LocalScripts que são executados quando o personagem é gerado.StarterPlayer.StarterPlayerScripts | Contém scripts gerais de propósito Class.LocalScript\|LocalScripts que são executados quando o jogador se junta à experiência.StarterGui | Contém elementos de GUI que o cliente exibe quando carrega o jogo.Class.LocalScript\|LocalScripts pode correr desta localização.Esta localização é ideal para scripts que modificam a interface do usuário do jogo, como adicionar botões, menus e pop-ups.Pacote de Iniciante | Geralmente contém apenas Class.Tool\|Tools, mas também pode incluir Class.LocalScript\|LocalScripts para configurar mochilas de jogador.
Esta imagem mostra quais locais de janela do Explorer podem conter scripts do cliente.Lembre-se, ReplicatedFirst e ReplicatedStorage podem conter Scripts com um RunContext de Client , enquanto os contêineres Starter[] devem usar LocalScripts .

Estrutura de projeto de exemplo
O projeto de referência Planta mostra como você pode organizar seu código em uma experiência grande e complexa.
De nota especial é como armazena a grande maioria de seu código como reutilizável ModuleScripts em ReplicatedStorage e ServerStorage .