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:

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

leaderboardName

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

appID

Uygulama tanımlayıcısı.

default

Eğer true ise, skor tablosu ana tablodur.

invert_sort_order

Sıralama yönü:

  • false: azalan şeklinde sıralanır,
  • true: artan şeklinde sıralanır.

decimal_offset

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.

type

Skor tablosu sonucunun türü. Kullanılabilir parametreler: numeric (sayı), time (saniye).

name

Skor tablosu adı.

title

Yerelleştirilmiş adlar. Olası dizi parametreleri: ru, en, be, uk, kk, uz, tr.

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

leaderboardName

Skor tablosu adı.

score

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.

extraData

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

leaderboardName

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

score

Sonucun 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.

extraData

Kullanıcı açıklaması. İsteğe bağlı parametre.

getAvatarSrc

Kullanıcının profil resminin URL'sini döndürür. Olası değerler size, small, medium ve large şeklindedir.

getAvatarSrcSet

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.

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

leaderboardName

Skor tablosu adı.

includeUser

Giriş yapmış bir kullanıcının yanıta dahil edilip edilmeyeceğini belirler:

  • true: Yanıta dahil edilsin,
  • false (varsayılan): Dahil edilmesin.

quantityAround

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.

quantityTop

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

leaderboard

Skor tablosu açıklaması.

ranges

Yanıttaki aralıklar.

start

Sıralamadaki yeri. Puanlama sıfırdan yapılır, bu nedenle 1. sıra sıfır eleman olarak kabul edilir.

size

Talep edilen kayıt sayısı. Veriler eksikse, yanıtla eşleşmeyebilir.

userRank

Sıralamada kullanıcı sırası. Eğer mevcut değilse veya en iyiler listesi kullanıcıyı içermiyorsa 0'dır.

entries

Sorguya göre sonuçlar.

score

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.

extraData

Kullanıcı açıklaması. İsteğe bağlı parametre.

getAvatarSrc

Kullanıcının profil resminin URL'sini döndürür. Olası değerler size, small, medium ve large şeklindedir.

getAvatarSrcSet

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.

Yöntem Kısıtlamaları

Yöntem

Açıklama

Sınır

Kullanıcı Kimliği Doğrulaması

ysdk.leaderboards.setScore()

Oyuncunun yeni skorunu ayarlar

1 saniyede 1 istek

Zorunlu

ysdk.leaderboards.getPlayerEntry()

Bir kullanıcının derecesini alır

5 dakikada 60 istek

Zorunlu

ysdk.leaderboards.getEntries()

Birden fazla kullanıcının derecesini alır

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:

Sohbete yaz

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.

Skor tablosu açıklaması.

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.