Ten przykład pokazuje, jak wdrożyć ekskluzywny czat dla użytkowników, którzy są blisko siebie w świecie gry.Rozszerza powrót z funkcją używającą TextSource do identyfikacji lokalizacji użytkownika, który może być potencjalnym odbiorcą wiadomości.Jeśli ta funkcja zwraca false, oznacza to, że użytkownik lokalizuje dalej niż zakres ważny domyślnie od nadawcy wiadomości, więc system nie dostarcza wiadomości do tego użytkownika.
Dodaj następujące do Script w ServerScriptService :
Serwer
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Zdobądź kanał czatu dla czatu opartego na zbliżeniu
-- Możesz zastąpić ten ogólny kanał kanałem dedykowanym
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Funkcja, aby uzyskać pozycję postaci użytkownika
local function getPositionFromUserId(userId: number)
-- Zdobądź gracza powiązanego z danym ID użytkownika
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Jeśli gracz istnieje, uzyskaj pozycję jego postaci
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Zwróć domyślną pozycję, jeśli nie można znaleźć gracza lub postaci
return Vector3.zero
end
-- Ustaw powrót dla ogólnego kanału do kontroli dostarczania wiadomości
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Zdobądź pozycje nadawcy i odbiorcy wiadomości
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Dostarcz wiadomość, jeśli odległość między nadawcą a odbiorcą wynosi mniej niż 50 jednostek
return (targetPos - sourcePos).Magnitude < 50
end