Bir kullanıcı bir deneyime katıldığında, Roblox onları veri modelinde bir Oyuncu olarak temsil eder.The Player nesnesi, kullanıcının deneyimler arasında evrensel olan bilgilerini içerir, örneğin kullanıcı adı, arkadaş listesi, kaydedilmiş avatar karakteri ve Roblox üyelik yaz, ayrıca kullanıcının deneyim arasında katılma ve deneyimden ayrılma sürecini etkileyen özellikler, yöntemler ve olaylar.
Players servisi bir deneyimdeki tüm Player örneklerini içerir.Her Player nesne deneyimde bir kullanıcıyı temsil eder ve kullanıcı deneyimini özelleştirmek için kullanabileceğiniz dört önemli konteyneri temsil eder: Backpack , StarterGear , PlayerGui ve PlayerScripts.
Hayat döngüsü
Müşteri ve sunucu tarafı kodları her ikisi de Players.PlayerAdded ve Players.PlayerRemoved etkinliklerine bağlanabilir ve bir Player nesnenin ömrüne yanıt olarak eylemler gerçekleştirebilir.Ayrıca Player.CharacterAdded , Player.CharacterRemoving ve Humanoid.Died olaylarına bağlanabilir ve karakter doğduğunda, yok edildiğinde ve öldüğünde oyunla ilgili eylemler gerçekleştirebilir.
Kullanıcıların katılması veya ayrılması sırasında veri almak ve kaydetmek gibi sunucu ile ilgili hizmetlere erişmek için kriptleri kullanın. Use Scripts to access server-related services, such as a data store to retrieve and save data when a user joins or leaves.Müşterinin yeni kullanıcıya bağlı oyun örnekleri oluşturmak ve kaldırmak gerekiyorsa, yeni kullanıcının istatistikleri için bir GUI görüntüsü gibi yeni kullanıcıya bağlı oyun örneklerini oluşturmak ve kaldırmak için Yerel Kodları kullanın.
Kullanıcı katılımı
Bir müşteri bir deneyime bağlandığında, ilişkili Player nesnesi hizmete Players kopyalanır.The Players.PlayerAdded deneyime katılan kullanıcıları temsil eder.Bazı örnek kullanım durumları, kullanıcı verilerini yükleme, takımları atama ve bir kullanıcının karakterinin kıyafetlerini değiştirme gibi içerir.The Players.PlayerAdded etkinliği, katılan kullanıcının Player nesnesini geçer, ki bunu diğer işlevler çağırırken, veri depolama ve RemoteEvent nesneler gibi kullanabilirsiniz.
Katılımda kullanıcı verilerini yükle
Bir kullanıcı bir deneyime katıldığında kullanıcının verilerini yüklemek için, bir Players.PlayerAdded etkinliğinde Script olayını kullanın.Aşağıdaki örnek Script etkinliği dinler ve kullanıcı kimliğini veri depolama anahtarı olarak kullanarak bir kullanıcının verilerini almaya çalışır.Kullu verileri başarıyla aldıktan sonra, kullanıcının ilerleme ve istatistiklerini yüklemeye kullanabilirsiniz.
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerAdded:Connect(function(player)
local userId = player.UserId
-- Veri depolama anahtarını oku
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- currentData ile daha fazla eylem yapın
end)
Kullanıcı ayrılıyor
Bir müşteri bir deneyimden ayrıldığında, sunucu ilişkili Player nesnesini Players hizmetinden yok eder.The Players.PlayerRemoving etkinliği, deneyimi terk eden kullanıcıları temsil eder.Bazı örnek kullanım durumları, kullanıcı verilerini kurtarmayı, puan tablosundan istatistiklerini kaldırmayı ve evleri gibi modellerinin herhangi birini yok etmeyi içerir.The Players.PlayerRemoving etkinliği, ayrılan kullanıcının Player nesnesini geçer, ki bunu diğer işlevler çağırırken, veri depolama ve RemoteEvent nesneler gibi kullanabilirsiniz.
Etkinliğin Player.PlayerRemoving adlandırıldığını fark edin, Player.PlayerRemoved değil, çünkü "kaldırıldı" ile Player nesnesinin zaten kaldırıldığı ve dolayısıyla senaryolara erişilemediği anlamına geliyor.
Kullanıcı verilerini ayrılırken kaydetme
Bir kullanıcının deneyimi terk ettiğinde kullanıcının verilerini kaydetmek için, bir Players.PlayerRemoving etkinliğinde Script olayını kullanın.Aşağıdaki örnek Script etkinliği dinler ve kullanıcı kimliğini veri depolama anahtarı olarak kullanarak bir kullanıcının verilerini kaydetmeye çalışır.
ServerScriptService'teki senaryo
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- oyuncuveri durumunu oyunda alın
local currentData = getCurrentData(player)
-- Veri depolarına mağaza
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
Karakter üretimi
Bir kullanıcının Player.Character modeli avatarını temsil eder.Varsayılan olarak, Player.CharacterAutoLoads doğrudur ve bir kullanıcının karakter modeli otomatik olarak deneyime katıldığında oluşur.Eğer Player.CharacterAutoLoads yanlışsa, karakteri manuel olarak oluşturmak için Player:LoadCharacter() 'yi aramanız gerekir.
Bir kullanıcının Player.Character doğması sırasında, YerelScriptler ve YerelScriptler StarterCharacterScripts karakter modeline ve Player.CharacterAdded etkinliği ateşlenir.The Player.CharacterAdded etkinliği, yeni karakter modelini herhangi bir etkinlik dinleyicisine geçer, ki bunu kullanarak karakterin Humanoid nesnesini bulabilir ve davranışını değiştirebilirsiniz.Örneğin, avatarın kıyafetini değiştirmek için Humanoid:ApplyDescription() ve avatarın hareketini değiştirmek için Humanoid.WalkSpeed veya Humanoid.JumpHeight kullanabilirsiniz.
Karakter yok ediliyor
oyuncuHumanoid öldüğünde, vücut parçaları yere düşer ve Humanoid.Died etkinliği ateşlenir.Sunucu, Players.Respawntime özelliğinin belirlediği süre sonra karakter modelini ve içindeki herhangi bir kodu otomatik olarak kaldırır.Karakterle ilişkili diğer nesneleri sıfırlamak için Player.CharacterRemoving etkinliğini kullanabilirsiniz, örneğin sürdükleri araçların ağ sahipliği.
Oyuncu ölümlerini say
Bir öldürme için puanlama ele almak veya özel bir ragdoll modeli oluşturmak için Humanoid.Died etkinliğini kullanabilirsiniz.Aşağıdaki Script , her kullanıcının karakter modelini almak için Player.CharacterAdded 'ye bağlanır ve ardından karakterin Humanoid nesnesine bağlanır.Humanoid'in Humanoid.Died etkinliği ateşlendiğinde, kod kullanıcının humanoid'inin öldüğü sayıyı artırır ve bu sayıyı çıkarır.
ServerScriptService'teki senaryo
game:GetService("Players").PlayerAdded:Connect(function(player)
local deaths = 0
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
deaths += 1
print(player.Name .. " death count: " .. deaths)
end)
end)
end)
Kullanıcıları yasakla
Deneyimlerinizde saygı ve adil oyunu sağlamak için, deneyim kurallarınızı ve topluluk yönergelerini ihlal eden kullanıcıları yasaklayabilirsiniz.Yasak sürelerini, yasak mesajları ve hatta potansiyel alternatif hesaplara yasakları genişletebilirsiniz.Bu özellikkullanırken, yasaklama ve mesajlaşma için yönergelere de uymanız gerekir.
Uygulama ve kullanım talimatları için, bakın Players.BanAsync .
Yasaklama yönergeleri
Deneyiminizde yasaklar uygularken, aşağıdaki yönergelere uyun:
- Deneyim kuralları Roblox'un Topluluk Standartları ve Kullanım Koşulları ile çelişmemelidir.
- Örneğin, birisini cinsiyetleri nedeniyle dışlayan bir deneyim kuralı oluşturamazsınız, çünkü bu Roblox'un Ayrımcılık, Sözlü Saldırı ve Nefret Konuşması politikasına aykırıdır.
- Yaratıcılar, deneyim kurallarını tüm kullanıcılara erişebilecek bir yerde açıkça belirtmelidir.
- Yaratıcılar deneyim kurallarını adil bir şekilde uygulamalı ve belirli kullanıcılara rastgele hedeflememelidir.
- Kullanıcılar, yasağının yanlış olduğuna inanıyorlarsa doğrudan yaratıcılara başvurabilirler.
- Kullanıcı, yaratıcının deneyim kurallarının veya kurallarının ihlali ile topluluk standartlarının ihlali olduğuna inanmazsa Roblox bu itirazları arabulamayacaktır, Topluluk Standartları .
- Roblox, bir yaratıcının deneyim kurallarının veya kurallarının ihlal ettiğine dair bir sebep varsa bir deneyimi moderasyon edebilir, Topluluk Standartları ihlal ediyor.
Mesaj yönergeleri
Bir kullanıcı yasaklandığında, yasak süresi ve sebebi gibi bilgileri gösteren bir hata modu alırlar.Metin filtrelenmiş mesajda, Roblox'un Topluluk Standartları 'na uyduğunuz sürece, başvuru veya iletişim bilgileri gibi ek bilgileri dahil edebilirsiniz.
Örneğin, yasaklama mesajlarınızda, marka isimlerini ve platformları referans olarak kullanmanıza izin verilir:
- “Grup/deneyim sayfamdaki Discord'u ziyaret et”
- “Twitter'da veya X'te mesaj gönderin”
Kişisel bilgi veya doğrudan bağlantıların bahsedilmesine bu mesaj alanında izin verilmez.Buna, belirli bir kullanıcı adı veya tutamaç göndermek veya bir Discord sunucusuna veya X hesapdoğrudan bağlantı sağlamak dahildir.
Konteynerler
The Player nesnesi birkaç önemli konteyner saklar:
Sırt çantası
The Player.Backpack konteyneri kullanıcının envanterini saklar.Bir kullanıcının ekranının altındaki envanterindeki nesneler.Bir kullanıcı envanterden bir Tool seçerse, onu donatır ve Player.Backpack 'den Player.Character 'ye taşınır.
Bir kullanıcının Player.Character doğması sırasında, StarterPack servisinin ve onların Player.StarterGear klonlarının içeriği Player.Backpack 'ye yerleştirilir.Karakter öldüğünde, istemci onların Backpack ve yenisini yerine koyar.
The Backpack ayrıca müşterinin ve sunucunun her ikisine de erişebileceği Scripts ve LocalScripts depolar ve erişim.
Roblox, bir oyuncunun ekranın altındaki Backpack ve envanterine erişmesi için bir arayüz sağlar.Varsayılan Roblox sırt çantası arayüzünü devre dışı bırakmak ve sahip olarayüzünüzle değiştirmek için, bir YerelScript'te StarterGui:SetCoreGuiEnabled() 'yi arayın.Daha fazla bilgi için bakın StarterGui .
Başlangıç Teçhizatı
The StarterGear konteyneri içeriğini karakter doğduğunda kullanıcının Player.Backpack 'sına klonlar.Ayrıca, yeriniz eşyalara izin veriyorsa ve bir kullanıcı teçhizatsahipse, eşyalarının klonlanması sırasında Tool nesneleri onların Player.StarterGear oluştuğunda sahip olurlar.
Farklı olarak StarterPack , Player.StarterGear bir hizmet değil, her Player nesnenin bir çocuğu değil, bu yüzden içeriği kullanıcıya özeldir.Her kullanıcının Tool içinde farklı nesneleri olabilir Player.StarterGear .Player.StarterGear kullanmak için, deneyiminizin izinler sayfasındaki Gear özelliğini etkinleştirin.Yetki sayfasında, yazgöre ekipmanı etkinleştirebilirsiniz.teçhizatdevre dışı bırakmak için, yazseçimden çıkarın.
Kullanıcıların onlara kolayca kötüye kullanamayacağını kontrol etmek için Gear'ı ekledikten sonra daima oyunları test edin.Eşya Script nesneleri içerir ve oyuncunun düşünmediğiniz eylemler yapmasına izin verir.Örneğin, bir navigasyon ekipmanı oyuncunun istemediğiniz bir haritanın bir kısmına erişmesine izin verebilir.Silahlar, ekipmanı olan oyuncuların diğer oyunculara hasar vermesine izin verir, muhtemelen cezalandırma veya rövanş olmadan.
OyuncuGui
The PlayerGui konteyneri oyuncunun GUI'sini oluşturan nesneleri depolar.Bir Ekran Güvenliği bir PlayerGui 'in yerine geçen bir çocuksa, Ekran Güvenliği içindeki herhangi bir GuiObject oyuncunun ekranında görüntülenir.Herhangi biri LocalScript klonlandığında çalışır PlayerGui .Oyuncunun Player.Character ilk kez oluştuğunda, StarterGui'nin tüm içeriği otomatik olarak oyuncunun PlayerGui 'suna kopyalanır.
Oyuncular.CharacterAutoLoads false olarak ayarlanırsa, karakter doğmaz ve StarterGui içerikleri çağrılana kadar kopyalanmaz, Player:LoadCharacter() .Eğer StarterGui.ResetPlayerGuiOnSpawn doğru ayarlanmışsa, oyuncunun karakteri her yeniden doğduğunda, o oyuncunun PlayerGui içeriğinin tümü temizlenir ve StarterGui içeriğiyle değiştirilir.
OyuncuScriptleri
Bir kullanıcı deneyime katıldığında, StarterPlayer.StarterPlayerScripts konteynerindeki içerik PlayerScripts 'a kopyalanır. Herhangi bir YerelScript ve ModülScript kopyalandığında çalışır.
Backpack ve PlayerGui konteynerlerinin aksine, PlayerScripts konteyneri sunucuya erişemez ve bir kullanıcının PlayerScripts konteyneri öldüğünde ve yeniden doğduğunda sıfırlanmaz.Sunucu tarafı nesneleri de ebeveynliğe alındığında çalışmaz.PlayerScripts konteyneri, genel sohbet sistemi veya oyuncu giriş denetimlergibi kullanıcının karakter hayat döngüsüne bağlı olmayan senaryolar için yararlıdır.