當使用者加入體驗時,Roblox 將他們代表為 Player 在資料模型中。 Class.Player 對象包含對使用者在體驗間的通用資訊,例如他們的使用者名稱、好好友名單、儲存的 虛擬人偶角色 和 Roblox 會員類輸入,以及影響
Class.Players 服務包含所有 Player 實例在體驗中。每個 Player 對象代表一個使用者在體驗中,並且啟用四個重要的容器來自訂使用者
生命周期
客戶和伺服器端的指令碼都可以連接到 Players.PlayerAdded 和 Players.PlayerRemoved 事件,以執行對生命週期的 Class.Player
使用指令碼以存取伺服器相關服務,例如資料存取和儲存,當使用者加入或離開時。 使用本地指令碼如果客戶端需要創建並移除遊戲實例,例如在自訂排行榜上顯示玩家的統計資料。
用戶加入
當客戶機連接到體驗時,其關聯的 Player 對象複製到 Players 服務。
載入玩家資料
要載入使用者加入體驗時所需的資料,請在 Players.PlayerAdded 中使用 Script 事件。 以下示例 Script 聆聽事件並嘗試使用用戶的用戶ID作為資料存取鑰鍵。 成功取回用戶資料後,您可以使用它
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerAdded:Connect(function(player)
local userId = player.UserId
-- 閱讀資料存取鑰鍵
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- 使用 currentData 執行更多操作
end)
用戶離開
當客戶從體驗中切斷時,服務器會摧毀其對應的 Player 對象從 Class
注意事件名稱為 Player.PlayerRemoving,而不是 Player.PlayerRemoved,因為 "已移除" 將指示 Player 對象已被移除,因此對於指令碼無法存取。
離開時儲存使用者資料
要在用戶離開體驗時儲存用戶的資料,請在 Players.PlayerRemoving 事件中使用 Script 。 以下示例 Script 列聽到事件並嘗試使用用戶的用戶ID作為資料存取鑰鍵。
ServerScriptService 中的脚本
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
game:GetService("Players").PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- 在遊戲中取得玩家的資料狀態
local currentData = getCurrentData(player)
-- 儲存到資料存商店 商家
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
角色生成
使用者的 Player.Character 模型代表他們的虛擬人偶。 預設情況下,Player.CharacterAutoLoads 是真的,並且使用者的角色模型會在體驗加入時自動生成。 如果 Player.CharacterAutoLoads 是假的,
當虛擬人偶者的 <
角色扮演解除
玩家的 Humanoid 死亡時,其身體零件會落到地上,並且發生 Humanoid.Died 事件。服務器會自動移除角色模型和任何與角色相關的資料後,在 Class.Players.Resp
計數玩家死亡次數
您可以使用 Humanoid.Died 事件來處理擊殺或創建自訂 ragdoll 模型。 連接 Script 到恢復每個使
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)
禁止用戶
為了確保在您的體驗中保持文明和公平遊戲,您可以禁止違反您的體驗規則和社區指引的用戶。您可以修改禁令時間、禁令消息和甚至延長禁令至潛在的替代帳戶。使用此功能時,您必須也遵守禁止和發送消息的指引。
實現和使用說明,請參閱 Players.BanAsync。
禁止指南
當在您的體驗中實施禁令時,遵守以下指引:
- 創作者必須清楚地指定他們的體驗規則,以便所有使用者都能有清楚的體驗。
- 創作者必須公平地適用他們的體驗規則,不得隨意對特定用戶進行目標。
- 使用者可以直接申請創作者,如果他們認為自己的封鎖是不正確的。
- Roblox 不會審核這些申訴,除非用戶相信創作者的體驗規則或執行規則違反 社區標準 。
- Roblox 可以對任何體驗進行審核,如果有理由懷疑創作者的體驗規則或執行規則違反 社群標準。
訊息指南
當使用者被禁止時,他們會收到一個錯誤模式,顯示包含勸告長度和原因等資訊的信息。 在文字過濾器訊息中,您可以包含審核標準下的額外資訊,例如呼び出或聯絡資訊,盡管您符合 Roblox 的社區標準。
例如,在您的禁令訊息中,您可以參考品牌名稱和平台:
- 「前往我的群組或體驗頁面的 Discord」
- 「在 Twitter 上訊息我或 X」
此訊息欄內不允許包含個人資訊或直接連結。這包括發布特定使用者名稱或手把理,或提供直接連結到 Discord 服務器或 X 帳號。
容器
Class.Player 對象存儲多個重要容器:
背包
Class.Player.Backpack 容器存儲使用者的道具欄。Tool 對象在使用者的 Backpack 顯示在他們的屏幕底部。如果使用者從道具欄中選擇1>Class
使用者的 Player.Character 生成時,服務中的內容和他們的 StarterPack 複製到他們的 Player.StarterGear 中。當角色死亡時,客戶摧毀其 1>Class.Backpack1> 並替換新的。
Class.Backpack 也存儲和執行 Scripts 和 LocalScripts,以便客戶和服務器可以共使用權 通行權 存取。
Roblox 提供一個玩家可以存取其 Backpack 和道具欄在畫面底部的介面。要禁用預設 Roblox 背包 GUI 並將它們替換為您自擁有的,請在本地腳本中呼叫 StarterGui:SetCoreGuiEnabled()。有關更多資訊,請參閱 StarterGui。
新手裝備
Class.StarterGear 容器會在其角色重生時將其內容複製到使用者的 Player.Backpack 中。當你的位置允許裝備和用戶擁有裝備時,Tool 對他們的裝備複製到他們的 1>Class.Player.StarterGear1> 中,當他們生成時。
與 StarterPack 不同,Player.StarterGear 不是服務,而是每個 Class.Player
總是在添加裝備到遊戲後測試遊戲,以確認玩家能否在那裡容易濫用裝備。裝備包括 Script 對象,並允許玩家執行您可能不會考慮的行動。例如,一個導航裝備可能會允許玩家存取地圖中的某個區域,而你不想要他們存在。武器允許玩家使用
玩家導覽
Class.PlayerGui 容器存儲玩家的 GUI 。如果 ScreenGUI 是 PlayerGui 的子孫,則任何 <
如果 Players.CharacterAutoLoads 設為 false,則角色不會生成,且 StarterGui 內容不會複製直到 Player:LoadCharacter() 被呼叫。如果 Class.StarterGui.ResetPlayerGui
玩家指令碼
當使用者加入體驗時,StarterPlayer.StarterPlayerScripts 內容的複製容器會移動到PlayerScripts。 任何本地指令碼和模組指令碼都會在複製時執行。