Players

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan

Layanan Players memiliki objek Player untuk klien yang saat ini terhubung ke server Roblox.Ini juga berisi informasi tentang konfigurasi tempat.Ini dapat menyelidiki informasi tentang pemain yang tidak terhubung ke server, seperti penampilan karakter, teman, dan thumbnailavatar.

Rangkuman

Properti

Metode

Acara

Properti

BanningEnabled

Tidak Direplikasi
Tidak Dapat Ditulis Skripnya
Baca Paralel

Aktifkan atau nonaktifkan tiga metode Players ( BanAsync() , UnbanAsync() , dan GetBanHistoryAsync() ) yang membentuk API larangan.Properti ini tidak dapat diskripkan dan hanya dapat dimodifikasi di Studio.

BubbleChat

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti ini menunjukkan apakah atau tidak obrolan gelembung diaktifkan. Ini diatur dengan metode Players:SetChatStyle() menggunakan enum Enum.ChatStyle.

Ketika mode obrolan ini diaktifkan, permainan menampilkan obrolan di antarmuka pengguna obrolan di sudut kiri atas layar.

Ada dua mode obrolan lain, Players.ClassicChat dan mode obrolan di mana kedua obrolan klasik dan gelembung diaktifkan.

CharacterAutoLoads

Tidak Direplikasi
Baca Paralel

Properti ini menunjukkan apakah characters akan muncul kembali secara otomatis. Nilai default adalah benar.

Jika properti ini dinonaktifkan (salah), pemain characters tidak akan muncul sampai fungsi Player:LoadCharacter() dipanggil untuk setiap Player, termasuk saat pemain bergabung dengan pengalaman.

Ini bisa berguna dalam pengalaman di mana pemain memiliki kehidupan terbatas, seperti permainan kompetitif di mana pemain tidak respawn sampai ronde permainan berakhir.

Contoh Kode

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Menunjukkan apakah atau tidak obrolan klasik diaktifkan. Properti ini ditetapkan oleh metode Players:SetChatStyle() menggunakan enum Enum.ChatStyle.

Saat mode obrolan ini diaktifkan, permainan menampilkan obrolan di sebuah gelembung di atas kepala pengirim.

Ada dua mode obrolan lain, Players.BubbleChat dan mode obrolan di mana kedua obrolan klasik dan gelembung diaktifkan.

LocalPlayer

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti baca hanya ini merujuk pada Player yang kliennya menjalankan pengalaman.

Properti ini hanya didefinisikan untuk LocalScripts dan ModuleScripts diperlukan oleh mereka, karena mereka berjalan di klien.Untuk server, di mana Script objek menjalankan kode mereka, properti ini adalah nil .

MaxPlayers

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti ini menentukan jumlah maksimum pemain yang dapat ada di server.Properti ini hanya dapat ditetapkan melalui pengaturan tempat tertentu di Dashboard Pencipta atau melalui Pengaturan Game .

PreferredPlayers

Hanya Baca
Tidak Direplikasi
Baca Paralel

Properti ini menunjukkan jumlah pemain yang akan diisi oleh matchmaker Roblox ke server.Angka ini akan kurang dari jumlah maksimum pemain ( Players.MaxPlayers ) yang didukung oleh pengalaman.

RespawnTime

Baca Paralel

Properti ini mengontrol waktu, dalam detik, dibutuhkan waktu bagi pemain untuk respawn ketika Players.CharacterAutoLoads adalah benar. Ini default ke 5,0 detik.

Ini berguna ketika Anda ingin mengubah berapa lama waktu yang dibutuhkan untuk respawn berdasarkan jenis pengalaman Anda tetapi tidak ingin menangani pemutaran pemain secara individual.

Meskipun properti ini dapat ditetapkan dari dalam Script , Anda dapat dengan mudah mengatur langsung di objek Players di jendela Explorer Studio.

UseStrafingAnimations

