Скрипт: телепорт внутри места и между местами

Два вида телепорта. Первый переносит персонажа в другую точку той же карты — это просто смена позиции. Второй отправляет игрока в другое место твоей Experience через TeleportService.

Куда положить

ServerScriptService, тип объекта Script

Что должно быть в проекте

  • В Workspace детали TeleportPad и TeleportTarget
  • Для перехода между местами — вторая опубликованная площадка в той же Experience

Код

ServerScriptService/TeleportPad.lua
  1. local Players = game:GetService("Players")
  2.  
  3. local pad = workspace:WaitForChild("TeleportPad")
  4. local target = workspace:WaitForChild("TeleportTarget")
  5.  
  6. local cooldown = {}
  7.  
  8. pad.Touched:Connect(function(hit)
  9. local character = hit.Parent
  10. local player = character and Players:GetPlayerFromCharacter(character)
  11.  
  12. if not player then
  13. return
  14. end
  15.  
  16. local now = os.clock()
  17.  
  18. if cooldown[player.UserId] and now - cooldown[player.UserId] < 3 then
  19. return
  20. end
  21.  
  22. cooldown[player.UserId] = now
  23.  
  24. local root = character:FindFirstChild("HumanoidRootPart")
  25.  
  26. if root then
  27. root.CFrame = target.CFrame + Vector3.new(0, 4, 0)
  28. end
  29. end)

Пауза в три секунды нужна, чтобы игрока не швыряло туда-обратно, пока он стоит на площадке.

Переход в другое место своей игры

ServerScriptService/TeleportToLobby.lua
  1. local TeleportService = game:GetService("TeleportService")
  2.  
  3. local LOBBY_PLACE_ID = 0 -- подставь идентификатор своего места
  4.  
  5. local function sendToLobby(player)
  6. local ok, err = pcall(function()
  7. TeleportService:TeleportAsync(LOBBY_PLACE_ID, { player })
  8. end)
  9.  
  10. if not ok then
  11. warn("Телепорт не удался: " .. tostring(err))
  12. end
  13. end
  14.  
  15. return sendToLobby

Телепорт между местами не работает в Studio — проверять его нужно в опубликованной игре.

На что обратить внимание

  • Телепортировать можно только в места собственной Experience
  • Если телепорт срывается, игрок видит ошибку — её коды разобраны в справочнике портала
  • Идентификатор места оставлен нулевым: подставь свой