Asignar etiquetas de chat

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Este ejemplo muestra cómo asignar etiquetas de chat a los jugadores en función de su membresía en un grupo.Las etiquetas de chat son una manera de identificar visualmente a un jugador en la ventana de chat y útil para indicar el rol o el estado de un jugador.

VIP chat tag appended to user name in the chat window.

Debido a que las llamadas de chat de texto no ceden esperan una devolución de llamadano cesante, intentando consultar el estado de membresía del grupo de un jugador en la llamada de devolución TextChatService.OnIncomingMessage no se recomienda, ya que puede causar que el sistema de chat se bloquee o se vuelva irresponsable.

En cambio, establece un atributo de jugador cuando se unan al servidor.Establecer un atributo te permite reutilizar el estado del jugador en otras partes de tu experiencia, como permitir el acceso a áreas particulares o proporcionar experiencia de bonificación.

  1. Crea un Script en ServerScriptService y agrega el siguiente código a él:

    Servidor

    local Players = game:GetService("Players")
    -- Reemplazar 123456 con el ID de grupo que desea verificar
    local groupID = 123456
    Players.PlayerAdded:Connect(function(player)
    local success, isInGroup = pcall(function()
    return player:IsInGroup(groupID)
    end)
    if success and isInGroup then
    player:SetAttribute("IsVIP", true)
    else
    player:SetAttribute("IsVIP", false)
    end
    end)
  2. Crea un LocalScript en StarterPlayerStarterCharacterScripts y agrega el siguiente código para mostrar una etiqueta [VIP] en la ventana de chat:

    Cliente

    local Players = game:GetService("Players")
    local TextChatService = game:GetService("TextChatService")
    TextChatService.OnIncomingMessage = function(message: TextChatMessage)
    local textSource = message.TextSource
    if textSource then
    local player = Players:GetPlayerByUserId(textSource.UserId)
    if player then
    if player:GetAttribute("IsVIP") == true then
    local overrideProperties = Instance.new("TextChatMessageProperties")
    overrideProperties.PrefixText = "[VIP] " .. message.PrefixText
    return overrideProperties
    end
    end
    end
    return nil
    end