Player
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Un objeto Jugador es un cliente que está conectado actualmente. Estos objetos se agregan al servicio Players cuando un nuevo jugador se conecta, luego se eliminan cuando finalmente se desconectan del servidor.
La propiedad Instance.Name refleja el nombre de usuario del jugador. Cuando se guardan informos sobre un jugador, deberás usar su Player.UserId ya que es posible que un jugador cambie su nombre de usuario.
Hay varios métodos similares en el servicio Players para trabajar con objetos de Jugador. Usa estos sobre sus respectivos métodos Instance :
- Puedes obtener una tabla de objetos de Jugador actual usando Players:GetPlayers() ; de nuevo, usa esto en lugar de Instance:GetChildren() .
- Para detectar la adición de objetos de jugador, se recomienda utilizar el evento Players.PlayerAdded (en lugar de Instance.ChildAdded en el servicio Players).
- Del mismo modo, puede detectar la eliminación de los objetos del jugador usando Players.PlayerRemoving, que se activa justo antes de que se elimine el jugador (en lugar de Class.Instance.ChildRemoved que se activa después). Esto es importante si está guardando información sobre el jugador que podría ser eliminado o limpiado en el momento de la eliminación.
Amostras de código
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)
Resumo
Propriedades
Describe la edad de la cuenta del jugador en días.
Determina si el personaje de un jugador que usa un dispositivo móvil saltará automáticamente al golpear un obstáculo.
La distancia máxima que la cámara del jugador está autorizada a acercar.
La distancia mínima que la cámara del jugador está autorizada para acercar.
Cambia el modo de la cámara a primer o tercer persona.
Determina si la apariencia del personaje se cargará cuando el jugador se genera. Si se desactiva, el jugador aparecerá con una aspecto, lookpredeterminada.
Un Model controlado por el jugador que contiene un Humanoid , partes del cuerpo, scripts y otros objetos.
Determina el ID de usuario de la cuenta cuya apariencia de personaje se usa para un jugador de character .
Establece cómo las manijas de cámara predeterminadas manejan los objetos entre la cámara y el jugador.
Determina el modo de movimiento de la cámara del jugador al usar una versión de escritorio de Roblox.
Determina el modo de movimiento del personaje del jugador al usar una versión de escritorio de Roblox.
Determina si el jugador puede alternar el bloqueo del mouse.
Determina el modo de movimiento de la cámara del jugador al usar un dispositivo de toque.
Determina el modo de movimiento del personaje del jugador al usar un dispositivo de toque.
El nombre de usuario asociado con el jugador.
Describe el ID de usuario del jugador que fue seguido a un juego por un jugador.
Si el modo de juego del cliente está actualmente en pausa.
Indica si un jugador tiene un Emblema de verificación.
Establece la distancia en la que este jugador verá las barras de salud de otros Humanoid. Si se establece en 0, las barras de salud no se mostrarán.
Esta propiedad muestra el ID de la ubicación que el jugador local ha establecido para su cuenta Roblox.
Describe el introducirde membresía de la cuenta.
Establece la distancia en la que este jugador verá los nombres de otros Humanoid. Si se establece en 0, los nombres están ocultos.
Determina si el jugador está en un equipo específico.
Establece la parte para enfocar la replicación alrededor.
Si establecer, el jugador reaparecerá en el SpawnLocation dado.
Determina el Equipo con el que se asocia un Jugador.
Determina el Equipo con el que se asocia un Jugador.
Un número de identificación único asignado a todas las cuentas de usuarios.
Métodos
Remove todos los accesorios y otros objetos de apariencia de personaje de un jugador.
Restablece la distancia entre la cabeza del personaje y el punto Vector3 dado. Restablece 0 si el jugador no tiene personaje.
Regresa un diccionario que contiene información que describe cómo se une el Player a la experiencia.
Devuelve el mouse que el cliente está usando.
Restablece la latencia de red aislada en segundos.
Regresa si el aspecto del personaje del jugador se ha cargado o no.
Devuelve si el jugador está verificado con señales del mundo real.
Desconecta forzadamente a un jugador del juego, proporcionando opcionalmente un mensaje.
Hace que el personaje del jugador camine en la dirección proporcionada hasta que se detenga, o se interrumpa el jugador (usando sus controles).
Establece la Edad de la cuenta del jugador.
Establece si el jugador ve chats filtrados o no, en lugar de chats normales.
Regresa un diccionario de amigos en línea.
Devuelve el rango del jugador en el grupo como un número entre 0 y 255, donde 0 es un no miembro y 255 es el propietario del grupo.
Devuelve el papel del jugador en el grupo como una cadena, o "Invitado" si el jugador no es parte del grupo.
Comprueba si un jugador es un amigo del usuario con el Player.UserId dado.
Comprueba si un jugador es un miembro de un grupo con el ID proporcionado.
Crea un nuevo personaje para el jugador, eliminando el viejo. También limpia el Backpack y PlayerGui del jugador.
Genera un avatar para que tenga todo equipado en el pasado en HumanoidDescription .
Las solicitudes que el servidor envía al jugador alrededor de la ubicación especificada.
Eventos
Se activa cuando se genera o reaparece el personaje de un jugador.
Se activa cuando se ha insertado la apariencia completa de un Player.Character
Se ha disparado justo antes de que se elimine el personaje de un jugador.
Dispara cuando un jugador chatea en el juego usando la barra de chat proporcionada por Roblox.
Este evento se activa aproximadamente dos minutos después de que el motor de juego clasifique a player como inactividad. El tiempo es el número de segundos que han pasado desde ese punto.
Se activa cuando el estado de teletransporte de un jugador cambia.
Propriedades
AccountAge
La edad de la cuenta es una propiedad de Player que describe cuánto tiempo ha estado registrado una cuenta de jugador en días. Se establece con la función Player:SetAccountAge(), que no se puede acceder a ella por scripts.
Esta propiedad es útil para mostrar condicionalmente el contenido de los jugadores de Roblox, como tutoriales.
Amostras de código
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
La propiedad AutoJumpEnabled determina si el Player.Character de un Class.Player usando un dispositivo móvil saltará automáticamente cuando chocan con un obstáculo. Esto puede hacer que los niveles sean más navegables mientras están en un dispositivo móvil.
Cuando el jugador se une al juego, el valor StarterPlayer.AutoJumpEnabled determina el estado inicial de esta propiedad. Luego, esta propiedad determina el valor de la propiedad Humanoid.AutoJumpEnabled de la propiedad Player.Character en el regeneración. En otras palabras, es posible establecer el comport
Amostras de código
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
La propiedad CameraMaxZoomDistance Player establece la distancia máxima en studs de la cámara puede estar del personaje con las cámaras predeterminadas.
En otras palabras, controla la distancia máxima que la cámara del jugador está autorizada a acercar.
El valor predeterminado de esta propiedad se establece por StarterPlayer.CameraMaxZoomDistance . Si este valor se establece para un valor inferior a Player.CameraMinZoomDistance , se aumentará a CameraMinZoomDistance.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
La propiedad CameraMinZoonDistance Player establece la distancia mínima en studs de la cámara que puede estar del personaje con las cámaras predeterminadas.
En otras palabras, controla la distancia mínima que la cámara del jugador está autorizada a acercar.
El valor predeterminado de esta propiedad se establece por StarterPlayer.CameraMinZoomDistance . Si este valor se establece para un valor superior a Player.CameraMaxZoomDistance se reducirá a CameraMaxZoomDistance.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
La propiedad Modo de cámara establece el modo de cámara del jugador, por defecto a la tercera persona.
Tercera Persona
En el modo de tercera persona por defecto ( Enum.CameraMode.Classic ) se puede ver el personaje en la cámara. Mientras que en este modo, el comportamiento predeterminado es:
- Los jugadores pueden hacer clic con el botón derecho y arrastrar (ratón), tocar y arrastrar (móvil), usar el joystick secundario (controlador para juego), o presionar las flechas izquierda/derecha (teclado) para girar la cámara alrededor de su personaje.
- Cuando un jugador mueve su personaje, se enfrenta en la dirección de movimiento correspondiente.
- Los jugadores pueden acercar y alejar de forma gratuita, incluso a la primera persona en full zoom en.
Primera Persona
En el modo de primera persona ( Enum.CameraMode.LockFirstPerson ) la cámara del jugador está acercada todo el tiempo. A menos que haya una GUI visible con la propiedad GuiButton.Modal establecida a true , mover el ratón, tocar-arrastrar en el móvil o usar el joystick secundario en un gamepad girará la cámara alrededor del personaje.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
La propiedad CanLoadCharacterAppearance Player determina si la apariencia del personaje se carga cuando el jugador se genera. El valor predeterminado de esta propiedad es establecido por StarterPlayer.LoadPlayerAppearance .
Si true , el personaje cargará la apariencia del jugador que coincida con el jugador's Player.CharacterAppearanceId .
Si falso , el jugador aparecerá con un aspecto predeterminado - un modelo de personaje gris sin sombreros, camisas, pantalones, etc.
Intentar establecer la propiedad después de que el personaje se haya generado no cambiará el personaje, debe llamar a Player:LoadCharacter() para cargar la nueva aspecto, look.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
La propiedad jugador contiene una referencia a un Model que contiene un Humanoid , partes del cuerpo, scripts y otros objetos requeridos para simular
Inicialmente esta propiedad es nil y se establece cuando el personaje del jugador se genera por primera vez. Usa el evento Player.CharacterAdded para detectar cuando se carga correctamente el personaje del jugador, y el evento Player.CharacterRemoving para detectar cuando el personaje está a punto de desaparecer. Evita usar 1>
Nota que LocalScripts que se clonan de StarterGui o StarterPack
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
Esta propiedad determina el ID de usuario de la cuenta cuyo personaje aparece en el juego para el personaje de un jugador. Por defecto, esta propiedad es el Player.Character, que usa el avatar del jugador como se creó en el sitio web de Roblox.
Cambiar esta propiedad a el ID de usuario de otra cuenta hará que el jugador aparezca con la apariencia de esa cuenta (sombreros, camisas, pantalones, etc).
Los juegos también pueden alternar si la apariencia del personaje de un jugador se carga en el juego al cambiar la propiedad StarterPlayer.LoadCharacterAppearance .
Amostras de código
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
Define cómo los scripts de cámara predeterminados manejan los objetos entre la cámara y el sujeto de la cámara. Establecido por StarterPlayer.DevCameraOcclusionMode y no se puede cambiar para los jugadores individuales.
El valor predeterminado es Zoom (0). Consulte Enum.DevCameraOcclusionMode para obtener una lista de los modos disponibles.
DevComputerCameraMode
La propiedad DevComputerCameraMode determina la manera en que un jugador mueve su cámara cuando usa un dispositivo con un mouse y teclado. Vea Enum.DevComputerCameraMovementMode para una descripción de cada modo de control de cámara disponible. Esta propiedad no se puede configurar usando un LocalScript (debe establecerse en el servidor usando un Script).
El valor predeterminado de esta propiedad se determina por StarterPlayer.DevComputerCameraMovementMode .
La palabra "Computer" en este nombre de propiedad se refiere a dispositivos no- TouchEnabled , no- GamepadEnabled .
Cuando se establece a Selección de usuario , un jugador puede elegir entre cualquier modo de control (excepto Scriptable ) en la configuración del juego de Roblox. En general, es una buena idea permitir que los jugadores elijan su modo de control para maximizar la accesibilidad.
Es posible crear un esquema de control personalizado al establecer esta propiedad en Scriptable .
Esta propiedad no afecta a los jugadores que usan un dispositivo de toque habilitado. Vea Player.DevTouchCameraMode en su lugar.
Amostras de código
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
La propiedad DevComputerMovementMode determina la manera en que un jugador mueve su personaje cuando usa un dispositivo con un mouse y teclado. Vea Enum.DevComputerMovementMode para una descripción de cada modo de movimiento disponible. Esta propiedad no se puede configurar usando un LocalScript (debe establecerse en el servidor usando un Script).
El valor predeterminado de esta propiedad se determina por StarterPlayer.DevComputerMovementMode .
La palabra «Computer» en este nombre de propiedad se refiere a los dispositivos no TouchEnabled .
Cuando se establece a Selección de usuario , un jugador puede elegir entre cualquier modo de control (excepto Scriptable ) en la configuración del juego de Roblox. En general, es una buena idea permitir que los jugadores elijan su modo de control para maximizar la accesibilidad.
Es posible crear un esquema de control personalizado al establecer esta propiedad en Scriptable .
Esta propiedad no afecta a los jugadores que usan un dispositivo habilitado para tocar. Vea Player.DevTouchMovementMode en su lugar.
Amostras de código
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
Esta propiedad determina si un jugador puede alternar el bloqueo de Mouse con la presión de Shift . Un jugador puede desactivar el interruptor de bloqueo del mouse en las configuraciones del juego de Roblox. Por defecto, esta propiedad está configurada como el valor de StarterPlayer.EnableMouseLockOption . Esto se
Cuando el bloqueo del mouse está habilitado, el cursor del jugador está bloqueado en el centro de la pantalla. Mover el mouse girará la cámara alrededor del jugador character , y el personaje se alineará con la dirección de la cámara camera . También desplaza la vista de la cámara justo sobre el hombro derecho del personaje.
Nota que las API relacionadas con el bloqueo de shift están en el proceso de ser desusar, en desuso (noun), por lo que se recomienda usar UserInputService.MouseBehavior en lugar de bloquear el ratón.
Amostras de código
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)
DevTouchCameraMode
La propiedad DevTouchCameraMode determina la manera en que un jugador mueve su cámara cuando utiliza un dispositivo TouchEnabled . Consulte Enum.DevTouchCameraMovementMode para una descripción de cada modo de control de cámara disponible. Esta propiedad no se puede configurar utilizando un LocalScript (debe estable
El valor predeterminado de esta propiedad se determina por StarterPlayer.DevTouchCameraMovementMode .
Cuando se establece a Selección de usuario , un jugador puede elegir entre cualquier modo de control (excepto Scriptable ) en la configuración del juego de Roblox. En general, es una buena idea permitir que los jugadores elijan su modo de control para maximizar la accesibilidad.
Es posible crear un esquema de control personalizado al establecer esta propiedad en Scriptable .
Esta propiedad no afecta a los jugadores que no están usando un dispositivo habilitado para tocar. Vea Player.DevComputerCameraMovementMode en su lugar.
Amostras de código
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
La propiedad DevTouchMovementMode determina la manera en que un jugador mueve su personaje cuando utiliza un dispositivo TouchEnabled. Vea Enum.DevTouchMovementMode para una descripción de cada modo de control de movimiento disponible. Esta propiedad no se puede configurar con un LocalScript (debe establecerse en el
El valor predeterminado de esta propiedad se determina por StarterPlayer.DevTouchMovementMode .
Cuando se establece a Selección de usuario , un jugador puede elegir entre cualquier modo de control (excepto Scriptable ) en la configuración del juego de Roblox. En general, es una buena idea permitir que los jugadores elijan su modo de control para maximizar la accesibilidad.
Es posible crear un esquema de control personalizado al establecer esta propiedad en Scriptable .
Esta propiedad no afecta a los jugadores que no estén usando un dispositivo habilitado para tocar. Vea Player.DevComputerMovementMode en su lugar.
Amostras de código
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
El DisplayName es una propiedad de Player que contiene el nombre de la pantalla del usuario autenticado asociado con el objeto Player. A diferencia de los nombres de usuario, los nombres de pantalla son nombres no únicos que muestran los jugadores a otros. Si el usuario de Roblox no ha elegido uno, la propiedad leerá el mismo que la propiedad 2>Name
Nota:
- Dado que los nombres de los mostradores no son únicos, es posible que dos jugadores en una sola instancia tengan nombres idénticos. Si necesita un identificador globalmente único para un jugador, use Player.UserId (que es estático) o Player.Name (que es el nombre de usuario actual) en su lugar.
- Los personajes generados con Player.LoadCharacter o por el motor de Roblox tendrán su propiedad de Humanoid.DisplayName asignada a la propiedad de Player.DisplayName.
- Los nombres de los párametros pueden tener caracteres no deseados en la cadena. Consulte UTF-8 para obtener más información sobre cómo trabajar con cadenas con caracteres no deseados.
FollowUserId
El FollowUserId es una propiedad de Player que contiene el Player.UserId del usuario que un jugador siguió en el juego. Si el jugador no siguió a nadie en el juego, esta propiedad será 0. Esta propiedad es útil para alertar a los jugadores que han sido seguidos por otro jugador en el juego.
Puedes obtener el nombre del jugador seguido usando este ID de usuario y la función Players:GetNameFromUserIdAsync().
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local hint = Instance.new("Hint")
hint.Parent = player:WaitForChild("PlayerGui")
hint.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if hint then
hint:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GameplayPaused
La propiedad GameplayPaused indica si el jugador está actualmente en un estado de pausa en un lugar con StreamingEnabled activado. Se configura en el cliente, pero se replica al servidor. Para determinar el estado de pausa, puede utilizar esta propiedad.
Véase también:
- Workspace.StreamingEnabled que controla si se habilita o no la transmisión de contenido
- Workspace.StreamingIntegrityMode y Enum.StreamingIntegrityMode para más información sobre la interrupción del juego.
HasVerifiedBadge
La propiedad de la insignia verificada Player indica si el jugador tiene una Emblema de verificación.
HealthDisplayDistance
La propiedad HealthDisplayDistance Player establece la distancia en studs en los que este jugador verá otras barras de salud Humanoid . Si se establece a 0, las barras de salud no se mostrarán. Esta propiedad está predeterminada para establecer StarterPlayer.HealthDisplayDistance por defecto.
Si la barra de salud de un Humanoid es visible, puede establecer el tipo de visualización usando Humanoid.DisplayDistanceType .
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
La propiedad LocaleId Player muestra el ID de la ubicación que el jugador local ha establecido para su cuenta Roblox. Contiene una cadena con el código de dos letras (por ejemplo, "en-us") para la ubicación.
Esto se puede usar para determinar el geógrafo demográfico de la base de jugadores de tu juego, y también es el idioma que se usará para la localización automática (ver GuiBase2d.AutoLocalize ) del contenido en la experiencia. Esta propiedad permite acceder al idioma del jugador desde el servidor.
También se ve LocalizationService.RobloxLocaleId, el ID de la ubicación usado para localizar el contenido interno. Este será un valor diferente cuando Roblox aún no soporte interna y localmente el idioma del jugador.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
Esta propiedad solo se puede leer para determinar la membresía (no se puede establecer para otro introducirde membresía). Contiene un Enum.MembershipType枚 del introducirde membresía de la cuenta.
Amostras de código
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
La propiedad NameDisplayDistance StarterPlayer establece la distancia en studs en los que este jugador verá otros nombres Humanoid . Si la propiedad se establece a 0, los nombres están ocultos. Esta propiedad se establece por defecto a StarterPlayer.NameDisplayDistance por defecto.
Si la barra de salud de un Humanoid es visible, puede establecer el tipo de visualización usando Humanoid.DisplayDistanceType .
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
La propiedad Neutral determina si el jugador está en un equipo específico.
- Cuando true , el jugador no está en un equipo específico. Esto también significa que la propiedad Player.Team será nulo y el color de la propiedad Player.TeamColor será blanco.
- Cuando falso , el jugador está en un equipo específico. La propiedad Player.Team corresponddrá a la Team que el jugador está en, así como la propiedad 1> Class.Player.TeamColor1> .
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end
ReplicationFocus
La propiedad ReplicationFocus Player establece la parte para enfocar la replicación alrededor de un jugador. Los diferentes sistemas de Roblox que se comunican a través de la red (como la física, la transmisión en vivo, etc) se replican a diferentes tasas dependiendo de la cercanía de los objetos al enfoque de replicación.
Cuando esta propiedad es nulo, se restablece a su comportamiento por defecto que es tratar el personaje del jugador local como el enfoque de replicación.
Esta propiedad solo se debe establecer en el servidor con un Script, no un LocalScript. Nota que esta propiedad no cambia o actualiza la propiedad de red de partes.
Amostras de código
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
Si se establece, el jugador reaparecerá en el SpawnLocation dado. Esta propiedad solo se puede establecer a través de Lua y debe contener una referencia a un SpawnLocation válido, que debe cumplir los siguientes criterios:
- Hijo de Workspace
Si RespawnLocation no se ha establecido en un SpawnLocation válido, entonces la lógica de generación predeterminada se aplicará. Para obtener más información, consulte la página de SpawnLocation .
Alternativas a RespawnLocation
- Un Player se generará desde SpawnLocations que pertenecen a su equipo. En algunos casos, puede ser más sencillo cambiar el Player.Team del jugador en su lugar.
- Im implementa tu propia lógica de spawn personalizada usando PVInstance:PivotTo() para mover manualmente el Player.Character .
Amostras de código
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
Team
La propiedad Equipo es una referencia a un objeto Team dentro del servicio Class.Teams
Amostras de código
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)
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
La propiedad TeamColor determina con qué equipo se asocia un jugador según el Class.Team.TeamColor de ese equipo. Al cambiar esta propiedad, cambiará Class.Player.Team según el equipo que tenga el mismo Datatype.BrickColor para su Class.Team.TeamColor . Si no hay un objeto de equipo que tenga el color de equipo asociado, el jugador no se asociará con un equipo.
A menudo es una mejor idea establecer Player.Team a los respectivos Team en lugar de usar esta propiedad. Establecer esta propiedad a menudo conduce a la repetición del mismo valor de color de ladrillo para un cierto equipo en muchos scripts; esto es algo que desea evitar cuando se adhiere al principio "No se repita a sí mismo" (DRY).
Amostras de código
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)
UserId
El Id de Usuario es una propiedad de Player que contiene un número integro que únicamente y consistentemente identifica cada cuenta de usuario en Roblox. A diferencia del Instance.Name de un jugador, que puede cambiar según el nombre de usuario del usuario, este valor nunca cambiará por la misma cuenta.
Esta propiedad es esencial al guardar/cargar datos del jugador usando GlobalDataStores . Usa la clave de almacenamiento de datos del jugador para que cada jugador tenga una clave única.
Amostras de código
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
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
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)
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)
Métodos
ClearCharacterAppearance
La función ClearCharacterAppearance elimina todos los Accessory, Shirt, Pants, 1> Class.CharacterMesh1> y <
No elimina t-shirts , head meshes, o caras.
Devolução
Amostras de código
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
La función DistanceFromCharacter Player devuelve la distancia entre la cabeza del personaje y el punto de datos Datatype.Vector3. Devuelve 0 si el jugador no tiene Vector3 .
Esto es útil para determinar la distancia entre un jugador y otro objeto o ubicación en el juego.
Si desea determinar la distancia entre dos instancias o posiciones no jugador, puede usar lo siguiendo:
local distance = (position1 - position2).magnitude
Parâmetros
La ubicación de la que se mide la distancia del jugador.
Devolução
La distancia en studs entre el jugador y la ubicación.
Amostras de código
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
Regresa un diccionario que contiene información que describe cómo el Jugador se une a la experiencia. El diccionario contiene cualquiera de los siguientes campos:
<tbody><tr><th>Juego de fuentes</th><td>número</td><td>El Class.DataModel.GameId de la experiencia que el <code>Jugador</code> teletransportó. Solo presente si el jugador se teletransporta a la experiencia actual y si un servidor llama a la función de teletransporte.</td></tr><tr><th>Identificador de lugar de origen</th><td>número</td><td>El Class.DataModel.PlaceId del lugar donde se teletransportó el <code>Jugador</code>. Solo presente si el jugador se teletransporta al lugar actual y un servidor llama a la función de teletransporte.</td></tr><tr><th>JugadorReferido</th><td>número</td><td>El <code>Class.Player.UserId</code> del jugador que invitó al jugador actual a la experiencia. Usa estos datos para identificar el referente y el modo de pago de la lógica de recompensa.</td></tr><tr><th>Miembros</th><td>matriz/lista</td><td>Un arreglo que contiene los Class.Player.UserId números de los usuarios teletransportados junto con el jugador . Solo presente si el jugador se teletransportó como parte de un grupo.</td></tr><tr><th>Teletransportar datos</th><td>变iante</td><td>Refleja el <code>teleportData</code> especificado en el teletransportaciónoriginal. Útil para compartir información entre los servidores al que se teletransporta el jugador. Solo presente si se especificó el <code>teleportData</code> y un servidor llama a la función de teletransporte.</td></tr><tr><th>Lanzamiento de datos</th><td>cadena</td><td>Una cadena de texto plano o JSON que contiene datos de lanzamiento especificados en una URL <a href="../../../production/promotion/deeplinking.md">de enlace profundo</a> o <code>Class.ExperienceInviteOptions.LaunchData</code> .</td></tr></tbody>
Clave | Tipo de valor | Descripción |
---|
Obtener JoinData y TeleportData
Si un servidor inicia el teletransportacióndel jugador, el diccionario que este método devuelve incluye los datos de teletransporte del jugador. El método Player:GetJoinData() solo se puede usar para obtener los datos del teletransporte en el servidor. Para obtener los datos en el cliente, usa TeleportService:GetLocalPlayerTeleportData().
A diferencia de TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() sólo proporciona datos de teletransporte que cumplen con los siguientes criterios de seguridad:
- Está garantizado de que se haya enviado por un servidor de Roblox en los últimos 48 horas.
- Está garantizado de que se ha enviado con este Player .
- El SourcePlaceId y SourceGameId son garantizados para ser el lugar y el universo de donde se enviaron los datos. Esto significa que puedes verificar que los datos se enviaron desde un lugar aprobado.
A medida que estos datos se transmiten por el cliente, aún puede ser abusado por un explotador. Los datos sensibles, como la moneda del jugador, deben enviarse a través de una solución segura como Almacenes de memoria.
Devolução
Un diccionario que contiene valores de PlaceId y UserId (ver la tabla en la descripción).
Amostras de código
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)
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)
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
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)
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
La función GetMouse Player devuelve el Mouse que el cliente está usando. La instancia del mouse del jugador se puede usar para rastrear la entrada del mouse del usuario, incluidos los clics de los botones izquierdo y derecho del ratón y la ubicación y el movimiento.
El servicio UserInputService proporciona funciones y eventos adicionales para rastrear la entrada del usuario, especialmente para los dispositivos que no usan un ratón.
Nota:
- Este artículo debe usarse en un Class.LocalScript para funcionar como esperado conectado.
- Después de una actualización en julio de 2014, el icono del ratónahora se puede establecer con este método.
Devolução
Amostras de código
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
GetNetworkPing devuelve la latencia de red aislada del Player en segundos. "Ping" es una medida del tiempo que se necesita para enviar los datos desde el cliente al servidor, luego de regreso. No implica la deserialización o el procesamiento de datos.
Para el lado del cliente LocalScripts, esta función solo se puede llamar en el Players.LocalPlayer . Esta función es útil para identificar y debugger problemas que ocurren en escenarios de alta latencia. También es útil para ocultar la latencia, como ajustar la velocidad de lanzamiento de las animaciones para proyectiles.
Devolução
HasAppearanceLoaded
La función HasAppearanceLoaded Player devuelve si la apariencia del jugador Player.Character ha sido cargada o no.
La apariencia de un jugador incluye artículos como el Shirt del jugador, Pants y Accessories .
Esto es útil para determinar si la apariencia de un jugador se ha cargado después de unirse al juego, lo cual se puede rastrear utilizando el evento Players.PlayerAdded .
Devolução
Un valor deBooleano que indica si la apariencia del personaje del jugador se ha cargado o no.
Amostras de código
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
Restablece un valor deBooleano que indica el estado de verificación de ese jugador. Cuando es cierto, el jugador está verificado. La verificación incluye, pero no está limitada a, la verificación de número de teléfono no VOIP o la verificación de identificación del gobierno.
Al implementar IsVerified , ejercita precaución para asegurarte de que la implementación no bloquee inadvertidamente a todos los usuarios no verificados.
Nota que el método solo se puede llamar en el servidor de backend. Al llamarlo desde el cliente, se devolverá un error. Además, este método siempre devolverá false en Studio.
Devolução
Un valor deBooleano que indica si el jugador está verificado.
Amostras de código
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
El método Kick() permite que una experiencia desconecte con gracia un cliente y opcionalmente proporcione un mensaje al usuario desconectado. Esto es útil para moderar a los usuarios abusivos. Solo debe permitir a los usuarios específicos que confíen en usted para que se ejecute este método en otros usuarios.
Llamar a este método en un Player sin argumentos desconecta al usuario del servidor y proporciona un mensaje de aviso predeterminado. Llamar a este método en un Player junto con una cadena como primer argumento reemplaza el mensaje predeterminado con la cadena proporcionada.
Al usar este método desde un LocalScript, solo el cliente del usuario local puede ser expulsado.
Parâmetros
El mensaje para mostrar al usuario al expulsar.
Devolução
Move
La función Move Player hace que el personaje del jugador camine en la dirección dada hasta que se detenga, o se interrumpa el jugador (usando sus controles).
Esto es útil cuando se scripting NPC Humanoids que se mueve alrededor de un mapa - pero no está controlado por la entrada de un jugador real.
Nota que el segundo argumento de la función indica si el proporcionado Vector3 debe mover al jugador relativo a los coordenadas mundiales ( falso ) o el jugador's Camera ( 1> verdadero1> ).
Parâmetros
La dirección del Vector3 que debe herramienta de movimientoel jugador.
Un valor deBooleano que indica si el jugador debe moverse en relación con la cámara del jugador.
Devolução
Amostras de código
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)
SetAccountAge
La función SetAccountAge establece la Player.AccountAge del jugador en días.
Se usa para establecer la propiedad Player que describe cuánto tiempo ha estado registrado una cuenta de jugador en días.
Esto no establece la edad del jugador en la cuenta, sino la edad de la cuenta en sí misma en relación con cuando se creó por primera vez.
Parâmetros
La edad de la cuenta en días.
Devolução
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
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
Este método establece si el jugador ve el chat filtrado por TextService:FilterStringAsync() en lugar de chats normales.
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
Independientemente de si un jugador tiene habilitado el filtrado de chat, todo el chat debería filtrarse por TextService cuando se transmita a otros jugadores o en la pantalla del jugador. TextService:FilterStringAsync()返回一个 TextFilterResult objeto que se puede filtrar según el propósito del mensaje.
Parâmetros
Un valor deBooleano que indica si el jugador ve o no el chat filtrado.
Devolução
GetFriendsOnline
Esta función devuelve un diccionario de amigos en línea, limitado por el valor maxFriends. La función usa una caché de 30 segundos.
En el matriz/listadevuelto, algunos campos solo están presentes para ciertos tipos de ubicación. Por ejemplo, PlaceId no estará presente cuando LocationType esté 0 (sitio web móvil).
<tbody><tr><td><b>VisitorId</b></td><td>número</td><td>El <code>Class.Player.UserId</code> del amistad.</td></tr><tr><td><b>Nombre de usuario</b></td><td>cadena</td><td>El nombre de usuario del amistad.</td></tr><tr><td><b>Nombre de visualización</b></td><td>cadena</td><td>El <code>Nombre de Clase.Player.DisplayName</code> del amistad.</td></tr><tr><td><b>Último en línea</b></td><td>cadena</td><td>Cuando el amigo estuvo en conectadopor última vez.</td></tr><tr><td><b>Está en línea</b></td><td>booleano</td><td>Si el amigo está en conectado.</td></tr><tr><td><b>Última ubicación</b></td><td>cadena</td><td>El nombre de la ubicación actual del amistad.</td></tr><tr><td><b>LugarId</b></td><td>número</td><td>El ID del lugar de la última ubicación del amistad.</td></tr><tr><td><b>Juego de ID</b></td><td>cadena</td><td>El <code>Modelo de datos/Id de trabajo del amigo</code> de la última ubicación del amigo.</td></tr><tr><td><b>Tipo de ubicación</b></td><td>número</td><td>El tipo de ubicación del último lugar del amistad:<table></table></td></tr></tbody>
Nombre | Tipo | Descripción |
---|
Parâmetros
El número máximo de amigos en línea para devolver.
Devolução
Un diccionario de amigos en línea (ver la tabla de arriba).
Amostras de código
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
La función GetRankInGroup Player devuelve el rango del jugador en el grupo como un número entre 0 y 255, donde 0 es un no miembro y 255 es el propietario del grupo.
Usar esto en un Script , en lugar de un LocalScript , no te proporcionará la información más actualizada. Si un jugador deja un grupo mientras está en el juego, GetRankInGroup todavía pensará que están en ese grupo hasta que se salir. Sin embargo, esto no sucede cuando se usa con un LocalScript.
Esto se debe a que el método almacena los resultados, por lo que múltiples llamadas a GetRankInGroup en el mismo jugador con el mismo ID de grupo producirán el mismo resultado que cuando el método se llamó por primera vez con el ID de grupo proporcionado. El comportamiento de caché está en una base per-peer: un servidor no comparte el mismo caché que un cliente.
Parâmetros
El groupId del grupo especificado.
Devolução
El rango del jugador en el grupo.
Amostras de código
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
La función GetRoleInGroup Player devuelve el papel del jugador en el grupo como una cadena, o Invitado si el jugador no es parte del grupo.
Usar esto en un Script , en lugar de un LocalScript , no te proporcionará la información más actualizada. Si un jugador deja un grupo mientras está en el juego, GetRoleInGroup todavía pensará que están en ese grupo hasta que se salir. Sin embargo, esto no sucede cuando se usa con un LocalScript.
Esto se debe a que el método almacena los resultados, por lo que múltiples llamadas de GetRoleInGroup en el mismo jugador con el mismo ID de grupo producirán el mismo resultado que cuando el método se llamó por primera vez con el ID de grupo proporcionado. El comportamiento de caché está en una base per-peer: un servidor no comparte el mismo caché que un cliente.
Parâmetros
El grupoId del grupo especificado.
Devolução
El papel del jugador en el grupo especificado, o Invitado si el jugador no es un miembros.
Amostras de código
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
Esta función envía una solicitud al sitio web de Roblox para preguntar si un jugador es un amigo de otro usuario, dado el Player.UserId de ese usuario. Esta función oculta los resultados para que varias llamadas de la función en el mismo jugador con el mismo Player.UserId no puedan proporcionar el resultado más actualizado. Esto no sucede cuando se usa
Parâmetros
El Player.UserId del jugador especificado.
Devolução
Un valor deBooleano que indica si un jugador es un amigo del usuario especificado.
Amostras de código
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
La función IsInGroup envía una solicitud al sitio web de Roblox para preguntar si un jugador es un miembro de un grupo, dado el ID de ese grupo.
Usar esto en un Script , en lugar de un LocalScript , no te proporcionará la información más actualizada. Si un jugador deja un grupo mientras está en el juego, IsInGroup todavía pensará que están en ese grupo hasta que se salir. Sin embargo, esto no sucede cuando se usa con un LocalScript.
Esto se debe a que el método caché los resultados, por lo que múltiples llamadas a IsInGroup en el mismo jugador con el mismo ID de grupo producirán el mismo resultado que cuando el método se llamó por primera vez con el ID de grupo proporcionado. El comportamiento de caché está en una base per-peer: un servidor no comparte el mismo caché que un cliente.
Parâmetros
El grupoId del grupo especificado.
Devolução
Un valor deBooleano que indica si el jugador está en el grupo especificado.
Amostras de código
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
La función LoadCharacter Player crea un nuevo personaje para el jugador, eliminando el viejo. También limpia el Backpack y PlayerGui del jugador.
Esto es útil en casos en los que quieres recargar el personaje sin matar al jugador, como cuando quieres cargar una nueva apariencia de personaje después de cambiar el aspecto del jugador.
Nota: La función es similar a Player:LoadCharacterBlocking() , pero la solicitud se procesa de forma asíncrona en lugar de sincronizada. Esto significa que otras tareas podrán continuar mientras el personaje se está cargando, incluyendo la renderización del juego y cualquier otra tarea. Además, esta función se puede usar en un script, mientras que LoadCharacterBlocking no puede.
Después de llamar a LoadCharacter para un jugador individual, no se recomienda llamarlo de nuevo para el mismo jugador hasta que se haya activado el evento Player.CharacterAppearanceLoaded de ese jugador.
Evento de carga de personaje
Llamar al Player:LoadCharacter() con un Avatar R15 dispara eventos en la siguiente orden (Nota: la orden R6 es diferente):
- Player.Character conjuntos
- Player.CharacterAdded fuegos
- Player.Changed fuego con un valor de "Personaje"
- La apariencia del personaje se inicializa
- Player.CharacterAppearanceLoaded fuego
- Character.Parent establece en el Modelo de Datos
- El personaje se construye y el personaje escala
- El personaje se mueve a la ubicación de generación
- Cargar personaje devuelve
Devolução
Amostras de código
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
Esta función genera un avatar para que tenga todo equipado en el pasado en HumanoidDescription .
Después de llamar LoadCharacterWithHumanoidDescription para un jugador individual, no se recomienda llamar la función de nuevo para el mismo jugador hasta que el evento Player.CharacterAppearanceLoaded haya terminado.
Véase también:
- Sistema de Descripción Humanoide, un artículo que explica el sistema de descripción humanoide en más detalle y proporciona varios ejemplos de script
Parâmetros
Un HumanoidDescription que contiene rasgos como partes del cuerpo / colores, escalado de cuerpo, accesorios, ropa y animaciones que se equiparán al personaje cargado.
Devolução
Amostras de código
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
Para las experiencias en las que se habilita el streaming de instancia streaming a las regiones del jugador (partes y terreno) alrededor de la ubicación especificada X , Y , 1>Z1> en el mundo 3D. Es útil si
El efecto de esta llamada será temporal y no hay garantías de lo que se transmitirá alrededor de la ubicación especificada. Los límites de memoria del cliente y las condiciones de red pueden afectar lo que estará disponible en el cliente.
Precaución de uso
Solicitar el streaming alrededor de un área no es una garantía de que el contenido esté presente cuando se completa la solicitud, ya que el streaming está afectado por la capacidad de la red del cliente, limitaciones de memoria y otros factores.
Parâmetros
Ubicación mundial donde se solicita el streaming.
Tiempo de espera opcional para la solicitud.
Devolução
Eventos
CharacterAdded
El evento PersonaJuegoAñadido se activa cuando el personaje de un jugador se genera (o reaparece). Este evento se activa poco después de establecer Player.Character a un valor no nil o llamar 2>Class.Player:LoadCharacter() , que es antes de que el personaje esté asociado al5>Class.Workspace5> .
Esto se puede utilizar junto con el evento Player.CharacterRemoving, que se activa justo antes de que se elimine el personaje de un jugador, generalmente después de la muerte. Como tal, ambos de estos eventos pueden potencialmente activarse muchas veces cuando los jugadores mueren y luego reaparecen en un lugar. Si desea detectar cuando un jugador se une o deja el juego, use los
Tenga en cuenta que el Humanoid y sus partes del cuerpo predeterminadas (cabeza, torso y extremidades) existirán cuando se activa este evento, pero los artículos de ropa como
Parâmetros
Una instancia del personaje que se generó/respawnó.
Amostras de código
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)
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)
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 se activa cuando la apariencia completa de un Player.Character se ha insertado.
Un Player.Character generalmente tiene un rango de objetos que modifican su aspecto, look, incluidos Accoutrements , Shirts , 1> Class.Pants1> y 4> Class.CharacterMesh|
Uno de los usos para este evento es asegurarse de que todos los accesorios hayan cargado antes de destruirlos. Vea a continuación un ejemplo de esto.
Parâmetros
El Class.Player.Character``Class.Model .
Amostras de código
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
El evento CharacterRemoving se activa justo antes de que se elimine el personaje de un jugador, como cuando el jugador reaparece.
Este evento se puede utilizar junto con el evento Player.CharacterAdded, que se activa cuando se genera o reaparece el personaje de un jugador. Por instancia, si desea imprimir un mensaje cada vez que un jugador se genera y muere:
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 solo se refiere a la Character de un Player . Si necesitas rastrear en cambio cuando se una/se vaya un jugador del juego, usa los eventos Players.PlayerAdded y 1> Class.Players.PlayerRemoving1> .
Parâmetros
Una instancia del personaje que se está eliminando.
Amostras de código
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
El evento Chatted se activa cuando un Player escribe un mensaje y presiona Enter en la barra de chat proporcionada por Roblox. Esto se hace con algunos atributos de Lua por el script de chat predeterminado. Puedes evitar que los jugadores chateen usando algunos atributos de Lua al desactivar el chat StarterGui:SetCoreGuiEnabled() y desactivar el chat
Comandos de chat
Usando este evento y algunas funciones de manipulación de cuerda, como string.sub() y string.lower(), es posible crear comandos de chat, incluso con argumentos como nom
Filtrado
El texto de la notificación se activó con este evento es no filtrado . Si estás mostrando la entrada del jugador como un chat a otros jugadores en cualquier forma, debe ser filtrado usando Chat:FilterStringAsync() . Ten esto en mente cuando crees tus propios sistemas de chat; si tu juego no filtra correctamente el chat, puede tomar una acción de moderación.
Parâmetros
El contenido del mensaje que escribió el jugador en el chat.
Depreciado. Este era el jugador que era el objetivo pretendido del mensaje de chat.
Amostras de código
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)
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)
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 se activa aproximadamente dos minutos después de que el motor de juego clasifique a player como inactividad. El tiempo es el número de segundos que han pasado desde ese punto. El evento continúa activando cada 30 segundos durante el tiempo que el jugador permanece inactividad.
Este evento solo se activa en scripts del cliente, no en scripts del servidor; usa un RemoteEvent para notificar al servidor de jugadores inactivos.
Roblox desconecta automáticamente a los jugadores que han estado inactivos durante al menos 20 minutos, por lo que este evento es útil para alertar a los jugadores de que se desconectarán pronto, desconectando jugadores antes de esos 20 minutos o otras características lejos del teclado (AFK).
Para rastrear con qué frecuencia producirselas desconexiones automáticas, intenta relacionar este evento con ocasiones de Players.PlayerRemoving .
Parâmetros
El tiempo en segundos que el jugador ha estado inactividad.
Amostras de código
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
Se activa cuando el estado de teletransporte de un jugador cambia. Este evento es útil para detectar si una teletransportación tuvo éxito.
¿Qué es el estado de teletransporte?
Cuando se hace una solicitud de teletransporte usando TeleportService , hay una serie de etapas antes de que el Player sea teletransportado. La etapa actual está representada por el valor de Enum.TeleportState que se da por OnTeleport. Vea a continuación un ejemplo práctico de esto.
Parâmetros
El nuevo Enum.TeleportState de Player .
El nombre del lugar de inicio para teletransportarse, si TeleportService:TeleportToSpawnByName() se ha utilizado.
Amostras de código
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)