用户和玩家

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

当用户加入体验时,Roblox 将他们在数据模型中表示为 玩家 。 Player 对象包含与用户在体验之间的通用信息,例如他们的用户名、好友列表、保存的 虚拟形象 和 Roblox 会员类输入,以及影响用户从体验到离开体验的整个生命周期

Class.Players 服务包含体验中的所有 Player 实例。每个 Player 对象在体验中代表一个用户,它的父级四个重要容器代表您可以使用用户体验进行自定义的

生命周期

客户端和服务器端脚本都可以连接到 Players.PlayerAddedPlayers.PlayerRemoved 事件,以便在 Player 对象的生命周期进行

使用脚本访问相关于服务器的服务,例如数据存储以恢复并保存用户加入或离开时的数据。 如果客户端需要创建和移除游戏玩法实例,例如在自定义排行榜上显示用户统计数据,请使用本地脚本。

用户加入

当客户机连接到体验时,其关联的 Player 对象克隆到 Players 服务。 Class.Players.Player

加入时加载用户数据

要加载用户在体验加入时数据,请在 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
-- 使用当前数据进行更多操作
end)

用户离开

当客户端从体验中断开时,服务器会从Player对象从Players服务中摧毁。

注意,该事件被称为 Player.PlayerRemoving,而不是 Player.PlayerRemoved,因为 “删除” 将暗示该 Player 对象已被移除,因此对脚本无法访问。

保存用户数据在离开

要保存用户在体验离开时保存的数据,请使用 Players.PlayerRemoving 事件在 Script 中。 以下示例 Script 列出事件并尝试使用用户ID保存用户的数据,作为数据存储钥键。

服务器脚本服务中的脚本

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 是错误,请调用 2>Class.Player.CharacterLoadCharacter()2> 手动生成角色

当用户的 Class

角色消失

当玩家的 Humanoid 死亡时,其身体部分会落到地上,并且 Humanoid.Died 事件会触发。 服务器会自动移除角色模型和任何脚本在其内部后,在 Class.Players.Respawntime

计数玩家死亡

您可以使用 Humanoid.Died 事件来处理得分为击杀或创建自定义 ragdoll 模型。下列 Script 连接到 Player.CharacterAdded

服务器脚本服务中的脚本

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.Tool1> ,它将装备

当用户的 Player.Character 生成时,服务中的 StarterPack 内容和其 Player.StarterGear 克隆到其 1> Class.Player.Backpack1> 。当角色死亡时,客户端摧毁其 4> Class.Backpack

Class.Backpack 还存储和运行 ScriptsLocalScripts,客户端和服务器都可以1) 使用权 2)通行证 3)访问权限。

Roblox 为玩家提供了一个界面,让他们可以在屏幕底部的 Class.Backpack 和物品栏上访问。要禁用默认 Roblox 背包 GUI 并将其替换为您自拥有的,请在 StarterGui:SetCoreGuiEnabled() 中调用 StarterGui。 For more 信息,请参阅 1> Class.StarterGui1>。

新手装备

Class.StarterGear 容器将其内容复制到用户的 Class.Player.Backpack 中,当其角色生成时。另外,如果您的位置允许装备和用户拥有装备,那么在其角色重生点时,Class.Tool 对其装备克隆对象的装备克隆到其1>Class.Player.StarterGear1> 。

StarterPack 不同, Player.StarterGear 不是服务,而是每个 Class.Player</

总是在将装备添加到游戏中后测试游戏,以确保玩家不会轻易在那里滥用它们。 装备包括 Script 对象,允许玩家执行您可能不会考虑的地图部分。 武器允许玩家使用装备,并可能无视惩罚或报复。

玩家界面

Class.PlayerGui 容器存储创建玩家 GUI 的对象。如果屏幕 GUI 是一个 PlayerGui 的子集,那么屏

如果 Players.CharacterAutoLoads 设置为 false,角色不会重生点,而 StarterGui 内容不会复制到直到 Player:LoadCharacter() 被调用。如果 Class.StarterGui.ResetPlayerGuiOn

玩家脚本

当用户加入体验时,StarterPlayer.StarterPlayerScripts 容器中的内容将复制到 PlayerScripts 容器。 任何本地脚本和模块脚本都会在它们复制时运行。

BackpackPlayerGui 容器不同, PlayerScripts 容器不