Player

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Um objeto Jogador é um cliente que está conectado no momento.Esses objetos são adicionados ao serviço Players quando um novo jogador se conecta, então são removidos quando eles eventualmente se desconectam do servidor.

A propriedade Instance.Name reflete o nome de usuário do jogador.Ao salvar informações sobre um jogador, você deve usar seu Player.UserId pois é possível que um jogador possa alterar seu nome de usuário.

Existem vários métodos semelhantes no serviço Players para trabalhar com objetos Jogador. Use esses sobre seus respectivos métodos Instance:

Contoh Kode

Leaderstats

local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Create a container for leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Create one leaderstat value
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Add to player (displaying it)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

Rangkuman

Properti

Metode

Acara

Properti

AccountAge

Hanya Baca
Tidak Direplikasi
Baca Paralel

O AccountAge é uma propriedade Player que descreve há quanto tempo a conta de um jogador foi registrada em dias.É definida usando a função Player:SetAccountAge(), que não pode ser acessada por scripts.

Essa propriedade é útil para mostrar condicionalmente conteúdo de novos jogadores do Roblox, como tutoriais.

Contoh Kode

Account Age Mark

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

AutoJumpEnabled

Baca Paralel

A propriedade AutoJumpEnabled determina se o Player.Character de um Player usando um dispositivo móvel saltará automaticamente quando atingir um obstáculo.Isso pode tornar os níveis mais navegáveis enquanto estiver em um dispositivo móvel

Quando o jogador entra no jogo, o valor StarterPlayer.AutoJumpEnabled determina o estado inicial desta propriedade.Então, essa propriedade determina o valor da propriedade Humanoid.AutoJumpEnabled da Player.Character no momento do spawn.Em outras palavras, é possível definir o comportamento de pulo automático em uma base por personagem, por jogador e por jogo usando essas três propriedades.

Contoh Kode

Auto-Jump Toggle

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()

CameraMaxZoomDistance

Baca Paralel

A propriedade CameraMaxZoomDistance Player define a distância máxima em studs que a câmera pode estar do personagem com as câmeras padrão.

Em outras palavras, ele controla a distância máxima que a câmera do jogador pode se afastar.

O valor padrão desta propriedade é definido por StarterPlayer.CameraMaxZoomDistance.Se este valor for definido para um valor inferior a Player.CameraMinZoomDistance, ele será aumentado para CameraMinZoomDistance.

Contoh Kode

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMinZoomDistance

Baca Paralel

A propriedade CameraMinZoonDistance Player define a distância mínima em metros que a câmera pode estar do personagem com as câmeras padrão.

Em outras palavras, ele controla a distância mínima em que a câmera do jogador pode se aproximar.

O valor padrão desta propriedade é definido por StarterPlayer.CameraMinZoomDistance.Se esse valor for definido para um valor maior que Player.CameraMaxZoomDistance , ele será reduzido para CameraMaxZoomDistance.

Contoh Kode

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMode

Baca Paralel

A propriedade Modo de Câmera define o modo de câmera do jogador, padrão para terceira pessoa.

Terceira Pessoa

No modo padrão de terceira pessoa (Enum.CameraMode.Classic), o personagem pode ser visto na câmera. Enquanto neste modo, o comportamento padrão é:

  • Jogadores podem clicar com o botão direito e arrastar (鼠), tocar e arrastar (celular), usar o botão analógico secundário (gamepad) ou pressionar as setas esquerda/direita (teclado) para girar a câmera em torno de seu personagem.
  • Quando um jogador move seu personagem, ele enfrenta a direção de movimento correspondente.
  • Os jogadores podem ampliar e reduzir livremente, até mesmo para a primeira pessoa em zoom total.

Primeira Pessoa

No modo de primeira pessoa ( Enum.CameraMode.LockFirstPerson ), a câmera do jogador é ampliada ao máximo.A menos que haja uma GUI visível presente com o conjunto de propriedades GuiButton.Modal definido para true , movendo o mouse, arrastando-o no celular ou usando o botão secundário em um gamepad, a câmera girará em torno do personagem

Contoh Kode

Playing in First Person

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson

CanLoadCharacterAppearance

Baca Paralel

A propriedade CanLoadCharacterAppearance Player determina se a aparência do personagem será carregada quando o jogador for spawnado.O valor padrão desta propriedade é definido por StarterPlayer.LoadPlayerAppearance.

Se verdadeiro , o personagem carregará a aparência do jogador correspondente ao jogador Player.CharacterAppearanceId .

Se falso , o jogador será gerado com uma aparência padrão - um modelo de personagem cinza sem quaisquer chapéus, camisas, calças, etc.

Tentar definir a propriedade depois que o personagem foi gerado não alterará o personagem, você deve chamar Player:LoadCharacter() para carregar a nova aparência.

Contoh Kode

Disabling a Player's Appearance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false

Character

Baca Paralel

A propriedade Personagem contém uma referência a um Model que contém um Humanoid , partes do corpo, scripts e outros objetos necessários para simular o avatar do jogador na experiência.O modelo é pai do Workspace mas pode ser movido.Ele é carregado automaticamente quando Players.CharacterAutoLoads é true e pode ser carregado manualmente caso contrário usando Player:LoadCharacter().

Inicialmente, essa propriedade é nil e é definida quando o personagem do jogador é gerado pela primeira vezUse o evento Player.CharacterAdded para detectar quando o personagem de um jogador carrega corretamente e o evento Player.CharacterRemoving para detectar quando o personagem está prestes a desaparecerEvite usar Object:GetPropertyChangedSignal() nesta propriedade.

Observe que LocalScripts que são clonados de StarterGui ou StarterPack em um jogador's PlayerGui ou Backpack respectivamente são frequentemente executados antes que o modelo de personagem antigo seja substituído, portanto Player.Character pode se referir ao modelo antigo cuja propriedade Parent é nil.Portanto, em um LocalScript sob StarterGui ou StarterPack , é aconselhável garantir que o pai de Personagem não seja nil antes de usá-lo, por exemplo:


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
if not character or character.Parent == nil then
character = player.CharacterAdded:Wait()
end

CharacterAppearanceId

Baca Paralel

Essa propriedade determina o ID do usuário da conta cuja aparência de personagem é usada para um jogador de character .Por padrão, essa propriedade é a Player.UserId, que usa o avatar do jogador como ele o criou no site do Roblox.

Alterar esta propriedade para o ID do usuário de outra conta fará com que o jogador apareça com a aparência dessa conta (chapéus, camisas, calças, etc).

Jogos também podem alternar se a aparência do personagem de um jogador é carregada no jogo ou não alterando a propriedade StarterPlayer.LoadCharacterAppearance.

Contoh Kode

Disguise Command

