Player
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
プレイヤーオブジェクトは、現在接続されているクライアントです。これらのオブジェクトは、新しいプレイヤーが接続すると、Class.Playersサービスに追加され、サーバーから離れると削除されます。
Class.Instance.Name プロパティは、プレイヤーのユーザー名を反映します。プレイヤーに関する情報を保存するときは、そのプレイヤーの Player.UserId を使用する必要があります。プレイヤーがユーザー名を変更できる可能性があるためです。
Player オブジェクトを作成、Players サービスでは、Instance メソッドのいくつかが似ています。これらのメソッドのいくつかを使用すると、それぞれのメソッドの Class.Instance メソッドのオーバーライドで動作します。
- Class.Players:GetPlayers() を使用して、現在の Player オブジェクトのテーブルを取得できます。再び、Instance:GetChildren() ではなく、これを使用してください。
- Player オブジェクトの追加を検出するには、Players.PlayerAdded イベント (Instance.ChildAdded を使用することをお勧めします (Players サービスの 2>Class.Instance2> ではなく)。
- 同様に、Players.PlayerRemoving を使用して、Class.Instance.ChildRemoved をファイアすることで、プレイヤーオブジェクトの削除を検出できます (プレイヤーが削除される前に)。これは、プレイヤーの情報を保存することが重要です。これは、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)
概要
プロパティ
プレイヤーのアカウントの年齢を日で表示します。
モバイルデバイスを使用しているプレイヤーのキャラクターが障害物をヒットすると、自動的にジャンプするかどうかを決定します。
プレイヤーのカメラのズームアウトする最大距離。
プレイヤーのカメラがズームできる最小距離。
カメラのモードを「最初」または「3人目」に変更します。
プレイヤーがスポーンするときにキャラクターの外観を読み込むかどうかを決定します。如果、「 false 」、プレイヤーはデフォルトの外外見でスポーンします。
Class.Model は、ボディパーツ、スクリプト、その他のオブジェクトを含むプレイヤーによって制御されます。
プレイヤーの character の外観に使用されるアカウントのユーザーIDを決定します。
カメラとプレイヤーの間のオブジェクトを扱うデフォルトのカメラハンドラーを設定します。
Roblox のデスクトップバージョンを使用するときにプレイヤーのカメラの移動モードを決定します。
Roblox のデスクトップバージョンを使用するときのプレイヤーのキャラクターの移動モードを決めます。
プレイヤーがマウスロックを切り替えることができるかどうかを決定します。
タッチデバイスを使用しているときのプレイヤーのカメラの移動モードを決めます。
ボタンを使用するときにプレイヤーのキャラクターの移動モードを決めます。
Player と関連付けられたユーザーの DisplayName。
プレイヤーが追加されたゲームにあるプレイヤーのユーザーIDを説明します。
プレイヤー側ゲームプレイが現在停止されているかどうか。
プレイヤーが検証済みのバッジを持っているかどうかを示します。
このプレイヤーが他のヒューマノイドのヘルスバーを見る距離を設定します。0 に設定されている場合、ヘルスバーは表示されません。
このプロパティは、ローカルプレイヤーが Roblox アカウントに設定したローカル言語のID を表示します。
アカウントのメンバーシップタイプを説明します。
このプレイヤーが他のヒューマノイドの名前を見る距離を設定します。0 に設定されている場合、名前は非表示になります。
プレイヤーが特定のチームにいるかどうかを決定します。
パーツを中心にレプリケーションをフォーカスします。
設設定するされている場合、プレイヤーは指定の SpawnLocation にリスポーンします。
プレイヤーが関連付けられたチームを決定します。
プレイヤーが関連付けられたチームを決定します。
すべてのユーザーアカウントに割り当てられたユニークな識別子。
方法
プレイヤーのキャラクターからすべてのアクセサリーや他のキャラクターの外観オブジェクトを削除します。
キャラクターの頭と指定されたベクトル3の間の距離を返します。プレイヤーがキャラクターがない場合は、0を返します。
エクスペリエンスに参加する方法を説明するディクティオナリーを返します。
クライアントに使用されているマウスを返します。
秒単位のネットワークのラテンシーを返します。
プレイヤーのキャラクターの外観が読み込まれるかどうかを返します。
プレイヤーがコンクリートでリアルワールドの信号で検証されているかどうかを返します。
プレイヤーをゲームから強制的に切断し、オプションでメッセージを提供します。
プレイヤーのキャラクターが指定された方向に歩くようになります(コントロールを使操作して)、またはプレイヤーによって停止または中断されます。
プレイヤーのアカウント年齢を設定します。
プレイヤーが通常のチャットではなく、フィルターされたチャットを見るかどうかを設定します。
オンラインの友達の辞書を返します。
プレイヤーのランクをグループ内で 0 から 255 の間の整数として返しますが、0 はメンバーではありません、255 はグループの所有者です。
グループ内のプレイヤーの役割を文字列または「ゲスト」として返します。
指定された Player.UserId でプレイヤーがユーザーの友達であるかどうかをチェックします。
指定された ID のグループのメンバーであるかどうかをチェックします。
プレイヤーの新しいキャラクターを作成し、古いものを削除します。また、プレイヤーの Backpack と PlayerGui をクリアします。
アバターをスポーンして、HumanoidDescription で装備したすべてを持っているようにします。
指定された場所のプレイヤーにサーバーストリームするリクエスト。
イベント
プレイヤーのキャラクターがスポーンまたはリスポーンするときに発動します。
Class.Player.Character の完全な外観が挿入されるときにファイアを起動します。
プレイヤーのキャラクターが削除される直前にファイアをオンにします。
Roblox の提供するチャットバーを使用して、ゲーム内のプレイヤーがチャットするときにファイアを起動します。
このイベントは、ゲームエンジンクラスが Class.Player|player を待機としてクラス別にカスタマイズしたときに発生します。時間は、その時点から経過した秒数です。
プレイヤーの TeleportState が変更されるときに発動します。
プロパティ
AccountAge
AccountAge は、Player プロパティで、プレイヤーのアカウントがPlayer:SetAccountAge() 以前に登録された日数を説明します。これは、Class.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
オートジャンプ有効化済みプロパティは、モバイルデバイスを使用している Player.Character の自動ジャンプを Player がヒットするときに自動ジャンプするかどうかを決定します。これにより、モバイルデバイス上でレベルをよりナビゲート可能にすることができます。
プレイヤーがゲームに参加すると、 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 以下に設定されている場合、カメラミニズーム距離に増加します。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
CameraMinZoonDistance Player プロパティは、カメラがデフォルトのカメラからのキャラクターからの最小距離をスタッドで設定します。
それは、プレイヤーのカメラがズームできる最小距離を制御します。
このプロパティのデフォルト値は StarterPlayer.CameraMinZoomDistance で設定されます。この値が Player.CameraMaxZoomDistance より高い場合、カメラ最大ズーム距離に減少します。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
カメラモード プロパティは、プレイヤーのカメラモードを設定します。デフォルトは 3人称です。
第三者
デフォルトの第三者モード ( Enum.CameraMode.Classic ) では、キャラクターはカメラに表示されます。このモードでは、デフォルトの動作は次のとおりです:
- プレイヤーは、右クリック、ドラッグ (マウス)、タップ、ドラッグ (モバイル)、セカンダリーサムネルスティック (ゲームパッド) を使用したり、左/右の矢印 (キーボード) を押したりして、カメラをそのキャラクターの周りに回転させることができます。
- プレイヤーがキャラクターを移動すると、その方向に対応する移動方向に面します。
- プレイヤーは、フルサイズのズームインとアウトを自由にスクロームできます。
1人称
第1人称モード (Enum.CameraMode.LockFirstPerson の場合) では、プレイヤーのカメラが全体的にズームされます。GuiButton.Modal プロパティセットが true である場合、マウスを移動、モバイル上の GUI をタップ-ドラッグするか、ゲームパ
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
CanLoadCharacterAppearance Player プロパティは、プレイヤーがスポーンするときにキャラクターの外観が読み込まれるかどうかを決定します。このプロパティのデフォルト値は StarterPlayer.LoadPlayerAppearance によって設定されます。
If true、キャラクターは、プレイヤーの Player.CharacterAppearanceId に対応するプレイヤーの外観を読み込みます。
if false 、プレイヤーはデフォルトの外観でスポーンします - 帽子、シャツ、パンツなどのないグレーのキャラクターモデル。
キャラクターがスポーンした後にプロパティを設定しようとしても、キャラクターは変更されません。新しい見た外見を読み込むには、Player:LoadCharacter() を呼び出す必要があります。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
The キャラクター プロパティには、体部、スクリプト、その他のオブジェクトを含む、プレイヤーのアバターをシミュレートするため
最初はこのプロパティは nil ですが、プレイヤーのキャラクターが最初にスポーンするときに設定されます。 Player.CharacterAdded イベントを使用して、プレイヤーのキャラクターが正常に読み込まれるときに、 Class
注:Class.LocalScript|LocalScripts は、StarterGui または 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
このプロパティは、Roblox ウェブサイトでプレイヤーが作成した Class.Player.Character のキャラクターの外観に使用されるユーザーIDを決定します。デフォルトでは、このプロパティは Class.Player.UserId です。これは、Roblox ウェブサイトでプレイヤーが作成したアバターを使用しているようにします。
このプロパティを別のアカウントのユーザー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 (サーバーで Script を設定する必要があります) を参照してく
このプロパティのデフォルト値は StarterPlayer.DevComputerCameraMovementMode によって決定されています。
このプロパティ名の中の「コンピューター」は、TouchEnabled 、GamepadEnabled デバイスではありません。
「ユーザーの選択」に設定されている場合、プレイヤーは 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 プロパティは、マウスとキーボードを使用しているデバイスでプレイヤーのキャラクターを移動する方法を決定します。Enum.DevComputerMovementMode については、利用可能なすべての移動コントロールモードの説明は、LocalScript (サーバーで
このプロパティのデフォルト値は StarterPlayer.DevComputerMovementMode によって決定されます。
このプロパティ名の中の「コンピューター」は、TouchEnabled デバイスではありません。
「ユーザーの選択」に設定されている場合、プレイヤーは 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 ロックを Shift で切り替えることができるかどうかを決定します。StarterPlayer.EnableMouseLockOption のゲーム設定で、このプロパティはデフォルトで 2>5> Class.Script
マウスロックが有効になっていると、プレイヤーのカーソルは画面の中央にロックされます。マウスを動かすと、カメラはプレイヤーの character の周りをオービットし、キャラクターは camera の方向と同じ方向に向くようになります。また、キャ
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 によって決定されます。
「ユーザーの選択」に設定されている場合、プレイヤーは 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 によって決定されます。
「ユーザーの選択」に設定されている場合、プレイヤーは 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 プロパティです。ユーザー名とは異なり、ディスプレイ名はプレイヤーが他のプレイヤーに表示する名前です。Roblox ユーザーがそれ
注:
- ディスプレイ名はユニークでないため、同じインスタンス内の 2 人のプレイヤーが同じ名前を持つ可能性があります。プレイヤーにグローバルにユニークな識別子が必要な場合は、Player.UserId (静的) または Player.Name (現在のユーザー名) を使用します。
- Class.Player.LoadCharacter または Roblox エンジンによって生成されたキャラクターは、Humanoid.DisplayName プロパティを持つ Player.DisplayName プロパティに割り当てられます。
- 名前に不正な文字が含まれる場合があります。 UTF-8 に参照して、不正な文字を含む名前で作動する方法については、Library.utf8|UTF-8 を参照してください。
FollowUserId
Class.Player プロパティは、ユーザーがゲームにフォローされた 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
GameplayPaused プロパティは、StreamingEnabled が有効になっている場所でプレイヤーが現在パウズ状態にあるかどう状況を指します。クライアントでは、このプロパティ を使用してパウズ状態を確認できますが、サーバーでは 1>このプロパティ1> を使用できません。パウズ
参照してください:
- Workspace.StreamingEnabled は、コンテンツストリーミングを有効化するかどうかを制御します
- Workspace.StreamingIntegrityMode と Enum.StreamingIntegrityMode は、ゲームプレイを一時停止するときの詳細について説明します。
HealthDisplayDistance
HealthDisplayDistance Player プロパティは、このプレイヤーが他の Humanoid ヘルスバーを見るスタッド距離を設定します。如果StarterPlayer.HealthDisplayDistance を設定している場合、健康バーは表示されません。このプロパティは、デフォルトで 1> Class.Player.HealthDisplayDistance</
ヒューマノイドのヘルスバーが表示される場合は、Humanoid.DisplayDistanceType を使用して、表示タイプを設定できます。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
Class.Player プロパティは、ローカルプレイヤーが Roblox アカウントに設定したローカル言語IDを表示します。ローカルプレイヤーのローカル言語には、2文字コード (例: "en-us") が含まれています。
これは、ゲームのプレイヤーベースの地理的デモグラフィックを確認するのに使用できます。これは、エクスペリエンス中のコンテンツの自動ローカライズ(GuiBase2d.AutoLocalize )の場合にも使用されるローカライズの場所です。このプロパティは、サーバーからプレイヤーのローカライズにアクセスできます。
また、LocalizationService.RobloxLocaleId を参照してください。これは、内部コンテンツをローカライズするために使用されるローカライズ ID です。これは、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
The NameDisplayDistance StarterPlayer プロパティは、このプレイヤーが他の Humanoid 名を見る距離をスタッドで設定します。プロパティが 0 に設定されている場合、名前は非表示になります。このプロパティは、デフォルトで StarterPlayer.NameDisplayDistance に設定されてい
ヒューマノイドのヘルスバーが表示される場合は、Humanoid.DisplayDistanceType を使用して、表示タイプを設定できます。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
中立プロパティは、プレイヤーが特定のチームにいるかどうかを決定します。
- 真実ならば、プレイヤーは特定のチームにはいません。これは、Player.Team プロパティが nul であり、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 のネットワーク上で通信するさまざまなシステム (例えば、物理、ストリーミングなど) は、オブジェクトがレプリケーションの焦点に近いかどうかに応じて異なるレプリケーション速度を持つように複製されます。
このプロパティが n であると、ローカルプレイヤーのキャラクターの 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 でのみ設定でき、次のクリテリオを満たす必要があります:
- 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 サービスの Class.Player オブ
コードサンプル
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 に基づいて、Player がどのチームに関連付けられるかを決定します。変更すると、チームの Player.Team は、同じ BrickColor のため
このプロパティを使用する代わりに、Player.Team を各 Team に設定することはよくあります。このプロパティを設定すると、このプロパティの値がスクリプトごとに再び使用される可能性があり、これは「<ドミナント・レペート・アセット・アライ」 (DRY) 原
コードサンプル
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
ユーザーID は、Player プロパティで、RobloRoblox(ロブロックス) のすべてのユーザーアカウントをユニークかつ一貫性のある Class.Instance.Name で識別します。プレイヤーの Instance.Name は、ユーザーの現在のユーザー名によって変更される可能性がありますが、この
このプロパティは、GlobalDataStores を使用してプレイヤーのデータを保存/読み込む際に必須です。ユーザーのユーザーID を使用して、各プレイヤーにユニークなキーを割り当てるために使用してください。
コードサンプル
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
クリアキャラクターの外観関数は、Accessory、Shirt、Pants、2>Class.CharacterMesh
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 ポイントの間の距離を返します。プレイヤーが Player.Character がない場合は、0 を返します。
これは、ゲーム内のプレイヤーと他のオブジェクトまたは場所の間の距離を決定するのに便利です。
2つの非プレイヤーインスタンスまたはポジションの間の距離を確認したい場合は、フォロー中の方法を使用できます:
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
Player がエクスペリエンスに参加する方法に関する情報を記述したディクティオンを返します。ディクティオンには、次のフィールドのいずれかが含まれています:
<tbody><tr><th>ソースゲームID</th><td>番号</td><td>エクスペリエンスの Class.DataModel.GameId には、 Player がテレポートしたかどうかがあります。現在のエクスペリエンスにテレポートするか、サーバーが テレポート機能 を呼び出すかどうかにより、2>Player2> がテレポートされるかどうかを表示します。</td></tr><tr><th>ソースプレースID</th><td>番号</td><td>Class.DataModel.PlaceId の場所にテレポートされた <code>Player</code> のクラス。 専用プレイヤーが現在の場所にテレポートし、サーバーが テレポート機能 を呼び出す場合にのみ現在プレゼント。</td></tr><tr><th>ReferByPlayerId</th><td>番号</td><td>現在のプレイヤーをエクスペリエンスに招待したプレイヤーの <code>Class.Player.UserId</code> 。このデータを使用して、リファレンサーとトリガー報酬ロジックを識別します。</td></tr><tr><th>メンバー</th><td>配列</td><td>Class.Player.UserId のユーザーのテレポート先の数を含むアレイ。<code>Player</code> の一グループとしてテレポートされた場合にのみ現在を表示します。</td></tr><tr><th>テレポートデータ</th><td>バリアント</td><td>オリジナルのテレポートに指定された <code>テレポートデータ</code> を反映します。プレイヤーがテレポートするサーバー間で情報を共有するのに便利です。Only <code>テレポートデータ</code> が指定されており、サーバーがテレポート機能を呼び出した場合にのみ表示されます。</td></tr><tr><th>データのローンチ</th><td>文字列</td><td>深リンク URL または Class.ExperienceInviteOptions.LaunchData に指定された発売データを含むプレーンなまたは JSON 暗号化された文字列。</td></tr></tbody>
キー | 値タイプ | 説明 |
---|
GetJoinData と TeleportData を取得
サーバーがプレイヤーのテレポートを開始すると、このメソッドが返すダイクションには、プレイヤーのテレポートデータが含まれています。Player:GetJoinData() メソッドは、サーバー上のみでテレポートデータを取得できます。クライアント上のデータを取得するには、Class.TeleportService:GetLocalPlayer
Class.Player:GetJoinData() とは、Player:GetJoinData() とは異なり、次のセキュリティクリテリオに対応するテレポートデータのみを提供します:
- Roblox サーバーから 48 時間以内に送信されたことを保証します。
- この Player で送信されたことを保証します。
- The SourcePlaceId と SourceGameId は、データが送信された場所と宇宙を保証します。これは、データが承認された場プレースから来たことを意味します。
このデータはクライアントによって送信されるため、悪用者によってまだ可能性があります。プレイヤーの通貨などの敏感なデータは、メモリストアなどの安全なソリューションを介して送信される必要があります。
戻り値
PlaceId と UserId の値を含む辞書 (説明書の表詳細)。
コードサンプル
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 機能は、クライアントに使用されている Mouse を返します。プレイヤーのマウスインスタンスは、左マウスボタンクリックと右マウスボタンクリックとの移動と場所を追跡するために使用できます。
サービスは、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の値を返します。 true の場合、プレイヤーは検証されます。検証には、しかし、VOIP 電話番号または政府発行身分証明書の検証は含まれません。
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
メソッド Kick() は、エクスペリエンスがクライアントを優雅に切断し、オプションでメッセージを提供します。これは、悪用者をモデレートするのに便利です。あなたは、このメソッドを他のユーザーにトリガーするために信頼できるユーザーのみを許可する必要があります。
このメソッドを Player に呼び出し、引数を持たずに接続されたユーザーをサーバーから切断し、デフォルトの通知メッセージを提供します。 Player とストリングの最初の引数を入れ替えることで、デフォルトのメッセージにストリン文字列が置き換えられます。
Class.LocalScript からこのメソッドを使用すると、ローカルユーザーのクライアントだけが追放されます。
パラメータ
ユーザーをキックしたときに表示するメッセージ。
戻り値
Move
移動 Player 関数は、プレイヤーのキャラクターが指定された方向に歩くように、またはプレイヤーによって中断されるように、指定された方向に移動させます。
マップ上を移動するスクリプトを NPC Humanoids が使用するとき、実際のプレイヤーの入力によって制御されないです。
注意、関数の 2 番目の引数は、提供された Vector3 が世界コーディネート ( false ) またはプレイヤーの Camera ( 2> true2> ) に移動するかどうかを示します。
パラメータ
プレイヤーが移動するベクトル3の方向。
プレイヤーがプレイヤーのカメラと相対に動くかどうかを示すブールストを指します。
戻り値
コードサンプル
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 プロパティを設定して、プレイヤーのアカウントが何日間に登録されているかを説明する。
これはプレイヤーのアカウントの年齢を設定しませんが、アカウント自体の年齢を設定します。
パラメータ
アカウントの年齢 (日数で)。
戻り値
コードサンプル
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() オブジェクトを返します。TextFilterResult は、メッセージの目的に応じて、
パラメータ
プレイヤーがフィルターされたチャットを見るかどうかを示すブールーン。
戻り値
GetFriendsOnline
この関数は、maxFriends の値に制限されたオンラインの友達のダイクトリアリを返します。この関数は 30 秒のキャッシュを使用します。
返された配列には、特定の場所タイプのフィールドのみが存在します。たとえば、 PlaceId は、LocationType が 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>LastOnline</b></td><td>文字列</td><td>フレンドが最後にオンラインだったとき。</td></tr><tr><td><b>IsOnline</b></td><td>ブールーン</td><td>友達が現在オンラインである場合。</td></tr><tr><td><b>LastLocation</b></td><td>文字列</td><td>友達の現在の場所の名前。</td></tr><tr><td><b>PlaceId</b></td><td>番号</td><td>友友達の最後の場所のID。</td></tr><tr><td><b>ゲームID</b></td><td>文字列</td><td>フレンドの最後の場所の DataModel/JobId 。</td></tr><tr><td><b>LocationType</b></td><td>番号</td><td>フレンドの最後の場所の場所タイプ:<table>0 > モバイルウェブサイト > ></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 の同じプレイヤーでメソッドを複数回呼び出すと、メソッドが最初に呼び出されたときと同じ結果が返されます。このキャッシュ動作は、パーペアベースで実装されています:サーバーは、クライアントと同じグループ ID でメソッドを呼び出すことはありません。
パラメータ
指定されたグループの 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 の同じプレイヤーでメソッドを複数回呼び出すと、メソッドが最初に呼び出されたときと同じ結果が返されます。このキャッシュ動作は、パーペアベースで実装されています:サーバーは、クライアントと同じグループ 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
この関数は、Player.UserId のユーザーの Class.Player.FriendStatus を尋ねる Roblox ウェブサイトにリクエストを送信します。この関数は、同じ Player.UserId のユーザーの Class.Player.FriendStatus を複数回呼び出すと、最新の結果を返すこ
パラメータ
指定されたプレイヤーの 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
The IsInGroup Player 機能は、Class.Player の ID を使用して、プレイヤーがグループのメンバーであるかどうかを Roblox ウェブサイトにリクエストします。
これを Script で使用すると、 LocalScript ではなく、最新の情報を取得できません。プレイヤーがゲーム中にグループを退出れると、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 をクリアします。
これは、プレイヤーを殺すことなくキャラクターをリロードしたい場合、例えばプレイヤーの Class.Player.CharacterAppearance を変更した後に新しいキャラクターの外観をロードしたい場合に便利です。
注:機能は Player:LoadCharacterBlocking() と似ていますが、リクエストは同期ではなく、非同期で処理されます。これにより、他のタスクがゲームを読み込んでいる間に続行できるようになります。また、この機能はスクリプトで使用できますが、LoadCharacterBlocking は使用できません。
個々のプレイヤーのために LoadCharacter を呼び出す場合、同じプレイヤーの Player.CharacterAppearanceLoaded イベントが発動した後に、そのプレイヤーの Class.Player.Character を再び呼び出すことは推奨されません。
キャラクター読み込みイベントの順番
R15 アバターで Player:LoadCharacter() を呼び出すと、次の順序でイベントが発生します (注: R6 の順序は異なります):
- Player.Character セット
- Player.CharacterAdded ファイア
- Player.Changed は「キャラクター」の値で発動します
- キャラクターの外観が初期化されます
- Player.CharacterAppearanceLoaded が発動します
- Character.Parent は、DataModel に設定されます
- キャラクターのリグがビルドされ、キャラクターのスケールがビルドされます
- キャラクターはスポーンスポーン地点に移動します
- 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 イベントが発動した後、関数を再び呼び出すことは推奨されません。
参照してください:
- HumanoidDescription System、人間の説明システムをより詳細に説明し、複数のスクリプトの例を提供する記事
パラメータ
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 、 2>Z2> ロケーションの
この呼び出しの効果は一時的であり、指定された場所の周辺でストリーミングされる内容には保証がありません。クライアントメモリーの制限とネットワークの状況により、クライアントに利用可能なものが影響を受ける可能性があります。
使用注意
エリアの周りでストリーミングをリクエストすることは、 保証 ではありません、コンテンツがリクエスト完了時に現在になることは、ストリーミングがクライアントのネットワークバンドワイド、メモリー制限、その他の要因により影響されるためです。
パラメータ
戻り値
イベント
CharacterAdded
CharacterAdded イベントは、プレイヤーのキャラクターがスポーンする (またはリスポーンする) ときに発動します (または、 Class.Player.Character を非 Player.Character の値に設定したり、 nil を呼び出したりすると、このイベントが発動します)
これは、Player.CharacterRemoving イベントと一緒に使用できます。これは、プレイヤーのキャラクターが削除される直前に発動するため、通常は死亡の直前です。それゆえ、これらのイベントの両方が、プレイヤーがゲー
このイベントが発動すると、Humanoid とそのデフォルトのボディパーツ (頭、胴体、手足) が存在するが、Class
パラメータ
キャラクターのインスタンスがスポーン/リスポーンした場合。
コードサンプル
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、1> Class
このイベントの 1つの使用方法は、アクセサリーをすべて読み込んでから破壊することです。下の例に示すように。
パラメータ
コードサンプル
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
キャラクターを削除するイベントは、プレイヤーのキャラクターがリスポーンするときなど、正確にキャラクターが削除される直前に発動します。
このイベントは、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 がメッセージを入力し、RoblRoblox(ロブロックス) の提供されたチャットバーに入力を押すと発動します。これは、デフォルトのチャットスクリプトによる Lua バインディングを使用しています。Class.StarterGui:SetCoreGuiEnabled() を無効にし、Chat</
チャットコマンド
このイベントと、 string.sub() や string.lower() などのストリング操作機能を使用して、プレイヤー名などの引数でチャットコマンドを
フィルタリング
このイベントで発動するメッセージテキストは、 フィルターなし です。チャットを他のプレイヤーに任意の形式で表示している場合、Chat:FilterStringAsync() を使用してフィルタリングする必要があります。自分のチャットシステムを作成するときは、フィルターチャットを適切にフ
パラメータ
プレイヤーがチャットに入力したメッセージの内容。
Deprecated. 冗談メッセージの場合、これはチャットメッセージの意図したターゲットであったプレイヤーでした。
コードサンプル
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
このイベントは、ゲームエンジンクラスが Class.Player|player を待機としてクラス別にカスタマイズしたときに発生します。時間は、その時点から経過した秒数です。イベントは、プレイヤーが待機している間、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 が変更されるときに発生します。このイベントは、テレポートが成功したかどうかを検出するのに便利です。
テレポートステートとは何ですか?
Class.TeleportService を使用してテレポートリクエストが行われると、Player がテレポートされる前に一連のステップがあります。現在のステージは Enum.TeleportState 値で表示され、OnTeleport によって提供されます。以下に示すのは、これの実用的な例です。
パラメータ
Class.Player の新しい Player 。
Class.Player がテレポートされる場所の ID
スポーン先の名前、TeleportService:TeleportToSpawnByName() が使用されている場合、Class.TeleportService:TeleportToSpawn の名前でスポーンします。
コードサンプル
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)