Biasanya, kode dalam pengalaman hanya dapat mengubah server atau klien yang dijalankan, tetapi mungkin ada situasi di mana Anda ingin server yang berbeda untuk berkomunikasi satu sama lain, termasuk:
- Pengumuman Global — Kirim pengumuman seperti "Seorang pengguna menemukan item khusus!" ke semua server pengalaman.
- Penggunaan Aman Server Bawaan Google Chrome Versi 2020.0.100.000 — Kompilasi daftar semua server pengalaman dan siapa yang ada di dalamnya (diperbarui setiap menit) dan tampilkan daftar di maksimum 20 server.
Anda dapat mendukung pesan antiserver di pengalaman Anda menggunakan MessagingService. Anda juga dapat menggunakan Teleportation Playground sample experience untuk melihat bagaimana pesan antiserver bekerja sebelum Anda menerapkannya. Terakhir, lihat di sini untuk menjelajahi komunikasi antiserver menggunakan alat eksternal.
Pengaturan Pengirim Pesan Antar Server
Untuk mengaktifkan pesan antiserver, Anda harus menyiapkan saluran pesan topik yang merupakan saluran pesan yang dikhususkan yang dapat diakses dari banyak server. Setelah Anda menciptakan topik, Anda dapat berlangganan pengguna ke topik untuk menerima pesan dan mengaktifkan publikasi pesan ke topik.
Mendaftar Pengguna untuk Menerima Pesan
Gunakan MessagingService:SubscribeAsync() untuk mengirimkan pengguna ke topik dan menentukan fungsi panggilan yang mendeteksi pesan yang diterbitkan ke topik itu. Misalnya, contoh kode berikut mengirimkan semua pengguna ke topik EventTemanServer yang menerima pesan saat setiap pengguna diteleport ke server yang berbeda.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Berlangganan ke topik
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Berlangganan keluar dari topik pada perubahan nenek moyang pemain
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Menerbitkan Pesan
Gunakan MessagingService:PublishAsync() untuk mencocokkan topik tertentu dan menerbitkan pesan ke itu. Misalnya, contoh kode berikut menggunakan PublishAsync() untuk menginform
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publikasi ke topik
local publishSuccess, publishResult = pcall(function()
local message = player.Name .. " joined server with 'JobId' of " .. game.JobId
MessagingService:PublishAsync(MESSAGING_TOPIC, message)
end)
if not publishSuccess then
print(publishResult)
end
end)