Tidak Dapat Ditulis Skripnya
Baca Paralel

Metode

Chat

()
Keamanan Plugin

Fungsi ini membuat pemain lokal mengobrol pesan yang diberikan.Karena item ini dilindungi, mencoba menggunakannya di Script atau LocalScript akan menyebabkan kesalahan.

Sebagai gantinya, saat membuat sistem obrolan khusus, atau sistem yang membutuhkan akses ke obrolan, Anda dapat menggunakan fungsi Chat layanan Chat:Chat() sebagai gantinya.

Parameter

message: string

Pesan obrolan.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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

Tulis Paralel

Fungsi ini mencari masing-masing Player di Players untuk satu yang memiliki Player.UserId cocok dengan UserId yang diberikan.Jika pemain seperti itu tidak ada, itu hanya mengembalikan nil .Ini setara dengan fungsi berikut:


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

Metode ini berguna dalam menemukan pembeli produk pengembang menggunakan MarketplaceService.ProcessReceipt , yang memberikan tabel yang mencakup UserId pembeli dan bukan referensi ke objek Pemain itu sendiri.Sebagian besar permainan akan memerlukan referensi ke pemain untuk memberikan produk.

Parameter

userId: number

The Player.UserId dari pemain yang ditentukan.

Nilai Default: ""

Memberikan nilai

Contoh Kode

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

Fungsi ini mengembalikan Player yang terkait dengan Player.Character yang diberikan, atau nil jika tidak dapat ditemukan.Ini setara dengan fungsi berikut:


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

Metode ini sering digunakan ketika beberapa peristiwa dalam karakter pemain terbakar (seperti Class.Humanoid``Class.Humanoid.Died|dying ).Peristiwa seperti itu mungkin tidak secara langsung merujuk pada objek Pemain, tetapi metode ini memberikan akses mudah.Kebalikan fungsi ini dapat digambarkan sebagai mendapatkan Karakter Pemain.Untuk melakukan ini, cukup akses properti Karakter.

Parameter

character: Model

Instansi karakter yang ingin Anda dapatkan pemainnya dari.

Nilai Default: ""

Memberikan nilai

Contoh Kode

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

Metode ini mengembalikan tabel semua objek yang saat ini terhubung Player .Ini berfungsi dengan cara yang sama Instance:GetChildren() akan kecuali bahwa itu hanya mengembalikan objek Player yang ditemukan di bawah Players .Ketika digunakan dengan loop for , itu berguna untuk mengulangi semua pemain dalam game.


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

Skrip yang terhubung ke Players.PlayerAdded sering mencoba untuk memproses setiap Pemain yang terhubung ke game.Metode ini berguna untuk mengulangi pemain yang sudah terhubung yang tidak akan menembak PlayerAdded .Menggunakan metode ini memastikan tidak ada pemain yang terlewatkan!


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)

Memberikan nilai

Instances

Meja yang berisi semua pemain di server.

Contoh Kode

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

()
Keamanan Plugin

Fungsi ini menetapkan apakah BubbleChat dan ClassicChat digunakan, dan memberi tahu TeamChat dan Chat apa yang harus dilakukan menggunakan enum Enum.ChatStyle.Karena item ini dilindungi, mencoba menggunakannya di Script atau LocalScript akan menyebabkan kesalahan.

Fungsi ini digunakan secara internal saat mode obrolan ditetapkan oleh game.

Parameter

Gaya obrolan yang ditentukan sedang atur.

Nilai Default: "Classic"

Memberikan nilai

()

Contoh Kode

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

()
Keamanan Plugin

Fungsi ini membuat Players.LocalPlayer obrolan pesan yang diberikan, yang hanya dapat dilihat oleh pengguna di tim yang sama.Karena item ini dilindungi, mencoba menggunakannya di Script atau LocalScript akan menyebabkan kesalahan.

Fungsi ini digunakan secara internal saat Players.LocalPlayer mengirim pesan ke tim mereka.

Parameter

