Quando um usuário se junta a uma experiência, o Roblox representa-o como um Jogador no modelo de dados.O objeto contém informações sobre o usuário que é universal entre experiências, como seu nome de usuário, lista de amigos, personagem de avatar salvo e digitarde associação do Roblox, bem como propriedades, métodos e eventos que afetam o ciclo de vida do usuário entre a adesão e a saída da sua experiência.
O serviço Players contém todas as instâncias Player em uma experiência.Cada objeto Player representa um usuário na experiência e tem quatro contêineres importantes que você pode usar para personalizar a experiência de um usuário: Backpack , StarterGear , PlayerGui e PlayerScripts.
Ciclo de vida
Scripts do lado do cliente e do lado do servidor podem ambos se conectar aos eventos Players.PlayerAdded e Players.PlayerRemoved para executar ações em resposta ao ciclo de vida de um ObjetoPlayer.Eles também podem se conectar ao Player.CharacterAdded , Player.CharacterRemoving e Humanoid.Died eventos para executar ações relacionadas ao jogo quando o personagem aparece, desaparece e morre.
Use scripts para acessar serviços relacionados ao servidor, como um armazenamento de dados para recuperar e salvar dados quando um usuário se junta ou sai.Use LocalScripts se o cliente precisar criar e remover instâncias de jogabilidade vinculadas ao novo usuário, como um display de GUI para as estatísticas do usuário em uma tabela de classificação personalizada.
Usuário se juntando
Quando um cliente se conecta a uma experiência, seu objeto associado Player clona para o serviço Players.O Players.PlayerAdded representa usuários que se juntam à experiência.Alguns casos de uso de exemplo incluem carregar dados do usuário, atribuir equipes e alterar a roupasdo personagem de um usuário.O evento Players.PlayerAdded passa o objeto Player do usuário que se junta, que você pode usar ao chamar outras funções, como armazenamento de dados e objetos RemoteEvent.
Carregar dados do usuário ao entrar
Para carregar os dados de um usuário quando ele se juntar a uma experiência, use o evento na > .O seguinte exemplo Script ouve o evento e tenta recuperar os dados de um usuário usando seu ID de usuário como chave do armazenamento de dados.Depois de recuperar com sucesso os dados do usuário, você pode usá-los para carregar o progresso e as estatísticas do usuário.
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerAdded:Connect(function(player)
local userId = player.UserId
-- Leia a chave do armazenamento de dados
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- Faça mais ações com dados atuais
end)
Usuário saindo
Quando um cliente se desconecta de uma experiência, o servidor destrói seu objeto associado Player do serviço Players.O evento Players.PlayerRemoving representa usuários que deixam a experiência.Alguns casos de uso de exemplo incluem salvar dados do usuário, remover suas estatísticas de uma tabela de pontuação e destruir qualquer um de seus modelos, como sua casa.O evento Players.PlayerRemoving passa o objeto Player do usuário que sai, que você pode usar ao chamar outras funções, como armazenamento de dados e objetos RemoteEvent.
Observe que o evento é chamado Player.PlayerRemoving , não Player.PlayerRemoved , porque "removido" implicaria que o objeto Player já foi removido e, portanto, inacessível aos scripts.
Salvar dados do usuário ao sair
Para salvar os dados de um usuário quando ele deixa uma experiência, use o evento Players.PlayerRemoving em um Script.O seguinte exemplo Script ouve o evento e tenta salvar os dados de um usuário usando seu ID de usuário como chave do armazenamento de dados.
Script em ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- Obtenha o estado dos dados do jogador no jogo
local currentData = getCurrentData(player)
-- Salvar no lojade dados
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
Geração de personagem
O modelo de um usuário Player.Character representa seu avatar.Por padrão, Player.CharacterAutoLoads é verdadeiro e o modelo de personagem de um usuário é automaticamente gerado quando ele se junta à experiência.Se Player.CharacterAutoLoads for falso, então você precisa chamar Player:LoadCharacter() para gerar manualmente o personagem.
Quando o spawn de um usuário Player.Character aparece, Scripts e LocaisScripts em StarterCharacterScripts clonam no modelo de personagem e o evento Player.CharacterAdded é acionado.O evento Player.CharacterAdded passa o novo modelo de personagem para quaisquer ouvintes de eventos, que você pode usar para encontrar o objeto do personagem Humanoid e modificar seu comportamento.Por exemplo, você pode usar Humanoid:ApplyDescription() para mudar o traje do avatar e Humanoid.WalkSpeed ou Humanoid.JumpHeight para modificar o movimento do avatar.
Despawnamento de Personagem
Quando as partes do corpo do jogador Humanoid morrem, suas partes do corpo caem ao chão e o evento Humanoid.Died é acionado.O servidor remove automaticamente o modelo de personagem e quaisquer scripts dentro dele após um período de tempo que a propriedade Players.Respawntime determina.Você pode usar o evento Player.CharacterRemoving para redefinir outros objetos associados ao personagem, como a propriedade da rede de um veículo que eles estavam dirigindo.
Contar mortes de jogadores
Você pode usar o evento Humanoid.Died para lidar com a pontuação para uma morte ou criar um modelo de ragdoll personalizado.O seguinte Script conecta-se a Player.CharacterAdded para recuperar o modelo de personagem de cada usuário, então se conecta ao Objetodo personagem Humanoid.Quando o evento do humanoide Humanoid.Died é acionado, o script aumenta o número de vezes que o humanóide do usuário morreu e exibe esse número.
Script em ServerScriptService
game:GetService("Players").PlayerAdded:Connect(function(player)
local deaths = 0
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
deaths += 1
print(player.Name .. " death count: " .. deaths)
end)
end)
end)
Banir usuários
Para garantir civilidade e jogo justo em suas experiências, você pode banir usuários que violam as regras de sua experiência e diretrizes da comunidade.Você pode modificar os períodos de banimento, mensagens de banimento e até mesmo estender os banimentos para contas alternativas potenciais.Ao usar essa funcionalidade, você também deve seguir as diretrizes para banir e enviar mensagens.
Para instruções de implementação e uso, veja Players.BanAsync.
Diretrizes de banimento
Ao implementar proibições em sua experiência, siga as seguintes diretrizes:
- Regras de experiência não devem contradizer os padrões da comunidade do Roblox e os termos de uso.
- Por exemplo, você não pode criar uma regra de experiência que exclua alguém por causa de seu gênero, pois isso viola a política de discriminação, insultos e discurso de ódio do Roblox.
- Os criadores devem declarar claramente suas regras de experiência em algum lugar acessível a todos os usuários.
- Os criadores devem aplicar suas regras de experiência de forma justa e não arbitrariamente alcançar determinados usuários.
- Os usuários podem apelar aos criadores diretamente se acreditarem que seu banimento foi incorreto.
- O Roblox não mediará esses apelos, a menos que o usuário acredite que as regras de experiência do criador ou a aplicação de suas regras violem os Padrões da Comunidade.
- O Roblox pode moderar uma experiência se houver motivos para acreditar que as regras de experiência de um criador ou a aplicação de suas regras violam os Padrões da Comunidade.
Diretrizes de mensagem
Quando um usuário é banido, ele recebe um modal de erro que exibe informações, como o comprimento do banimento e a razão.Na mensagem filtrada em texto, você pode incluir informações adicionais, como apelo ou informações de contato, desde que você atenda aos Padrões da Comunidade da Roblox de.
Por exemplo, em suas mensagens de banimento, você pode referenciar nomes de marcas e plataformas:
- “Visite o Discord na página do meu grupo/experiência”
- “Mande-me uma mensagem no Twitter ou X”
Menções de informações pessoais ou links diretos não são permitidos neste campo de mensagem.Isso inclui postar um nome de usuário ou Manipulador / alçaespecífico ou fornecer um link direto para um servidor ou conta do Discord ou X.
Contêineres
O objeto Player armazena vários contêineres importantes:
Bolsa
O contêiner Player.Backpack armazena o inventário do usuário.Os objetos Tool do usuário em sua exibição de Backpack no inventário na parte inferior da tela.Se um usuário selecionar um Tool do inventário, ele o equipa e ele se move do Player.Backpack para o Player.Character .
Quando o spawn de um usuário Player.Character é gerado, o conteúdo do serviço StarterPack e seus clones Player.StarterGear são transferidos para seu Player.Backpack .Quando o personagem morre, o cliente destrói seu Backpack e o substitui por um novo.
O Backpack também armazena e executa Scripts e LocalScripts que o cliente e o servidor podem acesso.
O Roblox fornece uma interface para um jogador acessar seu Backpack e inventário na parte inferior da tela.Para desativar o GUI padrão da mochila Roblox e substituí-lo por seu possuir, chame StarterGui:SetCoreGuiEnabled() em um LocalScript.Para mais informações, veja StarterGui.
Equipamento Inicial
O contêiner StarterGear clona seu conteúdo para o usuário Player.Backpack quando seu personagem é gerado.Além disso, se o seu local permitir equipamento e um usuário possuir equipamento, os objetos Tool do clonamento de equipamento deles para o Player.StarterGear quando eles Gerar.
Ao contrário de StarterPack, Player.StarterGear não é um serviço, mas sim um filho de cada ObjetoPlayer, portanto, seus conteúdos são específicos do usuário.Cada usuário pode ter diferentes objetos Tool dentro de seu Player.StarterGear .Para usar Player.StarterGear , habilite Gear na página de configurações da sua experiência sob Permissões .Na página de permissões, você pode ativar por equipamento pelo seu digitar.Para desativar o equipamento, desmarque seu digitar.
Sempre teste jogos depois de adicionar Equipamento a eles para verificar que os usuários não possam facilmente abusar deles lá.O equipamento inclui Script objetos e permite que o jogador execute ações que você pode não considerar.Por exemplo, um equipamento de navegação pode permitir que o jogador acesse uma parte do mapa que você não quer que eles acessem.Armas permitem que jogadores com equipamento danifiquem outros jogadores, possivelmente sem retribuição ou retaliação.
JogadorGui
O contêiner PlayerGui armazena objetos que criam a Interface gráfica do usuáriodo jogador.Se um ScreenGui for um descendente de um PlayerGui , então qualquer GuiObject dentro do ScreenGui será exibido na tela do jogador.Qualquer LocalScript rodada quando clonada para PlayerGui.Quando o spawn do jogador Player.Character ocorre pela primeira vez, todo o conteúdo do StarterGui é automaticamente copiado para o jogador PlayerGui.
Se Players.CharacterAutoLoads estiver definido como falso, o personagem não será Gerare os conteúdos de StarterGui não serão copiados até que Player:LoadCharacter() seja chamado.Se StarterGui.ResetPlayerGuiOnSpawn for definido como verdadeiro, toda vez que o personagem do jogador respawna, todo o conteúdo desse personagem PlayerGui é limpo e substituído pelo conteúdo de StarterGui.
Scripts de Jogador
Quando um usuário se junta à experiência, o conteúdo no contêiner StarterPlayer.StarterPlayerScripts é clonado para PlayerScripts. Qualquer LocalScripts e ModuleScripts são executados quando clonados.
Ao contrário dos contêineres Backpack e PlayerGui, o contêiner PlayerScripts não é acessível ao servidor e o contêiner de um usuário PlayerScripts não é redefinido quando seu personagem morre e respawna.Objetos do lado do servidor também não são executados quando parentados para .O contêiner PlayerScripts é útil para scripts que não estão ligados ao ciclo de vida do personagem do usuário, como o sistema geral de chat ou controles de entrada do jogador.