Players
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
El servicio Players contiene objetos Player para clientes conectados actualmente a un servidor de Roblox.También contiene información sobre la configuración de un lugar.Puede recuperar información sobre jugadores que no están conectados al servidor, como apariencias de personajes, amigos y una miniatura de avatar.
Resumen
Propiedades
Habilita o deshabilita los tres métodos Players ( BanAsync() , UnbanAsync() y GetBanHistoryAsync() ) que constituyen la API de prohibición.Esta propiedad no es scriptable y solo se puede modificar en Studio.
Indica si el chat de burbujas está habilitado o no. Se establece con el método Players:SetChatStyle().
Indica si characters reaparecerá automáticamente.
Indica si el chat clásico está habilitado o no; establecido por el método Players:SetChatStyle().
El Player que el LocalScript está corriendo por.
El número máximo de jugadores que pueden estar en un servidor.
El número preferido de jugadores para un servidor.
Controla la cantidad de tiempo que tarda un personaje de jugador en reaparecer.
Métodos
Hace que el jugador local chatee con el mensaje dado.
Devuelve el Player cuyo Player.Character coincide con la instancia dada, o nil si no se puede encontrar uno.
Devuelve una tabla de todos los objetos conectados actualmente Player objetos.
Establece si se usan BubbleChat y ClassicChat, y le dice a TeamChat y Chat qué hacer.
Hace que el jugador local chatee el mensaje dado, que solo será visible para los usuarios del mismo equipo.
Prohíbe a los usuarios de tu experiencia, con opciones para especificar la duración, la razón, si la prohibición se aplica a todo el universo o solo al lugar actual, y más.Este método está habilitado y deshabilitado por la propiedad Players.BanningEnabled, que puedes alternar en Studio.
- CreateHumanoidModelFromDescription(description : HumanoidDescription,rigType : Enum.HumanoidRigType,assetTypeVerification : Enum.AssetTypeVerification):Model
Devuelve un modelo de personaje equipado con todo lo especificado en la Descripción Humanoide pasada, y es R6 o R15 como se especifica por el tipo de rig.
Devuelve un conjunto de configuración de modelo de personaje con todo lo equipado para coincidir con el avatar del usuario especificado por el ID pasado.
Recupera el historial de prohibición y desban de cualquier usuario dentro del universo de la experiencia.Este método está habilitado y deshabilitado por la propiedad Players.BanningEnabled, que puedes alternar en Studio.
Devuelve información sobre la apariencia del personaje de un usuario dado.
Devuelve un objeto FriendPages que contiene información para todos los amigos del jugador dado.
Devuelve la descripción humanoide para un atuendo específico, que se configurará con las partes/colores/animaciones etc del atuendo.
Devuelve una descripción humanoide que especifica todo lo equipado para el avatar del usuario especificado por el ID pasado en.
Envía una consulta al sitio web de Roblox para el nombre de usuario de una cuenta con un dado UserId .
Envía una consulta al sitio web de Roblox por el userId de una cuenta con un nombre de usuario dado.
- GetUserThumbnailAsync(userId : number,thumbnailType : Enum.ThumbnailType,thumbnailSize : Enum.ThumbnailSize):Tuple
Devuelve la URL del contenido de una miniatura de jugador dada el tamaño y el introducir, así como un booleano que describe si la imagen está lista para usar.
Desbanea a los jugadores prohibidos de Players:BanAsync() o la API de la nubede nube abierta de restricciones de usuario.Este método está habilitado y deshabilitado por la propiedad Players.BanningEnabled, que puedes alternar en Studio.
Eventos
Se enciende cuando un jugador entra al juego.
Se activa cuando el servidor del juego reconoce que la membresía de un jugador ha cambiado.
Se activa cuando un jugador está a punto de abandonar el juego.
Se activa cuando el servidor del juego reconoce que el estado del usuario para una determinada suscripción ha cambiado.
Propiedades
BanningEnabled
Habilita o deshabilita los tres métodos Players ( BanAsync() , UnbanAsync() y GetBanHistoryAsync() ) que constituyen la API de prohibición.Esta propiedad no es scriptable y solo se puede modificar en Studio.
BubbleChat
Esta propiedad indica si el chat de burbujas está habilitado o no. Se establece con el método Players:SetChatStyle() usando el enum Enum.ChatStyle.
Cuando este modo de chat está habilitado, el juego muestra chats en la interfaz de usuario de chat en la esquina superior izquierda de la pantalla.
Hay otros dos modos de chat, Players.ClassicChat y un modo de chat en el que se habilitan tanto el chat clásico como el de burbujas.
CharacterAutoLoads
Esta propiedad indica si characters reaparecerá automáticamente. El valor predeterminado es verdadero.
Si esta propiedad está deshabilitada (falsa), el jugador characters no aparecerá hasta que se llame la función Player:LoadCharacter() para cada Player, incluido cuando los jugadores se unan a la experiencia.
Esto puede ser útil en experiencias en las que los jugadores tienen vidas finitas, como juegos competitivos en los que los jugadores no reaparecen hasta que termine una ronda de juego.
Muestras de código
This example demonstrates one possible usage of the Players.CharacterAutoLoads property.
The example below respawns all players in the game, if dead, once every 10 seconds. This means that players who die 1 second after all players respawn must wait 9 seconds until the script loads all Player.Character again.
First, this script removes a player's character when they die and the Humanoid.Died function fires. This is done so that the respawn loop that executes every 10 seconds reloads that player when it does not find the player's character in the Workspace.
To work as expected, this example should be run within a Script.
local Players = game:GetService("Players")
-- Set CharacterAutoLoads to false
Players.CharacterAutoLoads = false
-- Remove player's character from workspace on death
Players.PlayerAdded:Connect(function(player)
while true do
local char = player.CharacterAdded:Wait()
char.Humanoid.Died:Connect(function()
char:Destroy()
end)
end
end)
-- Respawn all dead players once every 10 seconds
while true do
local players = Players:GetChildren()
-- Check if each player is dead by checking if they have no character, if dead load that player's character
for _, player in pairs(players) do
if not workspace:FindFirstChild(player.Name) then
player:LoadCharacter()
end
end
-- Wait 10 seconds until next respawn check
task.wait(10)
end
ClassicChat
Indica si el chat clásico está habilitado o no. Esta propiedad se establece con el método Players:SetChatStyle() usando el enum Enum.ChatStyle.
Cuando este modo de chat está habilitado, el juego muestra chats en una burbuja por encima de la cabeza del remitente.
Hay otros dos modos de chat, Players.BubbleChat y un modo de chat en el que se habilitan tanto el chat clásico como el de burbujas.
LocalPlayer
Esta propiedad de solo lectura se refiere a la Player cuyo cliente está ejecutando la experiencia.
Esta propiedad solo se define para LocalScripts y ModuleScripts requeridas por ellos, ya que se ejecutan en el cliente.Para el servidor, en el que Script objetos ejecutan su código, esta propiedad es nil .
MaxPlayers
Esta propiedad determina el número máximo de jugadores que pueden estar en un servidor.Esta propiedad solo se puede establecer a través de las configuraciones de un lugar específico en el tablero de administrador del creador o a través de las configuraciones de juego.
PreferredPlayers
Esta propiedad indica el número de jugadores a los que el emparejador de Roblox llenará los servidores.Este número será menor que el número máximo de jugadores ( Players.MaxPlayers ) admitidos por la experiencia.
RespawnTime
Esta propiedad controla el tiempo, en segundos, que toma un jugador para reaparecer cuando Players.CharacterAutoLoads es verdadero. Se predetermina en 5.0 segundos.
Esto es útil cuando quieres cambiar el tiempo que tarda en reaparecer según el tipo de tu experiencia, pero no quieres manejar la aparición de jugadores individualmente.
Aunque esta propiedad se puede establecer desde dentro de un Script , es más fácil establecerla directamente en el objeto Players en la ventana Explorador de Studio.
UseStrafingAnimations
Métodos
Chat
Esta función hace que el jugador local chatee con el mensaje dado.Dado que este artículo está protegido, intentar usarlo en un Script o LocalScript causará un error.
En cambio, al crear un sistema de chat personalizado o un sistema que necesita acceso al chat, puedes usar la función Chat del servicio Chat:Chat() en lugar.
Parámetros
El mensaje chateó.
Devuelve
Muestras de código
This example demonstrates that the Players:Chat() function executes without error if using the Command Bar or a Plugin (assuming the local player can chat freely) and errors if executed in a Script.
-- Command bar
game:GetService("Players"):Chat("Hello, world!") --Results in 'Hello, world!' appearing in the Chat log under your Player's name.
-- Script
local Players = game:GetService("Players")
Players:Chat("Hello, world!") --Errors
GetPlayerByUserId
Esta función busca cada Player en Players para uno cuyo Player.UserId coincida con el ID de usuario dado.Si tal jugador no existe, simplemente devuelve nil .Es equivalente a la siguiente función:
local Players = game:GetService("Players")
local function getPlayerByUserId(userId)
for _, player in Players:GetPlayers() do
if player.UserId == userId then
return player
end
end
end
Este método es útil para encontrar al comprador de un producto de desarrollador usando MarketplaceService.ProcessReceipt, que proporciona una tabla que incluye el ID de usuario del comprador y no una referencia al objeto Jugador en sí.La mayoría de los juegos requerirán una referencia al jugador para otorgar productos.
Parámetros
El Player.UserId de jugador que se especifica.
Devuelve
Muestras de código
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
The following code sample:
- Sets up the ProcessReceipt callback function to handle the purchase of two developer products for an experience.
- Checks for and records purchases using a GlobalDataStore called PurchaseHistory.
- Properly returns PurchaseGranted if the transaction completes successfully, or if the function detects that the purchase has already been granted using the PurchaseHistory data store.
After the receipt processing routine, it's possible that the purchase was granted but recording it as granted failed due to a data store error. This is one unavoidable scenario that leads to duplicate granting of the purchase, because processReceipt() will be called for the purchase again. You can mitigate this by keeping another in-memory record of purchases so that the same server will not grant the same purchase twice, but you'll need a session locking implementation around your data store to avoid the potential of duplicate grants across servers.
local MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
-- Data store setup for tracking purchases that were successfully processed
local purchaseHistoryStore = DataStoreService:GetDataStore("PurchaseHistory")
local productIdByName = {
fullHeal = 123123,
gold100 = 456456,
}
-- A dictionary to look up the handler function to grant a purchase corresponding to a product ID
-- These functions return true if the purchase was granted successfully
-- These functions must never yield since they're called later within an UpdateAsync() callback
local grantPurchaseHandlerByProductId = {
[productIdByName.fullHeal] = function(_receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChild("Humanoid")
-- Ensure the player has a humanoid to heal
if not humanoid then
return false
end
-- Heal the player to full Health
humanoid.Health = humanoid.MaxHealth
-- Indicate a successful grant
return true
end,
[productIdByName.gold100] = function(_receipt, player)
local leaderstats = player:FindFirstChild("leaderstats")
local goldStat = leaderstats and leaderstats:FindFirstChild("Gold")
if not goldStat then
return false
end
-- Add 100 gold to the player's gold stat
goldStat.Value += 100
-- Indicate a successful grant
return true
end,
}
-- The core ProcessReceipt callback function
-- This implementation handles most failure scenarios but does not completely mitigate cross-server data failure scenarios
local function processReceipt(receiptInfo)
local success, result = pcall(
purchaseHistoryStore.UpdateAsync,
purchaseHistoryStore,
receiptInfo.PurchaseId,
function(isPurchased)
if isPurchased then
-- This purchase was already recorded as granted, so it must have previously been handled
-- Avoid calling the grant purchase handler here to prevent granting the purchase twice
-- While the value in the data store is already true, true is returned again so that the pcall result variable is also true
-- This will later be used to return PurchaseGranted from the receipt processor
return true
end
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- Avoids granting the purchase if the player is not in the server
-- When they rejoin, this receipt processor will be called again
return nil
end
local grantPurchaseHandler = grantPurchaseHandlerByProductId[receiptInfo.ProductId]
if not grantPurchaseHandler then
-- If there's no handler defined for this product ID, the purchase cannot be processed
-- This will never happen as long as a handler is set for every product ID sold in the experience
warn(`No purchase handler defined for product ID '{receiptInfo.ProductId}'`)
return nil
end
local handlerSucceeded, handlerResult = pcall(grantPurchaseHandler, receiptInfo, player)
if not handlerSucceeded then
local errorMessage = handlerResult
warn(
`Grant purchase handler errored while processing purchase from '{player.Name}' of product ID '{receiptInfo.ProductId}': {errorMessage}`
)
return nil
end
local didHandlerGrantPurchase = handlerResult == true
if not didHandlerGrantPurchase then
-- The handler did not grant the purchase, so record it as not granted
return nil
end
-- The purchase is now granted to the player, so record it as granted
-- This will later be used to return PurchaseGranted from the receipt processor
return true
end
)
if not success then
local errorMessage = result
warn(`Failed to process receipt due to data store error: {errorMessage}`)
return Enum.ProductPurchaseDecision.NotProcessedYet
end
local didGrantPurchase = result == true
return if didGrantPurchase
then Enum.ProductPurchaseDecision.PurchaseGranted
else Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Set the callback; this can only be done once by one script on the server
MarketplaceService.ProcessReceipt = processReceipt
GetPlayerFromCharacter
Esta función devuelve el Player asociado con el dado Player.Character o nil si no se puede encontrar uno.Es equivalente a la siguiente función:
local function getPlayerFromCharacter(character)
for _, player in game:GetService("Players"):GetPlayers() do
if player.Character == character then
return player
end
end
end
Este método se usa a menudo cuando se activa algún evento en el personaje del jugador (como su Class.Humanoid``Class.Humanoid.Died|dying ).Un evento como ese puede no hacer referencia directamente al objeto Jugador, pero este método proporciona un acceso fácil.El inverso de esta función se puede describir como obtener el personaje de un jugador.Para hacer esto, simplemente acceda a la propiedad de Personaje.
Parámetros
Una instancia de personaje de la que quieres obtener al jugador.
Devuelve
Muestras de código
Players:GetPlayerFromCharacter
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local PLAYER_NAME = "Nightriff"
local character = Workspace:FindFirstChild(PLAYER_NAME)
local player = Players:GetPlayerFromCharacter(character)
if player then
print(`Player {player.Name} ({player.UserId}) is in the game`)
else
print(`Player {PLAYER_NAME} is not in the game!`)
end
GetPlayers
Este método devuelve una tabla de todos los objetos Player conectados actualmente.Funciona de la misma manera que Instance:GetChildren() excepto que solo devuelve objetos Player encontrados bajo Players .Cuando se usa con un bucle for, es útil para iterar sobre todos los jugadores en un juego.
local Players = game:GetService("Players")for _, player in Players:GetPlayers() doprint(player.Name)end
Los scripts que se conectan a Players.PlayerAdded a menudo intentan procesar a todos los jugadores que se conectan al juego.Este método es útil para iterar sobre jugadores ya conectados que no dispararían PlayerAdded .¡Usar este método garantiza que ningún jugador se pierda!
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player: " .. player.Name)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Devuelve
Una tabla que contiene a todos los jugadores en el servidor.
Muestras de código
This code sample listens for players spawning and gives them Sparkles in their head. It does this by defining two functions, onPlayerSpawned and onPlayerAdded.
local Players = game:GetService("Players")
local function onCharacterAdded(character)
-- Give them sparkles on their head if they don't have them yet
if not character:FindFirstChild("Sparkles") then
local sparkles = Instance.new("Sparkles")
sparkles.Parent = character:WaitForChild("Head")
end
end
local function onPlayerAdded(player)
-- Check if they already spawned in
if player.Character then
onCharacterAdded(player.Character)
end
-- Listen for the player (re)spawning
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
SetChatStyle
Esta función establece si se están usando BubbleChat y ClassicChat, y le dice a TeamChat y Chat qué hacer usando el enum Enum.ChatStyle.Dado que este artículo está protegido, intentar usarlo en un Script o LocalScript causará un error.
Esta función se usa internamente cuando el modo de chat se establece por el juego.
Parámetros
Se establece el estilo de chat establecer.
Devuelve
Muestras de código
This example demonstrates that the Players:SetChatStyle() function executes without error if using the Command Bar or a Plugin and errors if executed in a LocalScript.
When executed in the Command Bar, this code sets the chat style to Classic using the Enum.ChatStyle enum.
-- Command bar
game.Players:SetChatStyle(Enum.ChatStyle.Classic) -- Set's chat style to Classic
-- LocalScript
local Players = game:GetService("Players")
Players:SetChatStyle(Enum.ChatStyle.Classic) -- Errors
TeamChat
Esta función hace que el Players.LocalPlayer chat muestre el mensaje dado, que solo será visible para los usuarios del mismo equipo.Dado que este artículo está protegido, intentar usarlo en un Script o LocalScript causará un error.
Esta función se usa internamente cuando el Players.LocalPlayer envía un mensaje a su equipo.
Parámetros
El mensaje que se está conversando.
Devuelve
Muestras de código
This example demonstrates that the Players:TeamChat() function executes without error if using the Command Bar or a Plugin and errors if executed in a LocalScript.
When executed in the Command Bar, the function sends the specified message to all players on the same Team as the Players.LocalPlayer.
-- Command bar
game.Players:TeamChat("Hello World") -- Sends a "Hello World" message to all players on the local player's team
-- LocalScript
local Players = game:GetService("Players")
Players:TeamChat("Hello World") -- Errors
BanAsync
El método Players:BanAsync() te permite banear fácilmente a los usuarios que violan las directrices de tu experiencia.Puedes especificar la duración del ban, habilitar el ban para propagarse a cuentas alternativas sospechosas y proporcionar un mensaje al usuario baneado de acuerdo con las directrices de uso.También deberías publicar tus reglas de experiencia en algún lugar accesible para todos los usuarios y proporcionar una manera de apelar.Este método está habilitado y deshabilitado por la propiedad Players.BanningEnabled, que puedes alternar en Studio.
Prohibición y mensajería
Los usuarios prohibidos serán expulsados inmediatamente y se les impedirá volver a unirse a sus experiencias.Se les presentará un error que muestra el tiempo restante en su prohibición y tu DisplayReason .Los sistemas de backend de Roblox expulsarán a los jugadores de todos los servidores desde el lugar (s) que especifiques.DisplayReason puede tener una longitud máxima de 400 caracteres y está sujeto a un filtro de texto.Para obtener más información sobre el texto modal aceptable, vea mensajes de prohibición.
Lugares y universo
Por defecto, las prohibiciones se extienden a cualquier lugar dentro de ese universo.Para limitar el ban a sólo el lugar desde el que se llama esta API, configura ApplyToUniverse a false .Sin embargo, si un usuario es prohibido en el lugar de inicio del universo, efectivamente resulta en que el usuario sea excluido de la totalidad del universo, independientemente de si existe una prohibición universal o no.
Cuentas alternativas
Los usuarios a menudo juegan bajo múltiples cuentas diferentes, conocidas como cuentas alternativas o cuentas alt, que a veces se usan para evadir las prohibiciones de cuentas.Para ayudarlo a mantener a los usuarios prohibidos fuera, el comportamiento predeterminado de esta API propagará todos los baneos desde la cuenta de origen que prohibió a cualquiera de sus cuentas alternativas sospechosas.Puedes desactivar las propagaciones de prohibición a cuentas alternativas configurando ExcludeAltAccounts a true.
Duración del ban
No todas las transgresiones son iguales, por lo que no todas las prohibiciones deben tener la misma longitud.Esta API te permite configurar la duración del expulsar, en segundos, con el campo Duration.Para especificar una expulsarpermanente, establece el campo en -1 .También puede querer configurar dinámicamente la duración del ban en función del historial de prohibiciones del usuario, que puede consultar usando Players:GetBanHistoryAsync().Por ejemplo, es posible que desees considerar el número de prohibiciones, la duración de las prohibiciones anteriores o construir lógica a partir de las notas que guardas bajo PrivateReason que pueden tener hasta 1000 caracteres y no se filtran textualmente. PrivateReason las notas nunca se comparten con el cliente y se pueden considerar seguras de los atacantes.
Errores y aceleración
Este método invoca una llamada HTTP a los servicios de backend que están sujetos a un aceleramiento y pueden fallar.Si está llamando a esta API con más de una UserId, este método intentará realizar la llamada HTTP para cada ID.A continuación, agregará cualquier mensaje de error y los unirá como una lista separada por comas.Por ejemplo, si se invoca este método para cinco usuarios y las solicitudes para aquellos con UserIds 2 y 4 fallan, aparece el siguiente mensaje de error:
HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception
El mensaje siempre incluirá failure for UserId {} si es un error HTTP.
Requisito del lado del cliente
Debido a los riesgos asociados con la prohibición de usuarios, este método solo se puede llamar en el servidor de experiencia en la parte trasera (las llamadas del lado del cliente darán como resultado un error).Puedes probar esta API en Studio, durante la creacionescolaborativa o en una prueba en equipo , pero las prohibiciones no se aplicarán a la producción
Esta API utiliza la API de nube abierta de restricciones de usuario. Podrás utilizar estas APIs para gestionar tus prohibiciones en aplicaciones de terceros.
Parámetros
UserIds (requerido; matriz/lista) — Array de UserIds de jugadores a ser prohibidos. El tamaño máximo es 50 .
ApplyToUniverse (opcional; booleano) — Si el ban se propaga a todos los lugares dentro del universo de experiencia. El predeterminado es true .
Duration (requerido; entero) — Duración del expulsar, en segundos.Las prohibiciones permanentes deberían tener un valor de -1 .0 y todos los demás valores negativos son no válido.
DisplayReason (requerido; cadena) — El mensaje que se mostrará a los usuarios cuando intenten unirse y fallen en una experiencia.La longitud máxima de la cadena es 400 .
PrivateReason (requerido; cadena) — Mensajería interna que se devolverá al consultar el historial de prohibición del usuario. La longitud máxima de la cadena es 1000 .
ExcludeAltAccounts (opcional; booleano) — Cuando true , Roblox no intenta prohibir las cuentas alternativas. El predeterminado es false .
Devuelve
Muestras de código
The following example bans a user with a duration calculated from their ban history, scoped to the entire universe and all of the user's alternate accounts.
local Players = game:GetService("Players")
if shouldBeBanned(player) then
local banHistoryPages = Players:GetBanHistoryAsync(player.UserId)
local duration = getNextBanDuration(banHistoryPages) -- Creator-implemented logic
local config: BanConfigType = {
UserIds = { player.UserId },
Duration = duration,
DisplayReason = "You violated community guideline #5",
PrivateReason = "Put anything here that the user should not know but is helpful for your records",
ExcludeAltAccounts = false,
ApplyToUniverse = true,
}
local success, err = pcall(function()
return Players:BanAsync(config)
end)
print(success, err)
end
CreateHumanoidModelFromDescription
Devuelve un modelo de personaje equipado con todo lo especificado en la Descripción Humanoide pasada, y es R6 o R15 como se especifica por el tipo de rig.
Parámetros
Specifica la apariencia del personaje devuelto.
Specifica si el personaje devuelto será R6 o R15.
La verificación del tipo de activo determina si esta función cargará modelos o no (Debe establecer esto en Siempre a menos que desee cargar activos no catalogados).
Devuelve
Un modelo de personaje humanoide.
Muestras de código
This code sample creates a Humanoid Model from the passed in HumanoidDescription and parents the Model to the Workspace.
game.Players:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R15).Parent =
game.Workspace
CreateHumanoidModelFromUserId
Devuelve un conjunto de configuración de modelo de personaje con todo lo equipado para coincidir con el avatar del usuario especificado por el ID pasado.Esto incluye si ese personaje es actualmente R6 o R15.
Parámetros
El ID de usuario para un usuario de Roblox. (El ID de usuario es el número en el perfil del usuario, por ejemplo www.roblox.com/usuarios/1/perfil).
Devuelve
Un modelo de personaje humanoide.
Muestras de código
This code sample creates a Humanoid Model to match the avatar of the passed in User ID, and parents the Model to the Workspace.
game.Players:CreateHumanoidModelFromUserId(1).Parent = game.Workspace
GetBanHistoryAsync
Recupera el historial de prohibición y desban de cualquier usuario dentro del universo de la experiencia.Este método devuelve una instancia BanHistoryPages que hereda de Pages.Este método está habilitado y deshabilitado por la propiedad Players.BanningEnabled, que puedes alternar en Studio.
Esta llamada de función solo tendrá éxito en servidores de juegos de producción y no en dispositivos clientes o en Studio.
Esta API utiliza la API de nube abierta de restricciones de usuario. Podrás utilizar estas APIs para gestionar tus prohibiciones en aplicaciones de terceros.
Parámetros
Devuelve
Vea BanHistoryPages para la referencia de devolución.
GetCharacterAppearanceInfoAsync
Esta función devuelve información sobre el avatar de un jugador (ignorando el equipamiento) en el sitio web de Roblox en forma de diccionario.No debe confundirse con GetCharacterAppearanceAsync, que en realidad carga los recursos descritos por este método.Puedes usar InsertService:LoadAsset() para cargar los recursos que se usan en el avatar del jugador.La estructura del diccionario devuelto es la siguiente:
<th>Tipo</th><th>Descripción</th></tr></thead><tr><td><code>activos</code></td><td>tabla (ver a continuación)</td><td>Describe los activos equipados (sombreros, partes del cuerpo, etc)</td></tr><tr><td><code>colores del cuerpo</code></td><td>tabla (ver a continuación)</td><td>Describe los valores de BrickColor para cada miembro</td></tr><tr><td><code>color del cuerpo3s</code></td><td>tabla (ver a continuación)</td><td>Describe la instancia Color3 para cada extremidad que puede no coincidir perfectamente con los colores del cuerpo</td></tr><tr><td><code>pantalones predeterminados aplicados</code></td><td>bool</td><td>Describe si se aplican los pantalones predeterminados</td></tr><tr><td><code>camisa predeterminada aplicada</code></td><td>bool</td><td>Describe si se aplica la camisa predeterminada</td></tr><tr><td><code>emoticonos</code></td><td>tabla (ver a continuación)</td><td>Describe las animaciones de emote equipadas</td></tr><tr><td><code>tipo de avatar de jugador</code></td><td>cadena</td><td>O bien "R15" o "R6"</td></tr><tr><td><code>escalas</code></td><td>tabla (ver a continuación)</td><td>Describe varios factores de escalado de cuerpo</td></tr>
Nombre |
---|
Subtabla de activos
La tabla assets es un array de tablas que contiene las siguientes claves que describen los activos actualmente equipados por el jugador:
<th>Tipo</th><th>Descripción</th></tr></thead><tr><td><code>id</code></td><td>número</td><td>La identificación del activo del recurso</td></tr><tr><td><code>tipo de activo</code></td><td>tabla</td><td>Una tabla con los campos <code>nombre</code> y <code>ID</code>, cada uno describiendo el tipo de activo equipado ("Sombrero", "Cara", etc.)</td></tr><tr><td><code>nombre</code></td><td>cadena</td><td>El nombre del activo recurso</td></tr>
Nombre |
---|
Subtabla de escalas
La tabla scales tiene las siguientes claves, cada una de ellas es un número que corresponde a una propiedad de escalado Humanoid : bodyType , head , height , proportion , depth , width .
Subtabla de colores del cuerpo
La tabla bodyColors tiene las siguientes claves, cada una de ellas es un número que corresponde a un número de ID BrickColor que se puede utilizar con BrickColor.new(id) : leftArmColorId , torsoColorId , rightArmColorId , headColorId , leftLegColorId , rightLegColorId .
Parámetros
El * identificador de usuario del jugador especificado.
Devuelve
Un diccionario que contiene información sobre la apariencia del personaje de un usuario dado.
Muestras de código
Sometimes it is best to see an example of the returned dictionary structure in pure Lua. Here is one such example of a player whose avatar uses a package and wears several hats. Can you guess who it is?
local result = {
playerAvatarType = "R15",
defaultPantsApplied = false,
defaultShirtApplied = false,
scales = {
bodyType = 0,
head = 1,
height = 1.05,
proportion = 0,
depth = 0.92,
width = 0.85,
},
bodyColors = {
leftArmColorId = 1030,
torsoColorId = 1001,
rightArmColorId = 1030,
headColorId = 1030,
leftLegColorId = 1001,
rightLegColorId = 1001,
},
assets = {
{
id = 1031492,
assetType = {
name = "Hat",
id = 8,
},
name = "Striped Hat",
},
{
id = 13062491,
assetType = {
name = "Face Accessory",
id = 42,
},
name = "Vision Française ",
},
{
id = 16598440,
assetType = {
name = "Neck Accessory",
id = 43,
},
name = "Red Bow Tie",
},
{
id = 28999228,
assetType = {
name = "Face",
id = 18,
},
name = "Joyous Surprise",
},
{
id = 86896488,
assetType = {
name = "Shirt",
id = 11,
},
name = "Expensive Red Tuxedo Jacket",
},
{
id = 86896502,
assetType = {
name = "Pants",
id = 12,
},
name = "Expensive Red Tuxedo Pants",
},
{
id = 376530220,
assetType = {
name = "Left Arm",
id = 29,
},
name = "ROBLOX Boy Left Arm",
},
{
id = 376531012,
assetType = {
name = "Right Arm",
id = 28,
},
name = "ROBLOX Boy Right Arm",
},
{
id = 376531300,
assetType = {
name = "Left Leg",
id = 30,
},
name = "ROBLOX Boy Left Leg",
},
{
id = 376531703,
assetType = {
name = "Right Leg",
id = 31,
},
name = "ROBLOX Boy Right Leg",
},
{
id = 376532000,
assetType = {
name = "Torso",
id = 27,
},
name = "ROBLOX Boy Torso",
},
},
}
print(result)
GetFriendsAsync
La función GetFriends Players devuelve un objeto FriendPages que contiene información para todos los amigos del usuario dado.Los elementos dentro del objeto FriendPages son tablas con los siguientes campos:
<th>Tipo</th><th>Descripción</th></tr></thead><tr><td>Id</td><td>longitud int64</td><td>El ID de usuario del amistad</td></tr><tr><td>Nombre de usuario</td><td>cadena</td><td>El nombre de usuario del amistad</td></tr><tr><td>Nombre de visualización</td><td>cadena</td><td>El <code>Class.Player.DisplayName|nombre de visualización</code> del amistad.</td></tr>
Nombre |
---|
Vea los ejemplos de código para una manera fácil de iterar sobre todos los amigos de un jugador.
Parámetros
La ID de usuario del jugador que se especifica.
Devuelve
Muestras de código
This code sample loads the Player.UserId of the player whose username is provided at the top of the script by using Players:GetUserIdFromNameAsync(). Then, it gets a FriendPages object by calling Players:GetFriendsAsync() and iterates over each entry using the iterPageItems function. The username of each friend is stored in a table, then printed at the end.
local Players = game:GetService("Players")
local USERNAME = "Cozecant"
local function iterPageItems(pages)
return coroutine.wrap(function()
local pagenum = 1
while true do
for _, item in ipairs(pages:GetCurrentPage()) do
coroutine.yield(item, pagenum)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
pagenum = pagenum + 1
end
end)
end
-- First, get the user ID of the player
local userId = Players:GetUserIdFromNameAsync(USERNAME)
-- Then, get a FriendPages object for their friends
local friendPages = Players:GetFriendsAsync(userId)
-- Iterate over the items in the pages. For FriendPages, these
-- are tables of information about the friend, including Username.
-- Collect each username in a table
local usernames = {}
for item, _pageNo in iterPageItems(friendPages) do
table.insert(usernames, item.Username)
end
print("Friends of " .. USERNAME .. ": " .. table.concat(usernames, ", "))
GetHumanoidDescriptionFromOutfitId
Devuelve la descripción humanoide para un ID de atuendo especificado, que se configurará con las partes/colores/animaciones etc del atuendo.Un traje puede ser uno creado por un usuario, o puede ser el traje para un paquete creado por Roblox.
Parámetros
El ID del atuendo para el cual se busca la descripción humanoide.
Devuelve
Descripción humanoide inicializada con la especificación para el ID de atuendo pasado.
Muestras de código
Shows how to get the HumanoidDescription for bundle 799 (Fishman).
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local function getOutfitId(bundleId)
if bundleId <= 0 then
return
end
local info = game.AssetService:GetBundleDetailsAsync(bundleId)
if not info then
return
end
for _, item in pairs(info.Items) do
if item.Type == "UserOutfit" then
return item.Id
end
end
return nil
end
local function getHumanoidDescriptionBundle(bundleId)
local itemId = getOutfitId(bundleId)
if itemId and itemId > 0 then
return Players:GetHumanoidDescriptionFromOutfitId(itemId)
end
return nil
end
local humanoidDescription = getHumanoidDescriptionBundle(799)
local humanoidModel = Players:CreateHumanoidModelFromDescription(humanoidDescription, Enum.HumanoidRigType.R15)
humanoidModel.Parent = Workspace
GetHumanoidDescriptionFromUserId
Devuelve una descripción humanoide que especifica todo lo equipado para el avatar del usuario especificado por el ID pasado en.También incluye escalas y colores de cuerpo.
Parámetros
El ID de usuario para un usuario de Roblox. (El ID de usuario es el número en el perfil del usuario, por ejemplo www.roblox.com/usuarios/1/perfil).
Devuelve
Descripción humanoide inicializada con la especificación de avatar del usuario pasada.
Muestras de código
This code sample shows how to use GetHumanoidDescriptionFromUserId() to create a Humanoid Model.
game.Players:CreateHumanoidModelFromDescription(
game.Players:GetHumanoidDescriptionFromUserId(1),
Enum.HumanoidRigType.R15
).Parent =
game.Workspace
GetNameFromUserIdAsync
La función GetNameFromUserIdAsync Players enviará una consulta al sitio web de Roblox para preguntar cuál es el nombre de usuario de la cuenta con el dado UserId.
Este método falla si no existe una cuenta con el ID de usuario dado.Si no estás seguro de que exista una cuenta así, se recomienda envolver las llamadas a esta función con pcall() .Además, puedes almacenar manualmente los resultados en caché para hacer futuras llamadas con el mismo UserId rápidamente.Vea los ejemplos de código para aprender más.
Parámetros
El Player.UserId de jugador que se especifica.
Devuelve
El nombre de un usuario con el nombre especificado Player.UserId.
Muestras de código
This code sample demonstrates using the Players:GetNameFromUserIdAsync() method to get a user's Player.Name from their Player.UserId.
local Players = game:GetService("Players")
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
local nameOne = Players:GetNameFromUserIdAsync(118271)
local nameTwo = Players:GetNameFromUserIdAsync(131963979)
print(nameOne, nameTwo)
-- prints: "RobloxRulez docsRule"
This code sample demonstrates using the Players:GetNameFromUserIdAsync() method to get a user's Player.Name from their Player.UserId. Because GetNameFromUserIdAsync() yields, you can avoid calling it for the same Name using a table to store each UserId:Name pair found, called a cache. pcall() is used to catch the failure in case the Name doesn't exist.
local Players = game:GetService("Players")
-- Create a table called 'cache' to store each 'Name' as they are found.
-- If we lookup a 'Name' using the same 'UserId', the 'Name' will come
-- from cache (fast) instead of GetNameFromUserIdAsync() (yields).
local cache = {}
function getNameFromUserId(userId)
-- First, check if the cache contains 'userId'
local nameFromCache = cache[userId]
if nameFromCache then
-- if a value was stored in the cache at key 'userId', then this 'nameFromCache'
-- is the correct Name and we can return it.
return nameFromCache
end
-- If here, 'userId' was not previously looked up and does not exist in the
-- cache. Now we need to use GetNameFromUserIdAsync() to look up the name
local name
local success, _ = pcall(function()
name = Players:GetNameFromUserIdAsync(userId)
end)
if success then
-- if 'success' is true, GetNameFromUserIdAsync() successfully found the
-- name. Store this name in the cache using 'userId' as the key so we
-- never have to look this name up in the future. Then return name.
cache[userId] = name
return name
end
-- If here, 'success' was false, meaning GetNameFromUserIdAsync()
-- was unable to find the 'name' for the 'userId' provided. Warn the user
-- this happened and then return nothing, or nil.
warn("Unable to find Name for UserId:", userId)
return nil
end
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
-- The first time a UserId is used, GetNameFromUserIdAsync() will be called
local nameOne = getNameFromUserId(118271)
local nameTwo = getNameFromUserId(131963979)
-- Because 118271 was previously used, get its Name from the cache
local nameOneQuick = getNameFromUserId(118271)
print(nameOne, nameTwo, nameOneQuick)
-- prints: "RobloxRulez docsRule RobloxRulez"
GetUserIdFromNameAsync
Esta función enviará una consulta al sitio web de Roblox preguntando qué es el Player.UserId de la cuenta con el nombre dado Player.
Este método falla si no existe una cuenta con el nombre de usuario dado.Si no estás seguro de que exista una cuenta así, se recomienda envolver las llamadas a esta función con pcall() .Además, puedes almacenar manualmente los resultados para hacer rápidamente llamadas futuras con el mismo nombre de usuario.Vea los ejemplos de código para aprender más.
Parámetros
El nombre de usuario del jugador que se especifica.
Devuelve
El Player.UserId de un usuario cuyo nombre se especifica.
Muestras de código
This code sample demonstrates using the Players:GetUserIdFromNameAsync() method to get a user's Player.UserId from their Player.Name.
local Players = game:GetService("Players")
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
local userIdOne = Players:GetUserIdFromNameAsync("RobloxRulez")
local userIdTwo = Players:GetUserIdFromNameAsync("docsRule")
print(userIdOne, userIdTwo)
-- prints: "118271 131963979"
This code sample demonstrates using the Players:GetUserIdFromNameAsync() method to get a user's Player.UserId from their Player.Name. Because GetUserIdFromNameAsync() yields, you can avoid calling it for the same UserId using a table to store each Name:UserId pair found, called a cache. pcall() is used to catch the failure in case the UserId doesn't exist.
local Players = game:GetService("Players")
-- Create a table called 'cache' to store each 'UserId' as they are found.
-- If we lookup a 'UserId' using the same 'Name', the 'UserId' will come
-- from cache (fast) instead of GetUserIdFromNameAsync() (yields).
local cache = {}
function getUserIdFromName(name)
-- First, check if the cache contains 'name'
local userIdFromCache = cache[name]
if userIdFromCache then
-- if a value was stored in the cache at key 'name', then this 'userIdFromCache'
-- is the correct UserId and we can return it.
return userIdFromCache
end
-- If here, 'name' was not previously looked up and does not exist in the
-- cache. Now we need to use GetUserIdFromNameAsync() to look up the userId
local userId
local success, _ = pcall(function()
userId = Players:GetUserIdFromNameAsync(name)
end)
if success then
-- if 'success' is true, GetUserIdFromNameAsync() successfully found the
-- userId. Store this userId in the cache using 'name' as the key so we
-- never have to look this userId up in the future. Then return userId.
cache[name] = userId
return userId
end
-- If here, 'success' was false, meaning GetUserIdFromNameAsync()
-- was unable to find the 'userId' for the 'name' provided. We can warn the
-- user this happened and then return nothing, or nil.
warn("Unable to find UserId for Name:", name)
return nil
end
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
-- The first time a Name is used, GetUserIdFromNameAsync() will be called
local userIdOne = getUserIdFromName("RobloxRulez")
local userIdTwo = getUserIdFromName("docsRule")
-- Because "RobloxRulez" was previously used, get its UserId from the cache
local userIdOneQuick = getUserIdFromName("RobloxRulez")
print(userIdOne, userIdTwo, userIdOneQuick)
-- prints: "118271 131963979 118271"
GetUserThumbnailAsync
Esta función devuelve la URL del contenido de una imagen del avatar de un jugador dada su UserId , el tamaño de imagen deseado como un enum Enum.ThumbnailSize , y el tipo deseado como un enum Enum.ThumbnailType.También devuelve un booleano que describe si la imagen está lista para usar.
Con más frecuencia, este método se usa con ImageLabel.Image o Decal.Texture para mostrar imágenes de avatares de usuario en una experiencia.
Parámetros
El Player.UserId de jugador que se especifica.
Un Enum.ThumbnailType describiendo el tipo de miniatura.
Un Enum.ThumbnailSize especificando el tamaño de la miniatura.
Devuelve
Un túnel que contiene la URL del contenido de una miniatura de usuario basada en los parámetros especificados y un bool que describe si la imagen está lista para usarse o no.
Muestras de código
This code sample displays the current player's thumbnail in a parent ImageLabel by using Players:GetUserThumbnailAsync() and setting the Image() property as well as its Size().
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local PLACEHOLDER_IMAGE = "rbxassetid://0" -- replace with placeholder image
-- fetch the thumbnail
local userId = player.UserId
local thumbType = Enum.ThumbnailType.HeadShot
local thumbSize = Enum.ThumbnailSize.Size420x420
local content, isReady = Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)
-- set the ImageLabel's content to the user thumbnail
local imageLabel = script.Parent
imageLabel.Image = (isReady and content) or PLACEHOLDER_IMAGE
imageLabel.Size = UDim2.new(0, 420, 0, 420)
UnbanAsync
Desbanea a los jugadores prohibidos de Players:BanAsync() o la API de nube abierta de restricciones de usuario.Este método está habilitado y deshabilitado por la propiedad Players.BanningEnabled, que puedes alternar en Studio.
Como Players:BanAsync() , este método toma un diccionario config que te permitirá desbanear masivamente a los usuarios.Esto configura a los usuarios que están desbaneados y el alcance desde el cual están desbaneados.
Las desbaneadas solo tendrán efecto en las prohibiciones con el mismo alcance ApplyToUniverse.Por ejemplo, un desban con ApplyToUniverse establecido a true no invalidará un ban anterior con ApplyToUniverse establecido a false .En otras palabras, un desban de nivel de universo no invalidará un expulsarde nivel de lugar.Lo contrario también es cierto.
Este método invoca una llamada HTTP a los servicios de backend, que se ven limitados y pueden fallar.Si está llamando a esta API con múltiples UserIds, este método intentará realizar esta llamada HTTP para cada UserId.A continuación, agregará cualquier mensaje de error y los unirá como una lista separada por comas.Por ejemplo, si este método se invoca para cinco UserIds : {1, 2, 3, 4, 5} y solicitudes para usuarios 2 y 4 fallan, entonces aparece el siguiente mensaje de error: HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception. El mensaje siempre incluirá failure for UserId {} si es un error HTTP.Es un comportamiento no definido si pasas ambos UserIds válidos e inválidos, es decirun UserId que no es un número positivo, ya que algunas solicitudes de red pueden tener éxito antes de que se valide toda la entrada.
Debido a los riesgos asociados con la prohibición de usuarios, este método solo se puede llamar en el servidor de juegos en el backend.Las llamadas del lado del cliente resultarán en un error.Puedes probar esta API en Studio, Creación en equipo y Prueba en equipo, pero las prohibiciones no se aplicarán a la producción.Esta llamada de función solo intentará solicitudes de prohibición en servidores de juegos de producción y no en la prueba de Studio.Sin embargo, todos los pasos de validación de entrada seguirán funcionando en Studio.
Esta API utiliza la API de nube abierta de restricciones de usuario. Podrás utilizar estas APIs para gestionar tus prohibiciones en aplicaciones de terceros.
Parámetros
<th>Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>Identidades de usuario</code></td><td>matriz/lista</td><td>ID de usuario que se permiten forzar en la experiencia(s). El tamaño máximo es <code>50</code>.</td></tr><tr><td><code>Aplicar al universo</code></td><td>booleno</td><td>Propaga la desban a todos los lugares dentro de este universo.</td></tr></tbody>
Nombre |
---|
Devuelve
Muestras de código
The following un-bans a user, as well as another unrelated account with UserId 789.
local Players = game:GetService("Players")
if shouldBeUnbanned(player) then
local config: UnbanConfigType = {
UserIds = { player.UserId, 789 },
ApplyToUniverse = false,
}
local success, err = pcall(function()
return Players:UnbanAsync(config)
end)
print(success, err)
end
Eventos
PlayerAdded
Este evento se activa cuando un jugador entra al juego.Se usa para disparar un evento cuando un jugador se une a un juego, como cargar los datos guardados del jugador GlobalDataStore.
Esto se puede usar junto con el evento Players.PlayerRemoving, que se activa cuando un jugador está a punto de abandonar el juego.Por instancia, si desea imprimir un mensaje cada vez que se una o se salga un nuevo jugador del juego:
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " joined the game!")
end)
Players.PlayerRemoving:Connect(function(player)
print(player.Name .. " left the game!")
end)
Si quieres rastrear cuando se agrega o elimina el personaje de un jugador del juego, como cuando un jugador reaparece o muere, puedes usar las funciones Player.CharacterAdded y Player.CharacterRemoving.
Tenga en cuenta que este evento no funciona como se esperaba en modo de juego porque el jugador se crea antes de que se ejecuten los scripts que se conectan a PlayerAdded .Para manejar este caso, así como casos en los que se agrega el script al juego después de que un jugador entre, crea una función onPlayerAdded() que puedes llamar para manejar la entrada de un jugador.
Parámetros
Una instancia del jugador que se unió al juego.
Muestras de código
This example will print "A player has entered: " followed by the name of the player that enters/joins a game every time a player joins.
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("A player has entered: " .. player.Name)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlayerMembershipChanged
Este evento se activa cuando el servidor del juego reconoce que la membresía de un jugador ha cambiado.Tenga en cuenta, sin embargo, que el servidor solo intentará verificar y actualizar la membresía después de que se haya cerrado el modo Premium .Por lo tanto, para cubrir los casos en que el usuario compra Premium fuera del juego mientras juega, aún debe solicitarles que compren Premium; esto mostrará un mensaje que les indique que ya están actualizados y, una vez que cierren la ventana modal, el servidor del juego actualizará su membresía y desencadenará este evento.
Para aprender más sobre y incorporar Premium a tu experiencia y monetizar con el sistema de pagos basado en el compromiso, ve a Pagos basados en el compromiso.
Vea también:
- MarketplaceService:PromptPremiumPurchase() , se usa para solicitar a un usuario que compre Premium
- MarketplaceService.PromptPremiumPurchaseFinished , se activa cuando la interfaz de usuario de compra premium se cierra
Parámetros
Muestras de código
The function in the code sample runs after the game server confirms a player's membership has changed. It demonstrates how you can grant players access to Premium benefits (or revoke them) when their membership status changes.
local Players = game:GetService("Players")
local function grantPremiumBenefits(player)
-- Grant the player access to Premium-only areas, items, or anything you can imagine!
print("Giving", player, "premium benefits!")
end
local function playerAdded(player)
if player.MembershipType == Enum.MembershipType.Premium then
grantPremiumBenefits(player)
end
end
local function playerMembershipChanged(player)
print("Received event PlayerMembershipChanged. New membership = " .. tostring(player.MembershipType))
if player.MembershipType == Enum.MembershipType.Premium then
grantPremiumBenefits(player)
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerMembershipChanged:Connect(playerMembershipChanged)
PlayerRemoving
El evento Eliminación de jugadores se activa justo antes de que Player salga del juego.Este evento se activa antes de que ChildRemoved haga en Players , y se comporta de manera algo similar a Instance.DescendantRemoving .Dado que se activa antes de la eliminación real de un Player , este evento es útil para almacenar datos del jugador usando un GlobalDataStore .
Esto se puede usar junto con el evento Player.PlayerAdded, que se activa cuando un jugador se une al juego.Por instancia, para imprimir un mensaje cada vez que un nuevo jugador se una o abandone el juego:
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " joined the game!")
end)
Players.PlayerRemoving:Connect(function(player)
print(player.Name .. " left the game!")
end)
Si quieres rastrear cuando se agrega o elimina el personaje de un jugador del juego, como cuando un jugador reaparece o muere, puedes usar las funciones Player.CharacterAdded y Player.CharacterRemoving.
Parámetros
Una instancia del jugador que está dejando el juego.
Muestras de código
This code will print "A player has left: ", followed by the player's name, every time a player leaves:
local Players = game:GetService("Players")
local function onPlayerRemoving(player)
print("A player has left: " .. player.Name)
end
Players.PlayerRemoving:Connect(onPlayerRemoving)
UserSubscriptionStatusChanged
Este evento se activa cuando el servidor del juego reconoce que el estado del usuario para una determinada suscripción ha cambiado.Tenga en cuenta que el servidor solo intenta verificar y actualizar el estado después de que se haya cerrado el modo de compra de suscripción .Para contar los casos en los que el usuario compra la suscripción fuera del juego mientras juega, aún debe solicitarles que compren la suscripción; el mensaje les muestra un mensaje que les dice al usuario que ya está suscrito, y después de que cierren la ventana modal, el servidor del juego actualiza el estado de la suscripción y activa este evento.
Tenga en cuenta que solo los scripts del servidor reciben este evento.
Parámetros
Usuario cuyo estado de suscripción ha cambiado.
El ID de la suscripción con un cambio de estado.