message: string

Pesan yang dibicarakan.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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

()
Hasil

Metode Players:BanAsync() memungkinkan Anda dengan mudah melarang pengguna yang melanggar panduan pengalaman Anda.Anda dapat menentukan durasi larangan, mengaktifkan larangan untuk menyebar ke akun alternatif yang diduga, dan memberikan pesan kepada pengguna yang dilarang sesuai dengan Panduan Penggunaan.Anda juga harus memposting aturan pengalaman Anda di suatu tempat yang dapat diakses oleh semua pengguna dan memberikan cara bagi mereka untuk mengajukan banding.Metode ini diaktifkan dan dinonaktifkan oleh properti Players.BanningEnabled, yang dapat Anda aktifkan di Studio.

Pembatasan dan Pesan

Pengguna yang dilarang akan segera diusir dan tidak dapat bergabung kembali dengan pengalaman Anda.Mereka akan ditampilkan dengan modus kesalahan yang menampilkan waktu yang tersisa pada larangan mereka dan DisplayReason Anda.Sistem backend Roblox akan mengusir pemain di semua server dari tempat (s) yang Anda spesifikasikan. DisplayReason dapat memiliki panjang maksimal 400 karakter dan berada di bawah filter teks.Untuk informasi lebih lanjut tentang teks modal yang dapat diterima, lihat pesan larangan.

Tempat dan Alam Semesta

Secara default, larangan berlaku ke tempat mana pun di alam semesta itu.Untuk membatasi larangan hanya ke tempat dari mana API ini dipanggil, konfigurasi ApplyToUniverse ke false.Namun, jika pengguna dilarang di tempat awal alam semesta, itu secara efektif menyebabkan pengguna dikecualikan dari seluruh alam semesta, terlepas dari apakah larangan universal ada atau tidak.

Akun Alternatif

Pengguna sering bermain di bawah beberapa akun berbeda, yang dikenal sebagai akun alternatif atau akun alt, yang terkadang digunakan untuk menghindari larangan akun.Untuk membantu Anda menjaga pengguna yang dilarang tetap keluar, perilaku default dari API ini akan menyebarkan semua larangan dari akun sumber yang Anda larang ke salah satu akun alternatif yang dituduhkan.Anda dapat mematikan penyebaran larangan ke akun alternatif dengan mengkonfigurasi ExcludeAltAccounts ke true.

Durasi Larangan

Tidak semua pelanggaran sama, jadi tidak semua larangan harus memiliki panjang yang sama.API ini memungkinkan Anda untuk mengkonfigurasi durasi blokir, dalam beberapa detik, dengan bidang Duration.Untuk menentukan blokirpermanen, atur bidang ke -1 .Anda mungkin juga ingin mengkonfigurasi dinamis durasi larangan berdasarkan histori larangan pengguna, yang dapat Anda tanyakan untuk digunakan Players:GetBanHistoryAsync() .Sebagai contoh, Anda mungkin ingin mempertimbangkan jumlah larangan, durasi larangan sebelumnya, atau membangun logika dari catatan yang disimpan di bawah PrivateReason yang bisa mencapai 1000 karakter dan tidak disaring teks. PrivateReason catatan tidak pernah dibagikan dengan klien dan dapat dianggap aman dari penyerang.

Kesalahan dan Pengurangan

Metode ini memanggil panggilan HTTP ke layanan backend yang berada di bawah pengurangan dan dapat gagal.Jika Anda memanggil API ini dengan lebih dari satu UserId, metode ini akan mencoba membuat panggilan HTTP untuk setiap ID.Kemudian akan mengumpulkan pesan kesalahan dan menggabungkannya sebagai daftar terpisah dengan koma.Sebagai contoh, jika metode ini dipanggil untuk lima pengguna dan permintaan untuk mereka yang memiliki UserIds 2 dan 4 gagal, pesan kesalahan berikut muncul:

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

