Players

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço

El servicio Players contiene Player objetos para los clientes conectados actualmente a un servidor de Roblox. También contiene información sobre la configuración de un lugar, como las apariencias de los personajes, los amigos y las miniaturas de avatar. Puede obtener información sobre los jugadores no conectados al servidor, como las apariencias de los personajes, los amigos y las miniaturas de avatar.

Resumo

Propriedades

Métodos

Eventos

Propriedades

BubbleChat

Somente leitura
Não replicado
Ler Parallel

La propiedad BubbleChat indica si o no se habilita el chat de burbujas. Está configurado con el método Players:SetChatStyle() usando el conjunto de datos 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 dos modos de chat, Players.ClassicChat y un modo de chat donde tanto el chat clásico como el chat de burbujas están habilitados.

CharacterAutoLoads

Não replicado
Ler Parallel

La propiedad CharacterAutoLoads indica si Class.Character|Characters reaparecerá automáticamente. El valor predeterminado es verdadero.

Si esta propiedad está desactivada (falso), el jugador Class.Character|Characters no aparecerá hasta que se llame la función Player:LoadCharacter() para cada Player, incluyendo cuando los jugadores se unan a la experiencia.

Esto puede ser útil en experiencias donde los jugadores tienen vidas finitas, como los juegos competitivos en los que los jugadores no reaparecen hasta que termina una ronda de juego.

Amostras de código

Player Respawn Timer

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

Somente leitura
Não replicado
Ler Parallel

Indica si el chat clásico está habilitado o no. Esta propiedad se establece por el método Players:SetChatStyle() usando el conjunto de estadísticas Enum.ChatStyle.

Cuando este modo de chat está habilitado, el juego muestra chats en una burbuja por encima de la cabeza del remitente.

Hay dos otros modos de chat, Players.BubbleChat y un modo de chat en el que tanto chat clásico como chat de burbujas están habilitados.

LocalPlayer

Somente leitura
Não replicado
Ler Parallel

LocalPlayer es una propiedad de lectura que se refiere al Player cuyo cliente está ejecutando la experiencia.

Esta propiedad solo se define para LocalScripts y ModuleScripts requeridos por ellos, ya que se ejecutan en el cliente. Para el servidor, en el que se ejecutan los objetos de código de Script, esta propiedad es 1> nil1> .

MaxPlayers

Somente leitura
Não replicado
Ler Parallel

La propiedad MaxPlayers determina el número máximo de jugadores que se pueden encontrar en un servidor. Esta propiedad solo se puede establecer a través de la configuración de un lugar específico en el Panel de Creator o a través de la Configuración del Juego .

PreferredPlayers

Somente leitura
Não replicado
Ler Parallel

La propiedad PreferredPlayers indica el número de jugadores a los que el creador de partidos de Roblox llenará los servidores. Este número será menor que el máximo de jugadores ( Players.MaxPlayers ) admitidos por la experiencia.

RespawnTime

Ler Parallel

La propiedad RespawnTime controla el tiempo, en segundos, que se necesita para que un jugador reaparezca cuando Players.CharacterAutoLoads es cierto. Por defecto, es 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 el reaparición de jugadores individualmente.

Aunque esta propiedad se puede establecer desde dentro de un Script , puede establecerlo más fácilmente directamente en el objeto Players en la ventana Explorer de Studio.

UseStrafingAnimations

Não scriptável
Ler Parallel

Métodos

Chat

void
Segurança do plugin

Esta función hace que el jugador local chatee 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, puede usar la función Chat de servicio en lugar.

Parâmetros

message: string

El mensaje chateó.


Devolução

void

Amostras de código

Players:Chat

-- 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

Escrever Parallel

Esta función busca cada player en Players para uno cuyo Player.UserId coincide con el ID de usuario dado. Si tal jugador no existe, simplemente返回 1> nil1> . 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 el 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 Player. La mayoría de los juegos requerirán una referencia al jugador para otorgar productos.

Parâmetros

userId: number

El Player.UserId del jugador que se especifica.


Devolução

Amostras de código

Players:GetPlayerByUserId

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

local MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
-- Data store for tracking purchases that were successfully processed
local purchaseHistoryStore = DataStoreService:GetDataStore("PurchaseHistory")
-- Table setup containing product IDs and functions for handling purchases
local productFunctions = {}
-- ProductId 123123 for a full heal
productFunctions[123123] = function(_receipt, player)
-- Logic/code for player buying a full heal (may vary)
if player.Character and player.Character:FindFirstChild("Humanoid") then
-- Heal the player to full health
player.Character.Humanoid.Health = player.Character.Humanoid.MaxHealth
-- Indicate a successful purchase
return true
end
end
-- ProductId 456456 for 100 gold
productFunctions[456456] = function(_receipt, player)
-- Logic/code for player buying 100 gold (may vary)
local stats = player:FindFirstChild("leaderstats")
local gold = stats and stats:FindFirstChild("Gold")
if gold then
gold.Value = gold.Value + 100
-- Indicate a successful purchase
return true
end
end
-- The core 'ProcessReceipt' callback function
local function processReceipt(receiptInfo)
-- Determine if the product was already granted by checking the data store
local playerProductKey = receiptInfo.PlayerId .. "_" .. receiptInfo.PurchaseId
local purchased = false
local success, result, errorMessage
success, errorMessage = pcall(function()
purchased = purchaseHistoryStore:GetAsync(playerProductKey)
end)
-- If purchase was recorded, the product was already granted
if success and purchased then
return Enum.ProductPurchaseDecision.PurchaseGranted
elseif not success then
error("Data store error:" .. errorMessage)
end
-- Determine if the product was already granted by checking the data store
local playerProductKey = receiptInfo.PlayerId .. "_" .. receiptInfo.PurchaseId
local success, isPurchaseRecorded = pcall(function()
return purchaseHistoryStore:UpdateAsync(playerProductKey, function(alreadyPurchased)
if alreadyPurchased then
return true
end
-- Find the player who made the purchase in the server
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- The player probably left the game
-- If they come back, the callback will be called again
return nil
end
local handler = productFunctions[receiptInfo.ProductId]
local success, result = pcall(handler, receiptInfo, player)
-- If granting the product failed, do NOT record the purchase in datastores.
if not success or not result then
error("Failed to process a product purchase for ProductId: " .. tostring(receiptInfo.ProductId) .. " Player: " .. tostring(player) .. " Error: " .. tostring(result))
return nil
end
-- Record the transaction in purchaseHistoryStore.
return true
end)
end)
if not success then
error("Failed to process receipt due to data store error.")
return Enum.ProductPurchaseDecision.NotProcessedYet
elseif isPurchaseRecorded == nil then
-- Didn't update the value in data store.
return Enum.ProductPurchaseDecision.NotProcessedYet
else
-- IMPORTANT: Tell Roblox that the game successfully handled the purchase
return Enum.ProductPurchaseDecision.PurchaseGranted
end
end
-- Set the callback; this can only be done once by one script on the server!
MarketplaceService.ProcessReceipt = processReceipt

GetPlayerFromCharacter

Esta función返回 el Player asociado con el dado Player.Character , o nil si uno no puede ser encontrado. 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 utiliza con frecuencia cuando ocurre algún evento en el personaje del jugador (como su Humanoid ) . Un tal evento puede no hacer directamente referencia al objeto del jugador, pero este método proporciona un acceso fácil. El contrario de esta función se puede describir como obtener el carácter de un jugador. Para hacer esto, simplemente acceda a la propiedad del carácter.

Parâmetros

character: Model

Una instancia de personaje de la que quieres obtener al jugador.


Devolução

Amostras 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

Instances
Escrever Parallel

Este método返回一个表 of all presently connected Class.Player objetos. Funciona de la misma manera que Instance:GetChildren() excepto que solo返回 Player objetos encontrados bajo 1> Class.Players1> . Cuando se usa con un ciclo de 4> for4> , es útil para repetir a través de


local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
print(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 repetir sobre jugadores ya conectados que no dispararían PlayerAdded . ¡Usar este método asegura que no se pierda ningún jugador!


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)

Devolução

Instances

Una tabla que contiene a todos los jugadores en el servidor.

Amostras de código

Give Sparkles to Everyone

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

void
Segurança do plugin

Esta función establece si BubbleChat y ClassicChat están siendo usados, y le dice a TeamChat y Chat qué hacer usando el Enum.ChatStyle enum. Debido a 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 está configurado por el juego.

Parâmetros

El estilo de chat especificado está siendo establecer.

Valor Padrão: "Classic"

Devolução

void

Amostras de código

Setting a Player's Chat Style

-- 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

void
Segurança do plugin

