Players
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Rangkuman
Properti
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.
Menunjukkan apakah atau tidak obrolan gelembung diaktifkan. Ini diatur dengan metode Players:SetChatStyle().
Menunjukkan apakah characters akan muncul kembali secara otomatis.
Menunjukkan apakah atau tidak obrolan klasik diaktifkan; ditetapkan oleh metode Players:SetChatStyle().
The Player yang dijalankan oleh LocalScript untuk.
Jumlah maksimum pemain yang dapat ada di server.
Jumlah pemain yang disukai untuk server.
Mengontrol jumlah waktu yang diperlukan untuk karakter pemain untuk respawn.
Metode
Membuat pemain lokal mengobrol pesan yang diberikan.
Kembalikan Player dengan yang diberikan UserId jika mereka ada di dalam game.
Kembalikan Player yang Player.Character sesuai dengan instansi yang diberikan, atau nil jika tidak dapat ditemukan.
Kembalikan tabel semua objek yang saat ini terhubung Player .
Mengatur apakah BubbleChat dan ClassicChat digunakan, dan memberi tahu TeamChat dan Chat apa yang harus dilakukan.
Membuat pemain lokal mengobrol pesan yang diberikan, yang hanya dapat dilihat oleh pengguna di tim yang sama.
Larang pengguna dari pengalaman Anda, dengan opsi untuk menentukan durasi, alasan, apakah larangan berlaku untuk seluruh alam semesta atau hanya tempat saat ini, dan banyak lagi.Metode ini diaktifkan dan dinonaktifkan oleh properti Players.BanningEnabled, yang dapat Anda aktifkan di Studio.
- CreateHumanoidModelFromDescription(description : HumanoidDescription,rigType : Enum.HumanoidRigType,assetTypeVerification : Enum.AssetTypeVerification):Model
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.
Kembalikan pengaturan model karakter dengan semua yang dilengkapi untuk cocok dengan avatar pengguna yang ditentukan oleh userId yang ditransmisikan.
Ambil sejarah larangan dan pencabutan larangan dari pengguna mana pun di alam semesta pengalaman.Metode ini diaktifkan dan dinonaktifkan oleh properti Players.BanningEnabled, yang dapat Anda aktifkan di Studio.
Mengembalikan informasi tentang penampilan karakter pengguna tertentu.
Kembalikan objek FriendPages yang berisi informasi untuk semua teman pemain yang diberikan.
Kembalikan Deskripsi Humanoid untuk pakaian yang ditentukan, yang akan ditetapkan dengan bagian/warna/Animasi dari pakaian.
Kembalikan Deskripsi Humanoid yang menentukan semua yang dilengkapi untuk avatar pengguna yang ditentukan oleh userId yang ditransmisikan.
Mengirimkan permintaan ke situs web Roblox untuk nama pengguna akun dengan UserId tertentu.
Mengirimkan permintaan ke situs web Roblox untuk userId akun dengan nama pengguna yang diberikan.
- GetUserThumbnailAsync(userId : number,thumbnailType : Enum.ThumbnailType,thumbnailSize : Enum.ThumbnailSize):Tuple
Kembalikan URL konten dari thumbnail pemain yang diberikan ukuran dan ketik, serta boolean yang menggambarkan apakah gambar siap digunakan.
Membatalkan pemain yang dilarang dari Players:BanAsync() atau Cloud APITerbatas Pengguna.Metode ini diaktifkan dan dinonaktifkan oleh properti Players.BanningEnabled, yang dapat Anda aktifkan di Studio.
Acara
Melepaskan api saat pemain memasuki game.
Melepaskan api saat server permainan mengenali bahwa keanggotaan pemain telah berubah.
Melepaskan api saat pemain akan meninggalkan game.
Melepaskan api saat server permainan mengenali bahwa status pengguna untuk langganan tertentu telah berubah.
Properti
BanningEnabled
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
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
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.
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
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
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
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
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
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
Metode
Chat
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
Pesan obrolan.
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.
-- 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
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
The Player.UserId dari pemain yang ditentukan.
Memberikan nilai
Contoh Kode
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.
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
Instansi karakter yang ingin Anda dapatkan pemainnya dari.
Memberikan nilai
Contoh Kode
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
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() doprint(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
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.
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
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.
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.
-- 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
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
Pesan yang dibicarakan.
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.
-- 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
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
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 .
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.
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
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
Mengidentifikasi penampilan karakter yang dikembalikan.
Menentukan apakah karakter yang dikembalikan akan menjadi R6 atau R15.
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).
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.
game.Players:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R15).Parent =
game.Workspace
CreateHumanoidModelFromUserId
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
ID pengguna untuk pengguna Roblox. (ID Pengguna adalah nomor dalam profil pengguna misalnya www.roblox.com/users/1/profile).
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.
game.Players:CreateHumanoidModelFromUserId(1).Parent = game.Workspace
GetBanHistoryAsync
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
Memberikan nilai
Lihat BanHistoryPages untuk referensi pengembalian.
GetCharacterAppearanceInfoAsync
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
The * iPad dari pemain yang ditentukan.
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?
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
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
ID pengguna pemain yang ditentukan.
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.
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
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
ID pakaian untuk which HumanoidDescription dicari.
Memberikan nilai
Deskripsi Humanoid diinisialisasi dengan spesifikasi untuk outfitId yang dikirimkan
Contoh Kode
Shows how to get the HumanoidDescription for bundle 799 (Fishman).
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
Kembalikan Deskripsi Humanoid yang menentukan semua yang dilengkapi untuk avatar pengguna yang ditentukan oleh userId yang ditransmisikan.Juga termasuk skala dan warna tubuh.
Parameter
ID pengguna untuk pengguna Roblox. (ID Pengguna adalah nomor dalam profil pengguna misalnya www.roblox.com/users/1/profile).
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.
game.Players:CreateHumanoidModelFromDescription(
game.Players:GetHumanoidDescriptionFromUserId(1),
Enum.HumanoidRigType.R15
).Parent =
game.Workspace
GetNameFromUserIdAsync
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
The Player.UserId dari pemain yang ditentukan.
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.
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.
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
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
Nama pengguna pemain yang ditentukan.
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.
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.
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
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
The Player.UserId dari pemain yang ditentukan.
A Enum.ThumbnailType menjelaskan jenis thumbnail.
A Enum.ThumbnailSize menentukan ukuran thumbnail.
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().
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
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
<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 |
---|
Memberikan nilai
Contoh Kode
The following un-bans a user, as well as another unrelated account with UserId 789.
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
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.
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:
- MarketplaceService:PromptPremiumPurchase() , digunakan untuk meminta pengguna untuk membeli Premium
- MarketplaceService.PromptPremiumPurchaseFinished , terbakar saat UI pembelian Premium ditutup
Parameter
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.
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
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:
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
Pengguna yang status langganannya telah berubah.
ID dari langganan dengan perubahan status.