用戶和玩家

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

當使用者加入體驗時,Roblox 將他們代表為 Player 在資料模型中。 Class.Player 對象包含對使用者在體驗間的通用資訊,例如他們的使用者名稱、好好友名單、儲存的 虛擬人偶角色 和 Roblox 會員類輸入,以及影響

Class.Players 服務包含所有 Player 實例在體驗中。每個 Player 對象代表一個使用者在體驗中,並且啟用四個重要的容器來自訂使用者

生命周期

客戶和伺服器端的指令碼都可以連接到 Players.PlayerAddedPlayers.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 可以對任何體驗進行審核,如果有理由懷疑創作者的體驗規則或執行規則違反 社群標準

訊息指南

當使用者被禁止時,他們會收到一個錯誤模式,顯示包含勸告長度和原因等資訊的信息。 在文字過濾器訊息中,您可以包含審核標準下的額外資訊,例如呼び出或聯絡資訊,盡管您符合 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 也存儲和執行 ScriptsLocalScripts,以便客戶和服務器可以共使用權 通行權 存取。

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。 任何本地指令碼和模組指令碼都會在複製時執行。

BackpackPlayerGui 容器不同, Class.PlayerScripts