Learn
Engine Class
Player

Summary
Methods
GetFriendsOnline(maxFriends: number):{any}
Deprecated
GetRankInGroup(groupId: number):number
Deprecated
GetRankInGroupAsync(groupId: number):number
Deprecated
GetRoleInGroup(groupId: number):string
Deprecated
GetRoleInGroupAsync(groupId: number):string
Deprecated
IsBestFriendsWith(userId: User):boolean
Deprecated
IsFriendsWith(userId: User):boolean
Deprecated
isFriendsWith(userId: User):boolean
Deprecated
IsInGroup(groupId: number):boolean
Deprecated
Kick(message: string):()
LoadBoolean(key: string):boolean
Deprecated
loadBoolean(key: string):boolean
Deprecated
LoadCharacter():()
Deprecated
LoadCharacterAppearance(assetInstance: Instance):()
Deprecated
LoadCharacterWithHumanoidDescription(humanoidDescription: HumanoidDescription,assetTypeVerification: Enum.AssetTypeVerification):()
Deprecated
LoadInstance(key: string):Instance
Deprecated
loadInstance(key: string):Instance
Deprecated
LoadNumber(key: string):number
Deprecated
loadNumber(key: string):number
Deprecated
LoadString(key: string):string
Deprecated
loadString(key: string):string
Deprecated
Move(walkDirection: Vector3,relativeToCamera: boolean):()
RequestStreamAroundAsync(position: Vector3,timeOut: number):()
SaveBoolean(key: string,value: boolean):()
Deprecated
saveBoolean(key: string,value: boolean):()
Deprecated
SaveInstance(key: string,value: Instance):()
Deprecated
saveInstance(key: string,value: Instance):()
Deprecated
SaveNumber(key: string,value: number):()
Deprecated
saveNumber(key: string,value: number):()
Deprecated
SaveString(key: string,value: string):()
Deprecated
saveString(key: string,value: string):()
Deprecated
SetAccountAge(accountAge: number):()
Inherited Members

API Reference
Properties
AccountAge
Read Only
Not Replicated
Read Parallel
Capabilities: Players
Player.AccountAge:number

AutoJumpEnabled
Read Parallel
Capabilities: Players
Player.AutoJumpEnabled:boolean
Code Samples
Auto-Jump Toggle
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()

CameraMaxZoomDistance
Read Parallel
Capabilities: Players
Player.CameraMaxZoomDistance:number

CameraMinZoomDistance
Read Parallel
Capabilities: Players
Player.CameraMinZoomDistance:number

CameraMode
Read Parallel
Capabilities: Players
Player.CameraMode:Enum.CameraMode
Code Samples
Playing in First Person
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson

CanLoadCharacterAppearance
Read Parallel
Capabilities: Players
Player.CanLoadCharacterAppearance:boolean

Character
Read Parallel
Capabilities: Players
Player.Character:Model

CharacterAppearance
Deprecated

CharacterAppearanceId
Read Parallel
Capabilities: Players
Player.CharacterAppearanceId:number

DataComplexity
Deprecated

DataReady
Deprecated

DevCameraOcclusionMode
Read Parallel
Capabilities: Players
Player.DevCameraOcclusionMode:Enum.DevCameraOcclusionMode

DevComputerCameraMode
Read Parallel
Capabilities: Players
Player.DevComputerCameraMode:Enum.DevComputerCameraMovementMode

DevComputerMovementMode
Read Parallel
Capabilities: Players
Player.DevComputerMovementMode:Enum.DevComputerMovementMode

DevEnableMouseLock
Read Parallel
Capabilities: Players
Player.DevEnableMouseLock:boolean

DevTouchCameraMode
Read Parallel
Capabilities: Players
Player.DevTouchCameraMode:Enum.DevTouchCameraMovementMode

DevTouchMovementMode
Read Parallel
Capabilities: Players
Player.DevTouchMovementMode:Enum.DevTouchMovementMode

DisplayName
Read Parallel
Capabilities: Players
Player.DisplayName:string

FollowUserId
Read Only
Not Replicated
Read Parallel
Capabilities: Players
Player.FollowUserId:number
Code Samples
Followed Alert
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local textLabel = Instance.new("TextLabel")
textLabel.Parent = screenGui
textLabel.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if textLabel then
textLabel:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GameplayPaused
Hidden
Not Accessible Security
Read Parallel
Capabilities: Players
Player.GameplayPaused:boolean

