Players

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Dịch Vụ

Dịch vụ Players bao gồm Player các đối tượng cho khách hàng đã kết nối hiện tại với một máy chủ Roblox.Nó cũng chứa thông tin về cấu hình của một địa điểm.Nó có thể truy cập thông tin về người chơi không kết nối với máy chủ, chẳng hạn như hình xuất hiện nhân vật, bạn bè và hình ảnh hình nhỏavatar.

Tóm Tắt

Thuộc Tính

Phương Pháp

  • Chat(message : string):()
    Bảo Mật Plugin

    Làm cho người chơi địa phương trò chuyện tin nhắn được cung cấp.

  • Ghi Song Song

    Trả về Player với UserId nếu chúng ở trong trò chơi.

  • Trả về Player mà có Player.Character phù hợp với ví ví dụ / trường hợpđược cung cấp, hoặc nil nếu không thể tìm thấy.

  • GetPlayers():Instances
    Ghi Song Song

    Trả về một bảng tất cả các đối tượng hiện được kết nối Player .

  • Bảo Mật Plugin

    Xác định xem BubbleChat và ClassicChat đang được sử dụng hay không, và cho TeamChat và Chat biết phải làm gì.

  • TeamChat(message : string):()
    Bảo Mật Plugin

    Làm cho người chơi địa phương trò chuyện tin nhắn được cung cấp, chỉ có thể xem được bởi người dùng trong cùng một đội.

  • BanAsync(config : Dictionary):()
    Sinh Lợi

    Cấm người dùng khỏi trải nghiệm của bạn, với các tùy chọn để xác định thời lượng, lý do, liệu lệnh cấm áp dụng cho toàn bộ vũ trụ hay chỉ địa điểmhiện tại, và nhiều hơn nữa.Phương pháp này được bật và vô hiệu hóa bởi thuộc tính Players.BanningEnabled, mà bạn có thể bật/tắt trong Studio.

  • Trả lại một mô hình nhân vật được trang bị với mọi thứ được xác định trong HumanoidDescription đã truyền, và là R6 hoặc R15 như được xác định bởi loại rig.

  • Trả lại một bộ thiết lập nhân vật với mọi thứ được trang bị để phù hợp với avatar của người dùng được chỉ định bởi userId đã được chuyển.

  • Lấy lịch sử cấm và bỏ cấm của bất kỳ người dùng nào trong vũ trụ trải nghiệm.Phương pháp này được bật và vô hiệu hóa bởi thuộc tính Players.BanningEnabled, mà bạn có thể bật/tắt trong Studio.

  • Trả về thông tin về sự xuất hiện của nhân vật của một người dùng nhất định.

  • Sinh Lợi

    Trả về một đối tượng FriendPages chứa thông tin cho tất cả bạn bè của người chơi được cung cấp.

  • Trả lại HumanoidDescription cho một trang phục cụ thể, sẽ được đặt với các phần/màu/Animations etc của trang phục.

  • Trả về một HumanoidDescription mà nó quy định tất cả mọi thứ được trang bị cho avatar của người dùng được chỉ định bởi userId đã được chuyển.

  • Gửi một truy vấn đến trang web Roblox cho tên người dùng của một tài khoản với một địa chỉ UserId đã cho.

  • Sinh Lợi

    Gửi một truy vấn đến trang web Roblox cho userId của một tài khoản với tên tài khoảndùng đã cho.

  • GetUserThumbnailAsync(userId : number,thumbnailType : Enum.ThumbnailType,thumbnailSize : Enum.ThumbnailSize):Tuple
    Sinh Lợi

    Trả về URL nội dung của một thumbnail người chơi dựa trên kích thước và đánh máy, cũng như một boolean mô tả xem hình ảnh có sẵn sử dụng hay không.

  • UnbanAsync(config : Dictionary):()
    Sinh Lợi

    Huỷ cấm các người chơi bị cấm từ Players:BanAsync() hoặc API Mở điểm giới hạn người dùng.Phương pháp này được bật và vô hiệu hóa bởi thuộc tính Players.BanningEnabled, mà bạn có thể bật/tắt trong Studio.

Sự Kiện

Thuộc Tính

BanningEnabled

Không Sao Chép
Không Thể Viết Kịch Bản
Đọc Song Song

Bật hoặc tắt ba phương pháp Players ( BanAsync(), UnbanAsync()GetBanHistoryAsync()) tạo nên API cấm.Tính năng này không thể viết kịch bản và chỉ có thể được chỉnh sửa trong Studio.

BubbleChat

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính này cho thấy có bong bóng trò chuyện được bật hay không. Nó được đặt với phương pháp Players:SetChatStyle() sử dụng enum Enum.ChatStyle.

Khi chế độ trò chuyện này được bật, trò chơi hiển thị cuộc trò chuyện trong giao diện người dùng trò chuyện ở góc trên cùng bên trái của màn hình.

Có hai chế độ trò chuyện khác, Players.ClassicChat và một chế độ trò chuyện mà cả trò chuyện cổ điển và bong bóng trò chuyện đều được bật.

CharacterAutoLoads

Không Sao Chép
Đọc Song Song

Thuộc tính này cho thấy liệu characters có tái sinh tự động hay không. Giá trị mặc định là true.

Nếu thuộc tính này bị vô hiệu hóa (giả mạo), người chơi characters sẽ không xuất hiện cho đến khi chức năng Player:LoadCharacter() được gọi cho mỗi Player, bao gồm cả khi người chơi tham gia trải nghiệm.

Điều này có thể hữu ích trong những trải nghiệm mà người chơi có cuộc sống giới hạn, chẳng hạn như các trò chơi cạnh tranh mà người chơi không hồi sinh cho đến khi một vòng trò chơi kết thúc.

Mẫu mã

This example demonstrates one possible usage of the Players.CharacterAutoLoads property.

The example below respawns all players in the game, if dead, once every 10 seconds. This means that players who die 1 second after all players respawn must wait 9 seconds until the script loads all Player.Character again.

