匹配大厅

1. 大厅类型对象

greenworks.LobbyType

大厅类型,从 CreateLobby 或 SetLobbyType 设置。

  • Private (0.只能通过邀请加入大厅)

  • FriendsOnly (1.好友和受邀者可加入,但不出现在大厅列表中)

  • Public (2.可以通过搜索返回并对好友可见)

  • Invisible (3.通过搜索返回,但不对好友可见。如果希望一个用户同时在两个大厅中,比如将组配到一起时很有用。 用户只能加入一个普通大厅,最多可加入两个不可见大厅。)

2. 创建匹配大厅

createLobby(lobbyType, maxMembers)

  • lobbyType greenworks.LobbyType

  • maxMembers Integer: 可加入此大厅的玩家最大数量。 不能超过 250 人

创建一个新的匹配大厅。

返回一个指向 Steam API 调用的唯一 String 型句柄。

3. 设置大厅数据

setLobbyData(steamIDLobby, pchKey, pchValue)

  • steamIDLobby String: 要设置元数据的大厅 Steam ID。可以在lobby-created回调函数中获得

  • pchKey String: 要设置数据的键。 不得长于255

  • pchValue String: 要设置的值。 不得长于8192

在大厅元数据中设置键/值对。 此函数可用于设置大厅名称、当前地图、游戏模式等。

返回一个 Boolean 值表示是否设置成功。

4. 获取大厅数据

getLobbyData(steamIDLobby, pchKey)

  • steamIDLobby String: 要从中获得元数据的大厅的 Steam ID

  • pchKey String: 要获取值的键

获取与指定大厅中的指定键相关的元数据。

返回一个 String 字符串表示取到的值。如果没有为此键设置值,或 steamIDLobby 无效,则返回一个空白字符串("")。

5. 删除大厅数据

deleteLobbyData(steamIDLobby, pchKey)

  • steamIDLobby String: 待删除元数据的大厅的 Steam ID。

  • pchKey String: 待删除数据的键。

从大厅移除元数据键。 此操作只能由大厅所有者完成。 只有当键存在时,才会发送数据。 在发送数据之前会稍有延迟,因此您可以重复调用来设置您需要的所有数据,并在最后一次顺序调用之后,数据将被自动批处理和发送。

返回一个 Boolean 。true, 表示成功删除了键/值;否则,如果 steamIDLobby 或 pchKey 无效,则为 false。

6. 加入匹配大厅

joinLobby(steamIDLobby)

  • steamIDLobby String: 要加入的大厅的 Steam ID。

加入一个现有大厅。 可以用 RequestLobbyList 搜索并加入好友从而获取大厅的 Steam ID,也可以从邀请中获取。

返回指向一个 Steam API 调用的唯一 String 句柄。

7. 退出匹配大厅

leaveLobby(steamIDLobby)

  • steamIDLobby String: 要离开的大厅id。

离开用户当前所在的大厅,这将立即在客户端生效,大厅的其他用户将得到 LobbyChatUpdate_t 回调的通知。

8. 根据索引获得大厅信息

getLobbyByIndex(index)

  • index Integer: 要获得其 Steam ID 的大厅索引,从 0 至 LobbyMatchList_t.m_nLobbiesMatching。

收到 RequestLobbyList 结果后,获得指定索引中大厅的 Steam ID。

返回一个 SteamID 对象;如果所提供的索引无效或未找到大厅,返回 undefined

9. 根据索引获得成员信息

getLobbyMemberByIndex(steamIDLobby, indexMember)

  • steamIDLobby String: 大厅id

  • indexMember Integer: 在 0 与 GetNumLobbyMembers 之间的索引。

获得给定索引中大厅成员的 Steam ID。 注意: 当前用户必须在大厅中才能获取该大厅中其他用户的 Steam ID。

返回一个 SteamID 对象;如果所提供的索引无效或未找到大厅,返回 undefined

10. 获取大厅所有者

getLobbyOwner(steamIDLobby)

  • steamIDLobby String: 要获得其所有者的大厅的 Steam ID。

返回当前大厅所有者。 注意: 必须是大厅成员才能调用。 注意: 始终只有一位大厅所有者,如果当前所有者离开,该大厅中的另一名玩家将自动成为所有者。 在一个大厅的所有者刚离开时,其他玩家便有机会(但较少见)加入该大厅,进入大厅后,其自身便成为该大厅的所有者。

返回一个 SteamID 对象;如果所提供的索引无效或未找到大厅,返回 undefined

11. 获取大厅中的用户数量

getNumLobbyMembers(steamIDLobby)

  • steamIDLobby String: 要获得其成员数量的大厅的 Steam ID。

获得一个大厅中的用户数。 注意: 当前用户必须在大厅中才能获取该大厅中其他用户的 Steam ID。 用于循环访问,调用此函数后,可使用 GetLobbyMemberByIndex 来获得大厅中每个成员的 Steam ID。 通过 ISteamFriends 接口可自动收到大厅其他成员的个人信息(姓名、头像等)。

返回一个 Integer 值,表示大厅中成员的数量,如果当前用户没有来自大厅的数据,则返回 0。

12. 邀请其他用户进入大厅

inviteUserToLobby(steamIDLobby, steamIDInvitee)

  • steamIDLobby String: 要邀请用户进入的大厅的 Steam ID。

  • steamIDInvitee String: 将被邀请的用户的 Steam ID。

邀请其他用户进入大厅。 指定用户点击了加入链接后,如果该用户在游戏中,将发送 GameLobbyJoinRequested_t 回调 ,如果游戏尚未运行,则游戏将自动通过命令行参数 +connect_lobby <64-bit lobby Steam ID> 启动。

返回一个 Boolean 值。true, 表示成功发送邀请;否则,如果本地用户不在大厅中,或无法连接至 Steam,或指定用户无效,则为 false。 注意: 此调用不检查其他用户是否被成功邀请。

13. 设置大厅是否开放

setLobbyJoinable(steamIDLobby, lobbyJoinable)

  • steamIDLobby String: 大厅的 Steam ID。

  • lobbyJoinable Boolean: 是否允许用户加入此大厅?

设置一个大厅是否对其他玩家开放。 新的大厅始终默认为启用。 如果禁止加入,那么没有玩家可以加入,即便他们是好友或已受邀请。 禁止加入的大厅将不会从大厅搜索中返回。

返回一个 Boolean 值,表示设置是否成功。

14. 变更大厅所有者

setLobbyOwner(steamIDLobby, steamIDNewOwner)

  • steamIDLobby String: 要发生所有者变更的大厅的 Steam ID。

  • steamIDNewOwner String: 要成为大厅新所有者的用户的 Steam ID,该用户必须在该大厅中。

变更大厅所有者。 只能由大厅所有者设置。 这将针对大厅中的所有用户触发 LobbyDataUpdate_t,每位用户应更新其本地状态以反映新的所有者。 通常在所有者名称旁边显示一个皇冠图标。

返回一个 Boolean 值表示变更是否成功。true, 表示成功变更所有者。 false, 表示您不是大厅目前的所有者,或 steamIDNewOwner 不是大厅成员,或无法连接至 Steam。

15. 设置大厅类型

setLobbyType(steamIDLobby, lobbyType)

  • steamIDLobby String: 要设置类型的大厅的 Steam ID。

  • lobbyType greenworks.LobbyType 要设置的新大厅类型。

当使用 CreateLobby 创建大厅时也会进行此设置。 它只可由大厅所有者设置。

返回一个 Boolean 值表示设置是否成功。true, 表示成功;否则,如果您不是大厅所有者,则返回 false。