Quando um usuário se juntar a uma experiência, o Roblox os representa como um Jogador no modelo de dados. O objeto Player contém informações sobre o usuário que é universal entre experiências, como seu nome de usuário, lista de amigos, salvamento de personagem de avatar e digitarde assinatura Roblox, bem como propriedades, métodos e eventos que afetam o ciclo
O serviço Players contém todas as instâncias Player em uma experiência. Cada Player objeto representa um usuário na experiência e ele é o pai de quatro contêineres importantes que você pode usar para personalizar a experiência
Ciclo de Vida
Scripts do lado do cliente e 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 obj
Use Scripts para acessar serviços relacionados ao servidor, como um armazenamento de dados para recuperar e salvar dados quando um usuário se juntar ou sair. Use Scripts Locais se o cliente precisar criar e remover instâncias de jogos vinculadas ao novo usuário, como um display GUI para as estatísticas do usuário em um customizador de classificação.
Entrando com Usuário
Quando um cliente se conecta a uma experiência, seus objetos Player associados são clonados para o serviço Players. O evento
Carregando Dados do Usuário ao Entrar
Para carregar os dados de um usuário quando eles se juntarem a uma experiência, use o evento Players.PlayerAdded em um Script . A seguinte lista de exemplos Script ouve o evento e tenta recuperar os dados do usuário usando seu ID de usuário como chave de armazenamento de dados. Depois de recuperar os dados do usu
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 de classe Player associado do servidor
Notice 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.
Salvando Dados do Usuário ao Sair
Para salvar os dados de um usuário quando eles saem de uma experiência, use o evento Players.PlayerRemoving em um Script . A seguinte lista de exemplos Script ouve o evento e tenta salvar os dados de um usuário usando seu ID de usuário como a 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 para lojade dados
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
Personagem gerando
O modelo de Player.Character de um usuário representa seu avatar. Por padrão, Player.CharacterAutoLoads está verdadeiro, e o modelo de personagem de um usuário é automaticamente gerado quando eles se juntam à experiência. Se Player.CharacterAutoLoads estiver falso, você precisa chamar 2>Class.Player:LoadCharacter
Quando um usuário de <
Despawning de Personagem
Quando o jogador's Class.Humanoid morre, suas partes do corpo cairão ao chão e o evento 'Class.Humanoid.Died' será disparado. O servidor remove automaticamente o modelo de personagem e quaisquer scripts dentro dele após o tempo que o propriedade 'Class.Players.Respawntime'
Contando 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 se conecta ao Class.Player.Character
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)
Banindo Usuários
Para garantir civilidade e jogabilidade justa em suas experiências, você pode banir usuários que violam suas regras de experiência e diretrizes da comunidade. Você pode modificar a duração dos banimentos, enviar mensagens de banimento e até mesmo estender os banimentos para contas alternativas potenciais. Ao usar este funcionalidade, você também deve seguir as diretrizes para banir e mensagens de banimento.
Para implementação e instruções de 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 contradizem os Padrões da Comunidade e Termos de Uso do Roblox.
- 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 claramente declarar suas regras de experiência em algum lugar acessível a todos os usuários.
- Os criadores devem aplicar suas regras de experiência com base em fatos e não arbitrariamente selecionar certos usuários.
- Os usuários podem apelar para os criadores diretamente se acreditarem que sua proibição foi errada.
- O Roblox não vai mediar esses apelos, a menos que o usuário acredite que as regras de experiência do criador ou aplicação de suas regras violam os Padrões da Comunidade.
- O Roblox pode moderar uma experiência se houver motivos para acreditar que as regras de uma experiência de um criador violam os Padrões da Comunidade.
Diretrizes de Mensagem
Quando um usuário é banido, eles recebem um mala de erro exibindo informações, como a duração e a razão do banimento. No mensagem, você pode incluir informações adicionais, como solicitações ou informações de contato, desde que você atenda aos Padrões da Comunidade do Roblox.
Por exemplo, em suas mensagens de banimento, você é permitido referenciar nomes de marcas e plataformas:
- “Visite o Discord em minha página de grupo/experiência”
- “Mande-me uma mensagem no Twitter ou X”
Mentions de informações pessoais ou links direitos não são permitidos neste campo de mensagem. Isso inclui a postagem de um nome de usuário ou Manipulador / alçaespecífico, ou fornecimento de um link direto para um servidor Discord ou conta X.
Contêineres
O objeto Player armazena vários contêineres importantes:
Mochila
O contêiner Player.Backpack armazena o inventário do usuário. Os objetos Tool no display de inventário de um usuário na parte inferior de sua tela são equipados, e ele os move para o Backpack . Se um us
Quando um usuário de Player.Character é gerado, os conteúdos do serviço StarterPack e seus clones de Player.StarterGear são destruídos ao seu 1> Class.Player.Backpack1>. Quando o personagem morre, o cliente destrói seu 4> Class
O Backpack também armazena e executa Scripts e LocalScripts que o cliente e o servidor podem ambos acesso.
O Roblox fornece uma interface para que um jogador acesse seu Backpack e inventário na parte inferior da tela. Para desativar a GUI padrão do Roblox e substituí-la com a sua possuir, chame StarterGui:SetCoreGuiEnabled() em um LocalScript. Para mais informações, veja StarterGui.
Equipamento Iniciante
O contêiner StarterGear clona seus conteúdo para o usuário quando seu personagem é gerado. Além disso, se o seu local permitir equipamento e um usuário possuir equipamento, os objetos de equipamento de sua clonagem de lugar para seu 4>Class.Player.StarterGear4> quando eles Gerar.
Ao contrário de StarterPack , Player.StarterGear não é um serviço, mas sim uma filha de cada <
Sempre teste jogos após adicionar Gear a eles para verificar que os usuários não podem abusar facilmente deles. Gear inclui Script objetos e permite que o jogador execute ações que você pode não considerar. Por exemplo, um navigator gear pode permitir que o jogador acessar uma parte do mapa que você não quer que eles. As armas permitem que os jogadores com gear danificar outros jogadores, possivelmente sem retenção
JogadorGui
O contêiner PlayerGui armazena objetos que criam o Interface gráfica do usuáriodo jogador. Se um ScreenGUI for um descendente de um PlayerGui ,
Se Players.CharacterAutoLoads estiver definido como falso, o personagem não é Gerare os conteúdos de StarterGui não são copiados até que Player:LoadCharacter() seja chamado. Se Class.StarterGui
Scripts do Jogador
Quando um usuário se juntar à experiência, o conteúdo em StarterPlayer.StarterPlayerScripts contêiner de clones de contêiner para PlayerScripts . Quaisquer scripts locais e scripts de módulo são executados quando eles se clonam.
Ao contrário dos contêineres Backpack e PlayerGui, o contêiner Class.PlayerScripts</