Players

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Usługa

Usługa Players zawiera Player obiekty dla obecnie połączonych klientów z serwerem Roblox. Ponadto zawiera informacje o konfiguracji miejsce, takie jak widoki postaci, przyjaciele i miniaturki awatara. Może również uzyskać informacje o graczach niepołączonych z serwerem, takich jak widoki postaci, przyjaciele i miniaturki awatara.

Podsumowanie

Właściwości

  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy

    Włącza lub wyłącza trzy metody Players ( BanAsync() , UnbanAsync() i 1> Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync()1> ) które stanowią API banu. Ta właściwość jest nieobsług

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Wskazuje, czy lub nie jest włączony czat bąbelkowy. Jest ustawiony metodą Players:SetChatStyle().

  • Bez replikacji
    Odczyt równoległy

    Wskazuje, czy Class.Character|Characters zostanie automatycznie odrodzony.

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Wskazuje, czy klasyczny czat jest włączony lub nie; ustawiony przez metodę Players:SetChatStyle() .

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Class.Player, dla którego LocalScript biec.

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Maksymalna liczba graczy, którzy mogą być na serwerze.

  • Tylko do odczytu
    Bez replikacji
    Odczyt równoległy

    Preferowana liczba graczy dla serwera.

  • Odczyt równoległy

    Kontroluje czas odnowienia postaci gracza.

  • Brak możliwości dodawania do skryptu
    Odczyt równoległy

Metody

Zdarzenia

Właściwości

BanningEnabled

Bez replikacji
Brak możliwości dodawania do skryptu
Odczyt równoległy

Włącza lub wyłącza trzy metody Players ( BanAsync() , UnbanAsync() i 1> Class.Players:GetBanHistoryAsync()|GetBanHistoryAsync()1> ) które stanowią API banu. Ta właściwość jest nieobsług

BubbleChat

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Właściwość BubbleChat wskazuje, czy czat bąbelkowy jest włączony lub nie. Jest ustawiona z metodą Players:SetChatStyle() używającą zmiany Enum.ChatStyle.

Gdy ten tryb czatu jest włączony, gra wyświetla czaty w interfejsie użytkownika czatu na górnym lewym kącie ekranu.

Są dwa inne tryby czatu, Players.ClassicChat i tryb czatu, w którym zarówno czat klasyczny, jak i czat bąbelkowy są włączone.

CharacterAutoLoads

Bez replikacji
Odczyt równoległy

Właściwość CharacterAutoLoads wskazuje, czy Class.Character|Characters zostaną automatycznie odtworzone. Domyślną wartością jest prawdziwy.

Jeśli właściwość ta jest wyłączona ( fałszywy), gracz Class.Character|Characters nie będzie się pojawiać, dopóki funkcja Player:LoadCharacter() nie zostanie wywołana dla każdego Player, w tym gdy gracze dołączają do doświadczenia.

Może to być przydatne w przypadkach, gdy gracze mają życie końcowe, takich jak gry kompetatywne, w których gracze nie respawnują do końca rundy, dopóki nie zakończy się runda.

Przykłady kodu

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

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Wskazuje, czy jest włączony lub nie klasyczny czat. Ta właściwość jest ustawiana przez metodę Players:SetChatStyle() używającą wskaźnika Enum.ChatStyle.

Gdy ten tryb czatu jest włączony, gra wyświetla czaty w pęcherzu nad głową nadawcy.

Są dwa inne tryby czatu, Players.BubbleChat i tryb czatu, w którym obie klasyczna i czat bąbel są włączone.

LocalPlayer

Tylko do odczytu
Bez replikacji
Odczyt równoległy

LocalPlayer to własność, która odnosi się do Player z którego klienta uruchomuje doświadczenie.

Ta właściwość jest definowana tylko dla LocalScripts i ModuleScripts wymaganych przez nich, ponieważ działają na klientach. Dla serwera, na którym działają Script obiekty, ta właściwość jest 1> nil1> .

