Normalmente, el código dentro de una experiencia solo puede afectar a los servidores o clientes en los que se está ejecutando, pero puede haber situaciones en las que quieras que diferentes servidores se comuniquen entre sí, incluida:
- Anuncios globales — Enviar anuncios como «¡Un usuario encontró un objetoespecial!» a todos los servidores de la experiencia.
- Navegador de servidor en tiempo real — Compila una lista de todos los servidores de la experiencia y quién está en ellos (actualizado cada minuto) y muestra la lista en un máximo de 20 servidores.
Puedes apoyar el mensajería cruzada en tu experiencia usando MessagingService . También puedes usar la experiencia de prueba de Teleportation Playground para ver cómo funciona el mensajería cruzada antes de implementarlo. Por último, ve a aquí para explorar la comunicación cruzada usando herramientas externas.
Configuración de mensajería cruzada
Para habilitar el mensajería cruzada, debe configurar un canal de temas que es un canal de mensajes personalizado que se puede acceder desde múltiples servidores. Después de crear un tema, puede suscribir usuarios al tema para recibir mensajes y habilitar la publicación de mensajes al tema.
Suscripción de usuarios para recibir mensajes
Usa MessagingService:SubscribeAsync() para suscribir a los usuarios a un tema y especificar una función de llamada que detecta la publicación de mensajes en ese tema. Por ejemplo, el siguiente código de ejemplo suscribe a todos los usuarios a un tema FronteServerEvento que recibe mensajes cuando cualquier usuario es teletransportado a un servidor diferente.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Suscríbase al tema
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Darse de baja del tema al cambiar la descendencia del jugador
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Publicando mensajes
Usa MessagingService:PublishAsync() para igualar un tema específico y publicar un mensaje en él. Por ejemplo, el siguiente código de ejemplo usa PublishAsync() para notificar a todos los usuarios cuando un usuario se une a
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publicar al tema
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)