Pesan akan selalu termasuk failure for UserId {} jika itu adalah kesalahan HTTP.

Persyaratan Sisi Klien

Karena risiko yang terkait dengan melarang pengguna, metode ini hanya dapat dipanggil di server pengalaman backend (panggilan sisi klien akan menyebabkan kesalahan).Anda dapat menguji API ini di Studio, selama kolaboratif kreasi, atau di tes tim tim, tetapi larangan tidak akan berlaku untuk produksi.

API ini menggunakan Batasan Pengguna Terbuka API Cloud. Anda akan dapat menggunakan API ini untuk mengelola larangan Anda di aplikasi pihak ketiga.

Parameter

config: Dictionary
  • UserIds (diperlukan; array) — Array dari UserIds pemain yang harus dilarang. Ukuran maksimum adalah 50 .

  • ApplyToUniverse (opsional; boolean) — Apakah larangan menyebar ke semua tempat dalam alam semesta pengalaman. Default adalah true .

  • Duration (diperlukan; bilangan bulat) — Durasi blokir, dalam detik.Larangan permanen harus memiliki nilai -1 .0 dan semua nilai negatif lainnya tidak valid.

  • DisplayReason (diperlukan; string) — Pesan yang akan ditampilkan kepada pengguna saat mereka mencoba dan gagal bergabung dengan pengalaman.Panjang string maksimum adalah 400 .

  • PrivateReason (diperlukan; string) — Pesan internal yang akan dikembalikan saat menanyai riwayat banned pengguna. Panjang string maksimum adalah 1000 .

  • ExcludeAltAccounts (opsional; boolean) — Saat true , Roblox tidak berusaha melarang akun alternatif. Default adalah false .

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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

Hasil

Kembalikan model karakter yang dilengkapi dengan semua yang ditentukan dalam Deskripsi Humanoid yang dikirimkan, dan adalah R6 atau R15 seperti yang ditentukan oleh jenis rig.

Parameter

description: HumanoidDescription

Mengidentifikasi penampilan karakter yang dikembalikan.

Nilai Default: ""

Menentukan apakah karakter yang dikembalikan akan menjadi R6 atau R15.

Nilai Default: ""
assetTypeVerification: Enum.AssetTypeVerification

Verifikasi jenis aset menentukan apakah fungsi ini akan memuat model atau tidak (Anda harus mengatur ini menjadi Selalu kecuali Anda ingin memuat aset non-katalog).

Nilai Default: "Default"

Memberikan nilai

Model karakter manusiawi.

Contoh Kode

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

Hasil

Kembalikan pengaturan model karakter dengan semua yang dilengkapi untuk cocok dengan avatar pengguna yang ditentukan oleh userId yang ditransmisikan.Ini termasuk apakah karakter itu saat ini R6 atau R15.

Parameter

userId: number

ID pengguna untuk pengguna Roblox. (ID Pengguna adalah nomor dalam profil pengguna misalnya www.roblox.com/users/1/profile).

Nilai Default: ""

Memberikan nilai

Model karakter manusiawi.

Contoh Kode

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

Hasil

Ambil sejarah larangan dan pencabutan larangan dari pengguna mana pun di alam semesta pengalaman.Metode ini mengembalikan instansi BanHistoryPages yang mewarisi dari Pages.Metode ini diaktifkan dan dinonaktifkan oleh properti Players.BanningEnabled, yang dapat Anda aktifkan di Studio.

Panggilan fungsi ini hanya akan berhasil di server game produksi dan bukan di perangkat klien atau di Studio.

API ini menggunakan Batasan Pengguna Terbuka API Cloud. Anda akan dapat menggunakan API ini untuk mengelola larangan Anda di aplikasi pihak ketiga.

Parameter

userId: number
Nilai Default: ""

Memberikan nilai

Lihat BanHistoryPages untuk referensi pengembalian.

GetCharacterAppearanceInfoAsync

Hasil