MaxPlayers

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Właściwość MaxPlayers określa maksymalną liczbę graczy, którzy mogą być na serwerze. Ta właściwość można ustawić tylko poprzez ustawienia specjalnego miejsca na Dashboardzie twórcy lub poprzez ustawienia gry.

PreferredPlayers

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Właściwość PreferredPlayers wskazuje na liczbę graczy, do których wypełni się serwer z grą Roblox'a. Ta liczba będzie mniejsza niż maksymalna liczba graczy ( Players.MaxPlayers ) wspierana przez doświadczenie.

RespawnTime

Odczyt równoległy

Właściwość RespawnTime kontroluje czas, w sekundach, potrzeby gracza na odrodzenie, gdy Players.CharacterAutoLoads jest prawdziwy. Domyślnie wynosi 5,0 sekund.

To użyteczne, gdy chcesz zmienić czas odnowienia w zależności od typu swojego doświadczenia, ale nie chcesz zarządzać pojedynczo zaspawnowanymi graczami.

Chociaż ta właściwość może być ustawiona bezpośrednio w Script , można ją łatwiej ustawić bezpośrednio na obiekcie Players w oknie Studio's Explorer.

UseStrafingAnimations

Brak możliwości dodawania do skryptu
Odczyt równoległy

Metody

Chat

void
Zabezpieczenia dodatku plug-in

Funkcja ta sprawia, że lokalny gracz czatuje dany wiadomość. Ponieważ ten przedmiot jest chroniony, próbowanie użycia go w Script lub LocalScript spowoduje błąd.

Zamiast tego, przy tworzeniu systemu czatu niestandardowego lub systemu, który wymaga dostępu do czatu, możesz użyć funkcji Chat zamiast tego.

Parametry

message: string

Wiadomość czat.


Zwroty

void

Przykłady kodu

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

Zapis równoległy

Ta funkcja szuka każdego player w Players dla jednego, którego Player.UserId pasuje do danej UserId. Jeśli takiego gracza nie istnieje, po prostu zwraca 1> nil1> . Jest to równoznaczne z następującą funkcją:


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

Ten metod jest użyteczny w znalezieniu kupującego produktu rozwiniętego za pomocą MarketplaceService.ProcessReceipt, który dostarcza tabelę zawierającą Id użytkownika i nie jest odniesieniem do obiektu Player. Większość gier wymaga odniesienia do gracza, aby umożliwić produkty.

Parametry

userId: number

Class.Player.UserId gracza określonego.


Zwroty

Przykłady kodu

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

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

Funkcja ta zwraca Player związany z podanym Player.Character lub nil, jeśli nie można go znaleźć. Jest to równoznaczne z następującą funkcją:


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

Ten metod jest często używany, gdy pewne wydarzenie w postaci gracza wystrzeli (takie jak ich Class.Humanoid``Class.Humanoid.Died|dying). Takie wydarzenie może nie odnosić bezpośredniego odniesienia do obiektu gracza, ale ten metod dostarcza łatwy dostęp. Przeciwieństwem tej funkcji można opisać jako

Parametry

character: Model

Instancja postaci, z której chcesz usunąć gracza.


Zwroty

Przykłady kodu

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
Zapis równoległy

Ten metod returnuje tabelę wszystkich obiektów Player , które są obecnie połączone. Funkcjonuje tak samo jak Instance:GetChildren() , z wyjątkiem tego, że zwraca tylko obiekty Player znalezione pod 1> Class.Players1> . Gdy u


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

Skrypty, które łączą się z Players.PlayerAdded często próbują przetworzyć każdego gracza, który się połącza z grą. Ta metoda jest użyteczna do pętrowania już połączonych graczy, którzy nie załóżą się PlayerAdded . Używanie tej metody zapewnia, że żaden gracz nie zostanie pominięty!


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)

Zwroty

Instances

Tabela zawierająca wszystkich graczy na serwerze.

Przykłady kodu

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

void
Zabezpieczenia dodatku plug-in

