Oyuncu verileri
Oyun durumu verilerini (tamamlanan seviyeler, deneyim, oyun içi satın almalar vb.) Yandex sunucusuna kaydedebilir veya bunları sunucunuza aktarabilirsiniz. Ayrıca, ad gibi Yandex kullanıcı profilindeki bazı verileri kullanarak oyunu kişiselleştirebilirsiniz.
Oyuncu Hakkında Bilgi
ysdk.player.get_info(
callback: function,
options: {
scopes: boolean|nil,
signed: boolean|nil
}
)
callback: function
— çağrılan metodun callback'i. Şu şekilde görünür:
function(self, player: table|nil, signature: string|nil): nil
player: table
— oyuncu hakkında bilgi. Şu özellikleri içerir:
player = {
logged_in: boolean,
unique_id: string,
name: string,
photo: {
small: string,
medium: string,
large: string
}
}
Örnek
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
Kullanıcı Yetkilendirmesi
Eğer oyuncu yetkilendirilmemişse, ysdk.player.open_auth_dialog()
metodunu kullanarak yetkilendirme penceresini açabilirsiniz.
ysdk.player.open_auth_dialog(callback: function)
callback: function
— callback çağrılan metodun. Şu şekilde görünür:
function(self, authorized: boolean): nil
authorized: boolean
— oyuncunun oturum açıp açmadığı.v
Oyun içi veriler
Oyun içi kullanıcı verileriyle çalışmak için Player
nesnesinin yöntemlerini kullanın:
-
ysdk.player.set_data(data, flush)
— kullanıcı verilerini kaydeder. Maksimum veri boyutu 200 KB'ı geçmemelidir.data: table
— anahtar-değer çiftlerini içerir.flush: boolean
— verilerin gönderim sırasını belirler.true
olarak ayarlanırsa veriler hemen sunucuya gönderilir;false
(varsayılan değer) ise verilerin gönderilmesi kuyruğa alınır.
Metot bir Promise
döndürür ve verilerin başarıyla kaydedilip kaydedilmediğini gösterir.
flush: false
parametresi ile döndürülen sonuç yalnızca verilerin geçerliliğini gösterir (gönderim kuyruğa alınır ve daha sonra gerçekleştirilir). Bu durumda, ysdk.player.get_data()
metodu, son ysdk.player.set_data()
çağrısı ile ayarlanan veriyi döndürür, veriler henüz gönderilmemiş olsa bile.
-
ysdk.player.get_data(callback, keys)
— Yandex veritabanında saklanan kullanıcının oyun içi verilerini talep eder.callback: fun(self, data: table<string, any>)
— kullanıcının alınan oyun içi verileriyle çalışmak için kullanılan işleyici fonksiyonu.keys: table<number, string>
— döndürülmesi gereken anahtarların listesi.keys
parametresi verilmezse, metot kullanıcının tüm oyun içi verilerini döndürür.
-
ysdk.player.set_stats(stats)
— kullanıcının sayısal verilerini kaydeder. Verilerin maksimum boyutu 10 KB'yi geçmemelidir.stats: table<string, number>
— her değeri sayı olan anahtar-değer çiftlerini içerir.
Not
Bu yöntemi, sık sık değişen sayısal değerler (puanlar, deneyim puanları, oyun içi para birimi) için, ysdk.player.set_data() yönteminin yerine kullanın.
ysdk.player.increment_stats(increments)
— kullanıcının oyun içi verilerini değiştirir. Verilerin maksimum boyutu 10 KB'yi geçmemelidir.increments: table<string, number>
— her değerin sayı olması gereken anahtar-değer çiftleri içeren nesne.
ysdk.player.get_stats(callback, keys)
— kullanıcının Yandex veritabanında kayıtlı sayısal verilerini alır.callback: fun(self, data: table<string, number>|nil)
— alınan kullanıcı verileriyle çalışmak için kullanılan işleyici fonksiyonu.keys: string[]
— döndürülmesi gereken anahtarların listesi. Eğer keys parametresi yoksa, yöntem kullanıcının tüm oyun içi verilerini döndürür.
Kullanıcı kimlikleri
ysdk.player.get_ids_per_game(callback: function)
callback: function
— callback çağrılan metodun dönüş değeridir. Şu şekildedir:
function(self, ids: {appID: number, userID: string}[]): nil
ids
— geliştiricinin oyunlarında, kullanıcının kişisel verilerinin iletilmesine açıkça izin verdiği tüm oyunlardaki kullanıcı kimlikleri. Şu özellikleri içerir:app_id: string
— uygulama kimliği.user_id: string
— kullanıcı kimliği.
Örnek
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