Fungsi ini mengembalikan informasi tentang avatar pemain (mengabaikan perlengkapan) di situs Roblox dalam bentuk kamus.Ini tidak boleh dikacaukan dengan GetCharacterAppearanceAsync , yang sebenarnya memuat aset yang dijelaskan oleh metode ini.Anda dapat menggunakan InsertService:LoadAsset() untuk memuat aset yang digunakan dalam avatar pemain.Struktur kamus yang dikembalikan adalah sebagai berikut:


<th>Jenis</th>
<th>Deskripsi</th>
</tr>
</thead>
<tr>
<td><code>aset</code></td>
<td>tabel (lihat di bawah)</td>
<td>Menggambarkan aset yang dilengkapi (topi, bagian tubuh, dll)</td>
</tr>
<tr>
<td><code>warna tubuh</code></td>
<td>tabel (lihat di bawah)</td>
<td>Menggambarkan nilai BrickColor untuk setiap anggota tubuh</td>
</tr>
<tr>
<td><code>bodyColor3s</code></td>
<td>tabel (lihat di bawah)</td>
<td>Menggambarkan instansi Color3 untuk setiap anggota tubuh yang mungkin tidak cocok sempurna dengan bodyColors</td>
</tr>
<tr>
<td><code>pantal default diterapkan</code></td>
<td>bool</td>
<td>Menggambarkan apakah celana default diterapkan</td>
</tr>
<tr>
<td><code>pakaian default diterapan</code></td>
<td>bool</td>
<td>Menggambarkan apakah kemeja default diterapkan</td>
</tr>
<tr>
<td><code>emote</code></td>
<td>tabel (lihat di bawah)</td>
<td>Menjelaskan animasi emote yang dilengkapi</td>
</tr>
<tr>
<td><code>pemainAvatarType</code></td>
<td>string</td>
<td>Entah "R15" atau "R6"</td>
</tr>
<tr>
<td><code>timbangan</code></td>
<td>tabel (lihat di bawah)</td>
<td>Menggambarkan berbagai faktor skala tubuh</td>
</tr>
Nama
Meja Sub-Aset

Tabel assets adalah array tabel yang berisi kunci berikut yang menggambarkan aset yang saat ini dilengkapi oleh pemain:


<th>Jenis</th>
<th>Deskripsi</th>
</tr>
</thead>
<tr>
<td><code>id</code></td>
<td>angka</td>
<td>ID aset dari aset yang dilengkapi</td>
</tr>
<tr>
<td><code>jenis aset</code></td>
<td>meja</td>
<td>Meja dengan <code>nama</code> dan <code>id</code> bidang, masing-masing menggambarkan jenis aset yang dilengkapi ("Topi", "Wajah", dll.)</td>
</tr>
<tr>
<td><code>nama</code></td>
<td>string</td>
<td>Nama aset yang dilengkapi</td>
</tr>
Nama
Sub-Tabel Skala

Tabel scales memiliki kunci berikut, masing-masing merupakan nomor yang sesuai dengan satu properti skala Humanoid : bodyType , head , height , proportion , depth , width .

Sub-Meja Warna Tubuh

Tabel bodyColors memiliki kunci berikut, masing-masing merupakan nomor yang sesuai dengan nomor BrickColor ID yang dapat digunakan dengan BrickColor.new(id) : leftArmColorId , torsoColorId , rightArmColorId , headColorId , leftLegColorId , rightLegColorId .

Parameter

userId: number

The * iPad dari pemain yang ditentukan.

Nilai Default: ""

Memberikan nilai

Kamus yang berisi informasi tentang penampilan karakter pengguna tertentu.

Contoh Kode

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

Hasil

Fungsi GetFriends Players mengembalikan objek FriendPages yang berisi informasi untuk semua teman pengguna yang diberikan.Item dalam objek FriendPages adalah tabel dengan bidang berikut:


