Kiedy użytkownik Roblox dołącza do gry, jest reprezentowany jako Player w DataModel. Obiekt Player zawiera informacje o użytkowniku, które są uniwersalne w różnych grach, takie jak jego nazwa użytkownika, lista znajomych oraz zapisany awatar, a także właściwości, metody i zdarzenia, które wpływają na cykl życia użytkownika między dołączeniem a opuszczeniem gry. Każdy obiekt Player ma również cztery ważne kontenery, które możesz wykorzystać do dostosowania doświadczeń użytkownika: Backpack, StarterGear, PlayerGui i PlayerScripts.
Każdy Player udostępnia również właściwość Player.User, która jest wartością User reprezentującą tożsamość gracza w obrębie aktualnej gry. Aby uzyskać więcej informacji na temat identyfikacji użytkowników, w tym identyfikatorów użytkowników w obrębie domeny i typu User, zobacz Użytkownicy i identyfikatory użytkowników w obrębie domeny.

Cykl życia
Usługa Players zawiera wszystkie instancje Player w grze. Skrypty po stronie klienta i serwera mogą łączyć się z zdarzeniami Players.PlayerAdded i Players.PlayerRemoved, aby wykonywać akcje w odpowiedzi na cykl życia obiektu Player. Skrypty mogą również łączyć się z zdarzeniami Player.CharacterAdded i Player.CharacterRemoving, aby wykonywać akcje związane z rozgrywką, gdy postać się pojawia lub znika.
Dołączenie użytkownika
Kiedy klient użytkownika łączy się z grą, zdarzenie Players.PlayerAdded jest wywoływane i przekazuje obiekt Player użytkownika, który dołącza; możesz użyć tego obiektu do wielu celów, takich jak ładowanie danych użytkownika z magazynu danych lub przypisanie gracza do zespołu.
Na przykład, aby załadować dane użytkownika, gdy dołącza do gry, użyj zdarzenia PlayerAdded w Script, aby pobrać dane użytkownika przechowywane w magazynie danych pod jego identyfikatorem użytkownika:
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerAdded:Connect(function(player)
local userId = player.UserId
-- Odczytaj klucz magazynu danych
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- Wykonaj dalsze akcje z currentData
end)Pojawienie się postaci
Domyślnie model Player.Character użytkownika reprezentuje jego awatar na platformie, a Players.CharacterAutoLoads jest ustawione na true, co oznacza, że model postaci automatycznie pojawia się, gdy użytkownik dołącza do gry.
Kiedy postać użytkownika Player.Character się pojawia, Scripts i LocalScripts w StarterCharacterScripts są klonowane do modelu postaci, a zdarzenie Player.CharacterAdded jest wywoływane. To zdarzenie przekazuje nowy model postaci do swoich słuchaczy, których możesz użyć do znalezienia obiektu Humanoid postaci i modyfikacji jego zachowania. Na przykład, możesz użyć Humanoid:ApplyDescription(), aby zmienić strój awatara.
Zniknięcie postaci
Kiedy Humanoid gracza umiera, serwer automatycznie usuwa model postaci po czasie określonym przez Players.RespawnTime. Możesz wtedy użyć zdarzenia Player.CharacterRemoving, aby zresetować inne obiekty lub zaktualizować dane związane z postacią.
Odejście użytkownika
Kiedy klient użytkownika rozłącza się z grą, serwer niszczy jego powiązany obiekt Player w usłudze Players. W tym momencie zdarzenie Players.PlayerRemoving jest wywoływane i przekazuje obiekt Player użytkownika, który się rozłączył. Możesz to wykorzystać do wielu celów, takich jak zapisywanie danych użytkownika, usuwanie statystyk gracza z tablicy wyników lub niszczenie modeli stworzonych przez gracza w grze.
Poniższy przykład Script nasłuchuje zdarzenia PlayerRemoving i próbuje zapisać dane użytkownika w magazynie danych pod jego identyfikatorem użytkownika:
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- Pobierz stan danych gracza w grze
local currentData = getCurrentData(player)
-- Zapisz do magazynu danych
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)Kontenery
Każdy obiekt Player reprezentujący klienta użytkownika przechowuje kilka ważnych kontenerów: Backpack, StarterGear, PlayerGui i PlayerScripts. W czasie działania gry kilka kontenerów w modelu danych "edycji" kopiuje swoje zawartości do tych kontenerów Player, w tym StarterGui do PlayerGui, StarterPack do Backpack i StarterPlayerScripts do PlayerScripts.