First, this script removes a player's character when they die and the Humanoid.Died function fires. This is done so that the respawn loop that executes every 10 seconds reloads that player when it does not find the player's character in the Workspace.

To work as expected, this example should be run within a Script.

Player Respawn Timer

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Chỉ ra liệu có bật chát cổ điển hay không. Thuộc tính này được đặt bởi phương pháp Players:SetChatStyle() sử dụng enum Enum.ChatStyle.

Khi chế độ trò chuyện này được bật, trò chơi hiển thị các cuộc trò chuyện trong bong bóng phía trên đầu của người gửi.

Có hai chế độ trò chuyện khác, Players.BubbleChat và một chế độ trò chuyện mà cả trò chuyện cổ điển và bong bóng trò chuyện đều được bật.

LocalPlayer

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính chỉ đọc này đề cập đến Player mà khách hàng đang chạy trải nghiệm.

Thuộc tính này chỉ được định nghĩa cho LocalScriptsModuleScripts yêu cầu bởi họ, vì chúng chạy trên máy khách.Đối với máy chủ, trên đó các đối tượng Script chạy mã của họ, thuộc tính này là nil .

MaxPlayers

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Tính chất này xác định số người chơi tối đa có thể ở trong một máy chủ.Thuộc tính này chỉ có thể được đặt thông qua cài đặt của một địa điểmcụ thể trên Bảng điều khiển Nhà sáng tạo hoặc thông qua Cài đặt trò chơi .

PreferredPlayers

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính này chỉ ra số lượng người chơi mà trình kết hợp của Roblox sẽ lấp đầy các máy chủ.Con số này sẽ ít hơn số người chơi tối đa ( ) được hỗ trợ bởi trải nghiệm.

RespawnTime

Đọc Song Song

Tính năng này kiểm soát thời gian, trong giây lát, cần thiết để một người chơi hồi sinh khi Players.CharacterAutoLoads là đúng. Nó mặc định là 5.0 giây.

Điều này hữu ích khi bạn muốn thay đổi thời gian tái sinh dựa trên loại trải nghiệm của bạn nhưng không muốn xử lý việc tạo ra người chơi riêng lẻ.

Mặc dù bạn có thể thiết lập thuộc tính này từ bên trong một Script , bạn có thể dễ dàng thiết lập nó trực tiếp trên đối tượng Players trong cửa sổ Explorer của Studio.

UseStrafingAnimations

Không Thể Viết Kịch Bản
Đọc Song Song

Phương Pháp

Chat

()
Bảo Mật Plugin

Chức năng này làm cho người chơi địa phương trò chuyện tin nhắn được cung cấp.Vì mục này được bảo vệ, cố gắng sử dụng nó trong Script hoặc LocalScript sẽ gây ra lỗi.

Thay vào đó, khi tạo một hệ thống trò chuyện tùy chỉnh hoặc một hệ thống cần truy cập vào trò chuyện, bạn có thể sử dụng chức năng Chat của dịch vụ Chat:Chat() thay thế.

Tham Số

message: string

Tin nhắn đã trò chuyện.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

This example demonstrates that the Players:Chat() function executes without error if using the Command Bar or a Plugin (assuming the local player can chat freely) and errors if executed in a Script.

Players: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

Ghi Song Song

Chức năng này tìm kiếm mỗi Player trong Players cho một người nào đó có Player.UserId phù hợp với UserId đã cho.Nếu người chơi như vậy không tồn tại, nó chỉ đơn giản trả về nil .Nó tương đương với chức năng sau:


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

Phương pháp này hữu ích trong việc tìm người mua sản phẩm phát triển bằng cách sử dụng MarketplaceService.ProcessReceipt, cung cấp một bảng bao gồm UserId của người mua và không phải là một tham chiếu đến chính đối tượng Player.Hầu hết các trò chơi sẽ cần một tham chiếu đến người chơi để cấp sản phẩm.

Tham Số

userId: number

The Player.UserId của người chơi được định nghĩa.

Giá Trị Mặc Định: ""

Lợi Nhuận

Mẫu mã

Players:GetPlayerByUserId

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

The following code sample:

  • Sets up the ProcessReceipt callback function to handle the purchase of two developer products for an experience.
  • Checks for and records purchases using a GlobalDataStore called PurchaseHistory.
  • Properly returns PurchaseGranted if the transaction completes successfully, or if the function detects that the purchase has already been granted using the PurchaseHistory data store.

After the receipt processing routine, it's possible that the purchase was granted but recording it as granted failed due to a data store error. This is one unavoidable scenario that leads to duplicate granting of the purchase, because processReceipt() will be called for the purchase again. You can mitigate this by keeping another in-memory record of purchases so that the same server will not grant the same purchase twice, but you'll need a session locking implementation around your data store to avoid the potential of duplicate grants across servers.

ProcessReceipt Callback

local MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
-- Data store setup for tracking purchases that were successfully processed
local purchaseHistoryStore = DataStoreService:GetDataStore("PurchaseHistory")
local productIdByName = {
fullHeal = 123123,
gold100 = 456456,
}
-- A dictionary to look up the handler function to grant a purchase corresponding to a product ID
-- These functions return true if the purchase was granted successfully
-- These functions must never yield since they're called later within an UpdateAsync() callback
local grantPurchaseHandlerByProductId = {
[productIdByName.fullHeal] = function(_receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChild("Humanoid")
-- Ensure the player has a humanoid to heal
if not humanoid then
return false
end
-- Heal the player to full Health
humanoid.Health = humanoid.MaxHealth
-- Indicate a successful grant
return true
end,
[productIdByName.gold100] = function(_receipt, player)
local leaderstats = player:FindFirstChild("leaderstats")
local goldStat = leaderstats and leaderstats:FindFirstChild("Gold")
if not goldStat then
return false
end
-- Add 100 gold to the player's gold stat
goldStat.Value += 100
-- Indicate a successful grant
return true
end,
}
-- The core ProcessReceipt callback function
-- This implementation handles most failure scenarios but does not completely mitigate cross-server data failure scenarios
local function processReceipt(receiptInfo)
local success, result = pcall(
purchaseHistoryStore.UpdateAsync,
purchaseHistoryStore,
receiptInfo.PurchaseId,
function(isPurchased)
if isPurchased then
-- This purchase was already recorded as granted, so it must have previously been handled
-- Avoid calling the grant purchase handler here to prevent granting the purchase twice
-- While the value in the data store is already true, true is returned again so that the pcall result variable is also true
-- This will later be used to return PurchaseGranted from the receipt processor
return true
end
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- Avoids granting the purchase if the player is not in the server
-- When they rejoin, this receipt processor will be called again
return nil
end
local grantPurchaseHandler = grantPurchaseHandlerByProductId[receiptInfo.ProductId]
if not grantPurchaseHandler then
-- If there's no handler defined for this product ID, the purchase cannot be processed
-- This will never happen as long as a handler is set for every product ID sold in the experience
warn(`No purchase handler defined for product ID '{receiptInfo.ProductId}'`)
return nil
end
local handlerSucceeded, handlerResult = pcall(grantPurchaseHandler, receiptInfo, player)
if not handlerSucceeded then
local errorMessage = handlerResult
warn(
`Grant purchase handler errored while processing purchase from '{player.Name}' of product ID '{receiptInfo.ProductId}': {errorMessage}`
)
return nil
end
local didHandlerGrantPurchase = handlerResult == true
if not didHandlerGrantPurchase then
-- The handler did not grant the purchase, so record it as not granted
return nil
end
-- The purchase is now granted to the player, so record it as granted
-- This will later be used to return PurchaseGranted from the receipt processor
return true
end
)
if not success then
local errorMessage = result
warn(`Failed to process receipt due to data store error: {errorMessage}`)
return Enum.ProductPurchaseDecision.NotProcessedYet
end
local didGrantPurchase = result == true
return if didGrantPurchase
then Enum.ProductPurchaseDecision.PurchaseGranted
else Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Set the callback; this can only be done once by one script on the server
MarketplaceService.ProcessReceipt = processReceipt

GetPlayerFromCharacter

Chức năng này trả về Player có liên quan đến Player.Character được cung cấp, hoặc nil nếu không thể tìm thấy.Nó tương đương với chức năng sau:


local function getPlayerFromCharacter(character)
for _, player in game:GetService("Players"):GetPlayers() do
if player.Character == character then
return player
end
end
end

Phương pháp này thường được sử dụng khi một số sự kiện trong nhân vật của người chơi bắt lửa (như Class.Humanoid``Class.Humanoid.Died|dying của họ).Một sự kiện như vậy có thể không trực tiếp tham chiếu đến đối tượng Người chơi, nhưng phương pháp này cung cấp quyền truy cập dễ dàng.Ngược lại với chức năng này có thể được mô tả là nhận Nhân vật của một Người chơi.Để làm điều này, chỉ cần truy cập tính chất tính cách.

Tham Số

character: Model

Một ví dụ nhân vật mà bạn muốn lấy người chơi từ.

Giá Trị Mặc Định: ""

Lợi Nhuận

Mẫu mã

Players:GetPlayerFromCharacter

Players:GetPlayerFromCharacter

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

Instances
Ghi Song Song

Phương pháp này trả về một bảng tất cả các đối tượng được kết nối hiện tại Player đã kết nối.Nó hoạt động giống như cách Instance:GetChildren() sẽ ngoại trừ việc nó chỉ trả về Player đối tượng được tìm thấy dưới Players .Khi được sử dụng với một vòng lặp for, nó hữu ích để lặp lại tất cả các người chơi trong một trò chơi.


local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
print(player.Name)
end

Các kịch bản kết nối với Players.PlayerAdded thường cố gắng xử lý mọi Người chơi kết nối vào trò chơi.Phương pháp này hữu ích để lặp lại các người chơi đã kết nối trước đó mà sẽ không bắn PlayerAdded .Sử dụng phương pháp này đảm bảo không có người chơi nào bị lỡ!


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)

Lợi Nhuận

Instances

Một bảng chứa tất cả các người chơi trong máy chủ.

Mẫu mã

This code sample listens for players spawning and gives them Sparkles in their head. It does this by defining two functions, onPlayerSpawned and onPlayerAdded.

Give Sparkles to Everyone

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

()
Bảo Mật Plugin

Chức năng này xác định xem BubbleChat và ClassicChat đang được sử dụng hay không, và cho TeamChat và Chat biết phải làm gì bằng cách sử dụng enum Enum.ChatStyle.Vì mục này được bảo vệ, cố gắng sử dụng nó trong Script hoặc LocalScript sẽ gây ra lỗi.

Chức năng này được sử dụng nội bộ khi chế độ trò chuyện được đặt bởi trò chơi.

Tham Số

Kiểu trò chuyện được cài đặtđã được xác định.

Giá Trị Mặc Định: "Classic"

Lợi Nhuận

()

Mẫu mã

This example demonstrates that the Players:SetChatStyle() function executes without error if using the Command Bar or a Plugin and errors if executed in a LocalScript.

When executed in the Command Bar, this code sets the chat style to Classic using the Enum.ChatStyle enum.

Setting a Player's Chat Style

-- 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

()
Bảo Mật Plugin

Chức năng này làm cho cuộc trò chuyện Players.LocalPlayer của được gửi tin nhắn được cho, chỉ có thể xem bởi người dùng trong cùng một đội.Vì mục này được bảo vệ, cố gắng sử dụng nó trong Script hoặc LocalScript sẽ gây ra lỗi.

Chức năng này được sử dụng nội bộ khi Players.LocalPlayer gửi tin nhắn cho đội của họ.

Tham Số

message: string

Tin nhắn đang trò chuyện.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