<th>Jenis</th>
<th>Deskripsi</th>
</tr>
</thead>
<tr>
<td>Id</td>
<td>int64</td>
<td>ID Pengguna teman</td>
</tr>
<tr>
<td>Nama pengguna</td>
<td>string</td>
<td>Nama nama penggunateman</td>
</tr>
<tr>
<td>Nama Tampilan</td>
<td>string</td>
<td>Kelas <code>Class.Player.DisplayName|nama tampilan</code> dari teman.</td>
</tr>
Nama

Lihat sampel kode untuk cara mudah untuk mengulangi semua teman pemain.

Parameter

userId: number

ID pengguna pemain yang ditentukan.

Nilai Default: ""

Memberikan nilai

Contoh Kode

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

Hasil

Kembalikan Deskripsi Humanoid untuk ID pakaian yang ditentukan, yang akan ditetapkan dengan bagian/warna/Animasi dari pakaian.Pakaian bisa menjadi satu yang dibuat oleh pengguna, atau bisa menjadi pakaian untuk bundel yang dibuat oleh Roblox.

Parameter

outfitId: number

ID pakaian untuk which HumanoidDescription dicari.

Nilai Default: ""

Memberikan nilai

Deskripsi Humanoid diinisialisasi dengan spesifikasi untuk outfitId yang dikirimkan

Contoh Kode

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

Hasil

Kembalikan Deskripsi Humanoid yang menentukan semua yang dilengkapi untuk avatar pengguna yang ditentukan oleh userId yang ditransmisikan.Juga termasuk skala dan warna tubuh.

Parameter

userId: number

ID pengguna untuk pengguna Roblox. (ID Pengguna adalah nomor dalam profil pengguna misalnya www.roblox.com/users/1/profile).

Nilai Default: ""

Memberikan nilai

Deskripsi Humanoid diinisialisasi dengan spesifikasi avatar pengguna yang dikirim.

Contoh Kode

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

Hasil

Fungsi GetNameFromUserIdAsync Players akan mengirimkan permintaan ke situs Roblox untuk menanyakan apa nama pengguna dari akun dengan UserId yang diberikan.

Metode ini berisi kesalahan jika tidak ada akun dengan UserId yang diberikan.Jika Anda tidak yakin akun seperti itu ada, disarankan untuk melingkapi panggilan ke fungsi ini dengan pcall() .Selain itu, Anda dapat secara manual menyimpan hasil untuk membuat panggilan masa depan dengan UserId yang sama cepat.Lihat sampel kode untuk mempelajari lebih lanjut.

Parameter

userId: number

The Player.UserId dari pemain yang ditentukan.

Nilai Default: ""

Memberikan nilai

Nama pengguna dengan Player.UserId yang ditentukan.

Contoh Kode

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

Hasil

Fungsi ini akan mengirimkan permintaan ke situs Roblox untuk menanyakan apa Player.UserId adalah akun dengan nama yang diberikan Player.

Metode ini berisi kesalahan jika tidak ada akun dengan nama pengguna yang diberikan.Jika Anda tidak yakin akun seperti itu ada, disarankan untuk melingkapi panggilan ke fungsi ini dengan pcall() .Selain itu, Anda dapat secara manual menyimpan hasil untuk membuat panggilan masa depan dengan nama pengguna yang sama.Lihat sampel kode untuk mempelajari lebih lanjut.

Parameter

userName: string

Nama pengguna pemain yang ditentukan.

Nilai Default: ""

Memberikan nilai

The Player.UserId dari pengguna yang namanya ditentukan.

Contoh Kode

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

Hasil

Fungsi ini mengembalikan URL konten dari gambar avatar pemain yang diberikan UserId , ukuran gambar yang diinginkan sebagai enum Enum.ThumbnailSize , dan jenis yang diinginkan sebagai enum Enum.ThumbnailType.Ia juga mengembalikan boolean yang menjelaskan apakah gambar siap digunakan.