local Players = game:GetService("Players")
local disguiseCommand = "/disguise "
local function onPlayerChatted(player, message)
if message:sub(1, disguiseCommand:len()):lower() == disguiseCommand:lower() then
local input = message:sub(disguiseCommand:len() + 1)
local id = tonumber(input)
if not id then -- Number failed to parse, maybe they typed a username instead
pcall(function() -- This call can fail sometimes!
id = Players:GetUserIdFromNameAsync(input) -- Fetch ID from name
end)
end
if id then
-- Set character appearance then respawn
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- We couldn't get an ID from their input
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

DevCameraOcclusionMode

Baca Paralel

Define como os scripts de câmera padrão lidam com objetos entre a câmera e o sujeito da câmera.Definido por StarterPlayer.DevCameraOcclusionMode e não pode ser alterado para jogadores individuais.

O valor padrão é Zoom (0). Veja Enum.DevCameraOcclusionMode para uma lista de modos disponíveis.

Baca Paralel

A propriedade DevComputerCameraMode determina a maneira pela qual um jogador move sua câmera ao usar um dispositivo com um mouse e um tecladoVeja Enum.DevComputerCameraMovementMode para uma descrição de cada modo de controle de câmera disponívelEssa propriedade não pode ser definida usando um LocalScript (ela deve ser definida no servidor usando um Script ).

O valor padrão desta propriedade é determinado por StarterPlayer.DevComputerCameraMovementMode.

A palavra "Computador" neste nome de propriedade se refere a dispositivos não TouchEnabled e não GamepadEnabled .

Quando definido para Escolha do Usuário , um jogador pode escolher entre qualquer modo de controle (exceto Programável ) nas configurações do jogo Roblox.Em geral, é uma boa ideia permitir que os jogadores escolham seu modo de controle para maximizar a acessibilidade.

É possível criar um esquema de controle personalizado definindo esta propriedade para Scriptable .

Essa propriedade não afeta jogadores usando um dispositivo com toque habilitado. Veja Player.DevTouchCameraMode.

Contoh Kode

Setting a Player's Camera Movement Mode (Desktop)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on computers to classic
player.DevComputerCameraMode = Enum.DevComputerCameraMovementMode.Classic

DevComputerMovementMode

Baca Paralel

A propriedade DevComputerMovementMode determina a maneira pela qual um jogador move seu personagem ao usar um dispositivo com um mouse e um tecladoVeja Enum.DevComputerMovementMode para uma descrição de cada modo de controle de movimento disponívelEssa propriedade não pode ser definida usando um LocalScript (ela deve ser definida no servidor usando um Script ).

O valor padrão desta propriedade é determinado por StarterPlayer.DevComputerMovementMode.

A palavra "Computador" neste nome de propriedade refere-se a dispositivos não TouchEnabled .

Quando definido para Escolha do Usuário , um jogador pode escolher entre qualquer modo de controle (exceto Programável ) nas configurações do jogo Roblox.Em geral, é uma boa ideia permitir que os jogadores escolham seu modo de controle para maximizar a acessibilidade.

É possível criar um esquema de controle personalizado definindo esta propriedade para Scriptable .

Essa propriedade não afeta jogadores usando um dispositivo com suporte ao toque. Veja Player.DevTouchMovementMode.

Contoh Kode

Setting a Player's Movement Mode (Desktop)

local Players = game:GetService("Players")
local function onPlayerAdded(player: Player)
-- Set the player's movement mode on desktop devices to click-to-move
-- Once set, the player can right click in the game world and the character will move there.
player.DevComputerMovementMode = Enum.DevComputerMovementMode.ClickToMove
end
Players.PlayerAdded:Connect(onPlayerAdded)

DevEnableMouseLock

Baca Paralel

Essa propriedade determina se um jogador é capaz de alternar o bloqueio Mouse pressionando Shift .Um jogador pode desativar o botão de bloqueio do mouse nas configurações de jogo do Roblox.Por padrão, essa propriedade é definida para o valor de StarterPlayer.EnableMouseLockOption.Isso pode ser definido do lado do servidor durante o tempo de execução usando um Script.Não pode ser configurado do lado do cliente.

Quando o bloqueio do mouse é ativado, o cursor do jogador é bloqueado no centro da tela.Mover o mouse orbitará a câmera ao redor do jogador character e o personagem enfrentará a mesma direção que o camera .Também compensa a visão da câmera logo acima do ombro direito do personagem do jogador.

Observe que as APIs relacionadas ao shift-lock estão em processo de serem descontinuadas, portanto, é recomendado usar UserInputService.MouseBehavior em vez disso para bloquear o mouse.

Contoh Kode

Toggling Mouse Lock Ability

local Players = game:GetService("Players")
local function toggleMouseLock(player)
player.DevEnableMouseLock = not player.DevEnableMouseLock
if player.DevEnableMouseLock then
print("Mouse lock is available")
else
print("Mouse lock is not available")
end
end
local function onPlayerChatted(player, message, _recipient)
if message == "mouselock" then
toggleMouseLock(player)
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Baca Paralel

A propriedade DevTouchCameraMode determina a maneira pela qual um jogador move sua câmera ao usar um dispositivo TouchEnabled.Veja Enum.DevTouchCameraMovementMode para uma descrição de cada modo de controle de câmera disponívelEssa propriedade não pode ser definida usando um LocalScript (ela deve ser definida no servidor usando um Script ).

O valor padrão desta propriedade é determinado por StarterPlayer.DevTouchCameraMovementMode.

Quando definido para Escolha do Usuário , um jogador pode escolher entre qualquer modo de controle (exceto Programável ) nas configurações do jogo Roblox.Em geral, é uma boa ideia permitir que os jogadores escolham seu modo de controle para maximizar a acessibilidade.

É possível criar um esquema de controle personalizado definindo esta propriedade para Scriptable .

Essa propriedade não afeta jogadores que não estão usando um dispositivo habilitado para toque. Veja Player.DevComputerCameraMovementMode.

Contoh Kode

Setting a Player's Camera Movement Mode (Touch)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on mobile devices to classic
player.DevTouchCameraMovementMode = Enum.DevTouchCameraMovementMode.Classic

DevTouchMovementMode

Baca Paralel

A propriedade DevTouchMovementMode determina a maneira pela qual um jogador move seu personagem ao usar um dispositivo TouchEnabled.Veja Enum.DevTouchMovementMode para uma descrição de cada modo de controle de movimento disponívelEssa propriedade não pode ser definida usando um LocalScript (ela deve ser definida no servidor usando um Script ).

O valor padrão desta propriedade é determinado por StarterPlayer.DevTouchMovementMode.

Quando definido para Escolha do Usuário , um jogador pode escolher entre qualquer modo de controle (exceto Programável ) nas configurações do jogo Roblox.Em geral, é uma boa ideia permitir que os jogadores escolham seu modo de controle para maximizar a acessibilidade.

É possível criar um esquema de controle personalizado definindo esta propriedade para Scriptable .