This example demonstrates that the Players:TeamChat() function executes without error if using the Command Bar or a Plugin and errors if executed in a LocalScript.

When executed in the Command Bar, the function sends the specified message to all players on the same Team as the Players.LocalPlayer.

Sending Team Chat

-- 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

()
Sinh Lợi

Phương thức Players:BanAsync() cho phép bạn dễ dàng cấm các người dùng vi phạm các hướng dẫn kinh nghiệm của bạn.Bạn có thể xác định thời gian cấm, bật khả năng cấm lan truyền sang các tài khoản thay thế nghi ngờ và cung cấp một thông điệp cho người dùng bị cấm theo các Hướng dẫn Sử dụng .Bạn cũng nên đăng các quy tắc trải nghiệm của mình ở đâu đó dễ tiếp cận với tất cả người dùng và cung cấp một cách để họ khiếu kháng cáo.Phương pháp này được bật và vô hiệu hóa bởi thuộc tính Players.BanningEnabled, mà bạn có thể bật/tắt trong Studio.

Cấm và Gửi tin nhắn

Người dùng bị cấm sẽ bị đuổi ngay lập tức và không thể tham gia lại trải nghiệm của bạn.Họ sẽ được trình bày với một thông báo lỗi hiển thị thời gian còn lại trên lệnh cấm của họ và DisplayReason của bạn.Các hệ thống backend của Roblox sẽ đuổi các người chơi trên tất cả các máy chủ khỏi địa điểm(các nơi) mà bạn xác định.DisplayReason có thể có chiều dài tối đa 400 ký tự và phải tuân theo bộ lọc văn bản.Để biết thêm thông tin về văn bản modal chấp nhận, xem cấm gửi tin nhắn .

Nơi và Vũ trụ

Mặc định, cấm mở rộng đến bất kỳ nơi nào trong vũ trụ đó.Để giới hạn lệnh cấm chỉ đến nơi mà API này được gọi, hãy cấu hình ApplyToUniverse đến false.Tuy nhiên, nếu một người dùng bị cấm ở nơi bắt đầu của vũ trụ, nó có hiệu quả dẫn đến việc người dùng bị loại bỏ khỏi toàn bộ vũ trụ, bất kể liệu có ban toàn cầu hay không.

Tài khoản thay thế

Người dùng thường chơi dưới nhiều tài khoản khác nhau, được gọi là tài khoản thay thế hoặc tài khoản thay thế, đôi khi được sử dụng để vượt qua lệnh cấm tài khoản.Để giúp bạn ngăn chặn người dùng bị cấm, hành vi mặc định của API này sẽ lan truyền tất cả các lệnh cấm từ tài khoản nguồn bạn đã cấm đến bất kỳ tài khoản alt nghi ngờ nào.Bạn có thể tắt sự lan truyền cấm đối với tài khoản thay thế bằng cách cấu hình ExcludeAltAccounts đến true .

Thời lượng cấm

Không phải tất cả các vi phạm đều giống nhau, vì vậy không phải tất cả các lệnh cấm phải có cùng chiều dài.API này cho phép bạn tùy chỉnh thời lượng của lệnh cấm, trong vài giây, với trường Duration.Để xác định một lệnh cấm vĩnh viễn, hãy đặt trường thành -1 .Bạn cũng có thể muốn tự động cấu hình thời gian cấm dựa trên lịch sử cấm của người dùng, mà bạn có thể truy vấn để sử dụng Players:GetBanHistoryAsync() .Ví dụ, bạn có thể muốn xem xét số lượng lệnh cấm, thời lượng của lệnh cấm trước đó hoặc xây dựng logic từ các ghi chú bạn lưu dưới PrivateReason mà có thể lên tới 1000 ký tự và không bị lọc văn bản.PrivateReason ghi chú không bao giờ được chia sẻ với khách hàng và có thể được coi là an toàn khỏi kẻ tấn công.

Lỗi và giảm tốc

Phương pháp này kích hoạt cuộc gọi HTTP đến các dịch vụ đằng sau bị giới hạn và có thể thất bại.Nếu bạn đang gọi API này với nhiều hơn một UserId, phương pháp này sẽ cố gắng thực hiện cuộc gọi HTTP cho mỗi ID.Sau đó, nó sẽ tổng hợp tất cả các thông điệp lỗi và kết hợp chúng thành một danh sách tách bởi dấu phân cách.Ví dụ, nếu phương pháp này được gọi cho năm người dùng và yêu cầu cho những người có UserIds 2 và 4 thất bại, thông điệp lỗi sau xuất hiện:

HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception

Tin nhắn sẽ luôn bao gồm failure for UserId {} nếu nó là một lỗi HTTP.

Yêu cầu bên khách

Vì những rủi ro liên quan đến việc cấm người dùng, phương pháp này chỉ có thể được gọi trên máy chủ trải nghiệm backend (các cuộc gọi bên khách sẽ dẫn đến một lỗi).Bạn có thể kiểm tra API này trong Studio, trong quá trình hợp tác sản phẩm, hoặc trong kiểm tra đội, nhưng các lệnh cấm sẽ không áp dụng cho sản xuất.

API này sử dụng API Giới hạn người dùng Mở đám mây. Bạn sẽ có thể sử dụng các API này để quản lý các lệnh cấm của bạn trong các ứng dụng bên thứ ba.

Tham Số

config: Dictionary
  • UserIds (bắt buộc; mảng) — Mảng của UserIds của người chơi bị cấm. Kích thước tối đa là 50 .

  • ApplyToUniverse (tùy chọn; boolean) — Liệu cấm lan truyền đến tất cả các nơi trong vũ trụ trải nghiệm. Mặc định là true .

  • Duration (bắt buộc; số nguyên) — Thời lượng của lệnh cấm, trong giây.Cấm vĩnh viễn nên có giá trị là -1 .0 và tất cả các giá trị tiêu cực khác không hợp lệ.

  • DisplayReason (bắt buộc; chuỗi) — Tin nhắn sẽ được hiển thị cho người dùng khi họ cố gắng và không thể tham gia vào một trải nghiệm.Độ dài chuỗi tối đa là 400 .

  • PrivateReason (bắt buộc; chuỗi) — Giao tiếp nội bộ sẽ được trả về khi truy vấn lịch sử cấm của người dùng. Chiều dài chuỗi tối đa là 1000 .

  • ExcludeAltAccounts (tùy chọn; boolean) — Khi true , Roblox sẽ không cố gắng cấm các tài khoản alt. Mặc định là false .

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

