玩家详情

您可以在 Yandex 服务器上保存游戏状态数据(包括完成的关卡、经验和游戏内购),也可以将这些数据传输到您的服务器。您还可以通过使用 Yandex 个人资料中的用户数据(例如姓名)对游戏进行个性化。

玩家信息

ysdk.player.get_info(
    callback: function,
    options: {
        scopes: boolean|nil,
        signed: boolean|nil
    }
)

callback: function — 回调被调用的方法。格式如下:

function(self, player: table|nil, signature: string|nil): nil
  • player: table — 玩家信息。包含以下属性:
player = {
    logged_in: boolean,
    unique_id: string,
    name: string,
    photo: {
        small: string,
        medium: string,
        large: string
    }
}

示例

function init_player()
  ysdk.player.get_info(function(self, player)
      if player then
        display_player(self, player)
      else
        ysdk.player.open_auth_dialog(function(self, authorized)
          ysdk.player.get_info(display_player, {})
        end)
      end
    end,
    {})
end

function display_player(player)
  if player then
    print(player.name, signature)
  end
end

用户登录

如果玩家未授权,您可以使用方法 ysdk.player.open_auth_dialog() 来弹出授权窗口。

ysdk.player.open_auth_dialog(callback: function)

callback: function — 被调用方法的回调。其格式如下:

function(self, authorized: boolean): nil
  • authorized: boolean — 玩家是否已授权。

游戏内数据

要处理用户的游戏内数据,请使用 Player 对象方法:

  • ysdk.player.set_data(data, flush) — 保存用户数据。数据大小上限不应超过 200 KB。

    • data: table — 包含键-值对。
    • flush: boolean — 决定数据发送的时机。如果为 true,数据会立即发送到服务器;如为 false(默认值),发送请求将被加入队列稍后处理。

该方法返回一个 Promise,用于指示数据是否保存成功。

当参数 flush: false 时,返回结果仅反映数据的有效性(实际发送被加入队列,将稍后完成)。此时,即使数据尚未发送,ysdk.player.get_data() 也会返回最近一次调用 ysdk.player.set_data() 设置的数据。

  • ysdk.player.get_data(callback, keys) — 请求获取存储于 Yandex 数据库中的玩家游戏内数据。

    • callback: fun(self, data: table<string, any>) — 用于处理获取到的玩家游戏内数据的回调函数。
    • keys: table<number, string> — 需要返回的键名列表。如果未传 keys 参数,则方法会返回用户的所有游戏内数据。
  • ysdk.player.set_stats(stats) — 保存玩家的数值型数据。数据最大不能超过 10KB。

    • stats: table<string, number> — 包含键-值对,其中每个值必须为数字。

备注

请使用此方法来处理经常变化的数值类型(如积分、经验值、游戏内货币),而不是使用 ysdk.player.set_data()

  • ysdk.player.increment_stats(increments) — 修改用户的游戏内数据。数据的最大大小不能超过10KB。
    • increments: table<string, number> — 包含键值对的对象,每个值必须是数字。
  • ysdk.player.get_stats(callback, keys) — 获取存储在Yandex数据库中的用户数值数据。
  • callback: fun(self, data: table<string, number>|nil) — 用于处理获取到的用户数值数据的回调函数。
  • keys: string[] — 需要返回的键名列表。如果未提供keys参数,则方法会返回用户的所有游戏内数据。

用户标识符

ysdk.player.get_ids_per_game(callback: function)

callback: function — 被调用方法的回调。格式如下:

function(self, ids: {appID: number, userID: string}[]): nil
  • ids — 用户在开发者所有游戏中的标识符,前提是用户已明确同意传输个人数据。包含以下属性:
    • app_id: string — 应用程序的标识符。
    • user_id: string — 用户的标识符。

示例

function log_ids()
  ysdk.player.get_ids_per_game(function(self, ids)
    for _, value in ipairs(ids) do
      print(value.app_id, value.user_id)
    end
  end)
end

存储库
下一篇