Funkcja ustawia, czy BubbleChat i ClassicChat są używane, i mówi TeamChat i Chat, co zrobić używając Enum.ChatStyle zapisu. Ponieważ ten przedmiot jest chroniony, próbowanie użycia go w Script lub LocalScript spowoduje błąd.

Funkcja ta jest używana wewnątrz, gdy tryb czatu jest ustawiony przez gra.

Parametry

Zdefiniowany styl ustawiać.

Wartość domyślna: "Classic"

Zwroty

void

Przykłady kodu

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

void
Zabezpieczenia dodatku plug-in

Ta funkcja sprawia, że Players.LocalPlayer czatuje dany wiadomość, który będzie widoczny tylko dla użytkowników na tej samej drużynie. Ponieważ ten przedmiot jest chroniony, próbowanie użyć go w Script lub LocalScript spowoduje błąd.

Funkcja ta jest używana wewnętrznie, gdy Players.LocalPlayer wysyłuje wiadomość do ich zespołu.

Parametry

message: string

Wiadomość jest czatowana.


Zwroty

void

Przykłady kodu

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

void
Wynik

Methode Players:BanAsync() pozwala na łatwo zbanować użytkowników, którzy łamią zasady doświadczenia. Możesz określić czas trwania banu, włączyć ban do rozprzestrzeniania się na podejrzanych kontach i zapewnić w

Ograniczanie i wiadomości

Zakazane użytkownicy zostaną natychmiastowo wyrzuceni i zapobiec temu, aby dołączyli ponownie do swoich doświadczeń. Zostaną oni zaprezentowani z błędnym modułem wyświetlającym czas pozostawiony na ich ban i DisplayReason . Systemy백엔드 Roblox'

Mieста i wszechświat

Domyślnie zakazy rozciągają się na dowolne miejsce w tym wszechświecie. Aby ograniczyć zakaz tylko do miejsca, z którego ten interfejs jest nazywany, skonfiguruj ApplyToUniverse do false . Jednak jeśli użytkownik zostanie zakazany na początku wszechświata, to efektywnie wynika z niego wykluc

Alternatywne konta

Użytkownicy często grają pod wieloma różnymi kontami, znanymi jako konta alternatywne lub konta alternatywne, które są czasami używane do obejścia zakazów konta. Aby pomóc Ci utrzymać zbanowanych użytkowników, zachowanie domyślne tego API będzie rozprzestrzeniać wszystkie zakazy z konta źródłowego, które zostały zbanowane do ka

Czas trwania zakazu

Nie wszystkie przestępstwa są tego samego rodzaju, więc

Błędy i Throttling

Ten metodowy wzywa HTTP do usług zapisu w tle, które są podatne na ograniczenie i mogą się zawieść. Jeśli wzywasz ten API z więcej niż jednym UserId , ten metodowy będzie próbował wykonać wezwanie HTTP dla każdego ID. Następnie połączy wsz

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

Wiadomość zawsze będzie zawierać failure for UserId {} jeśli jest to błąd HTTP.

Wymagania strony klienta

Ze względu na zagrożenia związane z banowaniem użytkowników, ten metod może być wykonany tylko na serwerze doświadczenia back-end (wezwania strony klienta będą wynikać z błędu). Możesz testować tę API w Studio, podczas współpracy , lub w testach zespołu, ale zakazy nie będą stosować się do produkcji.

Ta API używa API Restrykcji Użytkownika Open Cloud. Będziesz w stanie wykorzystać te API do zarządzania swoimi zakazami w aplikacjach stron trzecich.

Parametry

