Khi một người dùng tham gia vào một trải nghiệm, Roblox đại diện cho họ như một Người chơi trong mô hình dữ liệu.Vật phẩm chứa thông tin về người dùng là toàn cầu trên tất cả các trải nghiệm, chẳng hạn như tên tài khoảndùng, danh sách bạn bè, nhân vật avatar lưu, và đánh máythành viên Roblox, cũng như các thuộc tính, phương pháp và sự kiện ảnh hưởng đến vòng đời của người dùng giữa việc tham gia và rời khỏi trải nghiệm của bạn.
Dịch vụ Players bao gồm tất cả các Player ví trong một trải nghiệm. Mỗi đối tượng Player đại diện cho một người dùng trong trải nghiệm, và nó làm cha mẹ bốn thùng chứa quan trọng mà bạn có thể sử dụng để tùy chỉnh trải nghiệm của người dùng: Backpack , StarterGear , PlayerGui và PlayerScripts.
Vòng đời
Cả kịch bản khách và kịch bản bên máy chủ đều có thể kết nối với sự kiện Players.PlayerAdded và Players.PlayerRemoved để thực hiện hành động trong phản ứng lại chu kỳ của một đối tượng Player .Họ cũng có thể kết nối với Player.CharacterAdded , Player.CharacterRemoving , và Humanoid.Died sự kiện để thực hiện các hành động liên quan đến trò chơi khi nhân vật xuất hiện, biến mất, và chết.
Sử dụng các tập lệnh để truy cập các dịch vụ liên quan đến máy chủ, chẳng hạn như một kho dữ liệu để lấy và lưu dữ liệu khi người dùng tham gia hoặc rời khỏi.Sử dụng LocalScripts nếu khách hàng cần tạo và xóa các ví dụ chơi game liên quan đến người dùng mới, chẳng hạn như hiển thị GUI cho các thống kê của người dùng trên bảng xếp hạng tùy chỉnh.
Người dùng tham gia
Khi một khách hàng kết nối với một trải nghiệm, đối tượng liên quan Player của nó sao chép vào dịch vụ Players .The Players.PlayerAdded đại diện cho người dùng tham gia vào trải nghiệm.Một số ví dụ sử dụng bao gồm việc tải dữ liệu người dùng, gán đội và thay đổi trang trạng phụccủa một nhân vật người dùng.Sự kiện Players.PlayerAdded truyền đối tượng Player của người tham gia, mà bạn có thể sử dụng khi gọi các chức năng khác, chẳng hạn như kho lưu trữ dữ liệu và đối tượng RemoteEvent .
Tải dữ liệu người dùng khi tham gia
Để tải dữ liệu của người dùng khi họ tham gia vào một trải nghiệm, hãy sử dụng sự kiện Players.PlayerAdded trong Script.Ví dụ sau đây Script nghe sự kiện và cố gắng truy xuất dữ liệu của người dùng bằng ID người dùng của họ làm chìa khóa kho lưu trữ dữ liệu.Sau khi thành công trong việc lấy lại dữ liệu người dùng, bạn có thể sử dụng nó để tải tiến trình và chỉ số của người dùng.
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerAdded:Connect(function(player)
local userId = player.UserId
-- Đọc khóa kho lưu trữ dữ chìa khóa
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- Thực hiện thêm các hành động với currentData
end)
Người dùng rời đi
Khi một khách hàng kết nối từ một trải nghiệm, máy chủ phá hủy đối tượng liên quan Player của nó từ dịch vụ Players.Sự kiện Players.PlayerRemoving đại diện cho người dùng rời khỏi trải nghiệm.Một số ví dụ sử dụng bao gồm việc lưu dữ liệu người dùng, xóa số liệu thống kê của họ từ bảng xếp hạng và phá hủy bất kỳ mô hình nào của họ, chẳng hạn như ngôi nhà của họ.Sự kiện Players.PlayerRemoving sự kiện truyền đối tượng Player của người rời đi, mà bạn có thể sử dụng khi gọi các chức năng khác, chẳng hạn như lưu trữ dữ liệu và RemoteEvent đối tượng.
Lưu ý rằng sự kiện được gọi là Player.PlayerRemoving , không phải Player.PlayerRemoved , bởi vì "đã bị xóa" có nghĩa là đối tượng Player đã bị xóa và do đó không thể truy cập được với các kịch bản.
Lưu dữ liệu người dùng khi rời khỏi
Để lưu dữ liệu của người dùng khi họ rời khỏi trải nghiệm, hãy sử dụng sự kiện Players.PlayerRemoving trong Script.Ví dụ sau đây Script nghe sự kiện và cố gắng lưu dữ liệu của người dùng bằng ID người dùng của họ làm chìa khóa kho dữ liệu.
Tập lệnh trong ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- Nhận tình trạng dữ liệu của người chơi trong trò chơi
local currentData = getCurrentData(player)
-- Lưu vào kho dữ cửa hàng
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
Tạo nhân vật
Mô hình của một người dùng Player.Character đại diện cho avatar của họ.Mặc định, Player.CharacterAutoLoads là đúng, và mô hình nhân vật của người dùng tự động xuất hiện khi họ tham gia trải nghiệm.Nếu Player.CharacterAutoLoads là sai, thì bạn cần gọi Player:LoadCharacter() để tạo nhân vật thủ công.
Khi spawn của người dùng Player.Character xuất hiện, Các kịch bản và LocalScripts trong StarterCharacterScripts nhân bản vào mô hình nhân vật và sự kiện Player.CharacterAdded bắt lửa.Sự kiện Player.CharacterAdded mới truyền mô hình nhân vật mới cho bất kỳ người lắng nghe sự kiện nào, bạn có thể sử dụng để tìm đối tượng Humanoid của nhân vật và thay đổi hành vi của nó.Ví dụ, bạn có thể sử dụng Humanoid:ApplyDescription() để thay đổi trang phục của avatar và Humanoid.WalkSpeed hoặc Humanoid.JumpHeight để chỉnh sửa chuyển động của avatar.
Nhân vật despawning
Khi cơ thể người chơi Humanoid chết, các bộ phận cơ thể rơi xuống mặt đất và sự kiện Humanoid.Died bắt lửa.Máy chủ tự động xóa mô hình nhân vật và bất kỳ kịch bản nào bên trong nó sau một thời gian mà thuộc tính Players.Respawntime xác định.Bạn có thể sử dụng sự kiện Player.CharacterRemoving để đặt lại các đối tượng khác liên quan đến nhân vật, chẳng hạn như quyền sở hữu mạng của một chiếc xe họ đang lái.
Đếm số lần chết của người chơi
Bạn có thể sử dụng sự kiện Humanoid.Died để xử lý điểm cho một lượt giết hoặc tạo một mô hình ragdoll tùy chỉnh.Các kết nối sau đây Script kết nối với Player.CharacterAdded để lấy mô hình nhân vật của mỗi người dùng, sau đó kết nối với đối tượng nhân vật của người dùng Humanoid .Khi sự kiện của humanoid Humanoid.Died bắt lửa, thì kịch bản tăng số lần humanoid của người dùng đã chết và xuất số lần đó.
Tập lệnh trong ServerScriptService
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)
Cấm người dùng
Để đảm bảo sự văn minh và trò chơi công bằng trong trải nghiệm của bạn, bạn có thể cấm các người dùng vi phạm các quy tắc kinh nghiệm và hướng dẫn cộng đồng của bạn.Bạn có thể thay đổi thời gian cấm, tin nhắn cấm, và thậm chí mở rộng cấm đến các tài khoản thay thế tiềm năng.Khi sử dụng tính năng này, bạn cũng phải tuân theo hướng dẫn cho cấm và gửi tin nhắn .
Đối với hướng dẫn thực hiện và sử dụng, xem Players.BanAsync .
Hướng dẫn cấm
Khi thực hiện các lệnh cấm trong trải nghiệm của bạn, hãy tuân theo các hướng dẫn sau:
- Các quy tắc kinh nghiệm không được trái ngược với Tiêu chuẩn cộng đồng của Roblox và Điều khoản sử dụng .
- Ví dụ, bạn không thể tạo một quy tắc trải nghiệm loại bỏ ai đó vì giới tính của họ vì điều này vi phạm Chính sách phân biệt chủng tộc, xúc phạm, và lời nói ghét của Roblox.
- Các nhà sáng tạo phải rõ ràng nêu quy tắc kinh nghiệm của họ ở đâu đó có thể truy cập được cho tất cả người dùng.
- Các nhà sáng tạo phải áp dụng các quy tắc kinh nghiệm công bằng và không có nhắm mục tiêu một số người dùng một cách ngẫu nhiên.
- Người dùng có thể khiếu nại với các nhà sáng tạo trực tiếp nếu họ tin rằng lệnh cấm của họ không chính xác.
- Roblox sẽ không trung gian các khiếu nại này, trừ khi người dùng tin rằng các quy tắc kinh nghiệm của người sáng tạo hoặc thi hành các quy tắc của họ vi phạm các tiêu chuẩn cộng đồng .
- Roblox có thể kiểm soát một trải nghiệm nếu có lý do để tin rằng các quy tắc kinh nghiệm của một nhà sáng tạosáng tạo vi phạm các quy tắc thi hành của họ hoặc vi phạm các tiêu chuẩn cộng đồng .
Hướng dẫn tin nhắn
Khi một người dùng bị cấm, họ nhận được một thông báo lỗi hiển thị thông tin như thời gian cấm và lý do.Trong tin nhắn được lọc văn bản, bạn có thể bao gồm thêm thông tin như khiếu nại hoặc thông tin liên lạc miễn là bạn tuân thủ các tiêu chuẩn cộng đồng của Roblox .
Ví dụ, trong các tin nhắn cấm của bạn, bạn được phép tham chiếu tên thương hiệu và nền tảng:
- “Ghé thăm Discord trên trang nhóm/trải nghiệm của tôi”
- “Nhắn tin cho tôi trên Twitter hoặc X”
Không cho phép các thông tin cá nhân hoặc liên kết trực tiếp trong trường tin nhắn này.Điều này bao gồm đăng một tên người dùng hoặc tay cầm cụ thể, hoặc cung cấp một liên kết trực tiếp đến một máy chủ Discord hoặc tài khoản X.
Thùng chứa
Vật thể Player lưu trữ một số thùng chứa quan trọng:
Ba lô
Thùng chứa Player.Backpack lưu kho đồ của người dùng.Các đối tượng Tool trong màn hình hiển thị của người dùng Backpack tại đáy màn hình của họ.Nếu người dùng chọn một Tool từ kho, họ trang bị nó, và nó di chuyển từ Player.Backpack đến Player.Character .
Khi spawn của người dùng Player.Character xuất hiện, nội dung của dịch vụ StarterPack và các bản sao của họ Player.StarterGear đến Player.Backpack của họ.Khi nhân vật chết, khách hàng phá hủy Backpack của họ và thay thế bằng một cái mới.
The Backpack cũng lưu trữ và chạy Scripts và LocalScripts mà khách hàng và máy chủ cả hai có thể truy cập.
Roblox cung cấp một giao diện cho một người chơi truy cập vào Backpack và kho hàng của họ ở phía dưới cùng của màn hình.Để vô hiệu hóa GUI ba lô mặc định của Roblox và thay thế nó bằng GUI của sở hữubạn, hãy gọi StarterGui:SetCoreGuiEnabled() trong một LocalScript.Để biết thêm thông tin, xem StarterGui .
Thiết bị khởi động
Thùng chứa StarterGear sao chép nội dung của nó cho người dùng Player.Backpack khi nhân vật của nó xuất hiện.Ngoài ra, nếu nơi của bạn cho phép trang bị và một người sở hữu trang bị, các đối tượng Tool của trang bị nhân bản của họ sẽ xuất hiện trong Player.StarterGear khi chúng xuất hiện.
Không giống như StarterPack , Player.StarterGear không phải là một dịch vụ mà là con của mỗi đối tượng Player , vì vậy nội dung của nó là cụ thể cho người dùng.Mỗi người dùng có thể có các đối tượng khác nhau Tool trong Player.StarterGear của họ.Để sử dụng Player.StarterGear , bật Bánh răng trong trang cài đặt kinh nghiệm của bạn dưới Quyền truy cập .Trên trang quyền, bạn có thể bật bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng cách bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bằng bĐể vô hiệu hóa thiết bị, hãy bỏ chọn loại của nó.
Luôn kiểm tra trò chơi sau khi thêm Trang bị cho chúng để kiểm tra rằng người dùng không thể dễ dàng lạm dụng chúng ở đó.Thiết bị bao gồm Script đối tượng và cho phép người chơi thực hiện các hành động mà bạn có thể không xem xét.Ví dụ, một thiết bị điều hướng có thể cho phép người chơi truy cập một phần của bản đồ mà bạn không muốn họ truy cập.Vũ khí cho phép người chơi với trang bị gây sát thương cho người chơi khác, có thể không có sự trừng phạt hoặc trả thù.
Người chơiGui
Thùng chứa PlayerGui lưu các đối tượng tạo GUI của người chơi.Nếu ScreenGui là con cháu của một PlayerGui , then any GuiObject inside the ScreenGui displays on the player's screen.Bất kỳ LocalScript chạy khi nó sao chép sang PlayerGui .Khi spawn lần đầu tiên của người chơi Player.Character , tất cả nội dung của StarterGui tự động sao chép vào người chơi PlayerGui .
Nếu Players.CharacterAutoLoads được đặt thành false, nhân vật sẽ không xuất hiện, và nội dung StarterGui không sao chép cho đến khi Player:LoadCharacter() được gọi.Nếu StarterGui.ResetPlayerGuiOnSpawn được đặt thành true, mỗi khi nhân vật của người chơi tái sinh, tất cả nội dung của nhân vật đó PlayerGui được xóa bỏ và thay thế bằng nội dung của StarterGui .
Tập lệnh người chơi
Khi một người dùng tham gia vào trải nghiệm, nội dung trong thùng chứa StarterPlayer.StarterPlayerScripts sẽ sao chép sang PlayerScripts. Bất kỳ LocalScripts và ModuleScripts nào cũng sẽ chạy khi chúng sao chép.
Không giống như các thùng chứa Backpack và PlayerGui, thùng chứa PlayerScripts không thể truy cập vào máy chủ, và thùng chứa của người dùng PlayerScripts không được đặt lại khi nhân vật của họ chết và tái sinh.Các đối tượng bên máy chủ Script cũng không chạy khi được cha chăm sóc đến PlayerScripts .Thùng chứa PlayerScripts có ích cho các kịch bản không liên quan đến chu kỳ cuộc sống nhân vật của người dùng, chẳng hạn như hệ thống trò chuyện chung hoặc điều khiển nhập của người chơi.