Данные игрока
Вы можете сохранять данные состояния игры (пройденные уровни, опыт, внутриигровые покупки и т. д.) на сервере Яндекса или передавать их на свой сервер. Также вы можете персонализировать игру, используя некоторые данные из профиля пользователя на Яндексе, например, имя.
Информация об игроке
ysdk.player.get_info(
callback: function,
options: {
scopes: boolean|nil,
signed: boolean|nil
}
)
callback: function
— callback вызванного метода. Имеет вид:
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
— callback вызванного метода. Имеет вид:
function(self, authorized: boolean): nil
authorized: boolean
— игрок авторизовался или нет.
Внутриигровые данные
Для работы с внутриигровыми данными пользователя используйте методы объекта Player
:
-
ysdk.player.set_data(data, flush)
— сохраняет данные пользователя. Максимальный размер данных не должен превышать 200 KБ.data: table
— содержащит пары ключ-значение.flush: boolean
— определяет очередность отправки данных. При значении «true» данные будут отправлены на сервер немедленно; «false» (значение по умолчанию) — запрос на отправку данных будет поставлен в очередь.
Метод возвращает
Promise
, который показывает, удалось сохранить данные или нет.При значении параметра
flush: false
возвращаемый результат показывает только валидность данных (сама отправка поставлена в очередь и будет осуществлена позже). При этом методysdk.player.get_data()
вернет данные, установленные последним вызовомysdk.player.set_data()
, даже если они еще не были отправлены. -
ysdk.player.get_data(callback, keys)
— запрашивает внутриигровые данные пользователя, сохраненные в базе данных Яндекса.callback: fun(self, data: table<string, any>)
— функция-обработчик для работы с полученными внутриигровыми данными пользователя.keys: table<number, string>
— список ключей, которые необходимо вернуть. Если параметрkeys
отсутствует, то метод возвращает все внутриигровые данные пользователя.
-
ysdk.player.set_stats(stats)
— сохраняет численные данные пользователя. Максимальный размер данных не должен превышать 10 КБ.stats: table<string, number>
— содержит пары ключ-значение, где каждое значение должно быть числом.
Используйте данный метод для часто изменяемых числовых значений (баллы, очки опыта, внутриигровая валюта) вместо ysdk.player.set_data().
ysdk.player.increment_stats(increments)
— изменяет внутриигровые данные пользователя. Максимальный размер данных не должен превышать 10 КБ.increments: table<string, number>
— объект, который содержит пары ключ-значение, где каждое значение должно быть числом.
ysdk.player.get_stats(callback, keys)
— получить численные данные пользователя, сохраненные в базе данных Яндекса.callback: fun(self, data: table<string, number>|nil)
— функция-обработчик для работы с полученными численные данными пользователя.keys: string[]
— список ключей, которые необходимо вернуть. Если параметрkeys
отсутствует, то метод возвращает все внутриигровые данные пользователя.
Идентификаторы пользователя
ysdk.player.get_ids_per_game(callback: function)
callback: function
— callback вызванного метода. Имеет вид:
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