# لوحات المتصدرين لألعاب PlayDrop

صرّح بلوحات المتصدرين في catalogue.json، وأرسل النقاط عبر sdk.leaderboards، واعرض المراتب الأولى وجيران اللاعب. أنواع النقاط والحدود وقواعد التحديث.

Source: https://www.playdrop.ai/ar/create/learn/leaderboards

تمنح لوحات المتصدرين اللاعبين سببًا لإعادة اللعب ومرتبة يشاركونها. يخزّن PlayDrop أفضل نتيجة لكل لاعب في كل لوحة متصدرين ويعرضها على اللعبة.

## صرّح بلوحة متصدرين

أضفها إلى التطبيق في [catalogue.json](https://www.playdrop.ai/ar/create/learn/catalogue-json):

```json
{
  "leaderboards": [
    { "key": "high-score", "displayName": "High score", "description": "Most points in one run",
      "scoreType": "INTEGER", "sort": "DESC", "unitLabel": "pts" },
    { "key": "best-time", "displayName": "Fastest run", "description": "Time to reach the flag",
      "scoreType": "TIME_MS", "sort": "ASC" }
  ]
}
```

- `key`: من 3 إلى 64 حرفًا، يبدأ بحرف لاتيني صغير، ثم أحرف صغيرة أو أرقام أو `_` أو `.` أو `-`.
- يأتي `scoreType` و`sort` في زوجين: `INTEGER` مع `DESC` (يفوز الأعلى، والنقاط 0 أو أكثر) أو `TIME_MS` مع `ASC` (يفوز الأقل، بالمللي ثانية الموجبة).
- `unitLabel` نص عرض اختياري.

بعد النشر، لا يمكن حذف المفتاح ولا تغيير `scoreType` و`sort` الخاصين به. أوقف استخدام لوحة باستخدام `"status": "RETIRED"`. تحتاج لوحات المتصدرين إلى [حزمة](https://www.playdrop.ai/ar/create/learn/packaging).

## أرسل النقاط واقرأها

```js
const result = await sdk.leaderboards.submitScore("high-score", 1200);
// { accepted, improved, previousBestScore, bestScore, rank, previousRank, bestScoreAt, leaderboard }
if (result.improved) showNewBest(result.bestScore, result.rank);

const { leaderboard } = await sdk.leaderboards.get("high-score", { top: 10, aroundMe: 3 });
// leaderboard: { definition, top, player, playerEntry, aroundPlayer }

const { leaderboards } = await sdk.leaderboards.list();
```

- النقاط أعداد صحيحة آمنة. ولا تستبدل أفضل نتيجة إلا نتيجة أفضل منها.
- تقبل `top` من 1 إلى 100 إدخال، وتقبل `aroundMe` من 1 إلى 20 على كل جانب من اللاعب.
- تعيد `list({ includeRetired: true })` أيضًا اللوحات الموقوفة.

أرسل النقاط في نهاية الجولة، لا في كل إطار، وفي مرحلة `play` فقط. عالج الاستدعاءات المرفوضة كأي استدعاء شبكي؛ وأبقِ اللعبة قابلة للعب.

## الضيوف واللعب دون اتصال

يمكنك الإرسال دون التحقق من تسجيل الدخول. ودون أي جلسة لاعب على الإطلاق، ينجح الإرسال دون حفظ أي شيء. أما البيئات المضيفة التي تعلن دعم بيانات الجهاز، مثل تطبيقات PlayDrop القادرة على العمل دون اتصال، فتحتفظ بالنتيجة المحققة دون اتصال وتزامنها لاحقًا؛ ولا تعرض قراءاتها دون اتصال إلا أفضل نتيجة للاعب نفسه، دون مرتبة. وفي غير ذلك يحتاج الإرسال إلى اتصال.

## ما لا تفعله لوحات المتصدرين

لا توجد في SDK مناطق أو إعادة ضبط مجدولة أو مواسم أو جوائز أسبوعية تلقائية. وللوحة أسبوعية، أدرج الأسبوع في تصميمك الخاص، مثل مفتاح جديد لكل موسم يُصرَّح به في إصدار جديد.

ذات صلة: [الإنجازات](https://www.playdrop.ai/ar/create/learn/achievements)، [الحفظ السحابي](https://www.playdrop.ai/ar/create/learn/cloud-saves)، [مشاركة نتيجة](https://www.playdrop.ai/ar/create/learn/social).

## أدلة ذات صلة

- [الإنجازات](https://www.playdrop.ai/ar/create/learn/achievements): صرّح بإنجازات قياسية وتدريجية مع أيقوناتها في catalogue.json، ثم افتحها وأبلغ عن التقدم باستخدام sdk.achievements.
- [الحفظ السحابي](https://www.playdrop.ai/ar/create/learn/cloud-saves): احفظ تقدم اللاعب وحمّله باستخدام sdk.me.appData وupdateAppData، للضيوف والمسجّلين، مع قواعد الكتابة والمعاينات واللعب دون اتصال.
- [catalogue.json](https://www.playdrop.ai/ar/create/learn/catalogue-json): حقول catalogue.json في ألعاب PlayDrop: الهوية وصفحة اللعبة وطرق اللعب والواجهات وتسجيل الدخول وInstant والتحميل المسبق والوسائط والترجمات والنقاط والخوادم.
