Players 服務包含 Class.Player 對象 現有連接到 Roblox 服務器的客戶伺服器。它還包含關於地空間的配置資訊。它可以擷取不連接到服務伺服器的玩家,例如角色外觀、朋友和頭像縮圖。
概要
屬性
啟用或關閉 Class.Players:BanAsync()|BanAsync() Class.Players:UnbanAsync()|UnbanAsync() Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync() 2>Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync() 5>Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync() 8>Class.Play
指示是否啟用泡泡聊天。它是由 Players:SetChatStyle() 方法設定。
指示 Class.Character|Characters 會自動重生。
指示是否啟用經典聊天;由 Players:SetChatStyle() 方法設置。
Class.Player 是 LocalScript 的執行對象。
可以在伺服器中的玩家最大數量。
伺服器的玩家最佳數量。
控制玩家角色重生所需的時間。
方法
讓本地玩家聊天訊息。
返回所有連接的 Player 對象的表。
設定是否使用 BubbleChat 和 ClassicChat,並告訴 TeamChat 和 Chat 做什麼。
讓 LocalPlayer 聊天所提供的訊息,只有在同一個團隊中的用戶才能查看。
使用者從您的體驗中禁止,並且可以指定持續時間、理由、是否適用於整個宇宙或只是當前位空間,以及更多選項。此方法是 Players.BanningEnabled 屬性,您可以在 Studio 中切換。
- CreateHumanoidModelFromDescription(description : HumanoidDescription,rigType : Enum.HumanoidRigType,assetTypeVerification : Enum.AssetTypeVerification):Model
返回指定在人形描述中所述的所有裝備,並且是 R6 或 R15 作為指定的 RigType 所述。
返回指定的用戶ID 的虛擬人偶模型設定。
擷取任何使用者在體驗的宇宙中的禁令和解除禁令歷史。此方法啟用和關閉 Players.BanningEnabled 屬性,您可以在 Studio 中切換。
返回指定用戶的角色外觀資訊。
返回 FriendPages 對象,其中包含所有玩家朋友的資訊。
為指定的服裝返回人形描述,這將與服裝的零件/顏色/動畫等相設。
返回一個名為人形描述的描述,該描述包括指定給指定用戶的所有裝備。
向 Roblox 網站傳送使用者名稱為 UserId 的帳戶的密碼。
向 Roblox 網站發送查詢,以便獲取 userId 的帳戶。
- GetUserThumbnailAsync(userId : number,thumbnailType : Enum.ThumbnailType,thumbnailSize : Enum.ThumbnailSize):Tuple
返回玩家的 miniatur圖縮略圖的內容網址,大小和輸入,以及是否為準備好使用的圖像。
解除 Players:BanAsync() 或 Players.BanningEnabled 中封鎖的玩家。此方法啟用和關閉 Class.Players.BanningEnabled 屬性,您可以在 Studio 中切換。
活動
玩家進入遊戲時會發生火焰。
發生在遊戲服務器認證玩家的會員資格時。
玩家即將離開遊戲時會發生火焰。
發生在遊戲服務器認證用戶狀態已變更時。
屬性
BanningEnabled
啟用或關閉 Class.Players:BanAsync()|BanAsync() Class.Players:UnbanAsync()|UnbanAsync() Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync() 2>Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync() 5>Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync() 8>Class.Play
BubbleChat
BubbleChat 屬性表示是否啟用泡泡聊天。它是由 Players:SetChatStyle() 方法使用 Enum.ChatStyle 枚構建。
啟用此聊天模式時,遊戲會在屏幕左上角的聊天視窗中顯示聊天內容。
有兩種聊天模式,Players.ClassicChat和啟用 classic 和 bubble chat 的聊天模式。
CharacterAutoLoads
CharacterAutoLoads 屬性指示是否會在 Class.Character|Characters 會自動重生。預設值是 true。
如果此屬性被禁用 (假),玩家 Class.Character|Characters 將在呼叫 Player:LoadCharacter() 時才會生成,並且包括玩家加入體驗時的所有 Player 。
這可能會在玩家有限生命的體驗中有所幫助,例如在競爭性遊戲中,玩家不會重生直到遊戲回合結束。
範例程式碼
local Players = game:GetService("Players")
-- Set CharacterAutoLoads to false
Players.CharacterAutoLoads = false
-- Remove player's character from workspace on death
Players.PlayerAdded:Connect(function(player)
while true do
local char = player.CharacterAdded:Wait()
char.Humanoid.Died:Connect(function()
char:Destroy()
end)
end
end)
-- Respawn all dead players once every 10 seconds
while true do
local players = Players:GetChildren()
-- Check if each player is dead by checking if they have no character, if dead load that player's character
for _, player in pairs(players) do
if not workspace:FindFirstChild(player.Name) then
player:LoadCharacter()
end
end
-- Wait 10 seconds until next respawn check
task.wait(10)
end
ClassicChat
指定是否啟用或否啟用經典聊天。這個屬性是由 Players:SetChatStyle() 方法使用 Enum.ChatStyle 枚的指定。
當此聊天模式啟用時,遊戲會在發送者的頭上顯示聊天視窗。
有兩種聊天模式,Players.BubbleChat 和一個聊天模式,在 classic 和 bubble chat 都有啟用。
LocalPlayer
LocalPlayer 是一個只有讀取的屬性,指向 Player 的客戶端正在執行體驗。
此屬性只適用於 LocalScripts 和 ModuleScripts 所需,因為它們在客戶端上執行。對於服務伺服器來說,上哪裡 Script 對象執行其代碼,此屬性是 1>nil1> 。
PreferredPlayers
PreferredPlayers 屬性表示 Roblox 的比賽作器將填滿的服務器數量。這數量會小於體驗支持的最大玩家數量 (Players.MaxPlayers )。
RespawnTime
RespawnTime 屬性控制時間,以秒計時,玩家重生所需的時間。 Players.CharacterAutoLoads 是真的,它的預設為 5.0 秒。
這很有用,當您想要變更重生所需的時間,但不想手動處理重生玩家。
雖然此屬性可以從 Script 內設置,但您可以從 Studio 的 Players 窗口直接設置它。
UseStrafingAnimations
方法
Chat
此功能讓本地玩家聊天發布的訊息。因為此項目受到保護,嘗試在 Script 或 LocalScript 中使用它會導致錯誤。
相反,當建立自訂聊天系統或需要聊天存取的系統時,您可以使用 Chat 服務的 Chat:Chat() 功能。
參數
訊息聊天。
返回
範例程式碼
-- Command bar
game:GetService("Players"):Chat("Hello, world!") --Results in 'Hello, world!' appearing in the Chat log under your Player's name.
-- Script
local Players = game:GetService("Players")
Players:Chat("Hello, world!") --Errors
GetPlayerByUserId
此功能在 player 中搜索每個 Players 在 Player.UserId 中找到其中一個 的 2>Class.Player.UserId2> 與指定的用戶ID 一致。如果此玩家不存在,則會返回 5>nil5> 。與以下功能相同:
local Players = game:GetService("Players")
local function getPlayerByUserId(userId)
for _, player in Players:GetPlayers() do
if player.UserId == userId then
return player
end
end
end
此方法有助於尋找開發者產品的購買者使用 MarketplaceService.ProcessReceipt ,其中包含購買者的使用者ID,而不是引用玩家對象自身。大多數遊戲將需要參考玩家才能授權產品。
參數
玩家的 Player.UserId 被指定。
返回
範例程式碼
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 MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
-- Data store for tracking purchases that were successfully processed
local purchaseHistoryStore = DataStoreService:GetDataStore("PurchaseHistory")
-- Table setup containing product IDs and functions for handling purchases
local productFunctions = {}
-- ProductId 123123 for a full heal
productFunctions[123123] = function(_receipt, player)
-- Logic/code for player buying a full heal (may vary)
if player.Character and player.Character:FindFirstChild("Humanoid") then
-- Heal the player to full health
player.Character.Humanoid.Health = player.Character.Humanoid.MaxHealth
-- Indicate a successful purchase
return true
end
end
-- ProductId 456456 for 100 gold
productFunctions[456456] = function(_receipt, player)
-- Logic/code for player buying 100 gold (may vary)
local stats = player:FindFirstChild("leaderstats")
local gold = stats and stats:FindFirstChild("Gold")
if gold then
gold.Value = gold.Value + 100
-- Indicate a successful purchase
return true
end
end
-- The core 'ProcessReceipt' callback function
local function processReceipt(receiptInfo)
-- Determine if the product was already granted by checking the data store
local playerProductKey = receiptInfo.PlayerId .. "_" .. receiptInfo.PurchaseId
local purchased = false
local success, result, errorMessage
success, errorMessage = pcall(function()
purchased = purchaseHistoryStore:GetAsync(playerProductKey)
end)
-- If purchase was recorded, the product was already granted
if success and purchased then
return Enum.ProductPurchaseDecision.PurchaseGranted
elseif not success then
error("Data store error:" .. errorMessage)
end
-- Determine if the product was already granted by checking the data store
local playerProductKey = receiptInfo.PlayerId .. "_" .. receiptInfo.PurchaseId
local success, isPurchaseRecorded = pcall(function()
return purchaseHistoryStore:UpdateAsync(playerProductKey, function(alreadyPurchased)
if alreadyPurchased then
return true
end
-- Find the player who made the purchase in the server
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- The player probably left the game
-- If they come back, the callback will be called again
return nil
end
local handler = productFunctions[receiptInfo.ProductId]
local success, result = pcall(handler, receiptInfo, player)
-- If granting the product failed, do NOT record the purchase in datastores.
if not success or not result then
error("Failed to process a product purchase for ProductId: " .. tostring(receiptInfo.ProductId) .. " Player: " .. tostring(player) .. " Error: " .. tostring(result))
return nil
end
-- Record the transaction in purchaseHistoryStore.
return true
end)
end)
if not success then
error("Failed to process receipt due to data store error.")
return Enum.ProductPurchaseDecision.NotProcessedYet
elseif isPurchaseRecorded == nil then
-- Didn't update the value in data store.
return Enum.ProductPurchaseDecision.NotProcessedYet
else
-- IMPORTANT: Tell Roblox that the game successfully handled the purchase
return Enum.ProductPurchaseDecision.PurchaseGranted
end
end
-- Set the callback; this can only be done once by one script on the server!
MarketplaceService.ProcessReceipt = processReceipt
GetPlayerFromCharacter
此函數將 Player 與指定的 Player.Character 或 nil 返回,如果找不到,它與以下功能相同:
local function getPlayerFromCharacter(character)
for _, player in game:GetService("Players"):GetPlayers() do
if player.Character == character then
return player
end
end
end
此方法通常會在玩家的角色發生某些事件時使用 (例如他們的 Humanoid dying ) 時使用。這種事件可能不會直接參照玩家對物件,但此方法提供簡單的存使用權 通行權 存取。這種方法的反向可以被描述為獲得玩家角色。要做到此,請單擊角色屬
參數
您想要從中取得玩家的角色。
返回
範例程式碼
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local PLAYER_NAME = "Nightriff"
local character = Workspace:FindFirstChild(PLAYER_NAME)
local player = Players:GetPlayerFromCharacter(character)
if player then
print(`Player {player.Name} ({player.UserId}) is in the game`)
else
print(`Player {PLAYER_NAME} is not in the game!`)
end
GetPlayers
此方法返回所有現有連接的 Player 對象的表。它與 Class.Instance:GetChildren() 的工作方式相同,除了它只會返回在 Class.Players 下找到的對象。當用於 2>for2> 循環時,它對於所有玩家在遊戲中的iter 很有
local Players = game:GetService("Players")for _, player in Players:GetPlayers() doprint(player.Name)end
連接到 Players.PlayerAdded 的腳本通常會嘗試處理連接到遊戲的每個玩家。此方法對於重複已連接的玩家不會發射 PlayerAdded 。使用此方法可以確保沒有任何玩家遺失。
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player: " .. player.Name)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
返回
包含伺服器中的所有玩家的桌子。
範例程式碼
local Players = game:GetService("Players")
local function onCharacterAdded(character)
-- Give them sparkles on their head if they don't have them yet
if not character:FindFirstChild("Sparkles") then
local sparkles = Instance.new("Sparkles")
sparkles.Parent = character:WaitForChild("Head")
end
end
local function onPlayerAdded(player)
-- Check if they already spawned in
if player.Character then
onCharacterAdded(player.Character)
end
-- Listen for the player (re)spawning
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
SetChatStyle
此功能設定是否使用 BubbleChat 和 ClassicChat,並告訴 TeamChat 和聊天何時使用 Enum.ChatStyle 枚枚。此項目受到保護,因此嘗試在 Script 或 LocalScript 中使用它將導致錯誤。
此功能在遊戲設置聊天模式時內部使用。
參數
指定的聊天風格已設定。
返回
範例程式碼
-- Command bar
game.Players:SetChatStyle(Enum.ChatStyle.Classic) -- Set's chat style to Classic
-- LocalScript
local Players = game:GetService("Players")
Players:SetChatStyle(Enum.ChatStyle.Classic) -- Errors
TeamChat
這個函數讓 Players.LocalPlayer 聊天所提供的訊息,只有在同一個團隊上的用戶才能查看。此項目受到保護,嘗試在 Script 或 LocalScript 中使用它會導致錯誤。
此功能在 Players.LocalPlayer 向他們的團隊發送訊息時使用。
參數
訊息正在聊天。
返回
範例程式碼
-- Command bar
game.Players:TeamChat("Hello World") -- Sends a "Hello World" message to all players on the local player's team
-- LocalScript
local Players = game:GetService("Players")
Players:TeamChat("Hello World") -- Errors
BanAsync
Class.Players:BanAsync() 方法可讓您輕鬆禁止違反您的體驗指南的用戶。您可以指定禁止時間、啟用禁止傳播至可疑的帳戶,並提供訊息給禁止用戶,按照使用規則
禁止和訊息
受到禁令的用戶將立即被驅逐並且防止重新加入您的體驗。他們會被提示一個錯誤模式,顯示他們的禁令和您的 DisplayReason 。 Roblox 的後端系統將會對指定的所有服務器上的玩家進行禁令。Displ
地點和宇宙
由預設情況下,限制將適用於該宇宙內的任何地方。若要將限制應用於僅限於此 API 呼叫的地方,請設定 ApplyToUniverse 為 false 。 但如果使用者在宇宙開始位置被禁止,它將導致使用者被排除出宇宙的整個部分,無論是否啟用全
替代帳戶
用戶經常在多個不同的帳戶下玩耍,這些帳戶通常被稱為替代帳戶或 alt 帳戶,這些帳號通常用來籌勢躲過帳號禁令。要幫助您保持禁令用戶戶外,此 API 的預設行為會將所有禁令從源帳戶禁止到任何可疑的 alt 帳戶。您可以設
封鎖時效
不是所有違反都一樣,所以不是所
錯誤和減速
此方法會喚發 HTTP 呼叫來自端後服務,這些服務可能會被限制並且可能發生故障。如果您使用此 API 呼叫多於一個 UserId,此方法將嘗試對每個 ID 進行 HTTP 呼叫。然後它會聚合任何錯誤訊息並與它
HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception
訊息會總是包含 failure for UserId {} 如果是 HTTP 錯誤。
客戶端需求
因為禁止用戶帳號會導致錯誤,這個方法只能在後端體驗服務器 (客戶端呼叫會導致錯誤) 上呼叫。 您可以在 Studio 中測試此 API 在 協作 作品期間,或在 團隊測試 中,但禁止將不適用於生產。
這個 API 使用 User Restrictions Open Cloud API。您將能夠使用這些 API 來管理您在第三方應用程序中的禁令。
參數
UserIds (需要; 陣列) — 玩家的UserIds 列表。最大尺寸為 50 。
ApplyToUniverse (可選) — 是否要將禁令擴散到體驗宇宙內的所有地方。預設值是 true。
Duration (需要;整數) — 封停權的持續時間,以秒計。永久封鎖的值應為 -1 。 0 和所有其他負數值無效。
DisplayReason (需要; 字串) — 顯示使用者嘗試加入體驗失敗時所會顯示的訊息。最大字串長度為 400 。
PrivateReason (需要; 字串) — 查詢使用者禁令歷史時會返回的內部訊息。最大字串長度為 1000 。
ExcludeAltAccounts (可選) — 當 true 時,Roblox 不會嘗試禁止 alt 帳號。預設值是 false。
返回
範例程式碼
local Players = game:GetService("Players")
if shouldBeBanned(player: Player) then
local banHistoryPages = Players:GetBanHistoryAsync(player.UserId)
local duration = getNextBanDuration(banHistoryPages) -- Creator-implemented logic
local config: BanConfigType = {
UserIds = {player.UserId},
Duration = duration,
DisplayReason = "You violated community guideline #5",
PrivateReason = "Put anything here that the user should not know but is helpful for your records",
ExcludeAltAccounts = false,
ApplyToUniverse = true
}
local success, err = pcall(function()
return Players:BanAsync(config)
end)
print(success, err)
end
CreateHumanoidModelFromDescription
返回指定在人形描述中所述的所有裝備,並且是 R6 或 R15 作為指定的 RigType 所述。
參數
指定回傳的角色外觀。
指定要返回的角色是否為 R6 或 R15。
資產類型驗證是否載入模型(您應該將其設置為 "總是" 除非您想載入非目錄資產)。
返回
人形角色模型。
範例程式碼
game.Players:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R15).Parent = game.Workspace
CreateHumanoidModelFromUserId
返回一個包含所有裝備的角色模型,以及與指定用戶的角色對應的裝備。這包括角色是否目前為 R6 或 R15。
參數
Roblox 用戶的用戶名。(UserId 是用戶名的第 1 位。) 例如:(roblox.com/users/1/profile)。
返回
人形角色模型。
範例程式碼
game.Players:CreateHumanoidModelFromUserId(1).Parent = game.Workspace
GetBanHistoryAsync
擷取任何體驗內的用戶的禁令和解除禁令宇宙史。此方法會返回一個 BanHistoryPages 實例,其繼承自 Pages 。此方法啟用並禁用 Players.BanningEnabled 屬性,您可以在 Studio 中切換。
此功能呼叫只會在生產遊戲服務器上成功,不會在客戶端或 Studio 上成功。
這個 API 使用 User Restrictions Open Cloud API。您將能夠使用這些 API 來管理您在第三方應用程序中的禁令。
參數
返回
請參閱 BanHistoryPages 以取得回報參考。
GetCharacterAppearanceInfoAsync
此功能在 Roblox 網站的玩家頭像 (無視裝備) 上以字典的形式返回資訊。 它不是要與 GetCharacterAppearanceAsync ,其實際載入資產由此方法所載入的資產。你可以使用 Class.InsertService:LoadAsset() 載入使用此方法載入的資產。結構
<tr><td><code>資產</code></td><td>表 (請參閱下方)</td><td>描述裝備的資產 (帽子、身體零件等)</td></tr><tr><td><code>身體顏色</code></td><td>表 (請參閱下方)</td><td>描述每個腳踝的 BrickColor 值</td></tr><tr><td><code>身體顏色3秒</code></td><td>表 (請參閱下方)</td><td>描述每個手臂可能與身體顏色不完全一致的情況下的顏色3 實例</td></tr><tr><td><code>預設褲子應用程式</code></td><td>boolean</td><td>描述是否應該使用預設褲子</td></tr><tr><td><code>預設ShirtApplied</code></td><td>boolean</td><td>描述是否應該應用預設上衣</td></tr><tr><td><code>表情符號</code></td><td>表 (請參閱下方)</td><td>說明裝備的表情動畫</td></tr><tr><td><code>玩家虛擬人偶類型</code></td><td>字串</td><td>或 "R15" 或 "R6"</td></tr><tr><td><code>縮放</code></td><td>表 (請參閱下方)</td><td>描述各種身體縮放因素</td></tr>
名稱 | 類型 | 說明 |
---|
資產子表
assets 桌子 是一個含有玩家目前裝備的資產的樣本表。
<tr><td><code>id</code></td><td>數字</td><td>裝備的資素材 ID</td></tr><tr><td><code>資產類型</code></td><td>表</td><td>擁有 <code>名稱</code> 和 <code>id</code> 欄位的表,每欄位描述裝備的資產類型(「帽子」、「面」等)</td></tr><tr><td><code>名稱</code></td><td>字串</td><td>裝備的資產名稱</td></tr>
名稱 | 類型 | 說明 |
---|
調整子表
scales 表有以下鑰匙,每個鑰匙對應一個 Humanoid 縮放屬性:bodyType , 1> head1> , 4> height4> , 7> proportion7> , 9> depth
身體顏色子表
bodyColors 表有以下鍵,每個鍵都對應一個 BrickColor ID 號碼,可以用於 BrickColor.new(id)
參數
指定玩家的 * 用戶名。
返回
一個包含指定使用者外觀資訊的字典。
範例程式碼
local result = {
playerAvatarType = "R15",
defaultPantsApplied = false,
defaultShirtApplied = false,
scales = {
bodyType = 0,
head = 1,
height = 1.05,
proportion = 0,
depth = 0.92,
width = 0.85,
},
bodyColors = {
leftArmColorId = 1030,
torsoColorId = 1001,
rightArmColorId = 1030,
headColorId = 1030,
leftLegColorId = 1001,
rightLegColorId = 1001,
},
assets = {
{
id = 1031492,
assetType = {
name = "Hat",
id = 8,
},
name = "Striped Hat",
},
{
id = 13062491,
assetType = {
name = "Face Accessory",
id = 42,
},
name = "Vision Française ",
},
{
id = 16598440,
assetType = {
name = "Neck Accessory",
id = 43,
},
name = "Red Bow Tie",
},
{
id = 28999228,
assetType = {
name = "Face",
id = 18,
},
name = "Joyous Surprise",
},
{
id = 86896488,
assetType = {
name = "Shirt",
id = 11,
},
name = "Expensive Red Tuxedo Jacket",
},
{
id = 86896502,
assetType = {
name = "Pants",
id = 12,
},
name = "Expensive Red Tuxedo Pants",
},
{
id = 376530220,
assetType = {
name = "Left Arm",
id = 29,
},
name = "ROBLOX Boy Left Arm",
},
{
id = 376531012,
assetType = {
name = "Right Arm",
id = 28,
},
name = "ROBLOX Boy Right Arm",
},
{
id = 376531300,
assetType = {
name = "Left Leg",
id = 30,
},
name = "ROBLOX Boy Left Leg",
},
{
id = 376531703,
assetType = {
name = "Right Leg",
id = 31,
},
name = "ROBLOX Boy Right Leg",
},
{
id = 376532000,
assetType = {
name = "Torso",
id = 27,
},
name = "ROBLOX Boy Torso",
},
},
}
print(result)
GetFriendsAsync
GetFriends Players 函數返回一個 FriendPages 對象,其中包含所有給定用戶的朋友資訊。 FriendPages 對象內的項目是檢查表,其中包含以下字段:
<tr><td>ID</td><td>int64</td><td>朋好友的UserId</td></tr><tr><td>使用者名稱</td><td>字串</td><td>朋好友的使用者名稱</td></tr><tr><td>顯示名稱</td><td>字串</td><td>Class.Player.DisplayName|顯示名稱 的朋好友。</td></tr>
名稱 | 類型 | 說明 |
---|
查看代碼示例,以一個簡單的方式來反覆檢查所有玩家的朋友。
參數
指定玩家的使用者ID。
返回
範例程式碼
local Players = game:GetService("Players")
local USERNAME = "Cozecant"
local function iterPageItems(pages)
return coroutine.wrap(function()
local pagenum = 1
while true do
for _, item in ipairs(pages:GetCurrentPage()) do
coroutine.yield(item, pagenum)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
pagenum = pagenum + 1
end
end)
end
-- First, get the user ID of the player
local userId = Players:GetUserIdFromNameAsync(USERNAME)
-- Then, get a FriendPages object for their friends
local friendPages = Players:GetFriendsAsync(userId)
-- Iterate over the items in the pages. For FriendPages, these
-- are tables of information about the friend, including Username.
-- Collect each username in a table
local usernames = {}
for item, _pageNo in iterPageItems(friendPages) do
table.insert(usernames, item.Username)
end
print("Friends of " .. USERNAME .. ": " .. table.concat(usernames, ", "))
GetHumanoidDescriptionFromOutfitId
為指定的服裝ID返回人形描述,這會與服裝的零件/顏色/動畫等相設。 一個服裝可以是用戶創建的,或者是 Roblox 創建的服裝。
參數
人形描述的服裝的 id。
返回
人形描述符號化為傳入服裝ID的指定。
範例程式碼
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local function getOutfitId(bundleId)
if bundleId <= 0 then
return
end
local info = game.AssetService:GetBundleDetailsAsync(bundleId)
if not info then
return
end
for _, item in pairs(info.Items) do
if item.Type == "UserOutfit" then
return item.Id
end
end
return nil
end
local function getHumanoidDescriptionBundle(bundleId)
local itemId = getOutfitId(bundleId)
if itemId and itemId > 0 then
return Players:GetHumanoidDescriptionFromOutfitId(itemId)
end
return nil
end
local humanoidDescription = getHumanoidDescriptionBundle(799)
local humanoidModel = Players:CreateHumanoidModelFromDescription(humanoidDescription, Enum.HumanoidRigType.R15)
humanoidModel.Parent = Workspace
GetHumanoidDescriptionFromUserId
返回一個 HumanoidDescription 描述裝備在指定玩家的虛擬人偶的所有裝備。包括磅礡和身體顏色。
參數
Roblox 用戶的用戶名。(UserId 是用戶名的第 1 位。) 例如:(roblox.com/users/1/profile)。
返回
人形描述與使用者虛擬人偶的特性相關。
範例程式碼
game.Players:CreateHumanoidModelFromDescription(game.Players:GetHumanoidDescriptionFromUserId(1), Enum.HumanoidRigType.R15).Parent = game.Workspace
GetNameFromUserIdAsync
GetNameFromUserIdAsync Players 函數會向 Roblox 網站發送查詢,請求指定 UserId 的帳戶是否是 Roblox 的帳戶。
此方法會發生錯誤,如果沒有帳戶與指定的用戶ID存在。如果您不確定此帳戶是否存在,請使用 pcall 包含結果。此外,您可以手動溫存結果以便以後快速使用相同的用戶ID。請參閱代碼示例以了解更多資訊。
參數
玩家的 Player.UserId 被指定。
返回
使用指定 Player.UserId 的用戶的名稱。
範例程式碼
local Players = game:GetService("Players")
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
local nameOne = Players:GetNameFromUserIdAsync(118271)
local nameTwo = Players:GetNameFromUserIdAsync(131963979)
print(nameOne, nameTwo)
-- prints: "RobloxRulez docsRule"
local Players = game:GetService("Players")
-- Create a table called 'cache' to store each 'Name' as they are found.
-- If we lookup a 'Name' using the same 'UserId', the 'Name' will come
-- from cache (fast) instead of GetNameFromUserIdAsync() (yields).
local cache = {}
function getNameFromUserId(userId)
-- First, check if the cache contains 'userId'
local nameFromCache = cache[userId]
if nameFromCache then
-- if a value was stored in the cache at key 'userId', then this 'nameFromCache'
-- is the correct Name and we can return it.
return nameFromCache
end
-- If here, 'userId' was not previously looked up and does not exist in the
-- cache. Now we need to use GetNameFromUserIdAsync() to look up the name
local name
local success, _ = pcall(function()
name = Players:GetNameFromUserIdAsync(userId)
end)
if success then
-- if 'success' is true, GetNameFromUserIdAsync() successfully found the
-- name. Store this name in the cache using 'userId' as the key so we
-- never have to look this name up in the future. Then return name.
cache[userId] = name
return name
end
-- If here, 'success' was false, meaning GetNameFromUserIdAsync()
-- was unable to find the 'name' for the 'userId' provided. Warn the user
-- this happened and then return nothing, or nil.
warn("Unable to find Name for UserId:", userId)
return nil
end
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
-- The first time a UserId is used, GetNameFromUserIdAsync() will be called
local nameOne = getNameFromUserId(118271)
local nameTwo = getNameFromUserId(131963979)
-- Because 118271 was previously used, get its Name from the cache
local nameOneQuick = getNameFromUserId(118271)
print(nameOne, nameTwo, nameOneQuick)
-- prints: "RobloxRulez docsRule RobloxRulez"
GetUserIdFromNameAsync
此功能會向 Roblox 網站發送查詢,請問 Player.UserId 是否與指定 Player 名稱的帳戶相關。
此方法會發生錯誤,如果沒有帳戶與指定的使用者名稱存在。如果您不確定此帳戶是否存在,請使用 pcall 包裹呼叫。 此外,您可以手動溫存結果以便以後快速呼叫此使用者名稱。請參閱代碼示例以了解更多資訊。
參數
指定玩家的使用者名稱。
返回
指定用戶名的用戶的 Player.UserId。
範例程式碼
local Players = game:GetService("Players")
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
local userIdOne = Players:GetUserIdFromNameAsync("RobloxRulez")
local userIdTwo = Players:GetUserIdFromNameAsync("docsRule")
print(userIdOne, userIdTwo)
-- prints: "118271 131963979"
local Players = game:GetService("Players")
-- Create a table called 'cache' to store each 'UserId' as they are found.
-- If we lookup a 'UserId' using the same 'Name', the 'UserId' will come
-- from cache (fast) instead of GetUserIdFromNameAsync() (yields).
local cache = {}
function getUserIdFromName(name)
-- First, check if the cache contains 'name'
local userIdFromCache = cache[name]
if userIdFromCache then
-- if a value was stored in the cache at key 'name', then this 'userIdFromCache'
-- is the correct UserId and we can return it.
return userIdFromCache
end
-- If here, 'name' was not previously looked up and does not exist in the
-- cache. Now we need to use GetUserIdFromNameAsync() to look up the userId
local userId
local success, _ = pcall(function()
userId = Players:GetUserIdFromNameAsync(name)
end)
if success then
-- if 'success' is true, GetUserIdFromNameAsync() successfully found the
-- userId. Store this userId in the cache using 'name' as the key so we
-- never have to look this userId up in the future. Then return userId.
cache[name] = userId
return userId
end
-- If here, 'success' was false, meaning GetUserIdFromNameAsync()
-- was unable to find the 'userId' for the 'name' provided. We can warn the
-- user this happened and then return nothing, or nil.
warn("Unable to find UserId for Name:", name)
return nil
end
-- Example Data:
-- UserId: 118271 Name: "RobloxRulez"
-- UserId: 131963979 Name: "docsRule"
-- The first time a Name is used, GetUserIdFromNameAsync() will be called
local userIdOne = getUserIdFromName("RobloxRulez")
local userIdTwo = getUserIdFromName("docsRule")
-- Because "RobloxRulez" was previously used, get its UserId from the cache
local userIdOneQuick = getUserIdFromName("RobloxRulez")
print(userIdOne, userIdTwo, userIdOneQuick)
-- prints: "118271 131963979 118271"
GetUserThumbnailAsync
此功能將返回玩家虛擬人偶的圖像的內容網址,其 UserId 為他們所需的圖像大小,為 Enum.ThumbnailSize 枚圖片枚列,並為所需類型為 Enum.ThumbnailType 枚圖片枚列。它還返回是否準備好使用圖像的Boolean。
最常見的情況是,這個方法與 ImageLabel.Image 或 Decal.Texture 來顯示用戶虛擬人偶照片在體驗中。
參數
返回
包含指定參數的用戶縮略圖內容 URL 的套裝,以及描述圖像準備好使用或不用的Boolean。
範例程式碼
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local PLACEHOLDER_IMAGE = "rbxassetid://0" -- replace with placeholder image
-- fetch the thumbnail
local userId = player.UserId
local thumbType = Enum.ThumbnailType.HeadShot
local thumbSize = Enum.ThumbnailSize.Size420x420
local content, isReady = Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)
-- set the ImageLabel's content to the user thumbnail
local imageLabel = script.Parent
imageLabel.Image = (isReady and content) or PLACEHOLDER_IMAGE
imageLabel.Size = UDim2.new(0, 420, 0, 420)
UnbanAsync
解除 Players:BanAsync() 或 User Restrictions Open Cloud API 中禁止的玩家。此方法啟用和禁用 Players.BanningEnabled 屬性,您可以在 Studio 中切換。
喜歡 Players:BanAsync() ,這個方法會取入一個 config 字典,讓您可以批量取消用戶的禁令。這個設定將用戶解鎖和範圍從哪裡解鎖的。
Unbans 只會在具有相同 ApplyToUniverse 範圍的禁令上生效。例如,將 ApplyToUniverse 設為 true 並設為 1> false1> 的禁令無效化以前的禁停權。 In other words, a universe level unban will not invalid
此方法會召喚 HTTP 呼叫來自端後服務,這些服務可能會被限制並且可能會失敗。如果您使用多個 UserIds 來呼叫此 API,此方法將嘗試
因為禁止用戶帳號的風險,此方法僅能在後端遊戲服務伺服器上呼叫。 客戶端呼叫將會導致錯誤。 您可以在 Studio、團團隊創作和團隊測試中測試此 API,但禁止不適用於生產。 此方法呼叫將僅會在 Studio 測試的遊戲服務器上嘗試禁止請求,而不是在 Studio 測試的生產�
這個 API 使用 User Restrictions Open Cloud API。您將能夠使用這些 API 來管理您在第三方應用程序中的禁令。
參數
<tbody><tr><td><code>UserIds</code></td><td>陣列</td><td>允許用戶ID進入體驗(s)。最大尺寸為 <code>50</code>。</td></tr><tr><td><code>ApplyToUniverse</code></td><td>boolean</td><td>擴散此宇宙內所有位置的禁令。</td></tr></tbody>
名稱 | 類型 | 說明 |
---|
返回
範例程式碼
local Players = game:GetService("Players")
if shouldBeUnbanned(player: Player) then
local config: UnbanConfigType = {
UserIds = {player.UserId, 789},
ApplyToUniverse = false
}
local success, err = pcall(function()
return Players:UnbanAsync(config)
end)
print(success, err)
end
活動
PlayerAdded
玩家進入遊戲時,PlayerAdded 事件會發生。這用於發射玩家加入遊戲時的事件,例如載入玩家的已儲存GlobalDataStore 資料。
這可以與 Players.PlayerRemoving 事件一起使用,當玩家準備離開遊戲時會發生。例個體、實例,如果您想每次新玩家加入或離開遊戲時打印一個訊息:
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " joined the game!")
end)
Players.PlayerRemoving:Connect(function(player)
print(player.Name .. " left the game!")
end)
如果您想要追蹤玩家的角色是否從遊戲中添加或移除,例如玩家重生或死亡時,您可以使用 Player.CharacterAdded 和 Player.CharacterRemoving 功能。
注意,此事件在 播放 模式中不起作用,因為玩家在 PlayerAdded 之前建立。 要處理此情況,並且在玩家進入遊戲後,請建立一個 onPlayerAdded() 函數,您可以呼叫此功能來處理玩家的入口。
參數
加入遊戲的玩家的實例。
範例程式碼
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("A player has entered: " .. player.Name)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlayerMembershipChanged
此事件會在遊戲服務器認為玩家的會員資格已變更時發生。請注意,此時伺服器只會嘗試檢查並更新會員資格 後 於 Premium 模式關閉。因此,如果玩家在遊戲中購買 Premium ,您必須仍然提
要了解更多關於將 Premium 統合到您的體驗並且使用參與式獎勵系統進行盈利,請參閱 基於參與的獎勵系統。
也看:
- MarketplaceService:PromptPremiumPurchase() , 用於提示用戶購買高級
- MarketplaceService.PromptPremiumPurchaseFinished , 在 Premium 購買 UI 關閉時發動
參數
範例程式碼
local Players = game:GetService("Players")
local function grantPremiumBenefits(player)
-- Grant the player access to Premium-only areas, items, or anything you can imagine!
print("Giving", player, "premium benefits!")
end
local function playerAdded(player)
if player.MembershipType == Enum.MembershipType.Premium then
grantPremiumBenefits(player)
end
end
local function playerMembershipChanged(player)
print("Received event PlayerMembershipChanged. New membership = " .. tostring(player.MembershipType))
if player.MembershipType == Enum.MembershipType.Premium then
grantPremiumBenefits(player)
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerMembershipChanged:Connect(playerMembershipChanged)
PlayerRemoving
玩家移除事件會在 Player 離開遊戲之前發生。這個事件會在 ChildRemoved 在 Players 上發生,並且與
這可以與 Player.PlayerAdded 事件一起使用,當玩家加入遊戲時會發生。例個體、實例,為了每次玩家加入或離開遊戲時打印一個訊息:
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " joined the game!")
end)
Players.PlayerRemoving:Connect(function(player)
print(player.Name .. " left the game!")
end)
如果您想要追蹤玩家的角色是否從遊戲中添加或移除,例如玩家重生或死亡時,您可以使用 Player.CharacterAdded 和 Player.CharacterRemoving 功能。
參數
離開遊戲的玩家的實例。
範例程式碼
local Players = game:GetService("Players")
local function onPlayerRemoving(player)
print("A player has left: " .. player.Name)
end
Players.PlayerRemoving:Connect(onPlayerRemoving)