Atribuir tags de chat

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

Este exemplo mostra como atribuir tags de bate-papo aos jogadores com base em sua adesão a um grupo.Tags de bate-papo são uma maneira de identificar visualmente um jogador na janela de bate-papo e útil para indicar o papel ou o status de um jogador.

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

Porque chamadas de chat de texto esperam um retorno não cedente, tentando consultar o status de membros de grupo de um jogador no retorno do TextChatService.OnIncomingMessage chamada não é recomendado, pois pode causar o sistema de chat a travar ou ficar irresponsivo.

Em vez disso, defina um atributo de jogador quando eles se juntarem ao servidor.Definir um atributo permite que você reutilize o status do jogador em outras partes de sua experiência, como permitir o acesso a áreas específicas ou fornecer experiência bônus.

  1. Crie um Script em ServerScriptService e adicione o seguinte código a ele:

    Servidor

    local Players = game:GetService("Players")
    -- Substitua 123456 pelo ID do grupo que você deseja 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. Crie um LocalScript em StarterPlayerStarterCharacterScripts e adicione o seguinte código para exibir uma etiqueta [VIP] na janela 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