config: Dictionary
  • UserIds (wymagane; lista) — Lista UserIds graczy do zbanowania. Maksymalna wielkość to 50.

  • ApplyToUniverse (opcjonalne;Boolean) — Czy ban promuje się do wszystkich miejsc w wymiarze doświadczenia. Domyślnie jest true .

  • Duration (wymagane; liczba całkowita) — Długość banować, w sekundach. Bany stałe powinny mieć wartość -1 . 0 i wszystkie inne negatywne wartości są nieprawidłowe.

  • DisplayReason (wymagane; ciąg) — wiadomość, która zostanie wyświetlona dla użytkowników, gdy spróbują dołączyć do doświadczenia. Maksymalna długość struny to 400 .

  • PrivateReason (wymagane; ciąg) — Wewnętrzna wiadomość, która zostanie zwrócona podczas weryfikacji historii zbanowania użytkownika. Maksymalna długość struny to 1000.

  • ExcludeAltAccounts (opcjonalne;Boolean) — gdy true, Roblox nie próbuje zbanować kont kontrolnych. Domyślnie jest false.


Zwroty

void

Przykłady kodu

Banning Users

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

Wynik

Zwraca model postaci założony z wszystkim określonym w przepustniku opisu ludzkiego i jest R6 lub R15, jak określono przez typ konfiguracji.

Parametry

description: HumanoidDescription

Określa wygląd zwróconego postaci.

Określa, czy zwrócony znak będzie R6 lub R15.

assetTypeVerification: Enum.AssetTypeVerification

Weryfikacja typu zasobu określa, czy funkcja będzie ładować modele lub nie (należy ustawić to na Zawsze, chyba że chcesz ładować niekatalogowe zasoby).

Wartość domyślna: "Default"

Zwroty

Model postaci humanoid.

Przykłady kodu

Create Humanoid Model From Description

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

CreateHumanoidModelFromUserId

Wynik

Zwraca zestaw modeli postaci z wszystkim, co jest ustawione, aby pasował do awatara użytkownika określonego przez przesunięty identyfikator użytkownika. Obejmuje to, czy ten model postaci jest obecnie R6 lub R15.

Parametry

userId: number

Unikalny identyfikator użytkownika Roblox (UserId to numer w profilu użytkownika, na przykład www.roblox.com/users/1/profile).


Zwroty

Model postaci humanoid.

Przykłady kodu

Create Humanoid Model From A User ID

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

GetBanHistoryAsync

Wynik

Odzyskuje historię banowania i odbanowania dla dowolnego użytkownika w wielowymiarowej wersji doświadczenia. Ten metod retuje instancję BanHistoryPages, która dziedzicza się od Pages. Ta metoda jest włączona i wyłączona poprzez właściwość Players.BanningEnabled, którą możesz włączyć w Studio.

Ten wezwanie funkcji będzie miał sukces tylko na serwerach produkcyjnych, a nie na urządzeniach klienta lub w Studio.

Ta API używa API Restrykcji Użytkownika Open Cloud. Będziesz w stanie wykorzystać te API do zarządzania swoimi zakazami w aplikacjach stron trzecich.

Parametry

userId: number

Zwroty

Zobacz BanHistoryPages dla odniesienia zwrotu.

GetCharacterAppearanceInfoAsync

Wynik

Funkcja ta zwraca informacje o awatarze gracza (ignorując sprzęt) na stronie Roblox w formie słownika. Nie należy go mylić z Class.Players:GetCharacterAppearanceAsync()|GetCharacter)|>, co w rzeczywistości ładowuje zasoby opisane przez ten metodę. Możesz użyć Class.InsertService:LoadAsset()


