플레이어 개체는 현재 연결된 클라이언트입니다. 이 개체는 새로운 플레이어가 연결할 때 Class.Players 서비스에 추가되고, 서버에서 연결을 해제할 때 Players 서비스에서 제거됩니다.
Class.Instance.Name 속성은 플레이어의 사용자 이름을 반영합니다. 플레이어에 대한 정보를 저장할 때 Player.UserId를 사용해야 합니다. 플레이어가 사용자 이름을 변경할 수 있기 때문입니다.
플레이어 개체를 작업하는 Players 서비스에는 몇 가지 유사한 메서드가 있습니다. 각각의 Instance 메서드 위에 사용하는 메서드를 사용하십시오.
- 현재 Player 개체의 테이블을 사용하려면 Players:GetPlayers() 를 사용하십시오; 다시, Instance:GetChildren() 대신 사용하십시오.
- 플레이어 개체의 추가를 감지하려면 Players.PlayerAdded 이벤트(대신 Instance.ChildAdded 를 사용하십시오)를 사용하는 것이 좋습니다(Players 서비스에서).
- 마찬가지로, Players.PlayerRemoving 을 사용하여 플레이어 개체의 제거를 감지할 수 있습니다(이는 플레이어가 제거된 후에 발생하는 Class.Instance.ChildRemoved 보다 중요합니다), 플레이어 개체의 제거를 감지하려면 해당 플레이어 개체 앞에 나오는
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Create a container for leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Create one leaderstat value
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Add to player (displaying it)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
요약
속성
플레이어의 계정 나이를 일로 설명합니다.
모바일 장치를 사용하는 플레이어의 캐릭터가 장애물을 맞출 때 자동으로 점프하는지 여부를 결정합니다.
플레이어 카메라의 최대 범위가 확대되는 거리.
플레이어 카메라의 최소 거리.
카메라의 모드를 첫 번째 또는 세 번째 사람 모드로 변경합니다.
플레이어가 생성될 때 캐릭터의 모양이 로드됩니까? false인 경우 플레이어는 기본 모습생성됩니다.
Class.Model 은 플레이어가 Humanoid 를 포함한 바디 부품, 스크립트 및 기타 개체를 제어하는 컨트롤됩니다.
플레이어의 character 에 사용되는 계정의 사용자 ID를 결정합니다.
카메라와 플레이어 사이의 개체를 처리하는 기본 카메라 핸들을 설정합니다.
Roblox 데스크톱 버전을 사용할 때 플레이어의 카메라 이동 모드를 결정합니다.
Roblox 데스크톱 버전을 사용할 때 플레이어의 캐릭터 이동 모드를 결정합니다.
플레이어가 마우스 잠금을 토글할 수 있는지 여부를 결정합니다.
터치 기기사용할 때 플레이어의 카메라 이동 모드를 결정합니다.
터치 장치를 사용할 때 플레이어의 캐릭터 이동 모드를 결정합니다.
Player와 관련된 사용자 아이디의 디스플레이 이름.
플레이어가 플레이어를 따라 게임에 참여한 플레이어의 사용자 ID를 설명합니다.
현재 플레이어 측 게임플레이가 중지되었는지 여부.
플레이어가 인증 배지있는지 여부를 나타냅니다.
이 플레이어가 다른 인간형 헬스 바의 상태를 볼 수 있는 거리를 설정합니다. 0으로 설정하면 상태 표시 줄이 표시되지 않습니다.
이 속성은 로컬 플레이어가 Roblox 계정에 설정한 로컬 언어 아이디를 표시합니다.
계정의 멤버십 입력설명합니다.
이 플레이어가 다른 인간형의 이름을 볼 수 있는 거리를 설정합니다. 0으로 설정하면 이름이 숨겨집니다.
플레이어가 특정 팀에 있는지 여부를 결정합니다.
부품을 중심으로 복제를 조정합니다.
설정되면 플레이어는 지정된 SpawnLocation 에 리스폰됩니다.
플레이어가 어떤 팀과 관련되는지 결정합니다.
플레이어가 어떤 팀과 관련되는지 결정합니다.
모든 사용자 계정에 할당된 고유한 식별 정수입니다.
메서드
플레이어의 캐릭터에서 모든 액세서리 및 다른 캐릭터 모양 개체를 제거합니다.
캐릭터의 머리와 지정된 Vector3 점 사이의 거리를 반환합니다. 플레이어가 아무 캐릭터가 없는 경우 0을 반환합니다.
경험에 어떻게 Player가 참여하는지 설명하는 사전을 반환합니다.
클라이언트에서 사용 중인 마우스를 반환합니다.
초당 격리된 네트워크 대기 시간을 반환합니다.
플레이어의 캐릭터의 모양이 로드되었는지 여부를 반환합니다.
플레이어가 콘크리트, 실제 세계 신호로 확인되는지 여부를 반환합니다.
선택적으로 메시지를 제공하여 플레이어를 게임에서 강제로 연결해제합니다.
플레이어의 캐릭터가 지정된 방향으로 걷기를 중지하거나 플레이어에 의해 방해를 받을 때까지 방향을 변경합니다.
플레이어의 계정 나이를 설정합니다.
플레이어가 일반 채팅이 아닌 필터된 채팅을 볼 수 있는지 여부를 설정합니다.
온라인 친구의 사전을 반환합니다.
0에서 255 사이의 숫자로 플레이어의 그룹 순위를 반환합니다. 0는 비회원이고 255는 그룹의 소유자입니다.
플레이어의 역할을 그룹에 대한 문자열 또는 "게스트"로 반환합니다.
지정된 Player.UserId 와 친구인지 여부를 확인합니다.
지정된 ID로 그룹의 일원인지 여부를 확인합니다.
플레이어에게 새로운 캐릭터를 생성하고 이전 캐릭터를 삭제합니다. 또한 플레이어의 Backpack 및 PlayerGui 를 지우고합니다.
아바타를 생성하여 패스된 HumanoidDescription 에 장착된 모든 것을 가지고 있습니다.
서버가 지정된 위치의 플레이어에게 스트림하는 요청.
이벤트
플레이어의 캐릭터가 생성되거나 재생성되면 발생합니다.
Class.Player.Character의 전체 모양이 삽입된 경우 화재를 발생시킵니다.
플레이어의 캐릭터가 제거된 바로 전에 화재됩니다.
Roblox의 제공된 채팅 바를 사용하여 게임 내에서 플레이어가 채팅하면 화재가 발생합니다.
이 이벤트는 게임 엔진 클래스가 Class.Player|player를 비활동으로 분류한 후 약 2분 후에 발생합니다. 시간은 해당 시점부터 지난 시간(초)입니다.
플레이어의 순간이동 상태가 변경된 때에 발생합니다.
속성
AccountAge
계정 나이는 플레이어의 계정이 등록된 지 몇 일 지 설명하는 Player 속성입니다. 스크립트에 액세스할 수 없는 Player:SetAccountAge() 함수를 사용하여 설정됩니다.
이 속성은 튜토리얼 등의 새로운 Roblox 플레이어 콘텐츠를 조건부로 표시하는 데 유용합니다.
코드 샘플
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
AutoJumpEnabled
AutoJumpEnabled 속성은 모바일 장치를 사용하는 클래스 플레이어의 Player.Character 가 장애물에 닿을 때 자동으로 점프하는지 여부를 결정합니다. 이를 통해 레벨을 더 탐색하고 모바일 기기수행할 수 있습니다.
플레이어가 게임에 참여하면 StarterPlayer.AutoJumpEnabled 값이 이 속성의 초기 상태를 결정합니다. 그런 다음, 이 속성은 Humanoid.AutoJumpEnabled 속성의 초기 상태를 결정합니다. �
코드 샘플
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
CameraMaxZoomDistance Player 속성은 카메라가 기본 카메라와 캐릭터 사이의 최대 거리를 스터드 단위로 설정합니다.
즉, 플레이어 카메라의 최대 확대 거리를 제어합니다.
이 속성의 기본 값은 StarterPlayer.CameraMaxZoomDistance 입니다. 이 값이 Player.CameraMinZoomDistance 보다 작게 설정되면 CameraMinZoomDistance로 증가합니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
CameraMinZoonDistance Player 속성은 카메라가 기본 카메라와 캐릭터 사이의 최소 거리를 스터드 단위로 설정합니다.
즉, 플레이어 카메라가 최대 줌 인할 수 있는 최소 거리를 제어합니다.
이 속성의 기본 값은 StarterPlayer.CameraMinZoomDistance 입니다. 이 값이 Player.CameraMaxZoomDistance 보다 높으면 CameraMaxZoomDistance로 줄어듭니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
CameraMode 속성은 플레이어의 카메라 모드를 설정하며, 기본적으로 셋째 사람 모드입니다.
셋째 사람
기본 세 번째 사람 모드(Enum.CameraMode.Classic), 캐릭터는 카메라에 표시됩니다. 이 모드에서 기본 동작은 다음과 같습니다.
- 플레이어는 오른쪽 클릭하고 드래그(마우스), 탭하고 드래그(모바일), 보조 썬더베드(게임 패드), 또는 왼쪽/오른쪽 화살표(키보드)를 사용하여 카메라를 자신의 캐릭터 주위에 회전하려면 카메라를 회전할 수 있습니다.
- 플레이어가 캐릭터를 이동하면 해당 이동 방향으로 얼굴을 익힙니다.
- 플레이어는 자유롭게 확대하고 축소할 수 있습니다, 심지어 전체 확대에 첫 번째 플레이어를 위해.
첫 번째 사람
첫 번째 사람 모드(Enum.CameraMode.LockFirstPerson), 플레이어의 카메라는 전체 길이 축소됩니다. GuiButton.Modal 속성이 설정된 경우에 한 번 더 마우스를 이동하거나 모바일에서 탭-드래그하거나 게임 패드의 보조 �
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
CanLoadCharacterAppearance Player 속성은 플레이어 스폰 시 캐릭터의 모양이 로드되는지 여부를 결정합니다. 이 속성의 기본 값은 StarterPlayer.LoadPlayerAppearance 입니다.
진실인 경우 캐릭터는 플레이어의 Player.CharacterAppearanceId에 해당하는 플레이어의 모양을 로드합니다.
false 인 경우 플레이어는 기본 모양으로 생성됩니다 - 모자, 셔츠, 바지 등을 가진 회색 캐릭터 모델.
캐릭터가 생성된 후 속성을 설정하려면 캐릭터가 변경되지 않습니다. Player:LoadCharacter()를 호출하여 새 모습로드해야 합니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
Character 속성에는 플레이어의 아바타를 경험 내에서 시뮬레이션하는 데 필요한 Class.Humanoid , 바디 부품, 스크립트
초기에 이 속성은 nil 이며 플레이어의 캐릭터가 처음 생성될 때 설정됩니다. Class.Player.CharacterAdded 이벤트를 사용하여 플레이어의 캐릭터가 올바르게로드되는지 감지하고, Class.Player.CharacterRemoving
참고 LocalScripts 내 플레이어내 모든 클래스는 StarterGui 또는 Class.StarterPack
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
이 속성은 플레이어의 로블록스 웹사이트에서 생성한 아바타와 동일한 플레이어의 ID를 결정합니다. 기본적으로 이 속성은 Player.Character 입니다. 이 속성은 플레이어의 아바타를 사용하여 플레이어가 생성한 것처럼 보이게 합니다.
이 속성을 다른 계정의 사용자 ID로 변경하면 플레이어가 해당 계정의 모습(모자, 셔츠, 바지 등)과 동일하게 생성됩니다.
게임은 StarterPlayer.LoadCharacterAppearance 속성을 변경하여 플레이어의 캐릭터 모양이 게임에 로드되는지 여부를 토글할 수도 있습니다.
코드 샘플
local Players = game:GetService("Players")
local disguiseCommand = "/disguise "
local function onPlayerChatted(player, message)
if message:sub(1, disguiseCommand:len()):lower() == disguiseCommand:lower() then
local input = message:sub(disguiseCommand:len() + 1)
local id = tonumber(input)
if not id then -- Number failed to parse, maybe they typed a username instead
pcall(function() -- This call can fail sometimes!
id = Players:GetUserIdFromNameAsync(input) -- Fetch ID from name
end)
end
if id then
-- Set character appearance then respawn
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- We couldn't get an ID from their input
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevCameraOcclusionMode
카메라 스크립트 기본 개체를 카메라 및 카메라 주제 사이에서 처리하는 방법을 정의합니다. StarterPlayer.DevCameraOcclusionMode 에 의해 설정되며 개별 플레이어에게는 변경할 수 없습니다.
기본 값은 Zoom (0)입니다. 모드 목록은 Enum.DevCameraOcclusionMode를 참조하십시오.
DevComputerCameraMode
DevComputerCameraMode 속성은 마우스와 키보드를 사용하는 장치에서 플레이어가 카메라를 이동하는 방법을 결정합니다. 이 속성은 Enum.DevComputerCameraMovementMode 에 대한 설명을 참조하십시오. 이 속성은 LocalScript (서버에서 이 속성을 설정하려
이 속성의 기본 값은 StarterPlayer.DevComputerCameraMovementMode에 의해 결정됩니다.
이 속성 이름의 단어는 다음을 참조하지 않습니다. TouchEnabled 아님, GamepadEnabled 장치.
User Choice로 설정하면 플레이어는 Roblox 게임 설정에서 모든 컨트롤 모드(예시 스크립트 ) 중에서 선택할 수 있습니다. 일반적으로 플레이어가 최대한 접근성을 제공하기 위해 컨트롤 모드를 선택할 수 있도록 허용하는 것이 좋습니다.
이 속성을 스크립트 가능 로 설정하여 사용자 정의 제어 메커니즘을 만들 수 있습니다.
이 속성은 터치 기기사용하는 플레이어에게는 적용되지 않습니다. 대신 Player.DevTouchCameraMode를 참조하십시오.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on computers to classic
player.DevComputerCameraMode = Enum.DevComputerCameraMovementMode.Classic
DevComputerMovementMode
DevComputerMovementMode 속성은 플레이어가 마우스와 키보드를 사용하는 장치에서 캐릭터를 이동하는 방법을 결정합니다. 이 속성은 서서히 이동 컨트롤 모드를 사용할 때 사용할 수 있는 모든 이동 컨트롤 모드에 대한 설명을 제공합니다. 이 속성은
이 속성의 기본 값은 StarterPlayer.DevComputerMovementMode 에 의해 결정됩니다.
이 속성 이름의 단어는 비- TouchEnabled 장치를 참조합니다.
User Choice로 설정하면 플레이어는 Roblox 게임 설정에서 모든 컨트롤 모드(스크립트 가능 제외) 중에서 선택할 수 있습니다. 일반적으로 플레이어가 최대한 접근성을 제공하기 위해 컨트롤 모드를 선택할 수 있도록 허용하는 것이 좋습니다.
이 속성을 스크립트 가능 로 설정하여 사용자 정의 제어 메커니즘을 만들 수 있습니다.
이 속성은 터치 기기사용하는 플레이어에게는 적용되지 않습니다. 대신 Player.DevTouchMovementMode를 참조하십시오.
코드 샘플
local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevComputerMovementMode = Enum.DevComputerMovementMode.DynamicThumbstick
end)
DevEnableMouseLock
이 속성은 플레이어가 Mouse 잠금을 토글할 수 있는지 여부를 결정합니다. 플레이어는 Roblox의 게임 설정에서 마우스 잠금 스위치를 비활성화할 수 있습니다. 기본적으로 이 속성은
마우스 잠금이 활성화되면 플레이어의 커서가 화면 중앙에 잠깁니다. 마우스를 이동하면 카메라가 플레이어의 character 주위를 도는 것으로 플레이어의 위치를 변경하고, 캐릭터는 플레이어의 위치와 동일한 방향으로 카메
Shift-lock 관련 API가 제거되기 위해 프로세스 중이므로 대신 UserInputService.MouseBehavior 를 사용하여 마우스를 잠금 해제하는 것이 좋습니다.
코드 샘플
local Players = game:GetService("Players")
local function toggleMouseLock(player)
player.DevEnableMouseLock = not player.DevEnableMouseLock
if player.DevEnableMouseLock then
print("Mouse lock is available")
else
print("Mouse lock is not available")
end
end
local function onPlayerChatted(player, message, _recipient)
if message == "mouselock" then
toggleMouseLock(player)
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevTouchCameraMode
DevTouchCameraMode 속성은 플레이어가 TouchEnabled 기기사용하는 경우 카메라가 어떻게 이동하는지 결정합니다. 각 카메라 컨트롤 모드에 대한 설명은 Enum.DevTouchCameraMovementMode (서버에서 사용하는
이 속성의 기본 값은 StarterPlayer.DevTouchCameraMovementMode에 의해 결정됩니다.
User Choice로 설정하면 플레이어는 Roblox 게임 설정에서 모든 컨트롤 모드(스크립트 가능 제외) 중에서 선택할 수 있습니다. 일반적으로 플레이어가 최대한 접근성을 제공하기 위해 컨트롤 모드를 선택할 수 있도록 허용하는 것이 좋습니다.
이 속성을 스크립트 가능 로 설정하여 사용자 정의 제어 메커니즘을 만들 수 있습니다.
이 속성은 터치 기기아닌 플레이어에게는 적용되지 않습니다. 대신 Player.DevComputerCameraMovementMode를 참조하십시오.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on mobile devices to classic
player.DevTouchCameraMovementMode = Enum.DevTouchCameraMovementMode.Classic
DevTouchMovementMode
DevTouchMovementMode 속성은 플레이어가 TouchEnabled 기기사용하는 방식으로 캐릭터를 이동하는 방법을 결정합니다. 각 이동 컨트롤 모드에 대한 설명은 Enum.DevTouchMovementMode (서버에서 사용하는
이 속성의 기본 값은 StarterPlayer.DevTouchMovementMode 에 의해 결정됩니다.
User Choice로 설정하면 플레이어는 Roblox 게임 설정에서 모든 컨트롤 모드(예시 스크립트 ) 중에서 선택할 수 있습니다. 일반적으로 플레이어가 최대한 접근성을 제공하기 위해 컨트롤 모드를 선택할 수 있도록 허용하는 것이 좋습니다.
이 속성을 스크립트 가능 로 설정하여 사용자 정의 제어 메커니즘을 만들 수 있습니다.
이 속성은 터치 기기아닌 플레이어에게는 적용되지 않습니다. 대신 Player.DevComputerMovementMode를 참조하십시오.
코드 샘플
local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevTouchMovementMode = Enum.DevTouchMovementMode.DynamicThumbstick
end)
DisplayName
DisplayName 은 로그인된 사용자와 Player 개체가 연관된 디스플레이 이름을 포함하는 Player 속성입니다. 사용자 이름과 달리 디스플레이 이름은 플레이어가 다른 사람에게 표시하는 이름이 아닙니다
참고:
- 이름이 고유하지 않기 때문에 한 인스턴스의 두 명의 플레이어에 동일한 이름이 있을 수 있습니다. 플레이어에 대해 전역적으로 고유한 식별자가 필요한 경우 Player.UserId (静態) 또는 Player.Name (현재 사용자 이름)를 사용하십시오.
- Class.Player.LoadCharacter 또는 Roblox 엔진으로 생성된 캐릭터는 Humanoid.DisplayName 속성을 가진 Player.DisplayName 속성에 할당됩니다.
- Display names may have unicode characters in the 문자열. See UTF-8 for more information on how to work with strings with unicode characters.
FollowUserId
FollowUserId는 플레이어가 다른 플레이어를 따라 게임에 참여하는 경우 플레이어의 Player.UserId 를 포함하는 플레이어 속성입니다. 플레이어가 다른 플레이어를 따라 게임에 참여하지 않았다면 이 속성은 0이 됩니다. 이 속성은 플레이어가 다른 플레이어를
이 사용자 ID를 사용하여 플레이어의 이름을 얻고 Players:GetNameFromUserIdAsync() 함수를 사용하여 플레이어의 이름을 변경할 수 있습니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local hint = Instance.new("Hint")
hint.Parent = player:WaitForChild("PlayerGui")
hint.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if hint then
hint:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GameplayPaused
게임플레이 일시정지 속성은 플레이어가 현재 StreamingEnabled 활성화된 장소에 있는 중지 상태인지 여부를 나타냅니다. 클라이언트에서 설정하지만 서버로 복제됩니다. 중지 상태를 결정하려면 이 속성을 사용할 수 있습니다.
또한 참조하십시오.
- Workspace.StreamingEnabled 는 콘텐츠 스트리밍을 활성화하는지 여부를 제어합니다.
- Workspace.StreamingIntegrityMode 을 참조하십시오.
HealthDisplayDistance
HealthDisplayDistance Player 속성은 이 플레이어가 다른 Class.Humanoid 건강 바를 볼 때의 스터드 거리를 설정합니다. 0으로 설정하면 건강 바가 표시되지 않습니다. 이 속성은 기본적으로 Class.StarterPlayer.HealthDisplayDistance로 설정됩니다.
인간형의 체력 바가 표시되면 Humanoid.DisplayDistanceType를 사용하여 표시 유형을 설정할 수 있습니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
로컬 플레이어의 속성에는 로컬 플레이어가 Roblox 계정에 설정한 로콘 아이디가 표시됩니다. 로콘에 대한 두 문자 코드(예: "en-us")가 있는 문자열이 있습니다.
이 기능은 게임 플레이어 기반의 지역 데모그래피를 결정하는 데 사용되며, 경험 내 콘텐츠의 자동 현지화(이 경우 GuiBase2d.AutoLocalize)를 위해 사용될 로캘입니다. 이 속성에서는 서버로부터 플레이어의 로캐에 액세스할 수 있습니다.
내부 콘텐츠를 로컬화하는 데 사용되는 로컬화 서비스 바로가기 를 참조하십시오. 이 서비스는 Roblox가 내부적으로 지원하지 않는 한 로컬 플레이어의 집합 언어를 로컬화하는 데 사용됩니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
이 속성은 멤버십 가입 여부를 결정하기 위해서만 읽을 수 있습니다(다른 멤버십 입력설정할 수 없음). 계정의 멤버십 입력대한 Enum.MembershipType 열이 포함되어 있습니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Take some action specifically for Premium members
end
NameDisplayDistance
이름 표시 거리 StarterPlayer 속성은 이 플레이어가 다른 Class.Humanoid 이름을 볼 때의 스터드 거리를 설정합니다. 속성이 0으로 설정되면 이름이 숨겨집니다. 이 속성은 기본적으로 Class.StarterPlayer.NameDisplayDistance에 설정됩니다.
인간형의 체력 바가 표시되면 Humanoid.DisplayDistanceType를 사용하여 표시 유형을 설정할 수 있습니다.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
중립 속성은 플레이어가 특정 팀에 있는지 여부를 결정합니다.
- 트루인 경우 플레이어는 특정 팀에 있지 않습니다. 이는 또한 Player.Team 속성이 0이고 Player.TeamColor가 하얀색인 경우를 의미합니다.
- Class.Player.Team 이 아닌 경우, 플레이어는 특정 팀에 있습니다. Player.Team 속성은 플레이어가 있는 팀에 대해 Team 와 일치합니다. 1>Class.Player.TeamColor1> 와 같이.
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end
ReplicationFocus
ReplicationFocus Player 속성은 부품을 플레이어 주위의 복제에 집중하도록 합니다. 네트워크를 통해 통신하는 다른 Roblox 시스템(예: 물리, 스트리밍 등)은 복제 집중에 다양한 속도로 복제됩니다.
이 속성이 없으면 로컬 플레이어의 캐릭터의 PrimaryPart 를 복제 초점으로 처리하는 기본 동작으로 되돌아갑니다.
이 속성은 서버에서만 Script 이 있는 경우에만 설정해야 하며, LocalScript 이 아닙니다. 이 속성은 부품의 네트워크 소유권을 변경하거나 업데이트하지 않습니다.
코드 샘플
local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part
RespawnLocation
설정되면 플레이어가 지정된 SpawnLocation 에 리스폰됩니다. 이 속성은 Lua를 통해만 설정할 수 있으며 유효한 SpawnLocation 참조를 포함해야 합니다. 다음 크기 요구 사항을 충족해야 합니다.
- Class.Workspace의 하위
RespawnLocation이 유효한 SpawnLocation로 설정되지 않으면 기본 생성 논리가 적용됩니다. 자세한 내용은 SpawnLocation 페이지를 참조하십시오.
RespawnLocation 대안
- Class.Player는 그들의 팀에 속하는 SpawnLocations 에서 생성됩니다. 일부 경우 플레이어의 Player.Team 을 변경하는 것이 더 쉬울 수 있습니다.
- Class.PVInstance:PivotTo()를 사용하여 수동으로 Player.Character을 이동하는 사용자 정의 생성 로직을 구현합니다.
코드 샘플
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
Team
팀 속성은 플레이어가 있는 팀을 참조합니다. Class.Team</
코드 샘플
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
TeamColor
팀 색상 속성은 팀의 Team.TeamColor 에 따라 플레이어가 어떤 팀과 관련이 있는지 결정합니다. 이 속성을 변경하면 팀 Class.Player.Team 에 대해 동일한 Datatype.BrickColor</
이 속성을 사용하는 것이 좋은 경우에도 이 속성을 각각의 Player.Team 대신에 설정하는 것이 좋습니다. 이 속성을 설정하면 이 속성의 값이 여러 스크립트에 걸쳐 반복되는 경우가 많기 때문에 특정 팀에 대한 정확도를 피하
코드 샘플
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
UserId
UserId는 Roblox의 모든 사용자 계정을 고유하고 일관된 식으로 식별하는 읽기 전용 정수를 포함하는 Player 속성입니다. Class.Instance.Name 의 플레이어와는 달리, 이 값은 사용자의 현재 사용자 이름에 따라 변경될 수 있지만, 이 값은 항상 동일한
이 속성은 GlobalDataStores 를 사용하여 플레이어 데이터를 저장/로드할 때 필수적입니다. 각 플레이어에게 고유한 키를 가질 수 있도록 플레이어의 UserId 를 사용하십시오.
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local player = Players:GetPlayerByUserId(1)
if player then
print("Player with userId 1 is in this server! Their name is: " .. player.Name)
else
print("Player with userId 1 is not in this server!")
end
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local OWNER_ID = 212423 -- can use game.CreatorId for published places
local BADGE_ID = 1
local ownerInGame = false
local function playerAdded(newPlayer)
if newPlayer.UserId == OWNER_ID then
-- if new player is the owner, set ownerInGame to true and give everyone the badge
ownerInGame = true
for _, player in pairs(Players:GetPlayers()) do
-- don't award the owner
if player ~= newPlayer then
BadgeService:AwardBadge(player.UserId, BADGE_ID)
end
end
elseif ownerInGame then
-- if the owner is in the game, award the badge
BadgeService:AwardBadge(newPlayer.UserId, BADGE_ID)
end
end
local function playerRemoving(oldPlayer)
if oldPlayer.UserId == OWNER_ID then
ownerInGame = false
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerRemoving:Connect(playerRemoving)
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)
메서드
ClearCharacterAppearance
ClearCharacterAppearance 함수는 모든 Accessory, Shirt, Pants, 1> Class.CharacterMesh1>
Class.ShirtGraphic|t-shirts , 머리 메쉬 또는 얼굴을 제거하지 않습니다.
반환
코드 샘플
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
DistanceFromCharacter
DistanceFromCharacter Player 함수는 캐릭터의 머리와 지정된 Vector3 점 사이의 거리를 반환합니다. 플레이어가 Class.Player.Character 가 없으면 0을 반환합니다.
이 유용하게 플레이어와 게임의 다른 위치나 개체 간의 거리를 결정할 때.
두 개의 플레이어가 아닌 인스턴스 또는 위치 사이의 거리를 결정하려면 팔로잉사용할 수 있습니다.
local distance = (position1 - position2).magnitude
매개 변수
플레이어의 거리를 측정하는 위치입니다.
반환
플레이어와 위치 사이의 거리.
코드 샘플
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
플레이어가 경험에 어떻게 참여하는지 설명하는 사전을 반환합니다. 사전에는 다음과 같은 필드가 포함됩니다.
<tbody><tr><th>소스 게임 아이디</th><td>숫자</td><td>플레이어가 순간이동한 경험의 Class.DataModel.GameId입니다. 플레이어가 현재 경험으로 순간이동하고 서버가 순간이동 함수를 호출하는 경우에만 제공됩니다.</td></tr><tr><th>소스 장소 아이디</th><td>숫자</td><td>Class.DataModel.PlaceId 의 장소에 플레이어를 순간이동하게 한 장소의 <code>Class.DataModel.PlaceId</code>입니다. 플레이어가 현재 장소로 순간이동하고 서버가 순간이동 함수를 호출하면만 표시됩니다.</td></tr><tr><th>참조된 플레이어 아이디</th><td>숫자</td><td>현재 플레이어를 경험에 초대한 플레이어의 <code>Class.Player.UserId</code>입니다. 이 데이터를 사용하여 참조 서버를 식별하고 트리거 보상 로직을 트리거하십시오.</td></tr><tr><th>멤버</th><td>배열</td><td>Class.Player.UserId 번호의 사용자 순간이동 대상 사이에 있는 배열. 그룹의 일부인 경우에만 제공됩니다.</td></tr><tr><th>순간이동 데이터</th><td>변형</td><td>원래 텔레포트지정된 <code>teleportData</code>를 반영합니다. 플레이어가 순간이동하는 서버 간에 정보를 공유하는 데 유용합니다. 플레이어가 순간이동하는 서버 간에 정보를 공유하는 데 유용합니다. 서버에서 순간이동 기능을 호출하는 경우에만 제공됩니다.</td></tr><tr><th>데이터 시작</th><td>문자열</td><td>深 링크 URL 또는 <code>Class.ExperienceInviteOptions.LaunchData</code>에 지정된 시작 데이터를 포함하는 간단한 JSON 문자열입니다.</td></tr></tbody>
키 | 값 유형 | 설명 |
---|
GetJoinData 및 TeleportData 가져오기
서버가 플레이어의 텔레포트시작하면 이 메서드가 반환하는 사전에 플레이어의 순간이동 데이터가 포함됩니다. Player:GetJoinData() 메서드는 서버에서만 순간이동 데이터를 가져올 수 있습니다. 클라이언트에서 데이터를 가져오려면 Class.TeleportService:GetLocalPlayerTeleportData
Class.Player:GetJoinData() 는 다음 보안 요건을 충족하는 순수 데이터만 제공합니다.
- Roblox 서버에서 48시간 이내에 보낸 것이 확실합니다.
- 이 Player 와 함께 보낸 것이 보장되어 있습니다.
- SourcePlaceId 및 SourceGameId는 데이터가 전송된 장소와 우주를 보장합니다. 즉, 데이터가 승인된 플레이스전송된 것임을 확인할 수 있습니다.
이 데이터가 클라이언트에 의해 전송되므로 잠재적으로 악의가 있는 플레이어 통화와 같은 민감한 데이터는 안전한 솔루션, 예를 들어 메모리 스토어를 통해 전송되어야 합니다.
반환
장소 아이디 및 사용자 아이디 값이 포함된 사전(참조 테이블 설명).
코드 샘플
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)
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)
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
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)
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
GetMouse 함수는 Player 이 사용하는 클라이언트의 Class.Mouse 를 반환합니다. 플레이어의 마우스 인스턴스는 왼쪽 및 오른쪽 마우스 버튼 클릭 및 이동 및 위치를 추적하는 데 사용할 수 있습니다.
Class.UserInputService 서비스는 사용자 입력을 추적하기 위해 추가 기능 및 이벤트를 제공합니다. 특히 마우스를 사용하지 않는 장치의 경우.
참고:
- 이 항목 은 온라인으로 작동하려면 LocalScript 에 사용해야 합니다.
- 2014년 7월 업데이트 이후 이 메서드로 마우스의 아이콘을 설정할 수 있습니다.
반환
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onButton1Down()
print("Button 1 is down")
end
mouse.Button1Down:Connect(onButton1Down)
GetNetworkPing
GetNetworkPing() 은 Player의 격리된 네트워크 대기 시간을 초 단위로 반환합니다. "Ping"은 데이터를 클라이언트에서 서버로 전송하는 데 걸리는 시간을 측정합니다. 이 과정에는 데이터 압축이나 처리가 포함되지 않습니다.
클라이언트 사이드 LocalScripts 에서 이 함수는 Players.LocalPlayer 에만 호출할 수 있습니다. 이 함수는 고속 네트워크 대기 시나리오에서 발생하는 문제를 식별하고 디버깅하는 데 유용합니다. 또한 마스킹 대기 시간, 예를 들어
반환
HasAppearanceLoaded
HasAppearanceLoaded Player 함수는 플레이어의 Player.Character 의 모양이 로드된 경우 또는 로드되지 않은 경우를 반환합니다.
플레이어의 모양에는 플레이어의 Shirt , Pants 및 Accessories 가 포함됩니다.
이 기능은 플레이어가 게임에 처음 참여한 후 플레이어의 모양이 로드된지 여부를 결정할 때 유용합니다. Players.PlayerAdded 이벤트를 사용하여 추적할 수 있습니다.
반환
플레이어의 캐릭터의 모양을 로드할지 여부를 나타내는 부울입니다.
코드 샘플
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)
IsVerified
플레이어의 확인 상태를 나타내는 Boolean 값을 반환합니다. 플레이어가 확인된 경우, 플레이어가 확인됩니다. 확인에는 음성 전화 번호나 정부 ID 확인이 포함되지만, 제한되지 않습니다.
IsVerified를 구현할 때 모든 미확인된 사용자를 부적절하게 차단하지 않도록 주의하십시오.
백엔드 서버에서만 메서드를 호출할 수 있습니다. 클라이언트 사이트에서 호출하면 오류가 발생합니다. 또한 이 메서드는 Studio에서 항상 false를 반환합니다.
반환
플레이어가 확인되었는지 여부를 나타내는 부울입니다.
코드 샘플
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
Class.Player.Kick|Kick 메서드는 경험이 클라이언트를 우아하게 연결하고 옵션으로 연결된 사용자에게 메시지를 제공하는 방법을 허용합니다. 이 메서드는 부적절한 사용자를 조정하는 데 유용합니다. 다른 사용자에게 이 메서드를 트리거하도록 특정 사용자만 허용해야 합니다.
이 메서드를 Player 에 사용하지 않고 아르гу먼트가 없는 경우 사용자를 서버에서 연결해제하고 기본 알림 메시지를 제공합니다. 이 메서드를 Player 와 함께 사용하여 문자열을 첫 번째 인수로 대체하면 기본 메시지를 제공합니다.
Class.LocalScript 에서 이 메서드를 사용할 때는 로컬 사용자의 클라이언트만 쫓겨낼 수 있습니다.
매개 변수
사용자가 킥될 때 표시하는 메시지.
반환
Move
이동 Player 함수는 플레이어의 캐릭터가 지정된 방향으로 걸어가지 않도록 하거나 플레이어(제어를 사용하여)에 의해 중단되거나 방해됩니다.
이 기능은 실제 플레이어의 입력으로 제어되지 않는 지역 이동 NPC Humanoids 스크립트에 유용합니다.
함수의 두 번째 인수는 제공된 Vector3 가 플레이어를 세계 좌표(false), 플레이어의 Camera (1> true1>) 에 이동할지 여부를 나타냅니다.
매개 변수
플레이어가 이동해야 하는 방향입니다.The Vector3 direction that the player should move.
플레이어가 카메라와 상대적으로 이동해야 하는지 여부를 나타내는 부울입니다.
반환
코드 샘플
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)
SetAccountAge
SetAccountAge 함수는 플레이어의 일수(Player.AccountAge 를) 일수로 설정합니다.
Class.Player 속성을 사용하여 플레이어의 계정이 몇 일 동안 등록된 지 설정합니다.
이 옵션은 플레이어의 계정 나이를 설정하지 않지만 계정 자체의 나이를 첫 번째 생성 시 대비로 설정합니다.This does not set the age of the player on the account, but the age of the account itself relative to when it was first created.
매개 변수
계정 나이(일)입니다.
반환
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
SetSuperSafeChat
이 메서드는 플레이어가 일반 채팅이 아닌 TextService:FilterStringAsync() 대신 필터링된 채팅을 볼 수 있는지 여부를 설정합니다.
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
플레이어가 채팅을 필터링했는지 여부에 관계없이, 모든 채팅은 다른 플레이어에게 방송하거나 플레이어의 자체 화면에 방송할 때 TextService 에 의해 필터링해야 합니다. TextService:FilterStringAsync() 는 메시지의 사용자 지정 에 따라 필터링할 수
매개 변수
플레이어가 필터링된 채팅을 보는지 여부를 나타내는 부울입니다.
반환
GetFriendsOnline
이 함수는 온라인 친구의 사전 배열을 반환하며, maxFriends 값에 제한됩니다. 함수는 30초 캐시를 사용합니다.
반환된 배열에서 일부 필드는 특정 위치 유형에 대해 유일합니다. 예를 들어, PlaceId는 모바일 웹 사이트의 지역 유형에 대해 0이므로 유일하지 않습니다.
<tbody><tr><td><b>VisitorId</b></td><td>숫자</td><td>친구의 <code>Class.Player.UserId</code>입니다.</td></tr><tr><td><b>사용자 이름</b></td><td>문자열</td><td>친구의 사용자 이름입니다.</td></tr><tr><td><b>표시 이름</b></td><td>문자열</td><td>친구의 <code>Class.Player.DisplayName</code>입니다.</td></tr><tr><td><b>마지막 온라인</b></td><td>문자열</td><td>친구가 마지막으로 온라인 했을 때.</td></tr><tr><td><b>IsOnline</b></td><td>부울</td><td>친구가 현재 온라인이 있는 경우.</td></tr><tr><td><b>마지막 위치</b></td><td>문자열</td><td>친구의 현재 위치의 이름입니다.</td></tr><tr><td><b>장소 아이디</b></td><td>숫자</td><td>친구의 마지막 위치의 장소 ID.</td></tr><tr><td><b>게임 ID</b></td><td>문자열</td><td>친구의 마지막 위치의 <code>데이터 모델/업무 아이디</code>입니다.</td></tr><tr><td><b>지역 유형</b></td><td>숫자</td><td>친구의 마지막 위치의 위치 유형:<table></table></td></tr></tbody>
이름 | 유형 | 설명 |
---|
매개 변수
반환할 최대 친구 수입니다.
반환
온라인 친구의 사전(위의 표에 참조)
코드 샘플
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local success, result = pcall(player.GetFriendsOnline, player, 10)
if success then
for _, friend in pairs(result) do
print(friend.UserName)
end
else
warn("Failed to get online players: " .. result)
end
GetRankInGroup
GetRankInGroup Player 함수는 플레이어의 순위를 그룹에서 0에서 255 사이의 정수로 반환합니다, 0는 비회원이고 255는 그룹의 소유자입니다.
이 모듈을 사용하는 것이 좋습니다 Script 대신에 LocalScript 를 사용하면 가장 최근의 정보를 가져오지 못합니다. 플레이어가 게임에 있는 동안 그룹을 종료GetRankInGroup은 그룹에 있는 것으로 여전히 생각됩니다. 그러나 이�
이는 메서드에서 결과를 캐싱하기 때문입니다, 그래서 동일한 그룹 ID를 가진 다른 플레이어에서 여러 호출의 GetRankInGroup 동일한 결과를 생성합니다. 캐싱 동작은 퍼포어 기반입니다: 서버는 클라이언트와 동일한 캐시를 공유하지 않습니다.
매개 변수
지정된 그룹의 groupId입니다.
반환
그룹에서 플레이어의 순위.
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:GetRankInGroup(2) == 255 then
print("Player is the owner of the group, 'LOL'!")
else
print("Player is NOT the owner of the group, 'LOL'!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetRoleInGroup
GetRoleInGroup Player 함수는 플레이어의 역할을 그룹 내에서 문자열로 반환하거나 플레이어가 그룹 내에 없는 경우 게스트로 반환합니다.
이 모듈을 사용하는 것이 좋습니다 Script 대신에 LocalScript 를 사용하면 가장 최근의 정보를 가져오지 못합니다. 플레이어가 게임에 있는 동안 그룹을 종료GetRoleInGroup은 여전히 그룹에 있다고 생각합니다. 그러나 이런
이는 메서드가 결과를 캐시하기 때문입니다, 그래서 동일한 그룹 ID를 가진 동일한 플레이어에서 여러 호출의 GetRoleInGroup 동일한 결과를 생성합니다. 캐싱 동작은 퍼포어 기반입니다: 서버는 클라이언트와 동일한 그룹 ID로 동일한 캐시를 공유하지 않습니다.
매개 변수
지정된 그룹의 그룹 ID입니다.
반환
플레이어가 지정된 그룹의 역할 또는 게스트 이 플레이어가 멤버아닌 경우.
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player is ranked as '", player:GetRoleInGroup(2), "' in group, 'LOL'!")
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsFriendsWith
이 함수는 사용자의 친구인지 여부를 요청하는 Roblox 웹사이트에 요청을 전송하고, 해당 사용자의 Player.UserId 에 대한 이 사용자의 친구 결과캐시합니다. 이 함수는 동일한 Player.UserId 에
매개 변수
지정된 플레이어의 Player.UserId입니다.
반환
지정된 사용자의 친구인지 여부를 나타내는 부울입니다.
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsFriendsWith(146569) then
print(player.Name .. " is friends with gordonrox24!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsInGroup
IsInGroup Player 함수는 Roblox 웹 사이트에 요청을 보내어 플레이어가 그룹의 일원인지 여부를 확인합니다. 그룹의 ID를 기반으로 하는 경우.
이 모듈을 사용하는 것이 좋습니다 Script 대신에 LocalScript 를 사용하면 가장 최근의 정보를 얻지 못할 수 있습니다. 플레이어가 게임에 있는 동안 그룹을 종료IsInGroup 은 그들이 그룹에 있음을 여전히 생각할 것입니
이는 메서드가 결과를 캐시하기 때문입니다, 그래서 IsInGroup 를 같은 플레이어에서 동일한 그룹 ID로 여러 번 호출하면 메서드가 처음 호출된 그룹 ID와 동일한 결과를 반환합니다. 캐싱 동작은 퍼 피어 기반입니다: 서버는 클라이언트와 동일한 캐시를 공유하지 않습니다.
매개 변수
지정된 그룹의 그룹 ID입니다.
반환
플레이어가 지정된 그룹에 있는지 여부를 나타내는 부울입니다.
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsInGroup(7) then
print("Player is in the Roblox Fan club!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
LoadCharacter
LoadCharacter Player 함수는 플레이어에게 새로운 캐릭터를 생성하고 이전 캐릭터를 삭제합니다. 또한 플레이어의 Backpack 및 PlayerGui를 지우고 클리어합니다.
이 기능은 플레이어를 죽이지 않고 캐릭터를 다시 로드하려는 경우, 예를 들어 플레이어의 새로운 캐릭터 모양을 로드하는 경우에 유용합니다.
참고: 함수는 Player:LoadCharacterBlocking()와 비슷하지만 요청은 비동기적으로 처리되며 동기적으로 처리되지 않습니다. 이를 통해 다른 작업을 계속할 수 있지만 게임 및 다른 작업의 렌더링을 포함하여 캐릭터를 로드하는 동안 다른 작업을 계속할 수 없습니다.
개별 플레이어에 대해 LoadCharacter를 호출한 후 Player.CharacterAppearanceLoaded 이벤트가 발생한 후 동일한 플레이어에 대해 다시 호출하는 것이 좋지 않습니다.
캐릭터 로딩 이벤트 순서
R15 아바타로 Player:LoadCharacter()를 호출하면 다음과 같은 순서로 이벤트가 발생합니다(Notice: R6 순서는 다릅니다):
- Player.Character 세트
- Player.CharacterAdded 화재
- Player.Changed는 "Character"값으로 종료됩니다.
- 캐릭터 모양이 처음 초기화됩니다.
- Player.CharacterAppearanceLoaded 화재
- Character.Parent를 데이터 모델로 설정
- 캐릭터 리그가 빌드되고 캐릭터 크기가 조정됩니다.
- 캐릭터가 스폰 위치이동합니다
- LoadCharacter 반환
반환
코드 샘플
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:LoadCharacter()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacter()
end
Players.PlayerAdded:Connect(onPlayerAdded)
LoadCharacterWithHumanoidDescription
이 함수는 패스된 HumanoidDescription 에 장착된 모든 것을 가지고 있습니다.
개별 플레이어에 대해 LoadCharacterWithHumanoidDescription 을 호출한 후 Player.CharacterAppearanceLoaded 이벤트가 발생한 후 동일한 플레이어에 대해 함수를 다시 호출하는 것이 좋지 않습니다.
또한 참조하십시오.
- 인간 설명 시스템, 인간 설명 시스템을 자세히 설명하고 여러 스크립트 예시를 제공하는 기사입니다.
매개 변수
Class.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:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)
RequestStreamAroundAsync
플레이어 영역(부품 및 지형)에 서버 스트림을 가능하게 하는 경우, 지정된 X, Y, Z 위치의 3D 세계에 있는 플레이어 영역에
이 호출의 효과는 일시적이며 지정된 위치 주변에 스트리밍될 내용에 대한 보장은 없습니다. 클라이언트 메모리 한도 및 네트워크 조건에 따라 클라이언트에서 사용할 수 있는 내용이 제한될 수 있습니다.
사용 주의
지역 주변의 스트리밍을 요청하는 것은 콘텐츠가 요청이 완료될 때 완료되지 않는다는 보장이 아니므로 클라이언트의 네트워크 대역, 메모리 제한 및 기타 요소의 영향을 받습니다.
매개 변수
반환
이벤트
CharacterAdded
이 이벤트는 플레이어의 캐릭터가 생성(또는 재생)되면 발생합니다 CharacterAdded . 이 이벤트는 Player.Character 를 nil 값으로 설정한 후 즉시 발생하거나 2>Class.Player:LoadCharacter() 를 호출하면 됩니다5>Class
이 기능은 Player.CharacterRemoving 이벤트와 함께 사용하여 플레이어의 캐릭터가 제거될 준비가 되면 즉시 발생하는 이벤트입니다. 일반적으로 이 이벤트는 플레이어가 죽은 후 재생되는 장
이 이벤트가 발생했을 때 Humanoid 및 기본 바디 부품(머리, 몸통 및 다리)이 있지만, 의류 아
매개 변수
생성된/재생된 캐릭터의 인스턴스.
코드 샘플
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)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- This table maps "Player" objects to Vector3
local respawnLocations = {}
local function onCharacterAdded(character)
local player = Players:GetPlayerFromCharacter(character)
-- Check if we saved a respawn location for this player
if respawnLocations[player] then
-- Teleport the player there when their HumanoidRootPart is available
local hrp = character:WaitForChild("HumanoidRootPart")
-- Wait a brief moment before teleporting, as Roblox will teleport the
-- player to their designated SpawnLocation (which we will override)
RunService.Stepped:wait()
hrp.CFrame = CFrame.new(respawnLocations[player] + Vector3.new(0, 3.5, 0))
end
end
local function onCharacterRemoving(character)
-- Get the player and their HumanoidRootPart and save their death location
local player = Players:GetPlayerFromCharacter(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
respawnLocations[player] = hrp.Position
end
end
local function onPlayerAdded(player)
-- Listen for spawns/despawns
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
local function onPlayerRemoved(player)
-- Forget the respawn location of any player who is leaving; this prevents
-- a memory leak if potentially many players visit
respawnLocations[player] = nil
end
-- Note that we're NOT using PlayerRemoving here, since CharacterRemoving fires
-- AFTER PlayerRemoving, we don't want to forget the respawn location then instantly
-- save another right after
Players.PlayerAdded:Connect(onPlayerAdded)
Players.ChildRemoved:Connect(onPlayerRemoved)
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
이 이벤트는 Player.Character의 완전한 모양이 삽입된 때에 발생합니다.
일반적으로 Player.Character 는 모습변경하는 다양한 개체를 포함하여 Accoutrements, Shirts, 2>Class.Pants2> 및 5>Class.CharacterMesh|Character
이 이벤트의 하나의 사용 사례는 액세서리를 모두 로드한 다음 파괴하는 것입니다. 아래에서 이를 예시로 보여줍니다.
매개 변수
코드 샘플
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
CharacterRemoving 이벤트는 플레이어의 캐릭터가 재생성될 때와 같이 플레이어의 캐릭터가 제거되기 전에 발생합니다.
이 이벤트는 Player.CharacterAdded 이벤트와 함께 사용할 수 있습니다. 이 이벤트는 플레이어의 캐릭터가 생성되거나 재생성될 때 발생합니다. 예를 인스턴스, 플레이어가 생성되고 죽을 때마다 메시지를 프린트하려면 이 이벤트를 사용하십시오.
local Players = game:GetService("Players")
local function onCharacterSpawned(player)
print(player.Name .. " is spawning")
end
local function onCharacterDespawned(player)
print(player.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function()
onCharacterSpawned(player)
end)
player.CharacterRemoving:Connect(function()
onCharacterDespawned(player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
이 이벤트는 Character 의 Player 에 대한 것입니다.만약 플레이어가 게임에 참여하거나 떠나야 할 때를 추적해야 하는 경우, Players.PlayerAdded 및 2>Class.Players.PlayerRemoving2> 을 사용하십시오.
매개 변수
제거 중인 캐릭터의 인스턴스입니다.
코드 샘플
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
채팅 이벤트는 Player 가 메시지를 입력하고 Roblox의 제공된 채팅 바에서 엔터를 누르면 발생합니다. 이는 기본 채팅 스크립트에 의해 사용되는 몇 가지 Lua 바인딩을 사용하여 수행됩니다. StarterGui:SetCoreGuiEnabled() 를
채팅 명령
이 이벤트 및 일부 문자열 조작 함수를 사용하여 플레이어 이름과 같은 채팅 명령을 만들 수 있습니다. 일반적으로 명령은
필터링
이 이벤트로 발생하는 메시지 텍스트는 필터링되지 않습니다. 플레이어 입력을 다른 플레이어에게 표시하는 경우 Chat:FilterStringAsync() 를 사용하여 필터링해야 합니다. 이 점을 고려하십시오. 게임을 만들 때 필터링되지 않는 채팅을 다른 플레이어에게
매개 변수
코드 샘플
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onChatted(message)
-- do stuff with message and player
print(message)
end
player.Chatted:Connect(onChatted)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Idled
이 이벤트는 게임 엔진 클래스가 player 를 빈둥대기분류한 후 약 2분 후에 발생합니다. 시간은 플레이어가 잠비로 남은 지점부터 시작하는 시간입니다. 이 이벤트는 플레이어가 빈둥대기남아 있는 동안 30초마다 발생합니다.
이 이벤트는 클라이언트 스크립트에서만 발생하며, 서버 스크립트에서는 발생하지 않습니다. RemoteEvent를 사용하여 서버에 비활동 플레이어를 알리십시오.
Roblox는 최소 20분 동안 비활동한 플레이어를 자동으로 연결 해제하므로 이 이벤트는 플레이어가 곧 연결될 것을 경고하거나 플레이어가 20분 이내에 연결되지 않도록 플레이어를 연결하는 데 유용합니다.
자동 연결이 해제되는 횟수를 추적하려면 Players.PlayerRemoving 발생 내용과 일치하는 이벤트를 확인하십시오.
매개 변수
플레이어가 빈둥대기상태인 시간(초).
코드 샘플
local Players = game:GetService("Players")
local function onIdled(idleTime)
print(`Player has been idle for {idleTime} seconds`)
if idleTime > 900 then
-- warn player that they've been idle for 15 minutes
-- and will be disconnected in another 5
end
end
Players.LocalPlayer.Idled:Connect(onIdled)
OnTeleport
플레이어의 TeleportState가 변경되면 발생합니다. 이 이벤트는 텔레포트가 성공했는지 여부를 감지기 위한 것입니다.
TeleportState가 무엇입니까?
Class.TeleportService 를 사용하여 순간이동 요청이 작성되면, Player 가 순간이동되기 전에 시스템의 여러 단계가 있습니다. 현재 단계는 OnTeleport에 제공된 Enum.TeleportState 값으로 나타납니다. 아래에서 이 예를 위해 참조하십시오.
매개 변수
Class.Player의 새로운 Player .
Class.Player 이 순간이동 중인 장소의 ID입니다.
이동할 스폰 이름, if TeleportService:TeleportToSpawnByName() 가 사용되었습니다.
코드 샘플
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)