Essa propriedade não afeta jogadores que não estão usando um dispositivo habilitado para toque. Veja Player.DevComputerMovementMode.

Contoh Kode

Setting a Player's Movement Mode (Touch)

local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevTouchMovementMode = Enum.DevTouchMovementMode.DynamicThumbstick
end)

DisplayName

Baca Paralel

O DisplayName é uma propriedade Player que contém o nome de exibição do usuário autenticado associado ao objeto Player.Ao contrário dos nomes de usuários, os nomes de exibição são nomes não exclusivos que um jogador exibe para os outros.Se o usuário do Roblox não escolheu nenhuma, a propriedade lerá a mesma que a propriedade Name.

Observação:

  • Como os nomes de exibição não são exclusivos, é possível que dois jogadores em uma única instância tenham nomes idênticos.Se você precisar de um identificador globalmente único para um jogador, use Player.UserId (que é estático) ou Player.Name (que é o nome de usuário atual) em vez disso.
  • Personagens gerados com Player.LoadCharacter ou pelo motor do Roblox terão sua propriedade Humanoid.DisplayName atribuída à propriedade Player.DisplayName.
  • Nomes de exibição podem ter caracteres de idioma na string. Veja UTF-8 para mais informações sobre como trabalhar com strings com caracteres de idioma.

FollowUserId

Hanya Baca
Tidak Direplikasi
Baca Paralel

O FollowUserId é uma propriedade Player que contém o Player.UserId do usuário que um jogador seguiu para o jogo.Se o jogador não seguiu ninguém para o jogo, esta propriedade será 0.Essa propriedade é útil para alertar os jogadores que foram seguidos por outro jogador para o jogo.

Você pode obter o nome do jogador seguido usando esse ID de usuário e a função Players:GetNameFromUserIdAsync().

Contoh Kode

Followed Alert

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local textLabel = Instance.new("TextLabel")
textLabel.Parent = screenGui
textLabel.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if textLabel then
textLabel:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GameplayPaused

Keamanan Tidak Dapat Diakses
Baca Paralel

A propriedade JogabilidadePausada indica se o jogador está atualmente em um estado de pausa em um local com StreamingEnabled ativado.É definido no cliente, mas replicado para o servidor.Para determinar o status de interrupção, você pode utilizar esta propriedade.

Veja também:

HasVerifiedBadge

Baca Paralel

A propriedade HasVerifiedBadge Player indica se o jogador tem um Distintivo Verificado.

HealthDisplayDistance

Baca Paralel

A propriedade HealthDisplayDistance define a distância em metros em que este jogador verá outras barras de saúde.Se definido para 0, as barras de saúde não serão exibidas.Esta propriedade é definida como StarterPlayer.HealthDisplayDistance por padrão.

Se a barra de saúde de um Humanoide estiver visível, você pode definir o tipo de exibição usando Humanoid.DisplayDistanceType.

Contoh Kode

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

LocaleId

Tersembunyi
Hanya Baca
Tidak Direplikasi
Baca Paralel

A propriedade LocaleId Player mostra o ID do local que o jogador local definiu para a conta Roblox deles.Armazena uma string com o código de duas letras (por exemplo, "en-us") para o idioma local.

Isso pode ser usado para determinar a demografia geográfica da base de jogadores do seu jogo e também é o local que será usado para a localização automática do conteúdo na experiência (veja GuiBase2d.AutoLocalize).Essa propriedade permite o acesso ao local do jogador a partir do servidor

Veja também LocalizationService.RobloxLocaleId , a ID local usada para localizar conteúdo interno.Este será um valor diferente quando o Roblox ainda não suportar internamente o set local do jogador local.

Contoh Kode

Checking a Player's Locale

local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)

MembershipType

Hanya Baca
Tidak Direplikasi
Baca Paralel

Essa propriedade só pode ser lida para determinar afiliação (não pode ser definida para outro tipo de afiliação).Ela armazena um Enum.MembershipType enum do tipo de membros da conta.

Contoh Kode

Check Player Membership Status

local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Take some action specifically for Premium members
end

NameDisplayDistance

Baca Paralel

A propriedade NameDisplayDistance StarterPlayer define a distância em studs em que esse jogador verá outros nomes Humanoid.Se a propriedade estiver definida como 0, os nomes são ocultados.Esta propriedade é definida como StarterPlayer.NameDisplayDistance por padrão.

Se a barra de saúde de um Humanoide estiver visível, você pode definir o tipo de exibição usando Humanoid.DisplayDistanceType.

Contoh Kode

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

Neutral

Baca Paralel

A propriedade Neutra determina se o jogador está em uma equipe específica.

  • Quando verdadeiro, o jogador não está em uma equipe específica.Isso também significa que a propriedade Player.Team será nula e a Player.TeamColor será branca.
  • Quando false, o jogador está em uma equipe específica.A propriedade Player.Team corresponderá ao Team em que o jogador está, assim como o Player.TeamColor .

Contoh Kode

Checking if a Player is Neutral

local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end

PartyId

Tersembunyi
Tidak Direplikasi
Baca Paralel

ReplicationFocus

Baca Paralel

A propriedade ReplicationFocus Player define a parte para focar a replicação em torno de um Jogador.Diferentes sistemas do Roblox que se comunicam através da rede (como física, streaming, etc) se replicam em diferentes taxas dependendo de quão próximos os objetos estão do foco de replicação.

Quando essa propriedade é nula, ela reverte ao seu comportamento padrão, que é tratar o personagem do jogador local PrimaryPart como o foco de replicação.

Essa propriedade só deve ser definida no servidor com um Script, não com um LocalScript.Observe que essa propriedade não altera ou atualiza a propriedade de rede de peças

Contoh Kode

Setting a Player's Replication Focus

local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part

RespawnLocation

Baca Paralel

Se definido, o jogador reaparecerá no dado SpawnLocation .Essa propriedade só pode ser definida através do Luau e deve conter uma referência a um válido SpawnLocation, que deve atender aos seguintes critérios:

Se RespawnLocation não for definido como válido SpawnLocation então a lógica de spawn padrão será aplicada.Para mais informações sobre isso, veja a página para SpawnLocation .

Alternativas para RespawnLocation

Contoh Kode

Change Spawn on Touch

local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end

StepIdOffset

Keamanan Roblox
Baca Paralel

Team

Tidak Direplikasi
Baca Paralel

A propriedade Equipe é uma referência a um objeto Team dentro do serviço Teams.Ela determina a equipe em que o jogador está; se o Player não está em uma equipe ou tem um Player.TeamColor inválido, essa propriedade é nula.Quando essa propriedade é definida, o jogador se juntou ao evento Team e ao evento Team.PlayerAdded do time associado.Da mesma forma, Team.PlayerRemoved incêndios quando a propriedade é desdefinida de um determinado Team.

Contoh Kode

Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Join Team Command

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

TeamColor

Baca Paralel