<tr>
<td><code>zasoby</code></td>
<td>tabela (zobacz poniżej)</td>
<td>Opisuje założone zasoby (czapki, części ciała itp.)</td>
</tr>
<tr>
<td><code>Kolory ciała</code></td>
<td>tabela (zobacz poniżej)</td>
<td>Opisuje wartości BrickColor dla każdego kończyna</td>
</tr>
<tr>
<td><code>bodyColor3s</code></td>
<td>tabela (zobacz poniżej)</td>
<td>Opisuje instancję Kolor3 dla każdego kończyna, które mogą nie pasować doskonale z bodyColors</td>
</tr>
<tr>
<td><code>defaultPantsApplied</code></td>
<td>boolean</td>
<td>Opisuje, czy domyślne spodnie zostaną zastosowane</td>
</tr>
<tr>
<td><code>domyślną koszulę zastosowaną</code></td>
<td>boolean</td>
<td>Opisuje, czy domyślną koszulę należy zastosować</td>
</tr>
<tr>
<td><code>emotki</code></td>
<td>tabela (zobacz poniżej)</td>
<td>Opisuje założone animacje emotikon</td>
</tr>
<tr>
<td><code>typ graczaAvatar</code></td>
<td>ciąg</td>
<td>Albo „R15” lub „R6”</td>
</tr>
<tr>
<td><code>skali</code></td>
<td>tabela (zobacz poniżej)</td>
<td>Opisuje różne czynniki skalowania ciała</td>
</tr>
NazwaTypOpis
Podręczne Tabele

Tabela assets jest matrycą tabel zawierających następujące klucze opisujące zasoby aktualnie założone przez gracza:


<tr>
<td><code>identyfikator</code></td>
<td>liczba</td>
<td>Id zasobu wyposażonego</td>
</tr>
<tr>
<td><code>typ zasobu</code></td>
<td>tabela</td>
<td>Tabela z polami nazwa i identyfikator, opisująca rodzaj zasobu wyposażonego ("Hat", "Face", itp.")</td>
</tr>
<tr>
<td><code>imię</code></td>
<td>ciąg</td>
<td>Nazwa zasilanego zasobu</td>
</tr>
NazwaTypOpis
Skaluje Podtablicę

Tabela scales ma następujące klucze, każdy z nich odpowiadający jednej Humanoid właściwości skalowania: bodyType, 1>head1>, 4> height4>, 7> proportion7>, 9> depth9>, 0> width

Podtabela Kolorów Ciała

Tabela bodyColors ma następujące klucze, każdy z nich odpowiadający BrickColor ID, którego można użyć z Datatype.BrickColor.new

Parametry

userId: number

identyfikator użytkownika z określonego gracza.


Zwroty

Dizytyka zawierająca informacje o wyglądzie postaci danego użytkownika.

Przykłady kodu

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

Wynik

Funkcja GetFriends Players zwraca obiekt FriendPages, który zawiera informacje dla wszystkich przyjaciół danej osoby. Przedmioty w obiekcie FriendPages są tabelami z następującymi polami:


<tr>
<td>identyfikator</td>
<td>int64</td>
<td>Id użytkownika znajomy</td>
</tr>
<tr>
<td>Nazwa użytkownika</td>
<td>ciąg</td>
<td>nazwa użytkownikaużytkownika znajomy</td>
</tr>
<tr>
<td>Nazwa wyświetlana</td>
<td>ciąg</td>
<td>Class.Player.DisplayName|顯示名稱\</Class.Player.DisplayName|顯示名稱</td>
</tr>
NazwaTypOpis

Zobacz przykładowe kody, aby łatwo przejść przez wszystkich przyjaciół gracza.

Parametry

userId: number

ID użytkownika gracza określonego.


Zwroty

Przykłady kodu

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

Wynik

Zwraca HumanoidDescription dla określonego outfitId, który zostanie ustawiony z częściami / kolorami / animacjami itp. strój. Strój może być jeden stworzony przez użytkownika lub może być strój dla zestawu stworzonego przez Roblox.

Parametry

outfitId: number

Id strój, dla którego poszukiwana jest opis Humanoid.


Zwroty

Opis humanoid zainicjowany przez specyfikację dla przepustki w outfitId.

Przykłady kodu

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

Wynik

Zwraca HumanoidDescription, która określa wszystko założone dla awatara użytkownika określonego przez przekazany w identyfikatorze. Zawiera również skali i kolory ciała.

Parametry

userId: number

Unikalny identyfikator użytkownika Roblox (UserId to numer w profilu użytkownika, na przykład www.roblox.com/users/1/profile).


Zwroty

Opis humanoid z inicjalizacją z wymaganiami w grze użytkownika.

Przykłady kodu

Get HumanoidDescription From User ID

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

GetNameFromUserIdAsync

Wynik

Funkcja GetNameFromUserIdAsync Players wysyłuje zapytanie na stronę Roblox, aby zapytać, jaki jest nazwa użytkownika z konta z podanym UserId .

Ten metodowy błędy, jeśli nie istnieje żaden rachunek z podanym UserId. Jeśli nie jesteś pewien, że taki rachunek istnieje, zaleca się zapisywanie wezwania do tej funkcji z użyciem pcall. Ponadto można ręcznie zapisać wyniki, aby zwiększyć przyszłe wezwania z tym samym UserId szybko. Zobacz przykłady kodu, aby dowiedzieć się więcej.

Parametry

userId: number

Class.Player.UserId gracza określonego.


Zwroty

Imię użytkownika z określonym Player.UserId .

Przykłady kodu

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

Wynik

Funkcja ta wysła zapytanie na stronę Roblox, aby zapytać, czy Player.UserId jest z konta z podanym Player nazwiskiem.

Ten metodowy błędy, jeśli nie istnieje żaden konto z podanym nazwą nazwa użytkownika. Jeśli nie jesteś pewien, że takie konto istnieje, zaleca się zapakować wezwania do tej funkcji z pcall . Ponadto można ręcznie zapisać wyniki, aby szybko wykonać przyszłe wezwania z tego samego nazwiska nazwa użytkownika. Samouczek, aby dowiedzieć się więcej.

Parametry

userName: string

Imię gracza określonego.


Zwroty

Class.Player.UserId użytkownika, którego nazwa została określona.

Przykłady kodu

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

Wynik

Funkcja ta zwraca URL treści dla awatara gracza z ich UserId , rozmiar Enum.ThumbnailSize i typ Enum.ThumbnailType. Wynika również, czy obraz jest gotowy do użycia.

Najczęściej metoda ta jest używana z ImageLabel.Image lub Decal.Texture , aby wyświetlić zdjęcia awatara w doświadczeniu.

Parametry

userId: number

Class.Player.UserId gracza określonego.

thumbnailType: Enum.ThumbnailType

A Enum.ThumbnailType opisujący rodzaj miniatur.

thumbnailSize: Enum.ThumbnailSize

A Enum.ThumbnailSize określający rozmiar miniaturki.


Zwroty

Template zawierający URL treści dla miniaturki użytkownika oparty na określonych parametrach i bułę opisującą, czy obraz jest gotowy do użycia lub nie.

Przykłady kodu

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

void
Wynik

Odblokowuj graczy zbanowanych z Players:BanAsync() lub Użytkownie ograniczenia w chmurze API . Ta metoda jest włączona i wyłączona przez właściwość Players.BanningEnabled, którą możesz włączyć lub wyłączyć w Studio.

Podobnie jak Players:BanAsync() , ten metodę wziąć config słownik, który pozwoli ci zbanować użytkowników. To konfiguruje użytkowników, którzy nie są zbanowani i zakres, z którego zostali zbanowani.

Unbans będzie miał wpływ tylko na zakazy z tego samego ApplyToUniverse zakresu. Na przykład, unban z ApplyToUniverse ustawiony na true nie będzie anulować poprzedniego zakazu z 2> ApplyToUniverse2> ustawion

Ten metodowy wzywa HTTP do usług w tle, które są słowione i mogą się zepsuć. Jeśli wzyjesz ten metodowy za pomocą wielu UserIDs, ten metodowy będzie próbował wykonać ten HTTP

Ze względu na zagrożenia związane z banowaniem użytkowników, ten metod może być wykonany tylko na serwerze back-end. Strony klienta będą wynikać błędy. Możesz testować tę API w Studio, Team Create i Team Test, ale zakazy nie będą stosować się do produkcji. Ten wezwanie funkcji będzie próbował wszystkie kroki weryfikacji w grze produkcyjnej, a nie w grze Studio.

Ta API używa API Restrykcji Użytkownika Open Cloud. Będziesz w stanie wykorzystać te API do zarządzania swoimi zakazami w aplikacjach stron trzecich.

Parametry

config: Dictionary

<tbody>
<tr>
<td><code>ID użytkownika</code></td>
<td>masz</td>
<td>UserIDs do bycia wymagane w doświadczeniu(ach). Maksymalna wielkość to <code>50</code> .</td>
</tr>
<tr>
<td><code>ApplyToUniverse</code></td>
<td>boolean</td>
<td>Propaguje unban do wszystkich miejsc w tym wszechświecie.</td>
</tr>
</tbody>
NazwaTypOpis

Zwroty

void

Przykłady kodu

Unbanning Users

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

Zdarzenia

PlayerAdded

Wydarzenie PlayerAdded zapala się, gdy gracz wejdzie do gry. Jest to używane do uruchomienia wydarzenia, gdy gracz dołącza do gry, takiego jak ładowanie zapisu GlobalDataStore gracza.

Można go używać wraz z wydarzeniem Players.PlayerRemoving, które działa, gdy gracz ostatecznie opuści grę. Na instancja, jeśli chcesz wydrukować wiadomość za każdym razem, gdy nowy gracz dołącza lub opuszcza grę:


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)

