Lider tahtaları
Oyun sayfasında en iyi oyuncuların sonuçlarını ve giriş yapmış kullanıcının sıralamadaki konumunu içeren kişiselleştirilmiş skor tabloları gösterebilirsiniz.
Aşağıda açıklanan sorguların çalışabilmesi için koşulların karşılanıp karşılanmadığını kontrol edin:
- SDK'yı bağlanmış ve ayarlanmış olmalıdır ve nesnesi
ysdk
değişkeni aracılığıyla erişilebilirdir, - Geliştirici konsolunda skor tablosu oluşturulmuştur.
Dikkat
Konsol Skor tablosu teknik adı alanında uygun ada sahip bir skor tablosu yoksa, sorgular 404 hatası verir.
Başlatma
Liderboard metodlarını doğrudan çağırmak için ysdk.leaderboards
kullanın.
Dikkat
lb
nesnesinin ysdk.getLeaderboards()
metoduyla başlatılması artık kullanımdan kaldırılmıştır.
Eski metodlar
var lb;
ysdk.getLeaderboards()
.then(_lb => lb = _lb);
// Liderboard metodları eski yöntemle çağrıldığında:
// lb.getLeaderboardDescription() → ysdk.leaderboards.getDescription()
// lb.setLeaderboardScore() → ysdk.leaderboards.setScore()
// lb.getLeaderboardPlayerEntry() → ysdk.leaderboards.getPlayerEntry()
// lb.getLeaderboardEntries() → ysdk.leaderboards.getEntries()
Skor tablosu açıklaması
Skor tablosu açıklamasını adına göre almak için ysdk.leaderboards.getDescription()
yöntemini kullanın:
getDescription(
leaderboardName: string
)
Parametre |
Açıklama |
|
Skor tablosu adı. |
ysdk.leaderboards.getDescription('leaderboard2021')
.then(res => console.log(res));
const work = async () => {
const res = await ysdk.leaderboards.getDescription('leaderboard2021');
console.log(res);
}
work();
Yanıt formatı
{
appID: string,
default: boolean,
description: {
invert_sort_order: boolean,
score_format: {
options: {
decimal_offset: integer
},
type: string
}
},
name: string,
title: {
en: string,
ru: string
}
}
Parametre |
Açıklama |
|
Uygulama tanımlayıcısı. |
|
Eğer |
|
Sıralama yönü:
|
|
Sayının ondalık kısmının boyutu. Örneğin, |
|
Skor tablosu sonucunun türü. Kullanılabilir parametreler: |
|
Skor tablosu adı. |
|
Yerelleştirilmiş adlar. Olası dizi parametreleri: |
Yeni sonuç
Dikkat
Sadece yetkilendirilmiş kullanıcılar için bu istek geçerlidir. Gerekirse yetkilendirme işleminden faydalanın.
Kullanıcı için yöntemin erişilebilirliğini kontrol etmek için ysdk.isAvailableMethod('leaderboards.setScore')
yöntemini kullanabilirsiniz. Bu yöntem, erişilebilirliği gösteren bir Promise<Boolean>
döndürür.
Sonuçların yetkilendirmeye bakılmaksızın tüm kullanıcılar için kaydedilmesini istiyorsanız, uygulama kodunda özel bir liderlik tablosu belirtmenizi öneririz. Teknoloji seçimi sınırlı değildir.
Oyuncunun yeni skorunu ayarlamak için ysdk.leaderboards.setScore()
yöntemini kullanın:
setScore(
leaderboardName: string,
score: number,
extraData?: string
)
Parametre |
Açıklama |
|
Skor tablosu adı. |
|
Sonuç değeri. Yalnızca |
|
Kullanıcı açıklaması. İsteğe bağlı parametre. |
Not
Bir sorgu saniyede en fazla bir kez gönderilebilir. Aksi takdirde, bir hata ile reddedilir.
// extraData olmadan
ysdk.leaderboards.setScore('leaderboard2021', 120);
// extraData ile
ysdk.leaderboards.setScore('leaderboard2021', 120, 'My favourite player!');
const work = async () => {
// extraData olmadan
await ysdk.leaderboards.setScore('leaderboard2021', 120);
// extraData ile
await ysdk.leaderboards.setScore('leaderboard2021', 120, 'My favourite player!');
}
work();
Puan alınması
Dikkat
Sorgu yalnızca yetkilendirilmiş kullanıcılar için kullanılabilir. Gerekirse yetkilendirme işleminden faydalanın.
Kullanıcı için yöntemin erişilebilirliğini kontrol etmek için ysdk.isAvailableMethod('leaderboards.getPlayerEntry')
metodunu kullanabilirsiniz. Bu metod, erişilebilirliği gösteren Promise<Boolean>
döndürür.
Erişim yetkilendirmesinden bağımsız olarak sonuçların tüm kullanıcılar için kaydedilmesini sağlamak için uygulama kodunda özel lider tablosunu kendiniz tanımlamanızı öneririz. Teknoloji seçimi sınırlı değildir.
Kullanıcı puanını almak için ysdk.leaderboards.getPlayerEntry()
yöntemini kullanın:
getPlayerEntry(
leaderboardName: string
)
Parametre |
Açıklama |
|
Skor tablosu adı. |
Not
İstekler 5 dakikada en fazla 60 kez gönderilebilir. Aksi takdirde hata ile reddedilecektir.
ysdk.leaderboards.getPlayerEntry('leaderboard2021')
.then(res => console.log(res))
.catch(err => {
if (err.code === 'LEADERBOARD_PLAYER_NOT_PRESENT') {
// Oyuncunun skor tablosunda hiç kaydı yoksa tetiklenir
}
});
const work = async () => {
try {
const res = await ysdk.leaderboards.getPlayerEntry('leaderboard2021');
console.log(res);
} catch (err) {
if (err.code === 'LEADERBOARD_PLAYER_NOT_PRESENT') {
// Oyuncunun skor tablosunda hiç kaydı yoksa tetiklenir
}
}
}
work();
Yanıt formatı
{
score: integer,
extraData: string,
rank: integer,
player: {
getAvatarSrc: (size: string) => string,
getAvatarSrcSet: (size: string) => string,
lang: string,
publicName: string,
scopePermissions: {
avatar: string,
public_name: string
},
uniqueID: string,
},
formattedScore: string
}
Parametre |
Açıklama |
|
Sonucun değeri. Yalnızca |
|
Kullanıcı açıklaması. İsteğe bağlı parametre. |
|
Kullanıcının profil resminin URL'sini döndürür. Olası değerler |
|
Retina ekranlar için uygun olan kullanıcı profil resminin srcset'ini döndürür. Olası değerler |
Skor tablosu kayıtları
Kullanıcı sıralamasını çıkarmak için ysdk.leaderboards.getEntries()
yöntemini kullanın:
getEntries(
leaderboardName: string,
{
includeUser: boolean,
quantityAround: integer,
quantityTop: integer
}
)
Parametre |
Açıklama |
|
Skor tablosu adı. |
|
Giriş yapmış bir kullanıcının yanıta dahil edilip edilmeyeceğini belirler:
|
|
Yanıt olarak gelecek skor tablosunda kullanıcının altındaki ve üstündeki girişlerin sayısı. Minimum değer 1 ve maksimum değer 10. Varsayılan olarak 5 değerini döndürür. |
|
Skor tablosunun en üstündeki giriş sayısı. Minimum değer 1 ve maksimum değer 20. Varsayılan olarak 5 değerini döndürür. |
Not
İstek, 5 dakikada en fazla 20 kez gönderilebilir. Aksi takdirde bir hata ile reddedilecektir.
// Tüm varsayılan değerleri kullanarak
ysdk.leaderboards.getEntries('leaderboard2021')
.then(res => console.log(res));
// En iyi 10 skor sahibinin alınması
ysdk.leaderboards.getEntries('leaderboard2021', { quantityTop: 10 })
.then(res => console.log(res));
// En iyi 10 skor sahibinin ve kullanıcıya yakın 3 kaydın alınması
ysdk.leaderboards.getEntries('leaderboard2021', { quantityTop: 10, includeUser: true, quantityAround: 3 })
.then(res => console.log(res));
const work = async () => {
let res;
// Tüm varsayılan değerleri kullanarak
res = await ysdk.leaderboards.getEntries('leaderboard2021');
console.log(res);
// En iyi 10 skor sahibinin alınması
res = await ysdk.leaderboards.getEntries('leaderboard2021', { quantityTop: 10 });
console.log(res);
// En iyi 10 skor sahibinin ve kullanıcıya yakın 3 kaydın alınması
res = await ysdk.leaderboards.getEntries('leaderboard2021', { quantityTop: 10, includeUser: true, quantityAround: 3 });
console.log(res);
}
work();
Yanıt formatı
{
leaderboard: {
...
},
ranges: [
{
start: integer,
size: integer
}
],
userRank: integer,
entries: [
{
score: integer,
extraData: string,
rank: integer,
player: {
getAvatarSrc: (size: string) => string,
getAvatarSrcSet: (size: string) => string,
lang: string,
publicName: string,
scopePermissions: {
avatar: string,
public_name: string
},
uniqueID: string,
},
formattedScore: string
},
...
]
}
Parametre |
Açıklama |
|
|
|
Yanıttaki aralıklar. |
|
Sıralamadaki yeri. Puanlama sıfırdan yapılır, bu nedenle 1. sıra sıfır eleman olarak kabul edilir. |
|
Talep edilen kayıt sayısı. Veriler eksikse, yanıtla eşleşmeyebilir. |
|
Sıralamada kullanıcı sırası. Eğer mevcut değilse veya en iyiler listesi kullanıcıyı içermiyorsa 0'dır. |
|
Sorguya göre sonuçlar. |
|
Sonuç değeri. Yalnızca |
|
Kullanıcı açıklaması. İsteğe bağlı parametre. |
|
Kullanıcının profil resminin URL'sini döndürür. Olası değerler |
|
Retina ekranlar için uygun olan kullanıcı profil resminin srcset'ini döndürür. Olası değerler |
Yöntem Kısıtlamaları
Yöntem |
Açıklama |
Sınır |
Kullanıcı Kimliği Doğrulaması |
|
1 saniyede 1 istek |
Zorunlu |
|
|
5 dakikada 60 istek |
Zorunlu |
|
|
5 dakikada 20 istek |
Opsiyonel |
Diğer istekler için sınır: 5 dakikada 20 istek.
Liderlik Tablolarıyla İlgili Sorunlar
Öneri
ysdk.isAvailableMethod()
ve ysdk.leaderboards.setScore()
yöntemlerinin kombinasyonunu kullandığınızda yetkilendirilmemiş kullanıcılar liderlik tablosuna dahil olmaz ve ilerlemelerini göremezler. Her türlü kullanıcının sonuçlarını saklayan ve herkese gösteren ayrı bir liderlik tablosu oluşturmanızı tavsiye ederiz. Uygulama kodunda özel liderlik tabloları oluşturabilir, teknoloji seçiminizde sınırlama yoktur.
Obje zaten mevcut
Yeni bir liderlik tablosu oluşturulmaya çalışıldığında eski bir isimle hata oluşur. Daha önce kullanılmamış bir isim girin.
Kullanıcı Gizli
"Kullanıcı gizli" yazısı, oyuncu avatarını ve adını kullanma izni vermediğinde görüntülenir. Kullanıcı verilerine erişim, profilindeki ayarlara bağlıdır. Daha fazla bilgi için Oyuncu verileri bölümüne bakın.
Hata 404
Liderlik tablosu için SDK yöntemlerini çağırmaya çalışırken 404 hatası alıyorsanız, geliştirici konsolunda Technical leaderboard name alanında uygun adla liderlik tablosunun oluşturulduğundan emin olun.
Not
Destek ekibi, hazır oyunu Yandex Oyun platformuna yerleştirmenize yardımcı olur. Geliştirme ve test etme konularındaki uygulamalı sorulara ise diğer geliştiriciler Discord Topluluğu yanıt verir.
Yandex Games SDK kullanırken sorunla karşılaşırsanız veya sorunuz varsa, lütfen destek ekibiyle iletişime geçin:
Skor tablosunun adı.
Uygulama tanımlayıcısı.
true
ise, skor tablosu ana skor tablosudur.
Sıralama yönü:
false
: azalan şeklinde sıralanır,true
: artan şeklinde sıralanır.
Sayının ondalık kısmının boyutu.
Örneğin, decimal_offset: 2
olduğunda 1234 sayısı 12.34 olarak görüntülenecektir.
Lider tablosu türü. Kullanılabilir parametreler: numeric
(sayı), time
(saniye).
Yerelleştirilmiş adlar. Olası dizi parametreleri: ru
, en
, be
, uk
, kk
, uz
, tr
.
Sonuç değeri. Yalnızca integer
türü kabul edilir. Negatif olamaz. Skor tablosu türü time
ise, değerler milisaniye cinsinden aktarılmalıdır.
Kullanıcı açıklaması. İsteğe bağlı parametre.
Skor tablosu sonucunun türü. Kullanılabilir parametreler: numeric
(sayı), time
(saniye).
Kullanıcı profil resminin URL'sini döndürür. Olası değerler size
, small
, medium
ve large
şeklindedir.
Retina ekranlar için uygun olan kullanıcı profil resminin srcset'ini döndürür. Olası değerler size
, small
, medium
ve large
şeklindedir.
Giriş yapmış bir kullanıcının yanıta dahil edilip edilmeyeceğini belirtir:
true
: Yanıta dahil edilsin,false
(varsayılan): Dahil edilmesin.
Yanıt olarak gelecek skor tablosunda kullanıcının altındaki ve üstündeki girişlerin sayısı. Minimum değer 1, maksimum değer 10. Varsayılan olarak 5 değerini döndürür.
Skor tablosunun en üstünden itibaren giriş sayısı. Minimum değer 1 ve maksimum değer 20. Varsayılan olarak 5 değerini döndürür.
Yanıttaki yerlerin aralıkları.
Sıralamadaki konumu. Puanlama sıfırdan yapılır, bu nedenle 1. sıra sıfır eleman olarak kabul edilir.
Talep edilen kayıt sayısı. Veriler eksikse, yanıtla eşleşmeyebilir.
Kullanıcının sıralamadaki konumu. Eğer mevcut değilse veya en iyiler listesi kullanıcıyı içermiyorsa 0'dır.
Sorguya göre sonuçlar.