Obiekty Tool w Backpack tworzą inwentarz gracza i wyświetlają się jako przyciski ikonowe na dole ekranu. Zobacz narzędzia w grze po więcej informacji.
Jak pokazano powyżej, zawartość StarterPack i StarterGear gracza klonuje się do Backpack, gdy postać gracza Character się pojawia. Kiedy postać umiera, klient niszczy Backpack i zastępuje go nowym.
Aby wyłączyć domyślny interfejs GUI inwentarza Roblox i zastąpić go własnym, wywołaj StarterGui:SetCoreGuiEnabled() w LocalScript, jak opisano w wyłącz domyślny interfejs.
Banowanie użytkowników
Aby zapewnić cywilizację i uczciwą grę w swoich grach, możesz banować użytkowników, którzy łamią zasady lub wytyczne społeczności. Możesz modyfikować czas trwania banów, wiadomości banów, a nawet rozszerzać bany na potencjalne alternatywne konta. Korzystając z tej funkcji, musisz przestrzegać wytycznych dotyczących banów i wiadomości.
Masz kilka opcji dotyczących pracy z banami:
- Każda strona gry w Creator Hub ma pulpit nawigacyjny Bany.
- Aby używać programowo z API silnika, zobacz Players:BanAsync().
- Dla Open Cloud, zobacz bany i blokady.
Blokowanie urządzeń
Oprócz banowania konta, Players:BanAsync() obsługuje blokowanie urządzeń za pomocą pola ApplyDeviceBlock w swojej tabeli konfiguracyjnej. Kiedy banisz użytkownika, który jest aktualnie połączony z twoją grą z ApplyDeviceBlock ustawionym na true, urządzenie powiązane z tym użytkownikiem jest również blokowane przed ponownym dołączeniem przez 24 godziny. Ta opcja dodaje trudności w omijaniu banów; zbanowani gracze nie mogą natychmiast ponownie dołączyć do gry z nowego konta na tym samym urządzeniu.
- Blokowanie urządzeń obecnie dotyczy tylko graczy na komputerach stacjonarnych (Windows i macOS). Nie dotyczy urządzeń mobilnych ani konsol.
- Blokada urządzenia nie rozprzestrzenia się jako ban na żadne inne konta, które korzystały z tego urządzenia.
- Wywołanie API odblokowania na dotkniętym użytkowniku natychmiast usuwa wszelkie aktywne blokady urządzenia związane z urządzeniem tego użytkownika, umożliwiając mu ponowne dołączenie do gry.
Wytyczne dotyczące banów
Podczas wdrażania banów w swojej grze, przestrzegaj następujących wytycznych:
- Zasady gry nie mogą być sprzeczne z Standardami Społeczności i Warunkami Użytkowania Roblox. Na przykład, nie możesz stworzyć zasady gry, która wyklucza kogoś z powodu jego płci, ponieważ narusza to politykę Roblox dotyczącą dyskryminacji, obelg i mowy nienawiści.
- Twórcy muszą jasno określić zasady swojej gry w miejscu dostępnym dla wszystkich użytkowników.
- Twórcy muszą stosować swoje zasady gry sprawiedliwie i nie celować arbitralnie w niektórych użytkowników.
- Użytkownicy mogą odwołać się do twórców bezpośrednio, jeśli uważają, że ich ban był nieprawidłowy. Roblox nie będzie pośredniczyć w tych odwołaniach, chyba że użytkownik uważa, że zasady gry twórcy lub egzekwowanie tych zasad naruszają Standardy Społeczności.
- Roblox może moderować grę, jeśli istnieją powody, aby sądzić, że zasady gry twórcy lub egzekwowanie tych zasad naruszają Standardy Społeczności.
Wytyczne dotyczące wiadomości
Kiedy użytkownik jest zbanowany, otrzymuje modal błędu wyświetlający informacje takie jak długość bana i powód. W wiadomości filtrowanej tekstowo możesz zawrzeć dodatkowe informacje, takie jak informacje o odwołaniu lub kontakcie, o ile spełniasz Standardy Społeczności Roblox.
Na przykład, w swoich wiadomościach banów możesz odnosić się do nazw marek i platform:
- "Odwiedź Discord w mojej grupie/stronie gry"
- "Napisz do mnie na Twitterze lub X"
Wzmianki o danych osobowych lub bezpośrednie linki nie są dozwolone w tym polu wiadomości. Obejmuje to podawanie konkretnej nazwy użytkownika lub identyfikatora, lub dostarczanie bezpośredniego linku do serwera Discord lub konta X.