HasRobloxSubscription
Roblox Security
Read Parallel
Capabilities: Players
Player.HasRobloxSubscription:boolean
Code Samples
Check Roblox Subscription Status
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.HasRobloxSubscription then
-- Grant subscriber-exclusive content or perks
end

HasVerifiedBadge
Read Parallel
Capabilities: Players
Player.HasVerifiedBadge:boolean

HealthDisplayDistance
Read Parallel
Capabilities: Players
Player.HealthDisplayDistance:number

InputLatency
Roblox Security
Read Parallel
Capabilities: Players
Player.InputLatency:number

LocaleId
Hidden
Read Only
Not Replicated
Read Parallel
Capabilities: Players
Player.LocaleId:string

MembershipType
Deprecated

NameDisplayDistance
Read Parallel
Capabilities: Players
Player.NameDisplayDistance:number

Neutral
Read Parallel
Capabilities: Players
Player.Neutral:boolean

PartyId
Hidden
Not Replicated
Roblox Security
Read Parallel
Capabilities: Players
Player.PartyId:string
Code Samples
Player.PartyId
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local partyId = player.PartyId
if partyId ~= "" then
print("Player is in a party with ID: " .. partyId)
else
print("Player is not in a party")
end
player:GetPropertyChangedSignal("PartyId"):Connect(function()
if player.PartyId ~= "" then
print("Player joined party with ID: " .. player.PartyId)
else
print("Player left party")
end
end)
end)

ReplicationFocus
Read Parallel
Capabilities: Players
Player.ReplicationFocus:Instance

RespawnLocation
Read Parallel
Capabilities: Players
Player.RespawnLocation:SpawnLocation
Code Samples
Change Spawn on Touch
local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end

StepIdOffset
Roblox Security
Read Parallel
Capabilities: Players
Player.StepIdOffset:number

Team
Not Replicated
Read Parallel
Capabilities: Players
Player.Team:Team

TeamColor
Read Parallel
Capabilities: Players
Player.TeamColor:BrickColor

ThirdPartyTextChatRestrictionStatus
Read Only
Not Replicated
Roblox Script Security
Read Parallel
Capabilities: Players
Player.ThirdPartyTextChatRestrictionStatus:Enum.ChatRestrictionStatus

User
Roblox Security
Read Parallel
Capabilities: Players
Player.User:User

UserId
Read Parallel
Capabilities: Players
Player.UserId:number
Code Samples
Player.UserId
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Data Store to Leaderboard
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)

userId
Deprecated

Methods
AddReplicationFocus
Capabilities: Players
Player:AddReplicationFocus(part:BasePart):()
Parameters
Returns
()

ClearCharacterAppearance
Capabilities: Players
Player:ClearCharacterAppearance():()
Returns
()
Code Samples
How to Clear a Character's Appearance
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function onChildRemoved(child)
print(child.ClassName, "removed from character")
end
character.ChildRemoved:Connect(onChildRemoved)
player:ClearCharacterAppearance()
--> BodyColors removed from character
--> ShirtGraphic removed from character
--> Shirt removed from character
--> Pants removed from character
--> CharacterMesh removed from character
--> Hat removed from character
--> Shirt removed from character

ClearCachedAvatarAppearance
Capabilities: AvatarAppearance, Players
Player:ClearCachedAvatarAppearance():()
Returns
()

DistanceFromCharacter
Capabilities: Players
Player:DistanceFromCharacter(point:Vector3):number
Parameters
point:Vector3
Returns
Code Samples
Measuring the Distance Between a Player and a Position
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end

GetCameraState
Write Parallel
Capabilities: Players
Simulation Access
Player:GetCameraState():Dictionary
Returns

GetFriendsOnline
Deprecated

GetFriendsOnlineAsync
Yields
Capabilities: Players, Social
Player:GetFriendsOnlineAsync(maxFriends:number):{any}
Parameters
maxFriends:number
Default Value: 200
Returns
Code Samples
Get a List of Online Connections
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local success, result = pcall(player.GetFriendsOnlineAsync, player, 10)
if success then
for _, friend in pairs(result) do
print(friend.UserName)
end
else
warn("Failed to get online players: " .. result)
end