The following example bans a user with a duration calculated from their ban history, scoped to the entire universe and all of the user's alternate accounts.

Banning Users

local Players = game:GetService("Players")
if shouldBeBanned(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

Sinh Lợi

Trả lại một mô hình nhân vật được trang bị với mọi thứ được xác định trong HumanoidDescription đã truyền, và là R6 hoặc R15 như được xác định bởi loại rig.

Tham Số

description: HumanoidDescription

Xác định sự xuất hiện của nhân vật trả về.

Giá Trị Mặc Định: ""

Xác định xem nhân vật trả về sẽ là R6 hay R15.

Giá Trị Mặc Định: ""
assetTypeVerification: Enum.AssetTypeVerification

Xác minh loại tài sản xác định xem chức năng này có tải mô hình hay không (Bạn nên đặt nó thành Luôn trừ khi bạn muốn tải tài sản không có trong danh mục).

Giá Trị Mặc Định: "Default"

Lợi Nhuận

Mô hình nhân vật Humanoid.

Mẫu mã

This code sample creates a Humanoid Model from the passed in HumanoidDescription and parents the Model to the Workspace.

Create Humanoid Model From Description

game.Players:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R15).Parent =
game.Workspace

CreateHumanoidModelFromUserId

Sinh Lợi

Trả lại một bộ thiết lập nhân vật với mọi thứ được trang bị để phù hợp với avatar của người dùng được chỉ định bởi userId đã được chuyển.Điều này bao gồm việc liệu nhân vật đó hiện đang là R6 hay R15.

Tham Số

userId: number

ID người dùng Roblox. (UserId là số trong hồ sơ của người dùng ví dụ www.roblox.com/users/1/profile).

Giá Trị Mặc Định: ""

Lợi Nhuận

Mô hình nhân vật Humanoid.

Mẫu mã

This code sample creates a Humanoid Model to match the avatar of the passed in User ID, and parents the Model to the Workspace.

Create Humanoid Model From A User ID

game.Players:CreateHumanoidModelFromUserId(1).Parent = game.Workspace

GetBanHistoryAsync

Sinh Lợi

Lấy lịch sử cấm và bỏ cấm của bất kỳ người dùng nào trong vũ trụ trải nghiệm.Phương pháp này trả về một BanHistoryPages instance thừa kế từ Pages.Phương pháp này được bật và vô hiệu hóa bởi thuộc tính Players.BanningEnabled, mà bạn có thể bật/tắt trong Studio.

Cuộc gọi chức năng này chỉ thành công trên máy chủ trò chơi sản xuất và không trên thiết bị khách hàng hoặc trong Studio.

API này sử dụng API Giới hạn người dùng Mở đám mây. Bạn sẽ có thể sử dụng các API này để quản lý các lệnh cấm của bạn trong các ứng dụng bên thứ ba.

Tham Số

userId: number
Giá Trị Mặc Định: ""

Lợi Nhuận

Xem BanHistoryPages để có tham chiếu trả lại.

GetCharacterAppearanceInfoAsync

Sinh Lợi

Chức năng này trả về thông tin về avatar của người chơi (bỏ qua thiết trang bị) trên trang web Roblox trong dạng một từ điển.Nó không nên nhầm lẫn với GetCharacterAppearanceAsync, thực sự tải các tài sản được mô tả bởi phương pháp này.Bạn có thể sử dụng InsertService:LoadAsset() để tải các tài sản được sử dụng trong avatar của người chơi.Cấu trúc của từ điển trả về như sau:


<th>Loại</th>
<th>Mô tả</th>
</tr>
</thead>
<tr>
<td><code>tài sản</code></td>
<td>bảng (xem dưới)</td>
<td>Mô tả các tài sản được trang bị (mũ, bộ phận cơ thể, v.v.)</td>
</tr>
<tr>
<td><code>màu thân</code></td>
<td>bảng (xem dưới)</td>
<td>Mô tả các giá trị BrickColor cho mỗi chi</td>
</tr>
<tr>
<td><code>màu thân3s</code></td>
<td>bảng (xem dưới)</td>
<td>Mô tả ví dụ Color3 cho mỗi chi có thể không phù hợp hoàn toàn với bodyColors</td>
</tr>
<tr>
<td><code>áp dụng quần mặc định</code></td>
<td>bool</td>
<td>Mô tả xem liệu quần mặc định có được áp dụng hay không</td>
</tr>
<tr>
<td><code>Áo sơ mi mặc mặc định</code></td>
<td>bool</td>
<td>Mô tả xem liệu áo sơ mi mặc định có được áp dụng hay không</td>
</tr>
<tr>
<td><code>biểu cảm</code></td>
<td>bảng (xem dưới)</td>
<td>Mô tả các hoạt hình biểu cảm được trang bị</td>
</tr>
<tr>
<td><code>loại avatar người chơi</code></td>
<td>chuỗi</td>
<td>Hoặc "R15" hoặc "R6"</td>
</tr>
<tr>
<td><code>thước đo</code></td>
<td>bảng (xem dưới)</td>
<td>Mô tả các yếu tố thước đo cơ thể khác nhau</td>
</tr>
Tên
Bảng phụ tài sản

Bảng assets bao gồm một mảng các bảng chứa các chìa khóa sau đây mô tả các tài sản hiện được trang bị bởi người chơi:


<th>Loại</th>
<th>Mô tả</th>
</tr>
</thead>
<tr>
<td><code>id</code></td>
<td>số</td>
<td>ID tài sản của tài sản được trang bị</td>
</tr>
<tr>
<td><code>loại tài sản</code></td>
<td>bảng</td>
<td>Một bảng với các trường <code>tên</code> và <code>id</code>, mỗi trường mô tả loại tài sản được trang bị ("Mũ", "Mặt", v.v.)</td>
</tr>
<tr>
<td><code>tên</code></td>
<td>chuỗi</td>
<td>Tên của tài sản được trang bị</td>
</tr>
Tên
Bảng phụ cân

Bảng scales có các chìa khóa sau, mỗi chìa khóa tương ứng với một tính năng phóng to Humanoid : bodyType , head , height , proportion , depth , width .

Bảng màu cơ thể Sub-Table

Bảng bodyColors có các chìa khóa sau, mỗi chìa khóa tương ứng với một số ID BrickColor có thể được sử dụng với BrickColor.new(id) : leftArmColorId , torsoColorId , rightArmColorId , headColorId , leftLegColorId , rightLegColorId .

Tham Số

userId: number

ID * của người chơi được chỉ định.

Giá Trị Mặc Định: ""

Lợi Nhuận

Một từ điển chứa thông tin về sự xuất hiện của nhân vật của một người dùng nhất định.

Mẫu mã

Sometimes it is best to see an example of the returned dictionary structure in pure Lua. Here is one such example of a player whose avatar uses a package and wears several hats. Can you guess who it is?

Example Return Character Appearance Dictionary

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

Sinh Lợi

Chức năng GetFriends Players trả về một đối tượng FriendPages chứa thông tin cho tất cả bạn bè của người dùng được cung cấp.Các vật phẩm trong đối tượng FriendPages là bảng có các trường sau:


<th>Loại</th>
<th>Mô tả</th>
</tr>
</thead>
<tr>
<td>Id</td>
<td>những int64</td>
<td>Id người bạn bè</td>
</tr>
<tr>
<td>Tên người dùng</td>
<td>chuỗi</td>
<td>Tên người dùng của bạn bè</td>
</tr>
<tr>
<td>Tên hiển thị</td>
<td>chuỗi</td>
<td>Các tên <code>Class.Player.DisplayName|display name</code> của bạn bè.</td>
</tr>
Tên

Xem các ví dụ mã để có một cách dễ dàng để lặp lại tất cả bạn bè của một người chơi.

Tham Số

userId: number

ID người dùng của người chơi được định nghĩa.

Giá Trị Mặc Định: ""

Lợi Nhuận

Mẫu mã

This code sample loads the Player.UserId of the player whose username is provided at the top of the script by using Players:GetUserIdFromNameAsync(). Then, it gets a FriendPages object by calling Players:GetFriendsAsync() and iterates over each entry using the iterPageItems function. The username of each friend is stored in a table, then printed at the end.

Print Roblox Friends

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

Sinh Lợi

Trả về HumanoidDescription cho một ID trang phục cụ thể, sẽ được thiết lập với các phần/màu/Animations etc của trang phục.Một bộ trang phục có thể được tạo bởi người dùng, hoặc nó có thể là bộ trang phục cho một gói được tạo bởi Roblox.

Tham Số

outfitId: number

ID của trang phục mà HumanoidDescription được tìm kiếm.

Giá Trị Mặc Định: ""

Lợi Nhuận

Mô tả Humanoid được khởi tạo với thông số cho outfitId đã được truyền.

Mẫu mã

Shows how to get the HumanoidDescription for bundle 799 (Fishman).

Get HumanoidDescription From Outfit 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

Sinh Lợi

Trả về một HumanoidDescription mà nó quy định tất cả mọi thứ được trang bị cho avatar của người dùng được chỉ định bởi userId đã được chuyển.Cũng bao gồm thước đo và màu cơ thể.

Tham Số

userId: number

ID người dùng Roblox. (UserId là số trong hồ sơ của người dùng ví dụ www.roblox.com/users/1/profile).

Giá Trị Mặc Định: ""

Lợi Nhuận

Mô tả Humanoid được khởi tạo với thông số avatar của người dùng đã được truyền.

Mẫu mã

This code sample shows how to use GetHumanoidDescriptionFromUserId() to create a Humanoid Model.

Get HumanoidDescription From User ID

game.Players:CreateHumanoidModelFromDescription(
game.Players:GetHumanoidDescriptionFromUserId(1),
Enum.HumanoidRigType.R15
).Parent =
game.Workspace

GetNameFromUserIdAsync

Sinh Lợi

Chức năng GetNameFromUserIdAsync Players sẽ gửi một truy vấn đến trang web Roblox yêu cầu tên người dùng của tài khoản với tên được cung cấp UserId .

Phương pháp này xảy ra lỗi nếu không có tài khoản nào tồn tại với UserId được cung cấp.Nếu bạn không chắc chắn tài khoản như vậy tồn tại, nó được khuyến khích bọc các cuộc gọi đến chức năng này bằng pcall() .Ngoài ra, bạn có thể lưu trữ kết quả thủ công để thực hiện các cuộc gọi tương lai với cùng một UserId nhanh chóng.Xem các mẫu mã code để tìm hiểu thêm.

Tham Số

userId: number

The Player.UserId của người chơi được định nghĩa.

Giá Trị Mặc Định: ""

Lợi Nhuận

Tên của một người dùng với Player.UserId được định nghĩa.

Mẫu mã

This code sample demonstrates using the Players:GetNameFromUserIdAsync() method to get a user's Player.Name from their Player.UserId.

Get Name from 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"

This code sample demonstrates using the Players:GetNameFromUserIdAsync() method to get a user's Player.Name from their Player.UserId. Because GetNameFromUserIdAsync() yields, you can avoid calling it for the same Name using a table to store each UserId:Name pair found, called a cache. pcall() is used to catch the failure in case the Name doesn't exist.

Get Name from UserId using a cache

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

Sinh Lợi

