BadgeService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
La clase BadgeService proporciona información y funcionalidad relacionada con insignias .Las insignias se utilizan en toda la plataforma para reconocer los logros y la actividad de un jugador.Al otorgar una insignia a un jugador, se agrega a su inventario y se muestra en su página de perfil.
Muestras de código
The following example creates an awardBadge() function that handles potential errors that may occur when awarding a badge. Using properties of the badge fetched via BadgeService:GetBadgeInfoAsync(), it confirms that the badge can be awarded and does so using BadgeService:AwardBadge().
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local BADGE_ID = 0
local function awardBadge(player, badgeId)
-- Fetch badge information
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
-- Confirm that badge can be awarded
if badgeInfo.IsEnabled then
-- Award badge
local awardSuccess, result = pcall(function()
return BadgeService:AwardBadge(player.UserId, badgeId)
end)
if not awardSuccess then
-- the AwardBadge function threw an error
warn("Error while awarding badge:", result)
elseif not result then
-- the AwardBadge function did not award a badge
warn("Failed to award badge.")
end
end
else
warn("Error while fetching badge info: " .. badgeInfo)
end
end
local function onPlayerAdded(player)
awardBadge(player, BADGE_ID)
end
Players.PlayerAdded:Connect(onPlayerAdded)
The following script waits for any player to enter the game and checks if they own a specific badge. This is useful for creating a restricted area with collision filtering or teleportation that only works if a player owns a special badge.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeId = 00000000 -- Change this to your badge ID
local function onPlayerAdded(player)
-- Check if the player has the badge
local success, hasBadge = pcall(function()
return BadgeService:UserHasBadgeAsync(player.UserId, badgeId)
end)
-- If there's an error, issue a warning and exit the function
if not success then
warn("Error while checking if player has badge!")
return
end
if hasBadge then
-- Handle player's badge ownership as needed
print(player.Name, "has badge", badgeId)
end
end
-- Connect "PlayerAdded" events to the "onPlayerAdded()" function
Players.PlayerAdded:Connect(onPlayerAdded)
This script checks which badges a user owns when they join the experience.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeIds = { 0000000000, 1111111111, 2222222222 } -- Change this to a list of your badge IDs
local function onPlayerAdded(player)
-- Check if the player has any of the badges
local success, result = pcall(function()
return BadgeService:CheckUserBadgesAsync(player.UserId, badgeIds)
end)
-- If there's an error, issue a warning and exit the function
if not success then
warn("Error while checking if player", player.Name, "has badges:", result)
return
end
local ownedBadgeIds = result
if #ownedBadgeIds == 0 then
print(player.Name, "does not have any of the badges")
else
print(player.Name, "has the following badges:", table.concat(ownedBadgeIds, ", "))
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
This sample prints badge information fetched via BadgeService:GetBadgeInfoAsync().
local BadgeService = game:GetService("BadgeService")
-- Fetch badge information
local success, result = pcall(function()
return BadgeService:GetBadgeInfoAsync(00000000) -- Change this to desired badge ID
end)
-- Output the information
if success then
print("Badge:", result.Name)
print("Enabled:", result.IsEnabled)
print("Description:", result.Description)
print("Icon:", "rbxassetid://" .. result.IconImageId)
else
warn("Error while fetching badge info:", result)
end
Resumen
Métodos
Otorga una insignia a un jugador dado el ID de cada uno.
Comprueba una lista de ID de insignia contra un UserId y devuelve una lista de ID de insignia que el jugador posee.
Obtener información sobre una insignia dada su ID.
Comprueba si un jugador tiene la insignia dada la Player.UserId y la ID de la insignia.
Propiedades
Métodos
AwardBadge
Otorga una insignia Player con el ID de insignia UserId y la insignia ID.Límite de velocidad: 50 + 35 * [número de usuarios] por minuto .Para otorgar con éxito una emblema:
- El jugador debe estar conectado actualmente al juego.
- El jugador no debe tener ya la insignia (tenga en cuenta que un jugador puede eliminar una insignia otorgada de su perfil y recibir la insignia de nuevo).
- La insignia debe ser otorgada desde un lado del servidor Script o una ModuleScript eventualmente requerida por un Script , no desde un LocalScript .
- La insignia debe ser otorgada en un lugar que sea parte del juego asociado con la emblema.
- La insignia debe estar habilitada; compruebe esto usando la propiedad IsEnabled de la insignia obtenida a través de BadgeService:GetBadgeInfoAsync() .
Vea también:
Parámetros
El Player.UserId del usuario al que se le otorgará la insignia.
El ID de la insignia a ser otorgada.
Devuelve
Booleano de true si la insignia se otorgó con éxito.
Muestras de código
The following example creates an awardBadge() function that handles potential errors that may occur when awarding a badge. Using properties of the badge fetched via BadgeService:GetBadgeInfoAsync(), it confirms that the badge can be awarded and does so using BadgeService:AwardBadge().
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local BADGE_ID = 0
local function awardBadge(player, badgeId)
-- Fetch badge information
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
-- Confirm that badge can be awarded
if badgeInfo.IsEnabled then
-- Award badge
local awardSuccess, result = pcall(function()
return BadgeService:AwardBadge(player.UserId, badgeId)
end)
if not awardSuccess then
-- the AwardBadge function threw an error
warn("Error while awarding badge:", result)
elseif not result then
-- the AwardBadge function did not award a badge
warn("Failed to award badge.")
end
end
else
warn("Error while fetching badge info: " .. badgeInfo)
end
end
local function onPlayerAdded(player)
awardBadge(player, BADGE_ID)
end
Players.PlayerAdded:Connect(onPlayerAdded)
CheckUserBadgesAsync
Comprueba una lista de ID de insignia contra un UserId y devuelve una lista de ID de insignia que el jugador posee.
Este método admite lotes de hasta 10 insignias. Usa BadgeService:UserHasBadgeAsync() para búsquedas de insignias únicas.
Límite de velocidad: 10 + 5* [número de jugadores] por minuto en cada servidor.
Se puede consultar cualquier conjunto de insignias para cualquier experiencia, sin importar quién creó las insignias o para qué experiencias son.Cualquier UserId se puede usar en un Script , pero en un LocalScript , solo se puede usar el UserId del usuario local cuyo cliente ejecuta el script.
Parámetros
El UserId del jugador para verificar la propiedad de las insignias especificadas.
La lista de ID de las insignias para verificar la propiedad máxima longitud de 10.
Devuelve
La lista de ID de insignia que el usuario dado posee fuera de los ID de insignia proporcionados.Vacío si ninguna de las insignias proporcionadas es propiedad del usuario dado.No se garantiza que esté en el mismo orden que la lista de entrada.
Muestras de código
This script checks which badges a user owns when they join the experience.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeIds = { 0000000000, 1111111111, 2222222222 } -- Change this to a list of your badge IDs
local function onPlayerAdded(player)
-- Check if the player has any of the badges
local success, result = pcall(function()
return BadgeService:CheckUserBadgesAsync(player.UserId, badgeIds)
end)
-- If there's an error, issue a warning and exit the function
if not success then
warn("Error while checking if player", player.Name, "has badges:", result)
return
end
local ownedBadgeIds = result
if #ownedBadgeIds == 0 then
print(player.Name, "does not have any of the badges")
else
print(player.Name, "has the following badges:", table.concat(ownedBadgeIds, ", "))
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetBadgeInfoAsync
Esta función recupera información sobre una insignia dada su ID.Se tarda un breve momento en cargar la información del sitio web de Roblox; las llamadas repetidas se almacenarán por un corto período de tiempo.Devuelve un diccionario con los siguientes campos:
<th>Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><b>Nombre</b></td><td>cadena</td><td>El nombre de la emblema.</td></tr><tr><td><b>Descripción</b></td><td>cadena</td><td>La descripción de la emblema.</td></tr><tr><td><b>IconImageId</b></td><td>longitud int64</td><td>El ID del activo de la imagen para la emblema.</td></tr><tr><td><b>Está activado</b></td><td>bool</td><td>Indica si la insignia está disponible para ser otorgada.</td></tr></tbody>
Clave |
---|
Vea también:
Parámetros
El ID de la insignia de la insignia cuya información debe recuperarse.
Devuelve
Un diccionario de información sobre la emblemaespecificada.
Muestras de código
This sample prints badge information fetched via BadgeService:GetBadgeInfoAsync().
local BadgeService = game:GetService("BadgeService")
-- Fetch badge information
local success, result = pcall(function()
return BadgeService:GetBadgeInfoAsync(00000000) -- Change this to desired badge ID
end)
-- Output the information
if success then
print("Badge:", result.Name)
print("Enabled:", result.IsEnabled)
print("Description:", result.Description)
print("Icon:", "rbxassetid://" .. result.IconImageId)
else
warn("Error while fetching badge info:", result)
end
UserHasBadgeAsync
Comprueba y devuelve si un Player posee una insignia dada su UserId y la ID de la insignia.Límite de velocidad: 50 + 35 * [número de jugadores] por minuto .Puedes llamar a la función desde el servidor en un Script o ModuleScript eventualmente requerida por un Script , y el usuario en cuestión debe estar presente en el servidor para que se ejecutarla consulta.Al llamar el método desde el cliente en un LocalScript , solo funciona para el usuario local cuyo cliente está ejecutando el script.
Cualquier insignia para cualquier juego se puede consultar, sin importar quién creó la insignia o para qué experiencia se utiliza.
Vea también:
Parámetros
El Player.UserId del jugador para verificar la propiedad de la emblemaespecificada.
El ID de la insignia de la insignia cuya propiedad se comprobará.
Devuelve
Indica si el usuario especificado tiene la emblemaespecificada.
Muestras de código
The following script waits for any player to enter the game and checks if they own a specific badge. This is useful for creating a restricted area with collision filtering or teleportation that only works if a player owns a special badge.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeId = 00000000 -- Change this to your badge ID
local function onPlayerAdded(player)
-- Check if the player has the badge
local success, hasBadge = pcall(function()
return BadgeService:UserHasBadgeAsync(player.UserId, badgeId)
end)
-- If there's an error, issue a warning and exit the function
if not success then
warn("Error while checking if player has badge!")
return
end
if hasBadge then
-- Handle player's badge ownership as needed
print(player.Name, "has badge", badgeId)
end
end
-- Connect "PlayerAdded" events to the "onPlayerAdded()" function
Players.PlayerAdded:Connect(onPlayerAdded)