A propriedade TeamColor determina com qual equipe um Jogador está associado de acordo com o Team.TeamColor.Alterar esta propriedade mudará Player.Team de acordo com qual equipe tem o mesmo BrickColor para o seu Team.TeamColor .Se nenhum objeto de Equipe tiver a cor de equipe associada, o jogador não será associado a uma equipe.

Muitas vezes é uma ideia melhor definir Player.Team para o respectivo Team em vez de usar essa propriedadeDefinir essa propriedade frequentemente leva à repetição do mesmo valor de BrickColor para uma determinada equipe em muitos scripts; isso é algo que você deseja evitar ao aderir ao princípio "Não Repita a Si Mesmo" (DRY).

Contoh Kode

Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

ThirdPartyTextChatRestrictionStatus

Hanya Baca
Tidak Direplikasi
Keamanan Skrip Roblox
Baca Paralel

UserId

Baca Paralel

O UserId é uma propriedade Player que contém um inteiro de leitura que identifica de forma exclusiva e consistente cada conta de usuário no Roblox.Ao contrário do Instance.Name de um Jogador, que pode mudar de acordo com o nome de usuário presente do usuário, esse valor nunca mudará para a mesma conta.

Essa propriedade é essencial ao salvar/carregar dados do jogador usando GlobalDataStores.Use o ID do usuário de um jogador como chave do armazenamento de dados para que cada jogador tenha uma chave única.

Contoh Kode

Player.UserId

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players:GetPlayerByUserId

local Players = game:GetService("Players")
local player = Players:GetPlayerByUserId(1)
if player then
print("Player with userId 1 is in this server! Their name is: " .. player.Name)
else
print("Player with userId 1 is not in this server!")
end
Met the Creator Badge

local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local OWNER_ID = 212423 -- can use game.CreatorId for published places
local BADGE_ID = 1
local ownerInGame = false
local function playerAdded(newPlayer)
if newPlayer.UserId == OWNER_ID then
-- if new player is the owner, set ownerInGame to true and give everyone the badge
ownerInGame = true
for _, player in pairs(Players:GetPlayers()) do
-- don't award the owner
if player ~= newPlayer then
BadgeService:AwardBadge(player.UserId, BADGE_ID)
end
end
elseif ownerInGame then
-- if the owner is in the game, award the badge
BadgeService:AwardBadge(newPlayer.UserId, BADGE_ID)
end
end
local function playerRemoving(oldPlayer)
if oldPlayer.UserId == OWNER_ID then
ownerInGame = false
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerRemoving:Connect(playerRemoving)
Data Store to Leaderboard

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

Metode

AddReplicationFocus

()

Parameter

part: BasePart

Memberikan nilai

()

ClearCharacterAppearance

()

A função ClearCharacterAppearance remove todos Accessory , Shirt , Pants , CharacterMesh e BodyColors da aparência do jogador dado Player.Character.Além disso, também remove a camiseta Decal no torso do jogador.A cor da parte do corpo do personagem e do rosto permanecerá inalterada.Esse método não faz nada se o jogador não tiver um Personagem.

Ele não remove t-shirts , malhas de cabeça ou rostos.


Memberikan nilai

()

Contoh Kode

How to Clear a Character's Appearance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function onChildRemoved(child)
print(child.ClassName, "removed from character")
end
character.ChildRemoved:Connect(onChildRemoved)
player:ClearCharacterAppearance()
--> BodyColors removed from character
--> ShirtGraphic removed from character
--> Shirt removed from character
--> Pants removed from character
--> CharacterMesh removed from character
--> Hat removed from character
--> Shirt removed from character

DistanceFromCharacter

A função DistanceFromCharacter Player retorna a distância entre a cabeça do personagem e o ponto dado Vector3.Retorna 0 se o jogador não tiver Player.Character.

Isso é útil ao determinar a distância entre um jogador e outro objeto ou local no jogo.

Se você quiser determinar a distância entre duas instâncias ou posições não jogadoras, você pode usar o seguinte:


local distance = (position1 - position2).Magnitude

Parameter

point: Vector3

A localização a partir da qual a distância do jogador para é medida.


Memberikan nilai

A distância em studs entre o jogador e o local.

Contoh Kode

Measuring the Distance Between a Player and a Position

local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end

GetJoinData

Retorna um dicionário que contém informações sobre como o Jogador se junta à experiência. O dicionário contém qualquer um dos seguintes campos:


<th>Tipo de valor</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<th>Fonte do JogoId</th>
<td>número</td>
<td>O <code>Class.DataModel.GameId</code> da experiência que o <code>Jogador</code> teletransportou.Apenas presente se o jogador se teletransportar para a experiência atual e se um servidor chamar a função de teleporte.</td>
</tr>
<tr>
<th>Id do Local da Fonte</th>
<td>número</td>
<td>O <code>Class.DataModel.PlaceId</code> do local onde o <code>Jogador</code> teletransportou.Apenas presente se o jogador se teletransportar para o local atual e um servidor chamar a função de teleporte.</td>
</tr>
<tr>
<th>ReferenciadoPorId do Jogador</th>
<td>número</td>
<td>O <code>Class.Player.UserId</code> do jogador que convidou o jogador atual para a experiência.Use esses dados para identificar o remetente e ativar a lógica de recompensa.</td>
</tr>
<tr>
<th>Membros</th>
<td>array</td>
<td>Um array que contém os números <code>Class.Player.UserId</code> dos usuários teletransportados junto com o <code>Jogador</code>.Somente presente se o jogador se teletransportou como parte de um grupo.</td>
</tr>
<tr>
<th>Teletransporte de Dados</th>
<td>variáveis</td>
<td>Reflete o <code>teleportData</code> especificado no teleporte original.Útil para compartilhar informações entre servidores para os quais o jogador se teletransporta.Apenas presente se <code>teleportData</code> foi especificado e um servidor chama a função de teletransporte.</td>
</tr>
<tr>
<th>Dados de Lançamento</th>
<td>texto</td>
<td>Uma corda simples ou codificada em JSON que contém dados de lançamento especificados em um <a href="../../../production/promotion/deeplinks.md">deep link</a> URL ou <code>Class.ExperienceInviteOptions.LaunchData</code>.</td>
</tr>
<tr>
<th>Contexto de Entrada no Jogo</th><td>dicionário</td>
<td>
Um dicionário que inclui informações relevantes com base no contexto da entrada do jogo. Contém as seguintes chaves:
<ul>
Fonte de Entrada : Enum.JoinSource > Tipo de Item : opcional Enum.AvatarItemType ID de Recurso : opcional string Tipo de Recurso : opcional string ID do Recurso : opcional string Tipo de Recurso : opcional Enum.ResourceType
</ul>
</td>
</tr>
</tbody>
A chave

Obter Dados de Junção e Dados de Teletransporte