Esta función hace que el chat de Players.LocalPlayer envíe el mensaje dado, que solo será visible para los usuarios en el mismo equipo. Dado que este artículo está protegido, intentar usarlo en un Script o LocalScript causará un error.

Esta función se utiliza internamente cuando el Players.LocalPlayer envía un mensaje a su equipo.

Parâmetros

message: string

El mensaje está siendo chateado.


Devolução

void

Amostras de código

Sending Team Chat

-- 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

void
Rendimentos

El método Players:BanAsync() le permite banear fácilmente a los usuarios que violan las reglas de su experiencia. Puede especificar la duración del ban, habilitar el ban para propagarse a cuentas alternativas sospechosas y proporcionar un mensaje al usuario prohibido en virtud de las Normas de uso . Debe publicar sus reglas de experiencia en algún lugar accesible para todos los usuarios y proporcion

Baneo y mensajería

Los usuarios prohibidos serán expulsados de inmediato y se prenderán de nuevo en tus experiencias. Se les presentará con un error mostrando el tiempo restante en su prohibición y tu DisplayReason . Los sistemas de backend de Roblox expulsarán jugadores en todos los servidores que especifiques. DisplayReason puede tener una longitud máxima de 40

Lugares y Universo

Por defecto, las prohibiciones se extienden a cualquier lugar dentro de ese universo. Para limitar la prohibición a solo el lugar de donde se llama esta API, configura ApplyToUniverse para false . Sin embargo, si un usuario es prohibido en el lugar de inicio del universo, efectivamente resulta en que el usuario esté excluido de toda la entidad del universo, independientemente de si hay un ban universal o no.

Cuentas Alternativas

Los usuarios a menudo juegan bajo múltiples cuentas diferentes, conocidas como cuentas alternativas o cuentas alternativas, que a veces se utilizan para evitar los prohibiciones de cuentas. Para ayudarlo a mantener a los usuarios fuera, el comportamiento predeterminado de esta API propagará todos los prohibiciones desde la cuenta de origen que has prohibido a cualquiera de sus sospechas altas cuentas. Puedes desactivar las propagaciones de prohibiciones

Duración de la prohibición

No todos los incumplimientos son los mismos, por lo que no todos los prohibitorios

Errores y aceleración

Este método invoca una llamada HTTP a los servicios de backend que están sujetos a la aceleración y pueden fallar. Si estás llamando a esta API con más de un UserId , este método intentará hacer la llamada HTTP para cada ID. Luego agregará cualquier mensaje de error y los unirá como una lista separada por comas. Por ejemplo

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 los usuarios, este método solo se puede llamar en el servidor de experiencia de back-end (las llamadas de lado del cliente darán como resultado un error). Puedes probar esta API en Studio, durante la creacionescolaborativa en equipo, o en un test de equipo, pero las prohibiciones no se aplicarán a la producción.

Esta API usa el API de Cloud Restricciones de Usuario. Podrás utilizar estas API para administrar tus prohibiciones en aplicaciones de terceros.

Parâmetros

config: Dictionary
  • UserIds (requerido; matriz/lista) — Array de UserIds de jugadores para ser prohibidos. El tamaño máximo es 50 .

  • ApplyToUniverse (opcional;Booleano) — ¿Qué si el ban se propaga a todos los lugares dentro del universo de experiencia. Por defecto es true .

  • Duration (requerido; entero) — Duración del expulsar, en segundos. Los ban 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 y fallan al unirse a una experiencia. La máxima longitud de la cuerda es 400 .

  • PrivateReason (requerido; cadena) — Mensajes internos que se devolverán al solicitar el historial de prohibición del usuario. La máxima longitud de la cuerda es 1000 .

  • ExcludeAltAccounts (opcional;Booleano) — Cuando true , Roblox no intenta prohibir cuentas alternativas. Por defecto es false .


Devolução

void

Amostras de código

Banning Users

local Players = game:GetService("Players")
if shouldBeBanned(player: 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

Rendimentos

Regresa un modelo de personaje equipado con todo lo especificado en la descripción de humanoides, y es R6 o R15 como especificado por el tipo de modelo.

Parâmetros

description: HumanoidDescription

Especifica la apariencia del personaje devuelto.

Especifica si el personaje devuelto será R6 o R15.

assetTypeVerification: Enum.AssetTypeVerification

La verificación del tipo de activo determina si esta función cargará modelos o no (deberías establecer esto como Siempre a menos que quieras cargar activos no catalogables).

Valor Padrão: "Default"

Devolução

Un modelo de personaje humanoide.

Amostras de código

Create Humanoid Model From Description

game.Players:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R15).Parent = game.Workspace