Chức năng này sẽ gửi một truy vấn đến trang web Roblox yêu cầu những gì Player.UserId là tài khoản với tên Player được cho.

Phương pháp này xảy ra lỗi nếu không có tài khoản nào với tên tên tài khoảnđược cung cấp.Nếu bạn không chắc chắn tài khoản như vậy tồn tại, nó được khuyến khích bọc các cuộc gọi đến chức năng này bằng pcall() .Ngoài ra, bạn có thể lưu trữ kết quả thủ công để nhanh chóng thực hiện các cuộc gọi trong tương lai với cùng tên tên tài khoản.Xem các mẫu mã code để tìm hiểu thêm.

Tham Số

userName: string

Tên người dùng của người chơi được định nghĩa.

Giá Trị Mặc Định: ""

Lợi Nhuận

The Player.UserId của một người dùng có tên được định nghĩa.

Mẫu mã

This code sample demonstrates using the Players:GetUserIdFromNameAsync() method to get a user's Player.UserId from their Player.Name.

Get UserId from Name

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"

This code sample demonstrates using the Players:GetUserIdFromNameAsync() method to get a user's Player.UserId from their Player.Name. Because GetUserIdFromNameAsync() yields, you can avoid calling it for the same UserId using a table to store each Name:UserId pair found, called a cache. pcall() is used to catch the failure in case the UserId doesn't exist.

Get UserId from Name using a cache

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

Sinh Lợi

Chức năng này trả về URL nội dung của một hình ảnh của avatar người chơi cho họ UserId , kích thước hình ảnh mong muốn như một Enum.ThumbnailSize enum, và loại mong muốn như một Enum.ThumbnailType enum.Nó cũng trả về một boolean mô tả xem hình ảnh có sẵn sử dụng hay không.

Phổ biến nhất, phương pháp này được sử dụng với ImageLabel.Image hoặc Decal.Texture để hiển thị hình ảnh avatar người dùng trong một trải nghiệm.

Tham Số

userId: number

The Player.UserId của người chơi được định nghĩa.

Giá Trị Mặc Định: ""
thumbnailType: Enum.ThumbnailType

Một Enum.ThumbnailType mô tả loại hình nhỏ.

Giá Trị Mặc Định: ""
thumbnailSize: Enum.ThumbnailSize

Một Enum.ThumbnailSize đặc trưng kích thước của hình hình nhỏnhỏ.

Giá Trị Mặc Định: ""

Lợi Nhuận

Một tuple chứa URL nội dung của hình ảnh thumbnail của người dùng dựa trên các tham số được chỉ định, và một bool mô tả xem hình ảnh có sẵn để sử dụng hay không.

Mẫu mã

This code sample displays the current player's thumbnail in a parent ImageLabel by using Players:GetUserThumbnailAsync() and setting the Image() property as well as its Size().

Display Player Thumbnail

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

()
Sinh Lợi

Huỷ cấm người chơi bị cấm từ Players:BanAsync() hoặc Giới hạn người dùng mở API đám mây .Phương pháp này được bật và vô hiệu hóa bởi thuộc tính Players.BanningEnabled, mà bạn có thể bật/tắt trong Studio.

Giống như Players:BanAsync() , phương pháp này nhận một từ điển config sẽ cho phép bạn loại bỏ hàng loạt người dùng bị cấm.Điều này cấu hình các người dùng không bị cấm và phạm vi mà họ bị cấm khỏi.

Huỷ bỏ chỉ có hiệu lực với các lệnh cấm có cùng phạm vi ApplyToUniverse .Ví dụ, một lệnh cấm với ApplyToUniverse được đặt thành true sẽ không làm vô hiệu hóa lệnh cấm trước đó với ApplyToUniverse được đặt thành false .Nói cách khác, một lệnh cấm cấp vũ trụ sẽ không làm vô hiệu hóa lệnh cấm cấp nơi.Ngược lại cũng đúng.

Phương pháp này kích hoạt cuộc gọi HTTP đến các dịch vụ đằng sau, bị giới hạn và có thể thất bại.Nếu bạn đang gọi API này với nhiều UserIds, phương pháp này sẽ cố gắng thực hiện cuộc gọi HTTP này cho mỗi UserId.Sau đó, nó sẽ tổng hợp tất cả các thông điệp lỗi và kết hợp chúng thành một danh sách tách bởi dấu phân cách.Ví dụ, nếu phương pháp này được gọi cho năm UserIds : {1, 2, 3, 4, 5} và yêu cầu cho người dùng 2 và 4 thất bại thì tin nhắn lỗi sau đây xuất hiện: HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception. Tin nhắn sẽ luôn bao gồm failure for UserId {} nếu nó là một lỗi HTTP.Nó là hành vi không xác định nếu bạn truyền cả UserIds hợp lệ và không hợp lệ, tức làa UserId không phải là một số dương, vì một số yêu cầu mạng có thể thành công trước khi tất cả các đầu vào được xác minh.

Vì những rủi ro liên quan đến việc cấm người dùng, phương pháp này chỉ có thể được gọi trên máy chủ trò chơi nền sau.Các cuộc gọi bên khách sẽ dẫn đến một lỗi.Bạn có thể kiểm tra API này trong Studio, Tạo nhóm và Thử nghiệm nhóm, nhưng các lệnh cấm sẽ không áp dụng cho sản xuất.Cuộc gọi chức năng này chỉ sẽ cố gắng yêu cầu cấm trên các máy chủ trò chơi sản xuất và không phải trong thử nghiệm Studio.Tuy nhiên, tất cả các bước xác minh nhập vẫn sẽ hoạt động trong Studio.

API này sử dụng API Giới hạn người dùng Mở đám mây. Bạn sẽ có thể sử dụng các API này để quản lý các lệnh cấm của bạn trong các ứng dụng bên thứ ba.

Tham Số

config: Dictionary