Se um servidor iniciar o teletransporte do jogador, o dicionário que este método retorna inclui os dados de teletransporte do jogador.O método Player:GetJoinData() só pode ser usado para obter dados de teleporte no servidor.Para obter os dados no cliente, use TeleportService:GetLocalPlayerTeleportData().

Ao contrário de TeleportService:GetLocalPlayerTeleportData(), Player:GetJoinData() fornece apenas dados de teletransporte que atendam aos seguintes critérios de segurança:

  • Está garantido que tenha sido enviado por um servidor Roblox nas últimas 48 horas
  • Está garantido que foi enviado com este Player .
  • O SourcePlaceId e SourceGameId são garantidos de ser o local e o universo de onde os dados foram enviados.Isso significa que você pode verificar que os dados de teleporte vieram de um local aprovado.

Como esses dados são transmitidos pelo cliente, ainda podem ser potencialmente abusados por um explorador.Dados sensíveis, como moeda do jogador, devem ser transmitidos por meio de uma solução segura como Armazenamentos de Memória.


Memberikan nilai

Um dicionário que contém os valores PlaceId e UserId (veja a tabela na descrição).

Contoh Kode

Tracking Traffic Sources

local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local analyticsStore = DataStoreService:GetDataStore("Analytics")
local ALLOWED_SOURCES = {
"twitter";
"youtube";
"discord";
}
local function onPlayerAdded(player)
local source = player:GetJoinData().LaunchData
-- check if the provided source is valid
if source and table.find(ALLOWED_SOURCES, source) then
-- update the data store to track the source popularity
local success, result = pcall(analyticsStore.IncrementAsync, analyticsStore, source)
if success then
print(player.Name, "joined from", source, "- total:", result)
else
warn("Failed to record join source: " .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Referral URL Generator

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local DIRECT_JOIN_URL = "https://www.roblox.com/games/start?placeId=%d&launchData=%s"
local textBox = script.Parent
local function generateReferralURL(player)
return DIRECT_JOIN_URL:format(
game.PlaceId,
player.UserId
)
end
local function highlightAll()
if -- avoid recursive property updates
textBox:IsFocused()
and not (
textBox.SelectionStart == 1
and textBox.CursorPosition == #textBox.Text + 1
)
then
textBox.SelectionStart = 1
textBox.CursorPosition = #textBox.Text + 1
end
end
textBox.Focused:Connect(highlightAll)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(highlightAll)
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(highlightAll)
textBox.TextEditable = false
textBox.ClearTextOnFocus = false
textBox.Text = generateReferralURL(player)
Using a Table as Launch Data

local HttpService = game:GetService("HttpService")
local DATA_CHARACTER_LIMIT = 200
local function encodeTableAsLaunchData(data)
-- convert the table to a string
local jsonEncodedData = HttpService:JSONEncode(data)
if #jsonEncodedData <= DATA_CHARACTER_LIMIT then
-- escape potentially invalid characters, such as spaces
local urlEncodedData = HttpService:UrlEncode(jsonEncodedData)
return true, urlEncodedData
else
-- report character limit error
return false, ("Encoded table exceeds %d character limit"):format(DATA_CHARACTER_LIMIT)
end
end
local sampleData = {
joinMessage = "Hello!";
urlCreationDate = os.time();
magicNumbers = {
534;
1337;
746733573;
};
}
local success, encodedData = encodeTableAsLaunchData(sampleData)
if success then
print(encodedData)
else
warn("failed to encode launch data: " .. encodedData)
end
Decoding JSON Launch Data

local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local launchData = player:GetJoinData().LaunchData
if launchData then
-- attempt to decode the data
local success, result = pcall(HttpService.JSONDecode, HttpService, launchData)
if success then
print(player.Name, "joined with data:", result)
else
-- this is probably due to the user messing with the URL
warn("Failed to parse launch data:" .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Server TeleportData Example

local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GetMouse

A função GetMouse Player retorna o Mouse sendo usado pelo cliente.A instância do mouse do jogador pode ser usada para rastrear a entrada do mouse do usuário, incluindo cliques de botão de mouse esquerdo e direito e movimentos e localização.

O serviço UserInputService fornece funções e eventos adicionais para rastrear a entrada do usuário - especialmente para dispositivos que não usam um mouse.

Observação:

  • Este item deve ser usado em um LocalScript para funcionar como esperado online.
  • Após uma atualização em julho de 2014, o ícone do mouse agora pode ser definido com esse método.

Memberikan nilai

Contoh Kode

How to Track Mouse Input

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onButton1Down()
print("Button 1 is down")
end
mouse.Button1Down:Connect(onButton1Down)

GetNetworkPing

Tulis Paralel

GetNetworkPing retorna a latência de rede isolada do Player em segundos.“Ping” é uma medida do tempo que leva para os dados serem enviados do cliente para o servidor, e depois de volta novamente.Não envolve deserialização ou processamento de dados.

Para o lado do cliente LocalScripts, essa função só pode ser chamada no Players.LocalPlayer .Essa função é útil para identificar e solucionar problemas que ocorrem em cenários de latência alta na rede.Também é útil para disfarçar a latência, como ajustar a velocidade de animações de arremesso para projéteis.


Memberikan nilai

HasAppearanceLoaded

A função HasAppearanceLoaded Player retorna se a aparência do jogador Player.Character foi carregada ou não.

A aparência de um jogador inclui itens como o do jogador Shirt, Pants e Accessories.

Isso é útil ao determinar se a aparência de um jogador foi carregada após ele se juntar ao jogo pela primeira vez, o que pode ser rastreado usando o evento Players.PlayerAdded.


Memberikan nilai

Um booleano indicando se a aparência do personagem do jogador foi carregada ou não.

Contoh Kode

Check if a Player's Appearance Has Loaded

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsVerified

Retorna um valor binário indicando o status de verificação do jogador.Quando verdadeiro, o jogador é verificado.A verificação inclui, mas não se limita a, número de telefone não VOIP ou verificação de identificação do governo.

Ao implementar IsVerified, use cautela para garantir que a implementação não bloqueie inadvertidamente todos os usuários não verificados.

Observe que o método só pode ser chamado no servidor de destino.Chamá-lo de resultados do lado do cliente resulta em um erro.Além disso, esse método sempre retornará false no Studio.


Memberikan nilai

Um booleano que indica se o jogador está verificado.

Contoh Kode

Using IsVerified

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player:IsVerified())
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Kick

()

O método Kick() permite que uma experiência gentilmente desconecte um cliente e opcionalmente forneça uma mensagem ao usuário desconectado.Isso é útil para moderar usuários abusivos.Você deve permitir apenas usuários específicos de quem você confia para acionar esse método em outros usuários

Chamar este método em um Player sem argumentos desconecta o usuário do servidor e fornece uma mensagem de aviso padrão.Chamando este método em um Player junto com uma string como o primeiro argumento substitui a mensagem padrão pela string fornecida.

Ao usar esse método a partir de um LocalScript, apenas o cliente do usuário local pode ser expulso

Parameter

message: string

A mensagem para mostrar ao usuário após expulsar.

Nilai Default: ""

Memberikan nilai

()

Move

()

A função Movimento Player faz com que o personagem do jogador caminhe na direção dada até ser interrompido ou interrompido pelo jogador (usando seus controles).

Isso é útil ao escrever NPC Humanoids que se movem ao redor de um mapa - mas não são controlados pela entrada de um jogador real.

Observe que o segundo argumento da função indica se o fornecido Vector3 deve mover o jogador em relação às coordenadas mundiais ( falso ) ou ao jogador Camera ( verdadeiro ).

Parameter

walkDirection: Vector3

A direção do Vector3 que o jogador deve mover.

relativeToCamera: boolean

Um booleano que indica se o jogador deve se mover em relação à câmera do jogador.

Nilai Default: false

Memberikan nilai

()

Contoh Kode

Moving the Player relative to their Camera

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)

