Zwykle kod w ramach doświadczenia może wpływać tylko na serwer lub klienty, na którym działa, ale mogą wystąpić sytuacje, w których chcesz, aby różne serwery komunikowały się ze sobą, w tym:
- Ogłoszenia globalne — Wysyłaj ogłoszenia, takie jak "Użytkownik znalazł specjalny przedmiot!", na wszystkie serwery doświadczenia.
- Wyszukiwarka serwerów w czasie rzeczywistym — Skompiluj listę wszystkich serwerów doświadczenia i kto jest na nich (aktualizowana co minutę) i wyświetl listę na maksymalnie 20 serwerach.
Możesz wspierać wiadomości międzyserwerowe w swoim doświadczeniu za pomocą MessagingService .Możesz również użyć próbnego doświadczenia Parku do odtwarzania teleportacji, aby zobaczyć, jak działa komunikacja międzyserwerowa, zanim ją wdrożysz.Wreszcie, zobacz tutaj, aby zbadać komunikację między serwerami za pomocą zewnętrznych narzędzi.
Ustawienie wiadomości międzyserwerowych
Aby włączyć wiadomości międzyserwerowe, musisz skonfigurować tekst , który jest niestandardowym kanałem wiadomości dostępnym z wielu serwerów.Po utworzeniu tematu możesz subskrybować użytkowników tematu, aby otrzymywać wiadomości i włączyć publikowanie wiadomości do tematu.
Subskrybuj użytkowników, aby otrzymywać wiadomości
Użyj MessagingService:SubscribeAsync(), aby subskrybować użytkowników do tematu i określić funkcję powrotną, która wykrywa wiadomości publikowane w tym temacie.Na przykład następujący przykład kodu subskrybuje wszystkich użytkowników do tematu FriendServerEvent , który otrzymuje wiadomości, gdy którykolwiek użytkownik zostanie przeniesiony na inny serwer.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Subskrybuj temat
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Odsubskrybuj temat po zmianie przodków gracza
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Opublikuj wiadomości
Użyj MessagingService:PublishAsync(), aby dopasować konkretny temat i opublikować w nim wiadomość.Na przykład następujący przykład kodu używa PublishAsync() , aby powiadomić wszystkich użytkowników, gdy użytkownik dołącza do nowego serwera, w tym Player.Name reprezentujące nazwę wyświetlania użytkownika i JobId , unikalny identyfikator dla instancji serwera doświadczenia uruchamianego.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Opublikuj w temacie
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)