Chat baseado em proximidade

*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 implementar um chat exclusivo para usuários que estão perto uns dos outros no mundo 3D. Ele estende o callback com uma função usando TextSource para identificar as localizações de um usuário que pode ser um potencial receptor de mensagem. Se essa função retornar false, isso significa que o usuário está localizado além do alcance válido pré-definido em relação ao remetente da mensagem, então o sistema não entrega a mensagem a esse usuário.

Adicione o seguinte a um Script em ServerScriptService:

Servidor

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Obter o canal de chat para chat baseado em proximidade
-- Você pode substituir este canal geral por um canal dedicado
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Função para obter a posição do personagem de um usuário
local function getPositionFromUserId(userId: number)
-- Obter o jogador associado ao ID de usuário fornecido
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Se o jogador existir, obter a posição de seu personagem
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Retornar uma posição padrão se o jogador ou personagem não puder ser encontrado
return Vector3.zero
end
-- Definir o callback para o canal geral para controlar a entrega de mensagens
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Obter as posições do remetente da mensagem e do alvo
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Entregar a mensagem se a distância entre o remetente e o alvo for menor que 50 unidades
return (targetPos - sourcePos).Magnitude < 50
end
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.