Players
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Özet
Özellikler
Yasaklama API'sini oluşturan üç Players yöntemini etkinleştirir veya devre dışı bırakır (BanAsync() , UnbanAsync() ve GetBanHistoryAsync() )Bu özellik kodlanabilir değildir ve yalnızca Studio'da değiştirilebilir.
Balon sohbetinin etkin olup olmadığını gösterir. Players:SetChatStyle() yöntemi ile ayarlanır.
characters otomatik olarak yeniden canlanıp canlanmayacağını gösterir.
Klasik sohbetin etkin olup olmadığını gösterir; Players:SetChatStyle() yöntemi tarafından ayarlanır.
Player için çalışan LocalScript .
Bir sunucuda olabilecek maksimum oyuncu sayısı.
Bir sunucu için tercih edilen oyuncu sayısı.
Oyuncunun karakterinin yeniden doğması için gereken süreyi kontrol eder.
Yöntemler
Yerel oyuncunun verilen mesaja sohbet etmesini sağlar.
Oyun içindeyse verilen Player ile döndürür UserId eğer oyundaysa.
Verilen durumeşleşen Player döndürür, eğer biri bulunamıyorsa Player.Character veya bulunamıyorsa nil.
Mevcut olarak bağlı tüm Player nesnelerin bir tablosunu döndürür.
BubbleChat ve ClassicChat'in kullanılıp kullanılmadığını ayarlar ve TakımChat ve Chat ne yapması gerektiğini söyler.
Yerel oyuncu, sadece aynı takımdaki kullanıcılar tarafından görülebilecek verilen mesajı sohbet eder.
Kullanıcıları deneyiminizden yasaklar, süreyi, sebebi, yasağın tüm evrene mi yoksa sadece mevcut dünyami uygulandığını ve daha fazlasını belirtme seçenekleriyle.Bu yöntem, Studio'da değiştirebileceğiniz Players.BanningEnabled özelliği tarafından etkinleştirilmiş ve devre dışı bırakılmıştır.
- CreateHumanoidModelFromDescription(description : HumanoidDescription,rigType : Enum.HumanoidRigType,assetTypeVerification : Enum.AssetTypeVerification):Model
Geçen HumanoidDescription'da belirtilen her şeyle donatılmış bir karakter Modeli döndürür ve rigType tarafından belirtilen R6 veya R15'tir.
Geçerli kullanıcı kimliği ile belirtilen kullanıcının avatarına eşleşmek için her şeyle donatılmış bir karakter Model kurulumu döndürür.
Deneyimin evrenindeki herhangi bir kullanıcının yasağını ve yasaklanma geçmişini alır.Bu yöntem, Studio'da değiştirebileceğiniz Players.BanningEnabled özelliği tarafından etkinleştirilmiş ve devre dışı bırakılmıştır.
Verilen kullanıcının karakter görünümü hakkında bilgi döndürür.
Verilen tüm oyuncunun arkadaşları için bilgi içeren bir FriendPages nesnesi döndürür.
Belirtilen bir kıyafet için HumanoidDescription'u döndürür, ki bu kıyafetin parçaları/renkleri/Animasyonları vb. ile ayarlanacaktır.
Geçerli iPad'de belirtilen kullanıcının avatarı için donatılan her şeyi tanımlayan bir HumanoidDescription döndürür.
Bir hesabın kullanıcı adı için Roblox web sitesine bir sorgu gönderir UserId .
Verilen kullanıcı adıyla bir hesabın userId için Roblox web sitesine bir sorgu gönderir.
- GetUserThumbnailAsync(userId : number,thumbnailType : Enum.ThumbnailType,thumbnailSize : Enum.ThumbnailSize):Tuple
Boyut ve yazverildiğinde bir oyuncunun küçük resminin içeriği URL'sini ve kullanıma hazır olup olmadığını tanımlayan bir mantık değeri döndürür.
Oyuncuları Players:BanAsync() veya Kullanıcı Sınırları Açık Bulut API'sinden yasaklayanların yasağını kaldırın.Bu yöntem, Studio'da değiştirebileceğiniz Players.BanningEnabled özelliği tarafından etkinleştirilmiş ve devre dışı bırakılmıştır.
Etkinlikler
Bir oyuncu oyuna girdiğinde ateş eder.
Oyun sunucusu bir oyuncunun üyeliğinin değiştiğini tanıdığında ateş eder.
Bir oyuncu oyundan ayrılmak üzere olduğunda ateş eder.
Oyun sunucusu, belirli bir abonelik için kullanıcının durumunun değiştiğini tanıdığında ateş eder.
Özellikler
BanningEnabled
Yasaklama API'sini oluşturan üç Players yöntemini etkinleştirir veya devre dışı bırakır (BanAsync() , UnbanAsync() ve GetBanHistoryAsync() )Bu özellik kodlanabilir değildir ve yalnızca Studio'da değiştirilebilir.
BubbleChat
Bu özellik, balon sohbetinin etkin olup olmadığını gösterir. Players:SetChatStyle() yöntemi kullanılarak Enum.ChatStyle enumerasyonu ile ayarlanır.
Bu sohbet modu etkinleştirildiğinde, oyun sohbet kullanıcı arayüzünü ekranın sol üst kısmındaki gösterir.
Diğer iki sohbet modu var, Players.ClassicChat ve her ikisi de klasik ve balon sohbeti etkinleştirilen bir sohbet modu.
CharacterAutoLoads
Bu özellik, characters 'nin otomatik olarak yeniden doğup doğmayacağını gösterir. Varsayılan değer true'dir.
Bu özellik devre dışı bırakıldığında (yanlış), oyuncu characters , oyuncular deneyime katıldığında her Player:LoadCharacter() için Player fonksiyonu çağrılana kadar oluşmayacaktır, oyuncular deneyime katıldığında da dahil.
Bu, oyuncuların sınırlı hayatları olduğu deneyimlerde yararlı olabilir, örneğin oyuncular bir oyun turu bitene kadar yeniden doğmayana kadar rekabetçi oyunlarda.
Kod Örnekleri
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
Klasik sohbetin etkin olup olmadığını gösterir. Bu özellik, Players:SetChatStyle() yöntemi kullanılarak Enum.ChatStyle enum tarafından ayarlanır.
Bu sohbet modu etkinleştirildiğinde, oyun gönderenin başının üzerinde bir balon içinde sohbetleri görüntüler.
Diğer iki sohbet modu var, Players.BubbleChat ve her ikisi de klasik ve balon sohbeti etkinleştirilen bir sohbet modu.
LocalPlayer
Bu okuma-sadece özelliği, deneyimi yürüten Player müşteriye işaret eder.
Bu özellik yalnızca sunucuüzerinde çalıştıkları için LocalScripts ve ModuleScripts gerektirenler için tanımlanır, çünkü onlar tarafından gerekli.Sunucu üzerinde, Script nesnelerin kodunu çalıştırdığı, bu özellik nil dir.
MaxPlayers
Bu özellik, bir sunucuda olabilecek maksimum oyuncu sayısını belirler.Bu özellik yalnızca Yaratıcı Panosu üzerindeki belirli bir dünyaayarları veya Oyun Ayarları aracılığıyla ayarlanabilir.
PreferredPlayers
Bu özellik, Roblox'un maç yapıcısının sunucuları dolduracağı oyuncu sayısını gösterir.Bu sayı, deneyim tarafından desteklenen maksimum oyuncu sayısından daha az olacaktır ( Players.MaxPlayers ).
RespawnTime
Bu özellik, bir oyuncunun Players.CharacterAutoLoads gerçek olduğunda yeniden doğması için gereken süreyi, saniyelerle kontrol eder.Varsayılan olarak 5.0 saniye.
Deneyim türüne dayalı olarak yeniden doğmaya ne kadar süre gerektiğini değiştirmek istediğinizde faydalıdır, ancak oyuncuları tek başına ele almak istemezsiniz.
Bu özellik bir içinde ayarlanabilir olmasına rağmen, Studio'nun Gezgini penceresinde doğrudan ayarlayabilirsiniz.
UseStrafingAnimations
Yöntemler
Chat
Bu işlev, yerel oyuncunun verilen mesajı sohbet etmesini sağlar.Bu öğe korunduğundan, bir Script veya LocalScript içinde kullanmaya çalışmak bir hata verecektir.
Bunun yerine, özel bir sohbet sistemi veya sohbete erişim gerektiren bir sistem oluştururken, Chat servisinin Chat:Chat() fonksiyonunu yerine kullanabilirsiniz.
Parametreler
Mesaj sohbet edildi.
Dönüşler
Kod Örnekleri
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
Bu işlev, verilen KullanıcıID'ye uyan birinin her ını içinde arar.Eğer böyle bir oyuncu mevcut değilse, basitçe nil döndürür.Aşağıdaki işlevle eşdeğerdir:
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
Bu yöntem, satıcının bir geliştirici ürününü satın alanı bulmak için MarketplaceService.ProcessReceipt kullanarak geliştirici ürününün satıcısını bulmak için yararlıdır, ki bunun içinde satıcının KullanıcıId'si ve Oyuncu nesnesinin referansı yoktur.Çoğu oyun, ürünleri vermek için oyuncuya bir referans gerektirecektir.
Parametreler
Oyuncunun belirtilmesi. Player.UserId Oyuncunun belirtilmesi.
Dönüşler
Kod Örnekleri
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
Bu işlev, verilen Player ile ilişkili olan Player.Character veya nil bulunamıyorsa geri döner.Aşağıdaki işlevle eşdeğerdir:
local function getPlayerFromCharacter(character)
for _, player in game:GetService("Players"):GetPlayers() do
if player.Character == character then
return player
end
end
end
Bu yöntem genellikle oyuncunun karakterindeki bir olay ateşlendiğinde kullanılır (örneğin onların Class.Humanoid``Class.Humanoid.Died|dying ).Böyle bir olay doğrudan Oyuncu nesnesini referanslamayabilir, ancak bu yöntem kolay erişim sağlar.Bu işlevin tersi, bir oyuncunun karakterini almak olarak tanımlanabilir.Bunu yapmak için, sadece Karakter özelliğine erişin.
Parametreler
Oyuncudan almak istediğiniz bir karakter örneği.
Dönüşler
Kod Örnekleri
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
Bu yöntem, şu anda bağlı tüm Player nesnelerin bir tablosunu döndürür.Aynı şekilde çalışır Instance:GetChildren() sadece Player nesnelerini döndürür, ancak sadece Players altında bulunan nesneleri döndürür.Bir for döngüsü ile kullanıldığında, bir oyundaki tüm oyuncuları dolaşmak için yararlıdır.
local Players = game:GetService("Players")for _, player in Players:GetPlayers() doprint(player.Name)end
Players.PlayerAdded 'ye bağlanan senaryolar genellikle oyuna bağlanan her oyuncuyu işlemeye çalışıyor.Bu yöntem, çalışmayan zaten bağlı oyuncuları döngüye sokmak için yararlıdır PlayerAdded .Bu yöntemi kullanmak, hiçbir oyuncunun kaçırılmadığını garanti eder!
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)
Dönüşler
Sunucudaki tüm oyuncuları içeren bir sunucu.
Kod Örnekleri
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
Bu işlev, BubbleChat ve ClassicChat'in kullanılıp kullanılmadığını ayarlar ve TakımChat ve Sohbet'e Enum.ChatStyle enum kullanarak ne yapmaları gerektiğini söyler.Bu öğe korunduğundan, bir Script veya LocalScript içinde kullanmaya çalışmak bir hata verecektir.
Bu işlev, sohbet modu oyun tarafından ayarlanırken içeride kullanılır.
Parametreler
Belirtilen sohbet stili ayarlanıyor.
Dönüşler
Kod Örnekleri
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
Bu işlev, Players.LocalPlayer sohbetin verilen mesajı yapar, ki bu sadece aynı takımdaki kullanıcılar tarafından görülebilir.Bu öğe korunduğundan, bir Script veya LocalScript içinde kullanmaya çalışmak bir hata verecektir.
Bu işlev, Players.LocalPlayer ekibine bir mesaj gönderdiğinde içeriden kullanılır.
Parametreler
Mesaj sohbet ediliyor.
Dönüşler
Kod Örnekleri
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
The Players:BanAsync() yöntemi, deneyiminizin yönergelerini ihlal eden kullanıcıları kolayca yasaklayabilmenizi sağlar.Yasak süresini belirleyebilir, şüpheli alternatif hesaplara yayılmasına izin veren yasağı etkinleştirebilir ve Kullanım İpuçları 'ya uygun olarak yasaklanmış kullanıcıya bir mesaj sağlayabilirsiniz.Deneyim kurallarınızı da tüm kullanıcılara erişebilecek bir yere yayınlamalı ve itiraz etmeleri için bir yol sağlamalısınız.Bu yöntem, Studio'da değiştirebileceğiniz Players.BanningEnabled özelliği tarafından etkinleştirilmiş ve devre dışı bırakılmıştır.
Yasaklama ve Mesajlaşma
Yasaklanmış kullanıcılar derhal tahliye edilecek ve deneyimlerinize yeniden katılmaları engellenecek.Yasaklarında ve senin DisplayReason kaldığı süre gösteren bir hata modu ile sunulacaklar.Roblox'un arka plan sistemleri, belirttiğiniz dünyatüm sunuculardan oyuncuları kovacaktır.DisplayReason maksimum 400 karakter uzunluğuna sahip olabilir ve bir metin filtresine tabidir.Kabul edilebilir mod metni hakkında daha fazla bilgi için, yasak mesajlaşma bakın.
Yerler ve Evren
Varsayılan olarak, yasaklar bu evrenin herhangi bir yerine genişletilir.Yasağı sadece bu API'nin çağrıldığı yere sınırlandırmak için, ApplyToUniverse 'yi false 'ya yapılandırın.Ancak, bir kullanıcı evrenin başlangıç yerinde yasaklanırsa, evrenin bütününden kullanıcının dışlanması etkili olur, evrensel bir yasağın var olup olmadığına bakılmaksızın.
Alternatif Hesaplar
Kullanıcılar genellikle alternatif hesaplar veya alt hesaplar olarak bilinen çok sayıda farklı hesap altında oynarlar, bazen hesap yasağını atlamak için kullanılırlar.Yasaklanmış kullanıcıları dışarıda tutmanıza yardımcı olmak için, bu API'nin varsayılan davranışı, tahmin edilen alt hesaplarından herhangi birine yasakladığınız kaynak hesabından tüm yasakları yayacaktır.Ban propagasyonlarını alt hesaplara kapatabilirsiniz, bunun için ExcludeAltAccounts ile true 'yi yapılandırabilirsiniz.
Yasak Süresi
Tüm ihlaller aynı değildir, bu nedenle tüm yasaklar aynı uzunlukta olmak zorunda değildir.Bu API, yasağın süresini, saniyeler içinde, Duration alanıyla yapılandırmanıza izin verir.Kalıcı bir yasağı belirtmek için, alanı -1 olarak ayarlayın.Ayrıca, Players:GetBanHistoryAsync().Örneğin, yasak sayısını, önceki yasakların süresini veya PrivateReason altında kaydettiğiniz notların mantığını incelemek isteyebilirsiniz, ki bu 1000 karaktere kadar olabilir ve metin filtrelenmiş değildir.PrivateReason notlar asla müşteriyle paylaşılmaz ve saldırganlardan güvenli olarak kabul edilebilir.
Hatalar ve Hızlandırma
Bu yöntem, sınırlamaya tabi olan ve başarısız olabilecek arka plandaki HTTP çağrısını çağırır.Bu API'yi birden fazla UserId ile çağırıyorsanız, bu yöntem her bir kimlik için HTTP çağrısı yapmaya çalışacaktır.Ardından herhangi bir hata mesajını birleştirir ve onları virgülle ayrılmış bir listeden katılır.Örneğin, bu yöntem beş kullanıcı için çağrılır ve UserIds 2 ve 4 ile isteyenler için istekler başarısız olursa, aşağıdaki hata mesajı görünür:
HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception
Mesaj daima bir HTTP hatası ise failure for UserId {} içerecektir.
Müşteri Tarafı Gereksinimi
Kullanıcıları yasaklama ile ilişkili riskler nedeniyle, bu yöntem sadece arka plandaki deneyim sunucusuna (client-side çağrılar bir hata ile sonuçlanacaktır) çağrılabilir.Bu API'yi Studio'da, işbirliği yaratımsırasında veya bir takım testi sırasında test edebilirsiniz, ancak yasaklar üretime uygulanmayacaktır.
Bu API, Kullanıcı Sınırları Açık Bulut API'si kullanır. Bu API'leri üçüncü taraf uygulamalarında yasaklarınızı yönetmek için kullanabileceksiniz.
Parametreler
UserIds (gerekli; dizi) — Yasaklanacak oyuncuların UserIds dizisi. Maksimum boyut 50 dir.
ApplyToUniverse (isteğe bağlı; mantıksal) — Ban deneyim evreni içindeki tüm yerlere yayılır mı? Varsayılan değer true dir.
Duration (gerekli; bütün sayı) — Yasağın süresi, saniyeler içinde.Kalıcı yasakların değeri -1 olmalıdır.0 ve tüm diğer negatif değerler geçersizdir.
DisplayReason (gerekli; dizi) — Bir deneyime katılmaya çalışırken ve başarısız olurken kullanıcılara gösterilecek mesaj.Maksimum dize uzunluğu 400 dir.
PrivateReason (gerekli; dizi) — Kullanıcının yasak geçmişini sorgularken döndürülecek iç mesaj. Maksimum dize uzunluğu 1000 dir.
ExcludeAltAccounts (isteğe bağlı; mantıksal) — true , Roblox alternatif hesapları yasaklamaya çalışmaz. Varsayılan değer false dir.
Dönüşler
Kod Örnekleri
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
Geçen HumanoidDescription'da belirtilen her şeyle donatılmış bir karakter Modeli döndürür ve rigType tarafından belirtilen R6 veya R15'tir.
Parametreler
Geri döndürülen karakterin görünümünü belirtir.
Döndürülen karakterin R6 veya R15 olup olmayacağını belirtir.
Varlık türü doğrulaması, bu işlevin modelleri yükleyip yüklemeyeceğini belirler (Kataloğa dahil olmayan varlıkları yüklemeyi istemediğiniz sürece hep aynı kalmalıdır).
Dönüşler
Bir Humanoid karakter modeli.
Kod Örnekleri
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
Geçerli kullanıcı kimliği ile belirtilen kullanıcının avatarına eşleşmek için her şeyle donatılmış bir karakter Model kurulumu döndürür.Buna, o karakterin şu anda R6 veya R15 olup olmadığı da dahildir.
Parametreler
Roblox kullanıcısı için kullanıcı kimliği. (Kullanıcı Kimliği, kullanıcının profilindeki sayıdır, örneğin www.roblox.com/users/1/profile).
Dönüşler
Bir Humanoid karakter modeli.
Kod Örnekleri
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
Deneyimin evrenindeki herhangi bir kullanıcının yasağını ve yasaklanma geçmişini alır.Bu yöntem, BanHistoryPages 'den miras alan bir örnek döndürür Pages .Bu yöntem, Studio'da değiştirebileceğiniz Players.BanningEnabled özelliği tarafından etkinleştirilmiş ve devre dışı bırakılmıştır.
Bu işlev çağrısı yalnızca üretim oyun sunucularında başarılı olacak ve klient cihazlarda veya Studio'da olmayacak.
Bu API, Kullanıcı Sınırları Açık Bulut API'si kullanır. Bu API'leri üçüncü taraf uygulamalarında yasaklarınızı yönetmek için kullanabileceksiniz.
Parametreler
Dönüşler
Geri referans için BanHistoryPages bakın.
GetCharacterAppearanceInfoAsync
Bu işlev, bir oyuncunun avatarı hakkında bilgiyi (ekipmanı görmezden teçhizat) Roblox web sitesinde bir sözlük şeklinde döndürür.Bu, bu yöntem tarafından tanımlanan varlıkları yükleyen GetCharacterAppearanceAsync ile karıştırılmamalıdır, aslında bu yöntem tarafından tanımlanan varlıklar yüklenir.Oyuncunun avatarında kullanılan varlıkları yüklemek için InsertService:LoadAsset() kullanabilirsiniz.Geri döndürülen sözlüğün yapısı şöyledir:
<th>Tür</th><th>Açıklama</th></tr></thead><tr><td><code>kaynaklar</code></td><td>masa (aşağıya bakın)</td><td>Takılan varlıkları tanımlar (şapkalar, vücut parçaları vb)</td></tr><tr><td><code>bodyColors vücut renkleri</code></td><td>masa (aşağıya bakın)</td><td>Her bir ekstrem için BrickColor değerlerini tanımlar</td></tr><tr><td><code>vücutRenk3s</code></td><td>masa (aşağıya bakın)</td><td>VücutRenkleri ile mükemmel bir şekilde eşleşmeyen her bacak için Color3 örneğini tanımlar</td></tr><tr><td><code>defaultPantsApplied varsayılan Pantolonlar uygulandı</code></td><td>booli̇çindekilernasıl yapılırbooli̇çindekilernasıl yapılır</td><td>Varsayılan pantolonların uygulanıp uygulanmadığını tanımlar</td></tr><tr><td><code>Varsayılan gömlek uygulandı</code></td><td>booli̇çindekilernasıl yapılırbooli̇çindekilernasıl yapılır</td><td>Varsayılan gömleğin uygulanıp uygulanmadığını tanımlar</td></tr><tr><td><code>ifadeler</code></td><td>masa (aşağıya bakın)</td><td>Takılan ifade animasyonlarını tanımlar</td></tr><tr><td><code>oyuncuAvatarTipi</code></td><td>dizi</td><td>Ya "R15" veya "R6"</td></tr><tr><td><code>ölçekler</code></td><td>masa (aşağıya bakın)</td><td>Çeşitli vücut ölçekleme faktörlerini tanımlar</td></tr>
Adı |
---|
Varlıklar Alt Tablosu
The assets tablosu, oyuncunun şu anda donatılan varlıkları tanımlayan aşağıdaki anahtarları içeren bir dizi tablodur:
<th>Tür</th><th>Açıklama</th></tr></thead><tr><td><code>id</code></td><td>sayı</td><td>Takılan varlığın varlık kimliği</td></tr><tr><td><code>varlıkTürü</code></td><td>tablo</td><td>Bir tablo ile <code>isim</code> ve <code>kimlik</code> alanları, her biri donatılan varlık türünü tanımlayan ("Şapka", "Yüz" vb.)</td></tr><tr><td><code>adı</code></td><td>dizi</td><td>Takılan varlığın adı</td></tr>
Adı |
---|
Ölçekler Alt Tablosu
scales tablosunun aşağıdaki anahtarları vardır, her biri bir Humanoid ölçekleme özelliğine karşılık gelen bir sayıdır: bodyType , head , height , proportion , depth , width .
Vücut Renkleri Alt Masası
The bodyColors tablosunun aşağıdaki anahtarları vardır, her biri bir BrickColor kimlik numarasına karşılık gelen bir sayıdır ve BrickColor.new(id) ile kullanılabilir: leftArmColorId , torsoColorId , rightArmColorId , headColorId , leftLegColorId , rightLegColorId.
Parametreler
Belirtilen oyuncunun * uidsi.
Dönüşler
Belirli bir kullanıcının karakter görünümüyle ilgili bilgileri içeren bir sözlük.
Kod Örnekleri
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
GetFriends Players işlevi, verilen kullanıcının arkadaşlarına ilişkin bilgileri içeren bir FriendPages nesne döndürür.FriendPages nesnesinin içindeki öğeler aşağıdaki alanlara sahip tablolardır:
<th>Tür</th><th>Açıklama</th></tr></thead><tr><td>Id</td><td>int64</td><td>arkadaşKullanıcı Kimliği</td></tr><tr><td>Kullanıcı adı</td><td>dizi</td><td>arkadaşkullanıcı adı</td></tr><tr><td>Görüntüleme Adı</td><td>dizi</td><td>Arkadaşın <code>Class.Player.DisplayName|display adı</code> 'arkadaş.</td></tr>
Adı |
---|
Tüm bir oyuncunun arkadaşlarını döndürmenin kolay bir yolu için kod örneklerini görün.
Parametreler
Oyuncunun tanımlanan kullanıcı kimliği.
Dönüşler
Kod Örnekleri
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
Belirtilen bir kıyafetId için HumanoidDescription'u döndürür, ki bu kıyafetin parçaları/renkleri/Animasyonları vb. ile ayarlanacaktır.Bir kıyafet bir kullanıcı tarafından oluşturulan bir kıyafet olabilir veya Roblox tarafından oluşturulan bir paket için giysi olabilir.
Parametreler
HumanoidDescription için aranan kıyafetin kimliği.
Dönüşler
Geçerli kıyafetId için özellik ile başlatılan insansız tanım.
Kod Örnekleri
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
Geçerli iPad'de belirtilen kullanıcının avatarı için donatılan her şeyi tanımlayan bir HumanoidDescription döndürür.Ayrıca ölçekleri ve vücut renklerini de içerir.
Parametreler
Roblox kullanıcısı için kullanıcı kimliği. (Kullanıcı Kimliği, kullanıcının profilindeki sayıdır, örneğin www.roblox.com/users/1/profile).
Dönüşler
Kullanıcının avatar özellikleriyle birlikte gönderilen insansız tanım. HumanoidDescription initialized with the passed in user's avatar specification.
Kod Örnekleri
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
GetNameFromUserIdAsync Players işlevi, Roblox web sitesine verilen UserId hesabın kullanıcı adının ne olduğunu soran bir sorgu gönderecektir.
Bu yöntem, verilen Kullanıcı Kimliği ile hiçbir hesap bulunmadığında hata verir.Böyle bir hesabın var olduğundan emin değilseniz, bu işlev için çağrıları pcall() ile sarmanız önerilir.Ek olarak, aynı Kullanıcı Kimliği ile gelecekteki çağrıları hızlı yapmak için sonuçları manuel olarak önbelleğe alabilirsiniz.Daha fazla bilgi edinmek için kod örneklerini görün.
Parametreler
Oyuncunun belirtilmesi. Player.UserId Oyuncunun belirtilmesi.
Dönüşler
Belirtilen Player.UserId ile bir kullanıcının adı.
Kod Örnekleri
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
Bu işlev, Roblox web sitesine bir sorgu gönderecek ve verilen adıyla hesabın ne olduğunu soracak.
Bu yöntem, verilen kullanıcı adıyla hiçbir hesap bulunmadığında hata verir.Böyle bir hesabın var olduğundan emin değilseniz, bu işlev için çağrıları pcall() ile sarmanız önerilir.Ek olarak, aynı kullanıcı adıyla gelecekteki çağrıları hızlı bir şekilde yapmak için sonuçları manuel olarak önbelleğe alabilirsiniz.Daha fazla bilgi edinmek için kod örneklerini görün.
Parametreler
Oyuncunun belirtilen kullanıcı adı.
Dönüşler
Adı belirtilen bir kullanıcının Player.UserId 'si.
Kod Örnekleri
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
Bu işlev, oyuncunun avatarının verdiği UserId içeriğin URL'sini, istediğin görüntü boyutunu bir Enum.ThumbnailSize enum ve istediğin türü bir Enum.ThumbnailType enum olarak döndürür.Ayrıca, görüntünün kullanıma hazır olup olmadığını tanımlayan bir boolean döndürür.
En sık, bu yöntem bir deneyimde kullanıcı avatar resimlerini görüntülemek için ImageLabel.Image veya Decal.Texture ile kullanılır.
Parametreler
Oyuncunun belirtilmesi. Player.UserId Oyuncunun belirtilmesi.
Bir Enum.ThumbnailType küçük resimtürünü tanımlayan.
Bir Enum.ThumbnailSize küçük küçük resimboyutunu belirten.
Dönüşler
Belirtilen parametrelere dayalı bir kullanıcı mini resminin içeriği URL'si ve görüntünün kullanıma hazır olup olmadığını tanımlayan bir bool değeri içeren bir tupl. A tuple containing the content URL of a user thumbnail based on the specified parameters, and a bool describing if the image is ready to be used or not.
Kod Örnekleri
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
Oyuncuları Players:BanAsync() veya Kullanıcı Sınırları Açık Bulut API 'den yasaklayan yasakları kaldır.Bu yöntem, Studio'da değiştirebileceğiniz Players.BanningEnabled özelliği tarafından etkinleştirilmiş ve devre dışı bırakılmıştır.
Like Players:BanAsync() gibi, bu yöntem size toplu olarak kullanıcıların yasağını kaldırmasına izin veren bir config sözlük alır.Bu, yasaklanmamış kullanıcıları ve onların yasaklandıkları alanı yapılandırır.
Yasakların kaldırılması sadece aynı ApplyToUniverse alanıyla yapılan yasaklara etkili olacaktır.Örneğin, ile ayarlanmış bir yasağın kaldırılması, ile ayarlanmış önceki bir yasağı geçersiz kılmayacaktır.Diğer bir deyişle, bir evren seviyesi yasağı bir yer seviyesi yasağını geçersiz kılmayacaktır.Tersi de doğrudur.
Bu yöntem, sınırlandırılan ve başarısız olabilecek arka plandaki HTTP çağrısını çağırır.Bu API'yi çoklu Kullanıcı Kimliği ile çağırıyorsanız, bu yöntem her bir Kullanıcı Kimliği için bu HTTP çağrısını yapmaya çalışacaktır.Ardından herhangi bir hata mesajını birleştirir ve onları virgülle ayrılmış bir listeden katılır.Örneğin, bu yöntem beş UserIds : {1, 2, 3, 4, 5} için çağrılırsa ve kullanıcılar 2 ve 4 için istekler başarısız olursa, aşağıdaki hata mesajı görünür: HTTP failure for UserId 2: Timedout, HTTP 504 (Service unavailable) failure for UserId 4: Service exception. Mesaj daima HTTP hatası olduğunda failure for UserId {} içerir.Her ikisi de geçerli ve geçersiz Kullanıcı Kimlikleri olarak geçerse, bu davranış tanımlanmaz, yanibir UserId pozitif bir sayı olmayan, çünkü bazı ağ istekleri tüm giriş doğrulanana kadar başarılı olabilir.
Kullanıcıları yasaklama ile ilişkili riskler nedeniyle, bu yöntem sadece arka plandaki oyun sunucusunda çağrılabilir.Müşteri tarafı çağrıları bir hata sonucu olacaktır.Bu API'yi Studio, Takım Oluşturma ve Takım Testi'nde test edebilirsiniz, ancak yasaklar üretime uygulanmayacaktır.Bu işlev çağrısı yalnızca üretim oyun sunucularında yasaklama istekleri denemeye çalışacak ve Studio testinde değil.Ancak, tüm giriş doğrulama adımları hala Studio'da çalışacaktır.
Bu API, Kullanıcı Sınırları Açık Bulut API'si kullanır. Bu API'leri üçüncü taraf uygulamalarında yasaklarınızı yönetmek için kullanabileceksiniz.
Parametreler
<th>Tür</th><th>Açıklama</th></tr></thead><tbody><tr><td><code>Kullanıcı Kimlikleri</code></td><td>arrayyazım tarihi: 2020-04-10</td><td>Deneyime (ler) zorla girilmesi gereken kullanıcı kimlikleri. Maksimum boyut <code>50</code> .</td></tr><tr><td><code>Evren'e Başvur</code></td><td>boşluklı</td><td>Bu evrenin tüm yerlerine yasağı yayar.</td></tr></tbody>
Adı |
---|
Dönüşler
Kod Örnekleri
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
Etkinlikler
PlayerAdded
Bu olay, bir oyuncu oyuna girdiğinde ateşlenir.Bir oyuncu bir oyuna katıldığında bir olay ateşlemek için kullanılır, örneğin oyuncunun kaydedilmiş GlobalDataStore verilerini yükleme.
Bu, oyuncunun oyundan ayrılmak üzere olduğunda ateşlenen Players.PlayerRemoving etkinliğinin yanında kullanılabilir.durum, yeni bir oyuncu her seferinde oyuna katılır veya oyundan ayrılırsa bir mesaj basmak istiyorsanız:
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)
Bir oyuncunun karakterinin oyundan eklenipya da kaldırıldığını izlemek istiyorsanız, bir oyuncu yeniden doğar veya ölür gibi, Player.CharacterAdded ve Player.CharacterRemoving fonksiyonlarını kullanabilirsiniz.
Bu etkinin Oynat modunda beklenen şekilde çalışmadığını unutmayın, çünkü oyuncu PlayerAdded 'a bağlanan kodları çalmadan önce oluşturuldu.Bu durumu ele almak ve oyuncunun bir oyuna girdikten sonra skriptin oyuna eklenmesi durumlarını ele almak için, bir oyuncunun girişini ele almak için çağırabileceğiniz bir onPlayerAdded() işlevi oluşturun, oyuncunun girişini ele almak.
Parametreler
Oyuna katılan oyuncunun bir örneği.
Kod Örnekleri
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
Bu olay, oyun sunucusu bir oyuncunun üyeliğinin değiştiğini tanıdığında ateşlenir.Bununla birlikte, sunucunun sadece Premium modu kapatıldıktan sonra üyeliği kontrol etmeye ve güncellemeye çalışacağını unutmayın sonra Premium modu kapatıldı.Dolayısıyla, oyun oynarken kullanıcının Premium satın aldığı durumları hesaba katmak için, hala onlara Premium satın almalarını istemeniz gerekir; bu, zaten yükseltildiklerini ve ardından modal'ı kapattıklarında oyun sunucusunun üyeliklerini güncelleyip bu olayı tetikleyeceğini gösterecektir.
Premium'u deneyiminize öğrenmek ve monetize etmek ve katılım tabanlı ödeme sistemiyle para kazanmak için, Katılım Temelli Ödemeleri görün.
Ayrıca bakın:
- MarketplaceService:PromptPremiumPurchase() , bir kullanıcıyı Premium satın almaya teşvik etmek için kullanılır
- MarketplaceService.PromptPremiumPurchaseFinished , Premium satın alma arayüzü kapandığında ateş eder
Parametreler
Kod Örnekleri
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
OyuncuKaldırma etkinliği, bir Player oyundan ayrılmadan hemen önce ateş eder.Bu olay, ChildRemoved 'nin yapacağı şeyden önce ateşlenir ve Players 'a biraz benzer şekilde davranır Instance.DescendantRemoving.Gerçek kaldırma öncesinde ateş olduğundan, bu olay bir Player ile oyuncu verilerini depolamak için kullanışlıdır GlobalDataStore.
Bu, oyunu bir oyuncu katıldığında ateşleyen Player.PlayerAdded etkinlik ile birlikte kullanılabilir.durum, yeni bir oyuncu oyuna katıldığında veya oyundan ayrıldığında her seferinde bir mesaj basmak için:
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)
Bir oyuncunun karakterinin oyundan eklenipya da kaldırıldığını izlemek istiyorsanız, bir oyuncu yeniden doğar veya ölür gibi, Player.CharacterAdded ve Player.CharacterRemoving fonksiyonlarını kullanabilirsiniz.
Parametreler
Oyundan ayrılan oyuncunun bir örneği.
Kod Örnekleri
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
Bu olay, oyun sunucusu belirli bir abonelik için kullanıcının durumunun değiştiğini algıladığında ateşlenir.Sunucunun sadece Abonelik Satın Alma modu kapatıldıktan sonra durumu kontrol etmeye ve güncellemeye çalıştığını unutmayın sonra .Oyun sırasında kullanıcının aboneliği dışında satın aldığı durumlarda hesaba katmak için, aboneliği satın almalarını hala istemeniz gerekir; uyarı, kullanıcının zaten abone olduğunu bildiren bir mesaj gösterir ve ardından modal'ı kapattıktan sonra oyun sunucusu abonelik durumunu günceller ve bu olayı tetikler.
Sadece sunucu kodları bu olayı alır notu.
Parametreler
Abonelik durumu değişen kullanıcı.
Durum değişikliği olan abone ID'si.