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:
Na aba Exibir, abra a Caixa de ferramentas e selecione a aba Mercado.
Verifique se a ordenação de Modelos está selecionada e, em seguida, clique no botão Exibir Tudo para Categorias.
Encontre e clique no painel DEV MODULES
Localize o módulo Gere com amigos e clique nele, ou o arraste e solte na visualização 3D.
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:
- 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.
Usando o Editor de marcadores, acessível a partir da aba Exibir, aplique o marcador RestrictedSpawnArea para cada bloco para que CollectionService os detecte.
Cole o seguinte código em um Class. Script dentro do ServerScriptService.
Scriptlocal 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 partsfor _, area in ipairs(CollectionService:GetTagged("RestrictedSpawnArea")) dolocal relativePosition = area.CFrame:PointToObjectSpace(teleportationPoint. Position)local size = area. Sizelocal inXBounds = relativePosition. X < size. X / 2 and relativePosition. X > -size. X / 2local inZBounds = relativePosition. Z < size. Z / 2 and relativePosition. Z > -size. Z / 2if inXBounds and inZBounds thenreturn false -- Spawn destination is within restricted area; abort teleportationendendreturn true -- Spawn destination doesn't overlap any restricted area; proceed with teleportationendSpawnWithFriends.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.
Chave | Descrição | Padrão |
---|---|---|
teleportToFriendOnRespawn | Se definida como false, o teletransporte para um amigo só acontecerá manualmente por meio de teleportToRandomFriend. | true |
teleportDistance | A distância entre um jogador e o outro ao ser gerado, medida em studs. | 5 |
maxCharacterVelocity | Os 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 |
bypassFriendshipCheck | Se definido como verdadeiro, todos os jogadores serão candidatos ao teletransporte, não apenas amigos. | false |
showLogs | Se 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âmetro | Descrição |
---|---|
playerToTeleport | Referência ao Class. Player que está sendo teletransportado. |
destinationPlayer | Referência ao alvo Class. Player para o qual playerToTeleport está sendo teletransportado. |
teleportationPoint | CFrame 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)