Jeśli chcesz śledzić, kiedy postać gracza jest dodana lub usunięta z gry, tak jak kiedy gracz respawnuje lub umiera, możesz użyć funkcji Player.CharacterAdded i Player.CharacterRemoving.

Uwaga, że ten ewent nie działa, jak oczekiwano w trybie Graj, ponieważ gracz jest utworzony przed skryptami, które łączą się z PlayerAdded. Aby zaradzić temu przypadkowi, wraz z przypadkami, w których skrypt jest dodany do gry po wejściu gracza, utwórz funkcję onPlayerAdded(), którą możesz weзваć, aby

Parametry

player: Player

Instancja gracza, który dołączył do gry.


Przykłady kodu

Players.PlayerAdded

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

PlayerMembershipChanged

Ten ewent zostanie wywołany, gdy serwer gry rozpozna, że członkostwo gracza się zmieniło. Zauważ, jednak, że serwer tylko spróbuje sprawdzić i zaktualizować członkostwo po zamknięciu modalu premium. W ten sposób, aby uwzględnić przypad

Aby dowiedzieć się więcej o i wdrożeniu Premium w swoim doświadczeniu i monetyzacji opartej na angażujących wynagrodzeniach systemu, zobacz Zaangażowane płatności.

Zobacz również:

Parametry

player: Player

Przykłady kodu

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

Wydarzenie PlayerRemoving wyrzuca się right przed a Player wyrzuca gra. To wydarzenie wyrzuca się przed a ChildRemoved zachodzi na Players i zach

Można go używać wraz z wydarzeniem Player.PlayerAdded, które aktywuje się, gdy gracz dołącza do gry. Na instancja, aby wydrukować wiadomość za każdym razem, gdy nowy gracz dołącza lub opuszcza grę:


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)

Jeśli chcesz śledzić, kiedy postać gracza jest dodana lub usunięta z gry, tak jak kiedy gracz respawnuje lub umiera, możesz użyć funkcji Player.CharacterAdded i Player.CharacterRemoving.

Parametry

player: Player

Instancja gracza, który opuszcza grę.


Przykłady kodu

Players.PlayerRemoving

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

UserSubscriptionStatusChanged

Ten ewent zostanie wywołany, gdy serwer rozpozna, że status użytkownika dla pewnej subskrypcji zmienił się. Uwaga, że serwer tylko próbuje sprawdzić i zaktualizować status po zamknięciu modalu zakupu subskrypcji. Aby uwzględnić przypadki,

Uwaga: tylko skrypty serwera otrzymują ten ewent.

Parametry

user: Player

Użytkownik, który status subskrypcji zmienił.

subscriptionId: string

Id subskrypcji z zmianą statusu.