GetFriendsWhoPlayedAsync
Yields
Capabilities: Players, Social
Player:GetFriendsWhoPlayedAsync():{any}
Returns

GetJoinData
Capabilities: Players
Player:GetJoinData():Dictionary
Returns
Code Samples
Tracking Traffic Sources
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local analyticsStore = DataStoreService:GetDataStore("Analytics")
local ALLOWED_SOURCES = {
"twitter",
"youtube",
"discord",
}
local function onPlayerAdded(player)
local source = player:GetJoinData().LaunchData
-- check if the provided source is valid
if source and table.find(ALLOWED_SOURCES, source) then
-- update the data store to track the source popularity
local success, result = pcall(analyticsStore.IncrementAsync, analyticsStore, source)
if success then
print(player.Name, "joined from", source, "- total:", result)
else
warn("Failed to record join source: " .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Referral URL Generator
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local DIRECT_JOIN_URL = "https://www.roblox.com/games/start?placeId=%d&launchData=%s"
local textBox = script.Parent
local function generateReferralURL(player)
return DIRECT_JOIN_URL:format(game.PlaceId, player.UserId)
end
local function highlightAll()
if -- avoid recursive property updates
textBox:IsFocused() and not (textBox.SelectionStart == 1 and textBox.CursorPosition == #textBox.Text + 1)
then
textBox.SelectionStart = 1
textBox.CursorPosition = #textBox.Text + 1
end
end
textBox.Focused:Connect(highlightAll)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(highlightAll)
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(highlightAll)
textBox.TextEditable = false
textBox.ClearTextOnFocus = false
textBox.Text = generateReferralURL(player)
Using a Table as Launch Data
local HttpService = game:GetService("HttpService")
local DATA_CHARACTER_LIMIT = 200
local function encodeTableAsLaunchData(data)
-- convert the table to a string
local jsonEncodedData = HttpService:JSONEncode(data)
if #jsonEncodedData <= DATA_CHARACTER_LIMIT then
-- escape potentially invalid characters, such as spaces
local urlEncodedData = HttpService:UrlEncode(jsonEncodedData)
return true, urlEncodedData
else
-- report character limit error
return false, ("Encoded table exceeds %d character limit"):format(DATA_CHARACTER_LIMIT)
end
end
local sampleData = {
joinMessage = "Hello!",
urlCreationDate = os.time(),
magicNumbers = {
534,
1337,
746733573,
},
}
local success, encodedData = encodeTableAsLaunchData(sampleData)
if success then
print(encodedData)
else
warn("failed to encode launch data: " .. encodedData)
end
Decoding JSON Launch Data
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local launchData = player:GetJoinData().LaunchData
if launchData then
-- attempt to decode the data
local success, result = pcall(HttpService.JSONDecode, HttpService, launchData)
if success then
print(player.Name, "joined with data:", result)
else
-- this is probably due to the user messing with the URL
warn("Failed to parse launch data:" .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Server TeleportData Example
local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

GetMouse
Capabilities: Input, Players
Player:GetMouse():Mouse
Returns

GetNetworkPing
Write Parallel
Capabilities: Players
Player:GetNetworkPing():number
Returns

GetRankInGroup
Deprecated

GetRankInGroupAsync
Deprecated

GetRoleInGroup
Deprecated

GetRoleInGroupAsync
Deprecated

HasAppearanceLoaded
Capabilities: Players
Player:HasAppearanceLoaded():boolean
Returns
Code Samples
Check if a Player's Appearance Has Loaded
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)

IsBestFriendsWith
Deprecated

IsFriendsWith
Deprecated

isFriendsWith
Deprecated

IsFriendsWithAsync
Yields
Capabilities: Players, Social
Player:IsFriendsWithAsync(userId:User):boolean
Parameters
userId:User
Returns

IsInGroup
Deprecated

IsInGroupAsync
Yields
Capabilities: Players, Groups
Player:IsInGroupAsync(groupId:number):boolean
Parameters
groupId:number
Returns

IsVerified
Capabilities: Players
Player:IsVerified():boolean
Returns
Code Samples
Using IsVerified
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player:IsVerified())
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Kick
Capabilities: Players, Consequences
Player:Kick(message:string):()
Parameters
message:string
Returns
()

LoadBoolean
Deprecated

loadBoolean
Deprecated

LoadCharacter
Deprecated

LoadCharacterAppearance
Deprecated

LoadCharacterAsync
Yields
Capabilities: Players
Player:LoadCharacterAsync():()
Returns
()
Code Samples
Turn Off Auto-Loading and Simulate Character Respawn
local Players = game:GetService("Players")
local RESPAWN_DELAY = 5
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
task.wait(RESPAWN_DELAY)
player:LoadCharacterAsync()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacterAsync()
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadCharacterWithHumanoidDescription
Deprecated

LoadCharacterWithHumanoidDescriptionAsync
Yields
Capabilities: Players
Player:LoadCharacterWithHumanoidDescriptionAsync(
humanoidDescription:HumanoidDescription, assetTypeVerification:Enum.AssetTypeVerification
):()
Parameters
humanoidDescription:HumanoidDescription
assetTypeVerification:Enum.AssetTypeVerification
Default Value: "Default"
Returns
()
Code Samples
Spawn Characters With HumanoidDescription
local Players = game:GetService("Players")
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
player:LoadCharacterWithHumanoidDescriptionAsync(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)

LoadInstance
Deprecated

loadInstance
Deprecated

LoadNumber
Deprecated

loadNumber
Deprecated

LoadString
Deprecated

loadString
Deprecated

Move
Capabilities: Players
Player:Move(
walkDirection:Vector3, relativeToCamera:boolean
):()
Parameters
walkDirection:Vector3
relativeToCamera:boolean
Default Value: false
Returns
()
Code Samples
Moving the Player relative to their Camera
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)

