Nabijheidsgebaseerde chat

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.

Dit voorbeeld laat zien hoe je een exclusieve chat kunt implementeren voor gebruikers die dicht bij elkaar zijn in de 3D-wereld. Het breidt de callback uit met een functie die TextSource gebruikt om de locaties van een gebruiker te identificeren die een potentiële ontvanger van een bericht zou kunnen zijn. Als deze functie false retourneert, betekent dit dat de gebruiker verder weg is dan het vooraf ingestelde geldige bereik van de berichtsender, zodat het systeem het bericht niet aan die gebruiker levert.

Voeg het volgende toe aan een Script in ServerScriptService:

Server
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Verkrijg het chatkanaal voor nabijheidsgebaseerde chat
-- Je kunt dit algemene kanaal vervangen door een speciaal kanaal
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Functie om de positie van het karakter van een gebruiker te krijgen
local function getPositionFromUserId(userId: number)
-- Verkrijg de speler die is gekoppeld aan de gegeven gebruikers-ID
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Als de speler bestaat, verkrijg dan de positie van hun karakter
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Geef een standaardpositie terug als de speler of het karakter niet kan worden gevonden
return Vector3.zero
end
-- Stel de callback in voor het algemene kanaal om de berichtlevering te controleren
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Verkrijg de posities van de berichtsender en de doelwit
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Lever het bericht als de afstand tussen sender en doelwit minder is dan 50 eenheden
return (targetPos - sourcePos).Magnitude < 50
end
©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.