Скрипт: телепорт внутри места и между местами
Два вида телепорта. Первый переносит персонажа в другую точку той же карты — это просто смена позиции. Второй отправляет игрока в другое место твоей Experience через TeleportService.
Куда положить
ServerScriptService, тип объекта Script
Что должно быть в проекте
- В Workspace детали TeleportPad и TeleportTarget
- Для перехода между местами — вторая опубликованная площадка в той же Experience
Код
local Players = game:GetService("Players")local pad = workspace:WaitForChild("TeleportPad")local target = workspace:WaitForChild("TeleportTarget")local cooldown = {}pad.Touched:Connect(function(hit)local character = hit.Parentlocal player = character and Players:GetPlayerFromCharacter(character)if not player thenreturnendlocal now = os.clock()if cooldown[player.UserId] and now - cooldown[player.UserId] < 3 thenreturnendcooldown[player.UserId] = nowlocal root = character:FindFirstChild("HumanoidRootPart")if root thenroot.CFrame = target.CFrame + Vector3.new(0, 4, 0)endend)
Пауза в три секунды нужна, чтобы игрока не швыряло туда-обратно, пока он стоит на площадке.
Переход в другое место своей игры
local TeleportService = game:GetService("TeleportService")local LOBBY_PLACE_ID = 0 -- подставь идентификатор своего местаlocal function sendToLobby(player)local ok, err = pcall(function()TeleportService:TeleportAsync(LOBBY_PLACE_ID, { player })end)if not ok thenwarn("Телепорт не удался: " .. tostring(err))endendreturn sendToLobby
Телепорт между местами не работает в Studio — проверять его нужно в опубликованной игре.
На что обратить внимание
- Телепортировать можно только в места собственной Experience
- Если телепорт срывается, игрок видит ошибку — её коды разобраны в справочнике портала
- Идентификатор места оставлен нулевым: подставь свой