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
El siguiente ejemplo crea una función awardBadge() que maneja errores potenciales que pueden ocurrir al otorgar una insignia.Al usar las propiedades de la insignia obtenida a través de BadgeService:GetBadgeInfoAsync(), confirma que la insignia se puede otorgar y lo hace usando BadgeService:AwardBadge() .
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local BADGE_ID = 0
local function awardBadge(player, badgeId)
-- Obtener información de la insignia
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
-- Confirma que se puede otorgar la insignia
if badgeInfo.IsEnabled then
-- Insignia de premio
local awardSuccess, result = pcall(function()
return BadgeService:AwardBadge(player.UserId, badgeId)
end)
if not awardSuccess then
-- la función de insignia de premio lanzó un error
warn("Error while awarding badge:", result)
elseif not result then
-- la función de medalla de premio no otorgó una medalla
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)
El siguiente script espera a que cualquier jugador entre al juego y verifica si posee una insignia específica.Esto es útil para crear una zona restringida con filtrado de colisiones o teletransportación que solo funciona si un jugador posee una insignia especial.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeId = 00000000 -- Cambia esto a tu ID de insignia
local function onPlayerAdded(player)
-- Compruebe si el jugador tiene la insignia
local success, hasBadge = pcall(function()
return BadgeService:UserHasBadgeAsync(player.UserId, badgeId)
end)
-- Si hay un error, emite una advertencia y sal de la función
if not success then
warn("Error while checking if player has badge!")
return
end
if hasBadge then
-- Manipule la propiedad de la insignia del jugador según sea necesario
print(player.Name, "has badge", badgeId)
end
end
-- Conecta eventos "PlayerAdded" a la función "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)
Este script comprueba qué insignias posee un usuario cuando se une a la experiencia.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeIds = { 0000000000, 1111111111, 2222222222 } -- Cambia esto a una lista de tus ID de insignia
local function onPlayerAdded(player)
-- Compruebe si el jugador tiene alguna de las insignias
local success, result = pcall(function()
return BadgeService:CheckUserBadgesAsync(player.UserId, badgeIds)
end)
-- Si hay un error, emite una advertencia y sal de la función
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
El siguiente ejemplo crea una función awardBadge() que maneja errores potenciales que pueden ocurrir al otorgar una insignia.Al usar las propiedades de la insignia obtenida a través de BadgeService:GetBadgeInfoAsync(), confirma que la insignia se puede otorgar y lo hace usando BadgeService:AwardBadge() .
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local BADGE_ID = 0
local function awardBadge(player, badgeId)
-- Obtener información de la insignia
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
-- Confirma que se puede otorgar la insignia
if badgeInfo.IsEnabled then
-- Insignia de premio
local awardSuccess, result = pcall(function()
return BadgeService:AwardBadge(player.UserId, badgeId)
end)
if not awardSuccess then
-- la función de insignia de premio lanzó un error
warn("Error while awarding badge:", result)
elseif not result then
-- la función de medalla de premio no otorgó una medalla
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
Este script comprueba qué insignias posee un usuario cuando se une a la experiencia.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeIds = { 0000000000, 1111111111, 2222222222 } -- Cambia esto a una lista de tus ID de insignia
local function onPlayerAdded(player)
-- Compruebe si el jugador tiene alguna de las insignias
local success, result = pcall(function()
return BadgeService:CheckUserBadgesAsync(player.UserId, badgeIds)
end)
-- Si hay un error, emite una advertencia y sal de la función
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
El siguiente script espera a que cualquier jugador entre al juego y verifica si posee una insignia específica.Esto es útil para crear una zona restringida con filtrado de colisiones o teletransportación que solo funciona si un jugador posee una insignia especial.
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeId = 00000000 -- Cambia esto a tu ID de insignia
local function onPlayerAdded(player)
-- Compruebe si el jugador tiene la insignia
local success, hasBadge = pcall(function()
return BadgeService:UserHasBadgeAsync(player.UserId, badgeId)
end)
-- Si hay un error, emite una advertencia y sal de la función
if not success then
warn("Error while checking if player has badge!")
return
end
if hasBadge then
-- Manipule la propiedad de la insignia del jugador según sea necesario
print(player.Name, "has badge", badgeId)
end
end
-- Conecta eventos "PlayerAdded" a la función "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)