RemoveReplicationFocus
Capabilities: Players
Player:RemoveReplicationFocus(part:BasePart):()
Parameters
Returns
()

RequestStreamAroundAsync
Yields
Capabilities: Players
Player:RequestStreamAroundAsync(
position:Vector3, timeOut:number
):()
Parameters
position:Vector3
timeOut:number
Default Value: 0
Returns
()

SaveBoolean
Deprecated

saveBoolean
Deprecated

SaveInstance
Deprecated

saveInstance
Deprecated

SaveNumber
Deprecated

saveNumber
Deprecated

SaveString
Deprecated

saveString
Deprecated

SetAccountAge
Plugin Security
Capabilities: Players
Player:SetAccountAge(accountAge:number):()
Parameters
accountAge:number
Returns
()

SetSuperSafeChat
Plugin Security
Capabilities: Players
Player:SetSuperSafeChat(value:boolean):()
Parameters
value:boolean
Returns
()

WaitForDataReady
Deprecated

waitForDataReady
Deprecated

Events
CharacterAdded
Capabilities: Players
Player.CharacterAdded(character:Model):RBXScriptSignal
Parameters
character:Model
Code Samples
Detecting Player Spawns and Despawns
local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Accessory Remover
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

CharacterAppearanceLoaded
Capabilities: Players
Player.CharacterAppearanceLoaded(character:Model):RBXScriptSignal
Parameters
character:Model
Code Samples
Remove Accessories After Loading
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

CharacterRemoving
Capabilities: Players
Player.CharacterRemoving(character:Model):RBXScriptSignal
Parameters
character:Model
Code Samples
Detecting Player Spawns and Despawns
local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Chatted
Capabilities: Chat, Players
Player.Chatted(
message:string, recipient:Player
Parameters
message:string
recipient:Player

Idled
Capabilities: Players
Player.Idled(time:number):RBXScriptSignal
Parameters
time:number

OnTeleport
Capabilities: Players, Teleport
Player.OnTeleport(
teleportState:Enum.TeleportState, placeId:number, spawnName:string
Parameters
teleportState:Enum.TeleportState
placeId:number
spawnName:string
Code Samples
Player.OnTeleport
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local playerOnTeleport = player
player.OnTeleport:Connect(function(teleportState, _placeId, _spawnName)
if teleportState == Enum.TeleportState.Started then
print("Teleport started (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.WaitingForServer then
print("Teleport waiting for server (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.InProgress then
print("Teleport in progress (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.Failed then
print("Teleport failed! (" .. playerOnTeleport.Name .. ")")
end
end)
end)

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.