Sebagian besar waktu, metode ini digunakan dengan ImageLabel.Image atau Decal.Texture untuk menampilkan gambar avatar pengguna dalam pengalaman.

Parameter

userId: number

The Player.UserId dari pemain yang ditentukan.

Nilai Default: ""
thumbnailType: Enum.ThumbnailType

A Enum.ThumbnailType menjelaskan jenis thumbnail.

Nilai Default: ""
thumbnailSize: Enum.ThumbnailSize

A Enum.ThumbnailSize menentukan ukuran thumbnail.

Nilai Default: ""

Memberikan nilai

Sebuah tuple yang berisi URL konten dari thumbnail pengguna berdasarkan parameter yang ditentukan, dan bool yang menggambarkan apakah gambar siap untuk digunakan atau tidak.

Contoh Kode

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

()
Hasil

Membatalkan pemain yang dilarang dari Players:BanAsync() atau Batasan Pengguna Terbuka API Cloud.Metode ini diaktifkan dan dinonaktifkan oleh properti Players.BanningEnabled, yang dapat Anda aktifkan di Studio.

Seperti Players:BanAsync() , metode ini mengambil kamus config yang akan memungkinkan Anda untuk membatalkan pemblokiran pengguna secara massal.Ini mengkonfigurasi pengguna yang tidak dilarang dan lingkup dari mana mereka dilarang.

Unban hanya akan berlaku pada larangan dengan scope yang sama ApplyToUniverse .Sebagai contoh, unban dengan ApplyToUniverse diatur ke true tidak akan membatalkan larangan sebelumnya dengan ApplyToUniverse diatur ke false .Dengan kata lain, pembatalkan tingkat alam semesta tidak akan membatalkan blokirtingkat tempat.Sebaliknya juga berlaku.

Metode ini memanggil panggilan HTTP ke layanan backend, yang dibatasi dan mungkin gagal.Jika Anda memanggil API ini dengan beberapa UserIds, metode ini akan mencoba membuat panggilan HTTP ini untuk setiap UserId.Kemudian akan mengumpulkan pesan kesalahan dan menggabungkannya sebagai daftar terpisah dengan koma.Sebagai contoh, jika metode ini dipanggil untuk lima UserIds : {1, 2, 3, 4, 5} dan permintaan untuk pengguna 2 dan 4 gagal maka pesan kesalahan berikut muncul: HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception. Pesan akan selalu mencakup failure for UserId {} jika itu adalah error HTTP.Ini adalah perilaku tidak didefinisikan jika Anda melewati UserIds yang valid dan tidak valid, yaitua UserId yang bukan angka positif, karena beberapa permintaan jaringan mungkin berhasil sebelum semua input diverifikasi.

Karena risiko yang terkait dengan melarang pengguna, metode ini hanya dapat dipanggil di server game backend.Panggilan sisi klien akan menyebabkan kesalahan.Anda dapat menguji API ini di Studio, Pembuatan Tim, dan Tes Tim, tetapi larangan tidak akan berlaku untuk produksi.Panggilan fungsi ini hanya akan mencoba permintaan larangan di server permainan produksi dan tidak di pengujian Studio.Namun, semua langkah validasi input masih akan berfungsi di Studio.

API ini menggunakan Batasan Pengguna Terbuka API Cloud. Anda akan dapat menggunakan API ini untuk mengelola larangan Anda di aplikasi pihak ketiga.

Parameter

config: Dictionary

<th>Jenis</th>
<th>Deskripsi</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ID Pengguna</code></td>
<td>array</td>
<td>UserIDs yang harus dipaksa masuk ke pengalaman(s). Ukuran maksimum adalah <code>50</code> .</td>
</tr>
<tr>
<td><code>Terapkan ke Universo</code></td>
<td>boolean</td>
<td>Menyebarkan pembatalan banned ke semua tempat dalam alam semesta ini.</td>
</tr>
</tbody>
Nama
Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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

Acara

PlayerAdded

