玩家详情

您可以:

  • 使用 SDK 方法将游戏数据(已通过的关卡、经验、应用内购买等)保存在 Yandex 服务器上,或将其传输到您自己的服务器。 云存档允许用户在不同设备上继续游戏。
  • 使用 Yandex 用户个人资料中的数据(例如姓名)来个性化游戏。

玩家信息

1ysdk.player.get_info(
2    callback: function,
3    options: {
4        scopes: boolean|nil,
5        signed: boolean|nil
6    }
7)

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

function(self, player: table|nil, signature: string|nil): nil
  • player: table —— 玩家信息。包含以下属性:
 1player = {
 2    logged_in: boolean,
 3    unique_id: string,
 4    name: string,
 5    photo: {
 6        small: string,
 7        medium: string,
 8        large: string
 9    }
10}

示例

 1function init_player()
 2    ysdk.player.get_info(function(self, player)
 3        if player then
 4            display_player(self, player)
 5        else
 6            ysdk.player.open_auth_dialog(function(self, authorized)
 7                ysdk.player.get_info(display_player, {})
 8            end)
 9        end
10    end,
11    {})
12end
13
14function display_player(player)
15    if player then
16        print(player.name, signature)
17    end
18end

用户登录

如果玩家未授权,您可以使用方法 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) —— 保存用户的数值数据。数据最大大小不应超过 10 KB。

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

备注

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

  • ysdk.player.increment_stats(increments) —— 修改用户的游戏内数据。数据最大大小不应超过 10 KB。
    • 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 —— 用户的标识符。

示例

1function log_ids()
2    ysdk.player.get_ids_per_game(function(self, ids)
3        for _, value in ipairs(ids) do
4            print(value.app_id, value.user_id)
5        end
6    end)
7end

存储库
下一篇