RemoveReplicationFocus

()

Parameter

part: BasePart

Memberikan nilai

()

SetAccountAge

()
Keamanan Plugin

A função SetAccountAge define o Player.AccountAge do jogador em dias.

É usado para definir a propriedade Player que descreve quanto tempo atrás a conta de um jogador foi registrada em dias

Isso não define a idade do jogador na conta, mas a idade da própria conta em relação ao momento em que foi criada pela primeira vez

Parameter

accountAge: number

Idade da conta em dias.


Memberikan nilai

()

Contoh Kode

Setting the Player's Account Age

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
Account Age Mark

local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

SetSuperSafeChat

()
Keamanan Plugin

Este método define se o jogador vê ou não o chat filtrado por TextService:FilterStringAsync() ao invés de chats normais.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetSuperSafeChat(true)

Independentemente de se um jogador tem o bate-papo filtrado ativado ou não, todo o bate-papo deve ser filtrado por TextService quando transmitido para outros jogadores ou na própria tela do jogador.TextService:FilterStringAsync() retorna um objeto TextFilterResult que pode ser filtrado de forma diferente de acordo com o uso pretendido da mensagem.

Parameter

value: boolean

Um booleano que indica se o jogador vê ou não o chat filtrado.


Memberikan nilai

()

GetFriendsOnline

Hasil

Essa função retorna um conjunto de dicionários de amigos online, limitado pelo valor maxFriends. A função usa um cache de 30 segundos.

No array retornado, alguns campos estão presentes apenas para certos tipos de localização.Por exemplo, PlaceId não estará presente quando LocationType for 0 (Site móvel).


<th>Tipo</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>ID do Visitante</b></td>
<td>número</td>
<td>O <code>Class.Player.UserId</code> do amigo.</td>
</tr>
<tr>
<td><b>Nome de usuário</b></td>
<td>texto</td>
<td>O nome de usuário do amigo.</td>
</tr>
<tr>
<td><b>Nome de exibição</b></td>
<td>texto</td>
<td>O <code>Class.Player.DisplayName</code> do amigo.</td>
</tr>
<tr>
<td><b>Último Online</b></td>
<td>texto</td>
<td>Quando o amigo foi online pela última vez.</td>
</tr>
<tr>
<td><b>Está Online</b></td>
<td>booleano</td>
<td>Se o amigo estiver online atualmente.</td>
</tr>
<tr>
<td><b>Última localização</b></td>
<td>texto</td>
<td>O nome do local atual do amigo.</td>
</tr>
<tr>
<td><b>Id do Lugar</b></td>
<td>número</td>
<td>O ID do local da última localização do amigo.</td>
</tr>
<tr>
<td><b>Id do jogo</b></td>
<td>texto</td>
<td>O <code>Modelo de Dados/JobId</code> da última localização do amigo.</td>
</tr>
<tr>
<td><b>Tipo de Localização</b></td><td>número</td>
<td>
O tipo de localização da última localização do amigo: 0 Site móvel > > 1 > Página da Web > > 2 > Estúdio > > 3 > InGame do amigo > > 0 > Aplicativo móvel Web móvel
</td>
</tr>
</tbody>
Qual o nome

Parameter

maxFriends: number

O número máximo de amigos online para retornar.

Nilai Default: 200

Memberikan nilai

Um dicionário de amigos online (veja a tabela acima).

Contoh Kode

Get a List of Online Friends

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local success, result = pcall(player.GetFriendsOnline, player, 10)
if success then
for _, friend in pairs(result) do
print(friend.UserName)
end
else
warn("Failed to get online players: " .. result)
end

GetRankInGroup

Hasil

A função GetRankInGroup Player retorna o rank do jogador no grupo como um inteiro entre 0 e 255, onde 0 é um não-membro e 255 é o dono do grupo.

Usar isso em um Script, em oposição a um LocalScript, não lhe dará a informação mais atualizada.Se um jogador deixa um grupo enquanto está no jogo, o GetRankInGroup ainda pensará que está nesse grupo até que ele saia.No entanto, isso não ocorre ao usar com um LocalScript.

Isso ocorre porque o método armazena resultados em cache, então várias chamadas de GetRankInGroup no mesmo jogador com o mesmo ID de grupo produzirão o mesmo resultado que quando o método foi chamado pela primeira vez com o ID de grupo dado.O comportamento de cache é baseado em pares: um servidor não compartilha o mesmo cache de um cliente.

Parameter

groupId: number

O groupId do grupo especificado.


Memberikan nilai

Classificação do jogador no grupo.

Contoh Kode

