Contoh ini menunjukkan cara menerapkan obrolan eksklusif untuk pengguna yang berada dekat satu sama lain di dunia permainan.Ini memperluas panggil balas dengan fungsi menggunakan TextSource untuk mengidentifikasi lokasi pengguna yang mungkin menjadi penerima pesan potensialJika fungsi ini mengembalikan false , itu berarti bahwa pengguna menemukan lebih jauh dari rentang valid default dari pengirim pesan, sehingga sistem tidak mengirim pesan kepada pengguna itu.
Tambahkan hal berikut ke Script di ServerScriptService :
Pelayan
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Dapatkan saluran obrolan untuk obrolan berbasis jarak
-- Anda dapat mengganti saluran umum ini dengan saluran channel
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Fungsi untuk mendapatkan posisi karakter pengguna
local function getPositionFromUserId(userId: number)
-- Dapatkan pemain yang terkait dengan ID pengguna yang diberikan
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Jika pemain ada, dapatkan posisi karakternya
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Kembali posisi default jika pemain atau karakter tidak dapat ditemukan
return Vector3.zero
end
-- Tetapkan panggil balas untuk saluran umum untuk mengontrol pengiriman pesan
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Dapatkan posisi pengirim pesan dan target
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Kirim pesan jika jarak antara pengirim dan target kurang dari 50 unit
return (targetPos - sourcePos).Magnitude < 50
end