Acara ini terjadi ketika pemain memasuki game.Ini digunakan untuk menembakkan peristiwa ketika pemain bergabung dengan game, seperti memuat data tersimpan pemain GlobalDataStore.

Ini dapat digunakan bersama dengan acara Players.PlayerRemoving , yang dinyalakan saat pemain akan meninggalkan game.Sebagai kejadian, jika Anda ingin mencetak pesan setiap kali pemain baru bergabung atau meninggalkan game:


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)

Jika Anda ingin melacak kapan karakter pemain ditambahkan atau dihapus dari game, seperti ketika pemain respawn atau mati, Anda dapat menggunakan fungsi Player.CharacterAdded dan Player.CharacterRemoving.

Perhatikan bahwa acara ini tidak berfungsi seperti yang diharapkan dalam mode Bermain karena pemain dibuat sebelum skrip dijalankan yang terhubung ke PlayerAdded.Untuk menangani kasus ini, serta kasus di mana skrip ditambahkan ke dalam permainan setelah pemain masuk, buat fungsi onPlayerAdded() yang dapat Anda panggil untuk menangani masuknya pemain.

Parameter

player: Player

Instansi pemain yang bergabung dengan game.


Contoh Kode

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

Acara ini terjadi ketika server game mengenali bahwa keanggotaan pemain telah berubah.Perhatikan, bagaimanapun, bahwa server hanya akan mencoba memeriksa dan memperbarui keanggotaan setelah modal Premium telah ditutup.Oleh karena itu, untuk menangani kasus di mana pengguna membeli Premium di luar permainan saat bermain, Anda harus tetap meminta mereka untuk membeli Premium; ini kemudian akan menampilkan pesan yang memberi tahu mereka bahwa mereka sudah ditingkatkan dan, setelah mereka menutup modul, server game akan memperbarui keanggotaan mereka dan memicu peristiwa ini.

Untuk mempelajari lebih lanjut tentang dan mengintegrasikan Premium ke dalam pengalaman Anda dan memonetarisasi dengan sistem pembayaran berbasis keterlibatan, lihat Pembayaran Berbasis Keterlibatan.

Lihat juga:

Parameter

player: Player

Contoh Kode

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

Acara Penghapus Pemain terjadi tepat sebelum Player meninggalkan game.Peristiwa ini terjadi sebelum ChildRemoved melakukan pada Players , dan berperilaku agak mirip dengan Instance.DescendantRemoving .Karena terbakar sebelum pengeluaran sebenarnya dari Player , acara ini berguna untuk menyimpan data pemain menggunakan GlobalDataStore .

Ini dapat digunakan bersama dengan acara Player.PlayerAdded , yang menyala saat pemain bergabung dengan game.Sebagai kejadian, untuk mencetak pesan setiap kali pemain baru bergabung atau meninggalkan game:


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)

Jika Anda ingin melacak kapan karakter pemain ditambahkan atau dihapus dari game, seperti ketika pemain respawn atau mati, Anda dapat menggunakan fungsi Player.CharacterAdded dan Player.CharacterRemoving.

Parameter

player: Player

Instansi pemain yang meninggalkan game.


Contoh Kode

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

Acara ini terjadi ketika server game mengenali bahwa status pengguna untuk langganan tertentu telah berubah.Perhatikan bahwa server hanya mencoba memeriksa dan memperbarui status setelah modal Pembelian Langganan ditutup.Untuk menghitung kasus di mana pengguna membeli langganan di luar permainan saat bermain, Anda harus tetap meminta mereka untuk membeli langganan; prompt menunjukkan pesan yang memberi tahu pengguna bahwa mereka sudah berlangganan, dan setelah mereka menutup modul, server game memperbarui status langganan mereka dan memicu peristiwa ini.

Perhatikan bahwa hanya skrip server yang menerima acara ini.

Parameter

user: Player

Pengguna yang status langganannya telah berubah.

subscriptionId: string

ID dari langganan dengan perubahan status.