How to Check a Player's Rank in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:GetRankInGroup(2) == 255 then
print("Player is the owner of the group, 'LOL'!")
else
print("Player is NOT the owner of the group, 'LOL'!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GetRoleInGroup

Hasil

A função GetRoleInGroup Player retorna o papel do jogador no grupo como uma string ou convidado se o jogador não faz parte do grupo.

Usar isso em um Script, em oposição a um LocalScript, não lhe dará a informação mais atualizada.Se um jogador deixa um grupo enquanto está no jogo, o GetRoleInGroup ainda pensará que está nesse grupo até que ele saia.No entanto, isso não ocorre ao usar com um LocalScript.

Isso ocorre porque o método armazena resultados em cache, então várias chamadas de GetRoleInGroup no mesmo jogador com o mesmo ID de grupo produzirão o mesmo resultado que quando o método foi chamado pela primeira vez com o ID de grupo dado.O comportamento de cache é baseado em pares: um servidor não compartilha o mesmo cache de um cliente.

Parameter

groupId: number

O groupId do grupo especificado.


Memberikan nilai

O papel do jogador no grupo especificado, ou Convidado se o jogador não for um membro.

Contoh Kode

How to Check a Player's Role in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player is ranked as '", player:GetRoleInGroup(2), "' in group, 'LOL'!")
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsFriendsWith

Hasil

Essa função envia um pedido ao site do Roblox perguntando se um jogador é amigo de outro usuário, dado o Player.UserId desse usuário.Essa função armazena resultados em cache, de modo que várias chamadas da função no mesmo jogador com o mesmo Player.UserId podem não produzir o resultado mais atual.Isso não acontece quando usado em um LocalScript.

Parameter

userId: number

O Player.UserId do jogador especificado.


Memberikan nilai

Um booleano indicando se um jogador é amigo do usuário especificado.

Contoh Kode

How to Check if a Player is a Friend

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsFriendsWith(146569) then
print(player.Name .. " is friends with gordonrox24!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsInGroup

Hasil

A função IsInGroup Player envia um pedido ao site do Roblox perguntando se um jogador é membro de um grupo, dado o ID desse grupo.

Usar isso em um Script, em oposição a um LocalScript, não lhe dará a informação mais atualizada.Se um jogador deixa um grupo enquanto está no jogo, o IsInGroup ainda pensará que está nesse grupo até que ele saia.No entanto, isso não ocorre ao usar com um LocalScript.

Isso ocorre porque o método armazena resultados em cache, então várias chamadas de IsInGroup ao mesmo jogador com o mesmo ID de grupo produzirão o mesmo resultado que quando o método foi chamado pela primeira vez com o ID de grupo dado.O comportamento de cache é baseado em pares: um servidor não compartilha o mesmo cache de um cliente.

Parameter

groupId: number

O groupId do grupo especificado.


Memberikan nilai

Um booleano que indica se o jogador está no grupo especificado.

Contoh Kode

How to Check if a Player is in a Group

local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsInGroup(7) then
print("Player is in the Roblox Fan club!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacter

()
Hasil

A função LoadCharacter Player cria um novo personagem para o jogador, removendo o antigo.Também remove os Backpack e PlayerGui do jogador.

Isso é útil em casos em que você deseja recarregar o personagem sem matar o jogador, como quando você deseja carregar uma nova aparência de personagem depois de alterar a aparência do jogador Player.CharacterAppearance.

Nota: A função é semelhante a Player:LoadCharacterBlocking(), mas o pedido é processado de forma assíncrona em vez de sincronizada.Isso significa que outras tarefas poderão continuar enquanto o personagem está sendo carregado, incluindo a renderização do jogo e quaisquer outras tarefas.Além disso, essa função pode ser usada em um script, enquanto a LoadCharacterBlocking não pode.

Depois de chamar LoadCharacter para um jogador individual, não é recomendado chamá-lo novamente para o mesmo jogador até que o evento Player.CharacterAppearanceLoaded desse jogador tenha sido disparado

Ordem de carregamento de personagem

Chamar o Player:LoadCharacter() com um Avatar R15 dispara eventos na seguinte ordem (Nota: a ordem do R6 é diferente):

  1. Jogador.Personagem conjuntos
  2. Fogos de Personagem Adicionados do Jogador
  3. Jogador.Changed dispara com um valor de "Personagem"
  4. A aparência do personagem é inicializada
  5. Jogador.AppearanceCharacterLoaded dispara
  6. Character.Parent define ao DataModel
  7. A construção de personagens e as escalas de personagem
  8. O personagem se move para o local de spawn
  9. CarregarPersonagem retorna

Memberikan nilai

()

Contoh Kode

Turn Off Auto-Loading and Simulate Character Respawn

local Players = game:GetService("Players")
local RESPAWN_DELAY = 5
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
task.wait(RESPAWN_DELAY)
player:LoadCharacter()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacter()
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacterWithHumanoidDescription

()
Hasil

Esta função gera um avatar para que ele tenha tudo equipado no passado em HumanoidDescription .

Depois de chamar LoadCharacterWithHumanoidDescription para um jogador individual, não é recomendado chamar a função novamente para o mesmo jogador até que o evento Player.CharacterAppearanceLoaded desse jogador tenha sido disparado.

Veja também:

Parameter

humanoidDescription: HumanoidDescription

Um HumanoidDescription que contém traços como partes do corpo/cores, escalonamento de corpo, acessórios, roupas e animações que serão equipados ao personagem carregado.


Memberikan nilai

()

Contoh Kode

Spawn Characters With HumanoidDescription

local Players = game:GetService("Players")
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)

RequestStreamAroundAsync

()
Hasil

Para experiências onde o streaming de instância está habilitado, solicitações que o servidor transmita para as regiões do jogador (partes e terreno) ao redor da localização especificada X , Y , Z na 3D mundo.É útil se a experiência souber que o CFrame do jogador será definido na localização especificada em um futuro próximoSem fornecer a localização com essa chamada, o jogador pode não ter transmitido conteúdo para o destino, resultando em uma pausa de streaming ou em outro comportamento indesejável

O efeito dessa chamada será temporário e não há garantias de o que será transmitido ao redor do local especificado.Limites de memória do cliente e condições de rede podem afetar o que estará disponível no cliente.

Precaução de Uso

Solicitar streaming em torno de uma área não é uma garantia de que o conteúdo estará presente quando a solicitação for concluída, pois o streaming é afetado pela largura de banda da rede do cliente, limitações de memória e outros fatores.

Parameter

position: Vector3

Localização do mundo onde o streaming é solicitado.

timeOut: number

Tempo de espera opcional para a solicitação.

Nilai Default: 0

Memberikan nilai

()

Acara

CharacterAdded

O evento Personagem Adicionado é acionado quando o personagem de um jogador é gerado (ou respawnado).Este evento dispara logo após definir Player.Character para um valor não nil ou chamar Player:LoadCharacter(), que é antes do personagem ser pai do Workspace.

Isso pode ser usado ao lado do evento Player.CharacterRemoving, que dispara logo antes que o personagem de um jogador seja removido, geralmente após a morte.Como tal, ambos os eventos podem potencialmente disparar muitas vezes à medida que os jogadores morrem e reaparecem em um lugar.Se você quiser detectar quando um jogador se junta ou sai do jogo, use os eventos Players.PlayerAdded e Players.PlayerRemoving em vez disso.

Observe que o Humanoid e suas partes do corpo padrão (cabeça, torso e membros) existirão quando este evento for disparado, mas itens de roupa como Hats , Shirts e Pants podem levar alguns segundos para serem adicionados ao personagem.Conecte Instance.ChildAdded no personagem adicionado para detectá-los ou aguarde o evento Player.CharacterAppearanceLoaded para ter certeza de que o personagem tem tudo equipado

Parameter

character: Model

Uma instância do personagem que foi gerada/ressurgida.


Contoh Kode

Detecting Player Spawns and Despawns

local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Respawn at Despawn Location

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- This table maps "Player" objects to Vector3
local respawnLocations = {}
local function onCharacterAdded(character)
local player = Players:GetPlayerFromCharacter(character)
-- Check if we saved a respawn location for this player
if respawnLocations[player] then
-- Teleport the player there when their HumanoidRootPart is available
local hrp = character:WaitForChild("HumanoidRootPart")
-- Wait a brief moment before teleporting, as Roblox will teleport the
-- player to their designated SpawnLocation (which we will override)
RunService.Stepped:wait()
hrp.CFrame = CFrame.new(respawnLocations[player] + Vector3.new(0, 3.5, 0))
end
end
local function onCharacterRemoving(character)
-- Get the player and their HumanoidRootPart and save their death location
local player = Players:GetPlayerFromCharacter(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
respawnLocations[player] = hrp.Position
end
end
local function onPlayerAdded(player)
-- Listen for spawns/despawns
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
local function onPlayerRemoved(player)
-- Forget the respawn location of any player who is leaving; this prevents
-- a memory leak if potentially many players visit
respawnLocations[player] = nil
end
-- Note that we're NOT using PlayerRemoving here, since CharacterRemoving fires
-- AFTER PlayerRemoving, we don't want to forget the respawn location then instantly
-- save another right after
Players.PlayerAdded:Connect(onPlayerAdded)
Players.ChildRemoved:Connect(onPlayerRemoved)
Accessory Remover

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

CharacterAppearanceLoaded

Este evento é acionado quando a aparência completa de um Player.Character foi inserida.

Um Player.Character geralmente tem uma gama de objetos modificando sua aparência, incluindo Accoutrements , Shirts , Pants e CharacterMeshes .Este evento será acionado quando todos esses objetos forem inseridos no Player.Character .

Este evento só é disparado no servidor.

Um uso para este evento é garantir que todos os acessórios tenham sido carregados antes de destruí-los. Veja abaixo um exemplo disso.

Parameter

character: Model

O Class.Player.Character``Class.Model .


Contoh Kode

Remove Accessories After Loading

local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

CharacterRemoving

O evento Remoção de Personagem é acionado logo antes que o personagem de um jogador seja removido, como quando o jogador está sendo respawnado.

Este evento pode ser usado ao lado do evento Player.CharacterAdded, que é acionado quando o personagem de um jogador é gerado ou respawnado.Por exemplo, se você quiser imprimir uma mensagem sempre que um jogador aparecer e morrer:


local Players = game:GetService("Players")
local function onCharacterSpawned(player)
print(player.Name .. " is spawning")
end
local function onCharacterDespawned(player)
print(player.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function()
onCharacterSpawned(player)
end)
player.CharacterRemoving:Connect(function()
onCharacterDespawned(player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Este evento só se preocupa com o Character de um Player.Se você precisar monitorar quando um jogador entra/sai do jogo, use os eventos Players.PlayerAdded e Players.PlayerRemoving.

Parameter

character: Model

Uma instância do personagem que está sendo removido.


Contoh Kode

Player.CharacterRemoving

game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)

Chatted

O evento Conversado é acionado quando um Player tipos uma mensagem e pressiona Enter na barra de chat fornecida pelo Roblox.Isso é feito usando algumas dependências de Luau pelo script de chat padrão.Você pode impedir que os jogadores conversem usando StarterGui:SetCoreGuiEnabled() e desabilitando o Chat Enum.CoreGuiType .

Comandos de bate-papo

Usando este evento e algumas funções de manipulação de corda como string.sub() e string.lower(), é possível criar comandos de chat, mesmo com argumentos como nomes de jogadores.Normalmente, os comandos são prefixados como heal PlayerName .Para verificar um prefixo em uma string, use string.sub() na mensagem para verificar uma substring da mensagem: string.sub(message, 1, 6) == "/heal " (note a inclusão do espaço).Então, extraia o resto do comando usando string.sub() novamente: string.sub(message, 7) será igual ao nome do jogador.Verifique se esse jogador existe e, se sim, execute a ação do comando (neste exemplo, curando-os).Verifique os exemplos de códigos para comandos de bate-bate.

Filtrando

O texto da mensagem disparado com este evento é sem filtro .Se você estiver exibindo a entrada do jogador, como o chat, para outros jogadores de qualquer forma, deve ser filtrada usando Chat:FilterStringAsync() .Tenha isso em mente ao criar seus próprios sistemas de chat; se o seu jogo não filtrar corretamente o chat, pode ter ação de moderação tomada contra ele.

Parameter

message: string

O conteúdo da mensagem que o jogador digita no chat.

recipient: Player

Descontinuado. Para mensagens sussurradas, este foi o Jogador que era o alvo pretendido da mensagem de chat.


Contoh Kode

Player.Chatted

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onChatted(message)
-- do stuff with message and player
print(message)
end
player.Chatted:Connect(onChatted)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Playing/Spectating Teams

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Join Team Command

local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Idled

Este evento dispara aproximadamente dois minutos depois que a classe do motor de jogo classifica o player como inactivo.O tempo é o número de segundos que decorreram desde esse ponto.O evento continua a disparar a cada 30 segundos enquanto o jogador permanece inactivo.

Este evento só é disparado em scripts de cliente, não em scripts de servidor; use um RemoteEvent para notificar o servidor de jogadores inativos.

O Roblox desconecta automaticamente os jogadores que estiveram inativos por pelo menos 20 minutos, então este evento é útil para alertar os jogadores que eles vão ser desconectados em breve, desconectando os jogadores antes desses 20 minutos ou outras funcionalidades de longe do teclado (AFK).

Para rastrear com que frequência ocorrem desconexões automáticas, tente correlacionar esse evento com ocorrências de Players.PlayerRemoving .

Parameter

time: number

O tempo em segundos que o jogador esteve inativo.


Contoh Kode

Player.Idled

local Players = game:GetService("Players")
local function onIdled(idleTime)
print(`Player has been idle for {idleTime} seconds`)
if idleTime > 900 then
-- warn player that they've been idle for 15 minutes
-- and will be disconnected in another 5
end
end
Players.LocalPlayer.Idled:Connect(onIdled)

OnTeleport

Disparado quando o Estado de Teleporte de um jogador muda. Este evento é útil para detectar se uma teleportação foi bem-sucedida.

O que é o TeleportState?

Quando um pedido de teletransporte é feito usando TeleportService, há uma série de etapas antes que o Player seja teletransportado.A fase atual é representada pelo valor Enum.TeleportState que é dado por OnTeleport.Veja abaixo um exemplo prático disso.

Parameter

placeId: number

O ID do local para o qual o Player está sendo teletransportado.

spawnName: string

O nome do spawn para se teletransportar, se TeleportService:TeleportToSpawnByName() for usado.


Contoh Kode

Player.OnTeleport

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local playerOnTeleport = player
player.OnTeleport:Connect(function(teleportState, _placeId, _spawnName)
if teleportState == Enum.TeleportState.Started then
print("Teleport started (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.WaitingForServer then
print("Teleport waiting for server (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.InProgress then
print("Teleport in progress (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.Failed then
print("Teleport failed! (" .. playerOnTeleport.Name .. ")")
end
end)
end)