CreateHumanoidModelFromUserId

Rendimentos

Regresa un conjunto de modelos de personaje con todo lo equipado para coincidir con el avatar del usuario especificado por el ID de usuario. Esto incluye si ese personaje está actualmente R6 o R15.

Parâmetros

userId: number

El ID de usuario de un usuario de Roblox. (El UserId es el número en el perfil del usuario, por ejemplo, www.roblox.com/users/1/profile).


Devolução

Un modelo de personaje humanoide.

Amostras de código

Create Humanoid Model From A User ID

game.Players:CreateHumanoidModelFromUserId(1).Parent = game.Workspace

GetBanHistoryAsync

Rendimentos

Recupera el registro de prohibición y desban de cualquier usuario dentro del universo de la experiencia. Este método devuelve una instancia de BanHistoryPages que hereda de Pages .

Esta llamada de función solo tendrá éxito en los servidores de juego de producción y no en los dispositivos clientes o en Studio.

Esta API usa el API de Cloud Restricciones de Usuario. Podrás utilizar estas API para administrar tus prohibiciones en aplicaciones de terceros.

Parâmetros

userId: number

Devolução

Vea BanHistoryPages para obtener una referencia de regreso.

GetCharacterAppearanceInfoAsync

Rendimentos

Esta jugadoravatar (ignorando el equipamiento) 在 Roblox 网站上的形式 de diccionario. 不是要被 confused with GetCharacterAppearanceAsync , que carga los activos descritos por este método. 你可以使用 InsertService:LoadAsset() jugadoravatar.


<tr>
<td><code>activos</code></td>
<td>tabla (ver abajo)</td>
<td>Describe los activos equipados (sombreros, partes del cuerpo, etc)</td>
</tr>
<tr>
<td><code>bodyColors</code></td>
<td>tabla (ver abajo)</td>
<td>Describe los valores de BrickColor para cada extremidad</td>
</tr>
<tr>
<td><code>color de cuerpo3s</code></td>
<td>tabla (ver abajo)</td>
<td>Describe la instancia Color3 para cada extremidad que puede no coincidir perfectamente con bodyColors</td>
</tr>
<tr>
<td><code>pantalones predeterminados aplicados</code></td>
<td>booleano</td>
<td>Describe si se aplican los pantalones predeterminados</td>
</tr>
<tr>
<td><code>Camisa predeterminada aplicada</code></td>
<td>booleano</td>
<td>Describe si se aplica la camisa predeterminada</td>
</tr>
<tr>
<td><code>emotes</code></td>
<td>tabla (ver abajo)</td>
<td>Describe las animaciones de emote equipadas</td>
</tr>
<tr>
<td><code>tipo de avatar de jugador</code></td>
<td>cadena</td>
<td>Either "R15" or "R6"</td>
</tr>
<tr>
<td><code>escalas</code></td>
<td>tabla (ver abajo)</td>
<td>Describe varios factores de escalado del cuerpo</td>
</tr>
NombreTipoDescripción
Sub-mesa de recursos

La tabla assets es un arreglo de tablas que contienen las siguientes claves que describen los activos actualmente equipados por el jugador:


<tr>
<td><code>id</code></td>
<td>número</td>
<td>El ID de la propiedad de la recurso</td>
</tr>
<tr>
<td><code>tipo de activo</code></td>
<td>mesa</td>
<td>Una tabla con <code>nombre</code> y <code>id</code> campos, cada uno de los cuales describe el tipo de activo equipado ("Sombrero", "Cara", etc.")</td>
</tr>
<tr>
<td><code>nombre</code></td>
<td>cadena</td>
<td>El nombre de la recurso</td>
</tr>
NombreTipoDescripción
Escala Sub-Tabla

La tabla scales tiene las siguientes llaves, cada una de ellas correspondiente a una propiedad de escalado Humanoid : bodyType, 1> head1>, 4> height4>, 7> proporción7>, 9> depth9>, 0> width

Color de cuerpo Sub-Tabla

La tabla bodyColors tiene las siguientes llaves, cada una de ellas un número que coincide con un BrickColor ID número que se puede usar con BrickColor.new(id) : <

Parâmetros

userId: number

El * usuario del jugador especificado.


Devolução

Un diccionario que contiene información sobre la apariencia del personaje de un usuario dado.

Amostras de código

Example Return Character Appearance Dictionary

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

Rendimentos

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:


<tr>
<td>Identificación</td>
<td>int64</td>
<td>El ID de usuario del amistad</td>
</tr>
<tr>
<td>Nombre de usuario</td>
<td>cadena</td>
<td>Nombre de usuario del amistad</td>
</tr>
<tr>
<td>Nombre de visualización</td>
<td>cadena</td>
<td>El <code>Nombre de Clase.Player.DisplayName|Nombre de la pantalla amistad.</code></td>
</tr>
NombreTipoDescripción

Consulte los ejemplos de código para obtener una manera fácil de repetirse sobre todos los amigos de un jugador.

Parâmetros

userId: number

El ID de usuario del jugador que se especifica.


Devolução

Amostras de código

Print Roblox Friends

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

Rendimentos

Regresa la descripción del humanoide para un ID de atuendo especificado, que se establecerá con las partes/colores/Animaciones etc del atuendo. Un atuendo puede ser uno creado por un usuario, o puede ser el atuendo para un conjunto creado por Roblox.

Parâmetros

outfitId: number

El ID de la prenda para la que se busca la descripción humana.


Devolução

HumanoidDescription inicializada con la especificación para el pasado en el ID de atuendo.

Amostras de código

Get HumanoidDescription From Outfit ID

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

Rendimentos

Regresa una descripción humanoide que especifica todo lo equipado para el avatar del usuario especificado por el usuario pasado. También incluye escalas y colores de cuerpo.

Parâmetros

userId: number

El ID de usuario de un usuario de Roblox. (El UserId es el número en el perfil del usuario, por ejemplo, www.roblox.com/users/1/profile).


Devolução

HumanoidDescription inicializada con la especificación del avatar del usuario.

Amostras de código

Get HumanoidDescription From User ID

game.Players:CreateHumanoidModelFromDescription(game.Players:GetHumanoidDescriptionFromUserId(1), Enum.HumanoidRigType.R15).Parent = game.Workspace

GetNameFromUserIdAsync

Rendimentos

La función GetNameFromUserIdAsync Players enviará una consulta al sitio web de Roblox que pregunta qué es el nombre de usuario de la cuenta con el UserId dado.

Este método falla si no existe una cuenta con el ID de usuario proporcionado. Si no estás seguro de que tal cuenta existe, se recomienda envolver las llamadas a esta función con pcall . Además, puedes almacenar manualmente los resultados para hacer futuras llamadas con el mismo ID rápidamente. Ver los ejemplos de código para aprender más.

Parâmetros

userId: number

El Player.UserId del jugador que se especifica.


Devolução

El nombre de un usuario con el ID de usuario especificado Player.UserId .

Amostras de código

Get Name from 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"
Get Name from UserId using a cache

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

Rendimentos

Esta función enviará una consulta al sitio web de Roblox que solicite qué es el Player.UserId del cuenta con el nombre dado Player .

Este método falla si no existe una cuenta con el nombre de usuario proporcionado. Si no estás seguro de que tal cuenta existe, se recomienda envolver las llamadas a esta función con pcall . Además, puedes almacenar manualmente los resultados para hacer llamadas rápidas con el mismo nombre de usuario. Vea los ejemplos de código para aprender más.

Parâmetros

userName: string

El nombre de usuario del jugador que se especifica.


Devolução

El Player.UserId de un usuario cuyo nombre se especifica.

Amostras de código

Get UserId from 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"
Get UserId from Name using a cache

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

Rendimentos

Esta función devuelve la URL del contenido de un avatar de un jugador dado su UserId , el tamaño de la imagen deseado como un Enum.ThumbnailSize枚, y el tipo deseado como un Enum.ThumbnailType枚. También devuelve un valor booleano que describe si la imagen está lista para usar.

La mayoría de las veces, este método se usa con ImageLabel.Image o Decal.Texture para mostrar imágenes de avatar de usuarios en una experiencia.

Parâmetros

userId: number

El Player.UserId del jugador que se especifica.

thumbnailType: Enum.ThumbnailType

Un Enum.ThumbnailType que describe el tipo de miniatura.

thumbnailSize: Enum.ThumbnailSize

Un Enum.ThumbnailSize que especifica el tamaño de la miniatura.


Devolução

Un tutorial que contiene la URL de contenido de una miniatura de usuario basada en los parámetros especificados, y un valor deBooleano que describe si la imagen está lista para usar o no.

Amostras de código

Display Player Thumbnail

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

void
Rendimentos

Desbanea a los jugadores prohibidos de Players:BanAsync() o la API de Cloud Restricted de Usuario .

Al igual que Players:BanAsync() , este método toma un diccionario de config que te permitirá eliminar usuarios. Esto configura los usuarios que no están eliminados y el alcance desde el que se eliminan.

Las exenciones de pérdida de efecto solo aplicarán a los baneos con el mismo alcance. Por ejemplo, una exención de pérdida de efecto con ApplyToUniverse establecido en ApplyToUniverse no invalidará un baneo anterior con true establecido en 2> 真的

Este método invoca una llamada HTTP a los servicios de backend, que están acelerados y pueden fallar. Si estás llamando a esta API con múltiples UserIDs, este método intentará hacer esta llamada HTTP por cada UserID. Luego agregará

Debido a los riesgos asociados con la prohibición de usuarios, este método solo se puede llamar en el servidor de juegos de backend. Las llamadas del lado del cliente resultarán en un error. Puedes probar esta API en Studio, Creación en equipoy Team Test, pero las prohibiciones no se aplicarán a la producción. Este método de llamada solo intentará solicitudes de prohibición en los servidores de juegos de producción y no en Studio. Sin embargo, todos los pasos de validación de entrada trabajarán en Studio.

Esta API usa el API de Cloud Restricciones de Usuario. Podrás utilizar estas API para administrar tus prohibiciones en aplicaciones de terceros.

Parâmetros

config: Dictionary

<tbody>
<tr>
<td><code>ID de usuario</code></td>
<td>matriz/lista</td>
<td>UserIDs para ser force permitido en la experiencia(s). El tamaño máximo es <code>50</code> .</td>
</tr>
<tr>
<td><code>Aplicar al universo</code></td>
<td>booleano</td>
<td>Propaga el unban a todos los lugares dentro de este universo.</td>
</tr>
</tbody>
NombreTipoDescripción

Devolução

void

Amostras de código

Unbanning Users

local Players = game:GetService("Players")
if shouldBeUnbanned(player: 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

El evento PlayerAdded ocurre cuando un jugador ingresa al juego. Esto 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 utilizar junto con el evento Players.PlayerRemoving, que se activa cuando un jugador está a punto de salir del juego. Por instancia, si desea imprimir un mensaje cada vez que se una o salga del juego un nuevo jugador:


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 desea rastrear cuando se agrega o elimina el personaje de un jugador del juego, como cuando un jugador reaparece o muere, puede usar las funciones Player.CharacterAdded y Player.CharacterRemoving.

Nota que este evento no funciona como esperado en el modo de juego Reproducir porque el jugador se crea antes de que los scripts se conecten a PlayerAdded . Para manejar este caso, así como casos en los que el script se agrega al juego después de que el jugador ingrese, crea una función onPlayerAdded() que puedes llamar para manejar la entrada de un jugador.

Parâmetros

player: Player

Una instancia del jugador que se unió al juego.


Amostras de código

Players.PlayerAdded

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. Sin embargo, tenga en cuenta que el servidor solo intentará verificar y actualizar la membresía después de que se cierre el modo Premium. Por lo tanto, para contar con casos en los que el usuario compra Premium fuera del juego mientras jue

Para aprender más sobre y incorporar Premium a tu experiencia y monetizar con el sistema de pagos basado en el compromiso, see Pagos basados en el compromiso .

Véase también:

Parâmetros

player: Player

Amostras de código

Handling Premium Membership 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 PlayerRemoving se activa justo antes de que un Player salga del juego. Este evento se activa antes de que ChildRemoved haga en Players , y se comporta algo similar a

Esto se puede utilizar 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 salga 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 desea rastrear cuando se agrega o elimina el personaje de un jugador del juego, como cuando un jugador reaparece o muere, puede usar las funciones Player.CharacterAdded y Player.CharacterRemoving.

Parâmetros

player: Player

Una instancia del jugador que se está saliendo del juego.


Amostras de código

Players.PlayerRemoving

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 de juegos 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 el usuario haya cerrado la ventana de diálogo de compra de suscripciones; el mensaje de la ventana de diálogo le dice que

Tenga en cuenta que solo los scripts del servidor reciben este evento.

Parâmetros

user: Player

Usuario cuyo estado de suscripción ha cambiado.

subscriptionId: string

El ID de la suscripción con un cambio de estado.