Yakınlık temelli sohbet

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bu örnek, oyun dünyasında birbirine yakın olan kullanıcılar için özel bir sohbet nasıl uygulanacağını gösterir.Geri çağrıyı TextSource kullanarak bir işlevle genişletir ve potansiyel bir mesaj alıcısı olabilecek bir kullanıcının konumlarını tanımlar.Bu işlev false dönerse, kullanıcının mesaj göndericisinden daha uzak bir menzile yerleştiği anlamına gelir, bu nedenle sistem bu kullanıcıya mesajı göndermez.

Aşağıdakileri Script içinde ServerScriptService ekleyin:

Sunucu

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Yakınlaştırmaya dayalı sohbet için sohbet kanalı alın
-- Bu genel kanalı özel bir kanal ile değiştirebilirsiniz
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Kullanıcının karakterinin konumunu alma işlevi
local function getPositionFromUserId(userId: number)
-- Verilen kullanıcı kimliğine bağlı oyuncuyu alın
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Oyuncu varsa, karakterinin konumunu alın
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Oyuncu veya karakter bulunamıyorsa varsayılan bir konum döndürün
return Vector3.zero
end
-- Genel kanal için geri çağrıyı mesaj teslimini kontrol etmek için ayarlayın
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Mesaj göndericisinin ve hedefin pozisyonlarını alın
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Gönderici ve hedef arasındaki mesafe 50 birimden az ise mesajı gönderin
return (targetPos - sourcePos).Magnitude < 50
end