Лидерборды

Вы можете показывать на странице игры персонализированные лидерборды (таблицы лидеров) с результатами лучших игроков и местом в рейтинге авторизованного пользователя.

Чтобы у вас заработали описанные ниже запросы, проверьте, что выполнены условия:

Внимание

Если в Консоли нет лидерборда с соответствующим именем в поле Техническое название лидерборда, запросы будут выдавать ошибку 404.

Описание лидерборда

Чтобы получить описание таблицы лидеров по его имени, используйте метод ysdk.leaderboards.get_description():

ysdk.leaderboards.get_description(
    leaderboard_name: string,
    callback: function
)

callback: function — обработчик вызванного метода. Имеет вид:

function(self, description: table|nil): nil
  • description: table — описание таблицы лидеров. Содержит свойства:
description: {
  app_id: string,
  dеfault: boolean,
  invert_sort_order: boolean,
  decimal_offset: integer,
  type: string,
  name: string,
  title: {
    en: string,
    ru: string
  }
}

Пример

function display_leaderboard()
  ysdk.leaderboards.get_description("highscores",
    function (self, description)
      if description then
        print(
          description.name,
          description.title.en
        )
    end
  end)
end

Новый результат

Внимание

Запрос доступен только для авторизованных пользователей. При необходимости воспользуйтесь авторизацией.

Чтобы установить игроку новый результат, используйте метод ysdk.leaderboards.set_score():

ysdk.leaderboards.set_score(
    leaderboard_name: string,
    score: integer,
    extraData: string|nil
)

Примечание

Запрос можно отправлять не чаще, чем раз в секунду, иначе он будет отклонен с ошибкой.

Получение рейтинга

Внимание

Запрос доступен только для авторизованных пользователей. При необходимости воспользуйтесь авторизацией.

Чтобы получить рейтинг пользователя, используйте метод ysdk.leaderboards.get_player_entry():

ysdk.leaderboards.get_player_entry(
    leaderboard_name: string,
    callback: function
)

callback: function — обработчик вызванного метода. Имеет вид:

function(self, player_entry: table|nil): nil
  • player_entry: table — рейтинг пользователя. Содержит свойства:
player_entry: {
  score: integer,
  extraData: string,
  rank: integer,
  avatar_src: {
    small: string,
    medium: string,
    large: string,
  },
  avatar_srcset: {
    small: string,
    medium: string,
    large: string,
  },
  lang: string,
  public_name: string,
  unique_id: string,
  formatted_score: string
}

Пример

function display_high_score()
  ysdk.leaderboards.get_player_entry("highscores",
    function (self, player_entry)
      if player_entry then
        print("highscore: " .. player_entry.score)
      end
    end)
end

Записи лидерборда

Чтобы вывести рейтинг пользователей, используйте метод ysdk.leaderboards.get_entries():

ysdk.leaderboards.get_entries(
    leaderboardName: string,
    callback: function,
    options: {
        include_user: boolean|nil,
        quantity_around: number|nil,
        quantity_top: number|nil
    }
)

callback: function— обработчик вызванного метода. Имеет вид:

function(self, entries: table|nil): nil

entries: table — рейтинг пользователей. Содержит свойства:

entries: {
  leaderboard: {
    ...
  },
  ranges: [
    {
      start: integer,
      size: integer
    }
  ],
  userRank: integer,
  entries: [
    {
      score: integer,
      extraData: string,
      rank: integer,
      avatar_src: {
        small: string,
        medium: string,
        large: string,
      },
      avatar_srcset: {
        small: string,
        medium: string,
        large: string,
      },
      lang: string,
      public_name: string,
      unique_id: string,
      formatted_score: string
    },
    ...
  ]
}

Примечание

Если при работе с плагином вы столкнулись с проблемой или у вас появился вопрос, обратитесь в сообщество в Телеграме.

Репозиторий
Предыдущая