<th>Loại</th>
<th>Mô tả</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ID người dùng</code></td>
<td>mảng</td>
<td>ID người dùng được ép buộc vào trải nghiệm(s). Kích thước tối đa là <code>50</code> .</td>
</tr>
<tr>
<td><code>Áp dụng cho Vũ trụ</code></td>
<td>boolean như vậy</td>
<td>Phổ biến việc nới lỏng cấm đến tất cả các nơi trong vũ trụ này.</td>
</tr>
</tbody>
Tên
Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

The following un-bans a user, as well as another unrelated account with UserId 789.

Unbanning Users

local Players = game:GetService("Players")
if shouldBeUnbanned(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

Sự Kiện

PlayerAdded

Sự kiện này xảy ra khi một người chơi vào trò chơi.Nó được sử dụng để kích hoạt một sự kiện khi một người chơi tham gia vào một trò chơi, chẳng hạn như tải dữ liệu lưu trữ của người chơi GlobalDataStore.

Điều này có thể được sử dụng cùng với sự kiện Players.PlayerRemoving, bắt lửa khi một người chơi sắp rời khỏi trò chơi.Ví ví dụ / trường hợp, nếu bạn muốn in một tin nhắn mỗi khi một người chơi mới tham gia hoặc rời khỏi trò chơi:


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)

Nếu bạn muốn theo dõi khi nào nhân vật của một người chơi được thêm hoặc xóa khỏi trò chơi, chẳng hạn như khi một người chơi hồi sinh hoặc chết, bạn có thể sử dụng các chức năng Player.CharacterAddedPlayer.CharacterRemoving.

Lưu ý rằng sự kiện này không hoạt động như mong đợi trong chế độ Chơi vì người chơi được tạo trước khi các kịch bản chạy kết nối với PlayerAdded .Để xử lý trường hợp này, cũng như các trường hợp mà kịch bản được thêm vào trò chơi sau khi một người chơi nhập, tạo một chức năng onPlayerAdded() để bạn có thể gọi để xử lý lối vào của một người chơi.

Tham Số

player: Player

Một ví dụ về người chơi đã tham gia trò chơi.


Mẫu mã

This example will print "A player has entered: " followed by the name of the player that enters/joins a game every time a player joins.

Players.PlayerAdded

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("A player has entered: " .. player.Name)
end
Players.PlayerAdded:Connect(onPlayerAdded)

PlayerMembershipChanged

Sự kiện này xảy ra khi máy chủ trò chơi nhận thấy rằng thành viên của một người chơi đã thay đổi.Tuy nhiên, hãy lưu ý rằng máy chủ chỉ sẽ cố gắng kiểm tra và cập nhật thành viên sau khi tab Premium đã đóng.Do đó, để tính toán các trường hợp mà người dùng mua Premium bên ngoài của trò chơi trong khi chơi, bạn vẫn phải yêu cầu họ mua Premium; sau đó, sẽ hiển thị một thông báo cho họ biết họ đã được nâng cấp và, một khi họ đóng mô-đun, máy chủ trò chơi sẽ cập nhật thành viên của họ và kích hoạt sự kiện này.

Để tìm hiểu thêm về và tích hợp Premium vào trải nghiệm của bạn và kiếm tiền bằng cách sử dụng hệ thống thanh toán dựa trên sự tham gia, hãy xem Thanh toán dựa trên sự tham gia.

Xem thêm:

Tham Số

player: Player

Mẫu mã

The function in the code sample runs after the game server confirms a player's membership has changed. It demonstrates how you can grant players access to Premium benefits (or revoke them) when their membership status changes.

Handling Premium Membership Changes

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

Sự kiện Loại bỏ người chơi xảy ra ngay trước khi Player rời khỏi trò chơi.Sự kiện này bắt lửa trước khi ChildRemoved làm trên Players , và hành xử tương tự một chút với Instance.DescendantRemoving .Vì nó bắt lửa trước khi thực sự xóa một Player , sự kiện này hữu ích để lưu dữ liệu người chơi bằng cách sử dụng một GlobalDataStore .

Điều này có thể được sử dụng cùng với sự kiện Player.PlayerAdded, bắt lửa khi một người chơi tham gia trò chơi.Ví ví dụ / trường hợp, để in một tin nhắn mỗi khi một người chơi mới tham gia hoặc rời khỏi trò chơi:


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)

Nếu bạn muốn theo dõi khi nào nhân vật của một người chơi được thêm hoặc xóa khỏi trò chơi, chẳng hạn như khi một người chơi hồi sinh hoặc chết, bạn có thể sử dụng các chức năng Player.CharacterAddedPlayer.CharacterRemoving.

Tham Số

player: Player

Một ví dụ về người chơi đang rời khỏi trò chơi.


Mẫu mã

This code will print "A player has left: ", followed by the player's name, every time a player leaves:

Players.PlayerRemoving

local Players = game:GetService("Players")
local function onPlayerRemoving(player)
print("A player has left: " .. player.Name)
end
Players.PlayerRemoving:Connect(onPlayerRemoving)

UserSubscriptionStatusChanged

Sự kiện này xảy ra khi máy chủ trò chơi nhận thấy rằng tình trạng của người dùng đối với một kết nối đăng ký nhất định đã thay đổi.Lưu ý rằng máy chủ chỉ cố gắng kiểm tra và cập nhật tình trạng sau khi màn hình Mua đăng ký đã đóng.Để xác định các trường hợp mà người dùng mua gói đăng ký bên ngoài trò chơi trong khi chơi, bạn vẫn phải yêu cầu họ mua gói đăng ký; thông báo hiển thị một thông điệp cho người dùng biết họ đã đăng ký, và sau khi họ đóng mô-đun, máy chủ trò chơi cập nhật tình trạng đăng ký của họ và kích hoạt sự kiện này.

Lưu ý rằng chỉ các kịch bản máy chủ nhận được sự kiện này.

Tham Số

user: Player

Người dùng có tình trạng đăng ký đã thay đổi.

subscriptionId: string

ID của gói đăng ký với sự thay đổi trạng thái.