Gerar com amizades

Pode ser desafiador localizar amigos dentro da experiência. O módulo de desenvolvedor SpawnWithFriends automaticamente move os jogadores que aparecem perto de um dos amigos presentes na experiência. Esse módulo também pode ser configurado para teletransportar um jogador com um comando em vez de automaticamente.

Uso do módulo

Instalação

Para usar o módulo SpawnWithFriends em uma experiência:

  1. Na aba Exibir, abra a Caixa de ferramentas e selecione a aba Mercado.

    Botão de ativação da Caixa de ferramentas no Studio.
  2. Verifique se a ordenação de Modelos está selecionada e, em seguida, clique no botão Exibir Tudo para Categorias.

  3. Encontre e clique no painel DEV MODULES

  4. Localize o módulo Gere com amigos e clique nele, ou o arraste e solte na visualização 3D.

  5. Na janela do Explorador, mova o modelo SpawnWithFriends inteiro para o ServerScriptService. Ao executar a experiência, o módulo será distribuído para vários serviços e começará a ser executado.

Áreas de geração restritas

Esse módulo pode resultar na geração de jogadores em áreas restritas, como salas VIP, espaços reservados etc. Para evitar que os jogadores se teletransportem para essas áreas: Para evitar que jogadores se teletransportem para estas áreas:

  1. Preencha a área restrita com blocos Class. BasePart. Anchored|Anchored invisíveis. Certifique-se de que Class. BasePart. CanCollide|CanCollide, Class. BasePart. CanTouch|CanTouch e Class. BasePart. CanQuery|CanQuery estão desabilitados para todos os blocos.

Preenchimento com blocos de uma sala de prisão para evitar que os jogadores sejam gerados lá dentro

  1. Usando o Editor de marcadores, acessível a partir da aba Exibir, aplique o marcador RestrictedSpawnArea para cada bloco para que CollectionService os detecte.

  2. Cole o seguinte código em um Class. Script dentro do ServerScriptService.

    Script

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local CollectionService = game:GetService("CollectionService")
    local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))
    local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
    -- Iterate through all tagged parts
    for _, area in ipairs(CollectionService:GetTagged("RestrictedSpawnArea")) do
    local relativePosition = area.CFrame:PointToObjectSpace(teleportationPoint. Position)
    local size = area. Size
    local inXBounds = relativePosition. X < size. X / 2 and relativePosition. X > -size. X / 2
    local inZBounds = relativePosition. Z < size. Z / 2 and relativePosition. Z > -size. Z / 2
    if inXBounds and inZBounds then
    return false -- Spawn destination is within restricted area; abort teleportation
    end
    end
    return true -- Spawn destination doesn't overlap any restricted area; proceed with teleportation
    end
    SpawnWithFriends.setTeleportationValidator(validator)

Referência de API

Funções

configurar

configure(config:table):nil

Substitui as opções de configuração padrão por meio das chaves-valor na tabela config. Esta função só poder ser chamada de um Class. Script.

ChaveDescriçãoPadrão
teleportToFriendOnRespawnSe definida como false, o teletransporte para um amigo só acontecerá manualmente por meio de teleportToRandomFriend.true
teleportDistanceA distância entre um jogador e o outro ao ser gerado, medida em studs.5
maxCharacterVelocityOs personagens que estão se movendo com mais velocidade que esse valor não serão escolhidos como candidatos ao teletransporte, por exemplo, aqueles em carros em movimento.48
bypassFriendshipCheckSe definido como verdadeiro, todos os jogadores serão candidatos ao teletransporte, não apenas amigos.false
showLogsSe mensagens de registro devem ou não ser exibidas na saída.false
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))
SpawnWithFriends.configure({
teleportToFriendOnRespawn = true,
teleportDistance = 5,
maxCharacterVelocity = 48,
bypassFriendshipCheck = false,
showLogs = false
})

teleportToRandomFriend

teleportToRandomFriend(playerToTeleport:Class. Player):boolean

Ativa manualmente o teletransporte de um jogador para um de seus amigos na experiência. Retorna um booleano indicando se o teletransporte foi bem-sucedido ou não; a falha no teletransporte pode ser causada pela ausência de amigos no servidor ou pela incapacidade de encontrar um ponto de teletransporte desobstruído. Esta função só poder ser chamada de um Class. Script.

setTeleportationValidator

setTeleportationValidator(validator:function):nil

Permite realizar verificações personalizadas antes do teletransporte conectando uma função de retorno de chamada para validação. O retorno de chamada recebe três parâmetros:

ParâmetroDescrição
playerToTeleportReferência ao Class. Player que está sendo teletransportado.
destinationPlayerReferência ao alvo Class. Player para o qual playerToTeleport está sendo teletransportado.
teleportationPointCFrame para onde playerToTeleport está se teletransportando.

Essa função e seu retorno de chamada só podem ser usados em um Class. Script e o retorno de chamada retorna um booleano indicando se o teletransporte deve prosseguir. Por exemplo, a lógica return na função de validação a seguir garante que o jogador que está sendo gerado e o jogador de destino estejam na mesma equipe.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))
-- Teleports players only if they are on the same team
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport. Team == destinationPlayer. Team
end SpawnWithFriends.setTeleportationValidator(validator)