---
title: กระดานผู้นำ
slug: world-sdk-guide-th/rW1kYr6121M34ch8b6lEv
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

## การตั้งค่าอันดับ

อันดับคือโมดูลที่ให้ฟังก์ชันสำหรับการบันทึกและจัดการอันดับและคะแนนสูงสุดของผู้เล่นแต่ละคน



### ขั้นตอนที่ 1 : สร้างอันดับ

ในการสร้างอันดับ ให้เลือกปุ่ม \[Get LeaderboardInfo] ใน ProjectSettings → Zepeto → ZepetoLeaderboard เมนู

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-x8TILzX7gEwCVf4COFWS7-20240904-102426.png)



เลือก \[Add Leaderboard] เพื่อเพิ่มอันดับใหม่

หากมีอันดับที่มีอยู่แล้ว อันดับจะปรากฏบนหน้าจอการตั้งค่า

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-a_DcriwNv9i6Z4_xRUA6R-20240904-102426.png)



### ขั้นตอนที่ 2 : ปรับแต่งกระดานคะแนน

หน้าต่างป๊อปอัพที่แสดงด้านล่างจะปรากฏเมื่อเลือกปุ่ม \[เพิ่มกระดานคะแนน] คุณจะสามารถปรับค่าพารามิเตอร์แต่ละค่าได้

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-dVvneyj6HxCI5VwAMNod4-20240904-102426.png)

| **พารามิเตอร์** | **คำอธิบาย**                                                                                                                                                                                                                    |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ชื่อ            | ชื่อกระดานคะแนน                                                                                                                                                                                                                 |
| กฎการอัปเดต     | กฎการอัปเดตคะแนน                                                                                                                                                                                                                |
| คะแนนสูงสุด     | บันทึกคะแนนสูงสุดของผู้ใช้                                                                                                                                                                                                      |
| คะแนนต่ำสุด     | บันทึกคะแนนต่ำสุดของผู้ใช้                                                                                                                                                                                                      |
| สะสมคะแนน       | เพิ่มคะแนนของผู้ใช้และบันทึกเป็นบันทึก                                                                                                                                                                                          |
| ResetInfo(s)    | คุณสามารถตั้งระยะเวลาในการรีเซ็ตคะแนนได้<br />- นี่มีประโยชน์หากกระดานคะแนนต้องการการอัปเดตทุกฤดูกาล<br />- คะแนนจะไม่ถูกรีเซ็ตโดยค่าเริ่มต้น แต่คุณสามารถปรับเปลี่ยนได้โดยการตั้งระยะเวลารีเซ็ต (รายเดือน, รายสัปดาห์, รายวัน) |

### ขั้นตอนที่ 3 : ตั้งค่าการรีเซ็ตคะแนน

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-ilxVY3P3OlBWhuZI6HqFB-20240904-102426.png)



กฎการรีเซ็ตคะแนนมีดังนี้:

| **ช่วงเวลา** | **คำอธิบาย**                                                                                                                                                               |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ไม่มี        | คะแนนจะไม่ถูกรีเซ็ต                                                                                                                                                        |
| วัน          | คะแนนจะถูกรีเซ็ตทุกวันในเวลาที่กำหนด (เช่น การจัดอันดับรายวัน)                                                                                                             |
| สัปดาห์      | คะแนนจะถูกรีเซ็ตทุกสัปดาห์ในวันที่และเวลาที่กำหนด (เช่น การจัดอันดับรายสัปดาห์)                                                                                            |
| เดือน        | คะแนนจะถูกรีเซ็ตทุกเดือนในวันที่และเวลาที่กำหนด (เช่น การจัดอันดับรายเดือน; ค่าสูงสุดของวันคือ 31 แต่ถ้าเดือนนั้นไม่มี 31 วัน จะปรับให้เป็นวันสุดท้ายของเดือนโดยอัตโนมัติ) |



### ขั้นตอนที่ 4 : รหัสลีดเดอร์บอร์ด

ในการใช้ ZEPETOScript และลีดเดอร์บอร์ด คุณต้องมีข้อมูลรหัสลีดเดอร์บอร์ด

ในการเข้าถึงข้อมูลลีดเดอร์บอร์ด คุณสามารถไปที่การตั้งค่า (ภายใต้การแก้ไขในเมนูการตั้งค่าโปรเจกต์ ไปที่ Zepeto → Zepeto Leaderboard → แก้ไข) หรือโหลดจาก API ของ ZEPETOScript

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-cnw3rRdiFDBMaqmlgGvF4-20240904-102426.png)

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-rI3bkw-xoYmq8yr2kZ3Tp-20240904-102426.png)

:::hint{type="danger"}
- เมื่อกฎการรีเซ็ตถูกตั้งค่าแล้ว ลีดเดอร์บอร์ดไม่สามารถแก้ไขได้
- ในการเปลี่ยนกฎการรีเซ็ต คุณต้องสร้างลีดเดอร์บอร์ดใหม่
- เวลาที่รีเซ็ตจะอิงตาม UTC+0 จะมีการจัดเตรียมการปรับเวลาเพื่อให้สามารถเปลี่ยนเขตเวลาในอนาคตได้
:::



## การบันทึกคะแนน

LeaderboardAPI.SetScore() เป็น API ที่บันทึกคะแนนของผู้ใช้ในกระดานคะแนน
รหัสกระดานคะแนน, ค่าคะแนน, จุดที่เสร็จสมบูรณ์ และจุดที่เกิดข้อผิดพลาดจะถูกส่งเป็นอาร์กิวเมนต์.

ข้อมูลผู้ใช้สำหรับคะแนนจะถูกบันทึกโดยอัตโนมัติ.

ต่อไปนี้คือตัวอย่างสำหรับการโหลดฟังก์ชัน LeaderboardAPI.SetScore.

```typescript
LeaderboardAPI.SetScore(this.leaderBoardId, this.score, this.OnResult, this.OnError);
```



ต่อไปนี้คือตัวอย่างโค้ดสำหรับการดึงคะแนนของผู้ใช้ไปยังกระดานคะแนน.

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { SetScoreResponse, LeaderboardAPI } from 'ZEPETO.Script.Leaderboard';

export default class SetScoreExample extends ZepetoScriptBehaviour {

    public leaderboardId: string;
    public score: number;

    Start() {
        LeaderboardAPI.SetScore(this.leaderboardId, this.score, this.OnResult, this.OnError);
    }

    OnResult(result: SetScoreResponse) {
        console.log(`result.isSuccess: ${result.isSuccess}`);
    }

    OnError(error: string) {
        console.error(error);
    }
}
```

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-pGaOZTKvvGGSzdC9pMKUo-20240904-102426.png)

## รายละเอียดการค้นหารายการ

### รับข้อมูลการจัดอันดับในช่วงที่เฉพาะเจาะจง

ใช้ฟังก์ชัน LeaderboardAPI.GetRangeRank() เพื่อโหลดรายละเอียดการจัดอันดับในช่วงที่เฉพาะเจาะจง

ค่าบูลีนเพื่อดึงข้อมูล ID ของกระดานผู้นำ, การจัดอันดับเริ่มต้น, การจัดอันดับสุดท้าย, กฎการรีเซ็ต และข้อมูลการจัดอันดับของฤดูกาลล่าสุด และฟังก์ชัน callback จากเวลาที่เสร็จสิ้นและเวลาที่เกิดข้อผิดพลาดจะถูกส่งเป็นอาร์กิวเมนต์

ข้อมูลผู้ใช้ที่สอบถามข้อมูลการจัดอันดับจะถูกกรอกโดยอัตโนมัติ และสามารถประมวลผลข้อมูลการจัดอันดับได้สูงสุดถึง 100 รายการต่อการสอบถาม (เช่น: การแบ่งหน้าใน 1~~100, 101~~200 รูปแบบสำหรับการใช้งาน)

:::hint{type="danger"}
**❗️ ระวัง**
หากโหลดข้อมูลมากกว่า 100 รายการในครั้งเดียว อาจทำงานไม่ถูกต้องเนื่องจากปัญหาการโหลด API และการจำกัดอัตรา
:::



### ตัวอย่างการเรียกฟังก์ชัน

ตัวอย่างการเรียกฟังก์ชัน LeaderboardAPI.GetRangeRank() มีดังนี้:

```typescript
LeaderboardAPI.GetRangeRank(this.leaderboardId, this.startRank, this.endRank, this.resetRule, false, this.OnResult, this.OnError);
```

โค้ดต่อไปนี้เป็นตัวอย่างสำหรับการโหลดข้อมูลการจัดอันดับในช่วงที่เฉพาะเจาะจง
คุณสามารถใช้ค่าของสมาชิกจาก OnResult เพื่อโหลดรูปโปรไฟล์



:::hint{type="info"}
**📘&#x20;**&#xE42;ปรดดูคู่มือต่อไปนี้.\[[ข้อมูลผู้ใช้](docId\:CL33FgnsabaFjr7nprFYi)]
:::

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { GetRangeRankResponse, LeaderboardAPI, ResetRule } from 'ZEPETO.Script.Leaderboard';

export default class GetRangeRankExample extends ZepetoScriptBehaviour {

    public leaderboardId: string;
    public startRank: number;
    public endRank: number;
    public resetRule: ResetRule;

    Start() {
        LeaderboardAPI.GetRangeRank(this.leaderboardId, this.startRank, this.endRank, this.resetRule, false, 
            this.OnResult, this.OnError);
    }

    OnResult(result: GetRangeRankResponse) {
        console.log(`result.isSuccess: ${result.isSuccess}`);
        if (result.rankInfo.myRank) {
            console.log(`member: ${result.rankInfo.myRank.member}, rank: ${result.rankInfo.myRank.rank}, 
			            score: ${result.rankInfo.myRank.score}, name: ${result.rankInfo.myRank.name}`);
        }

        if (result.rankInfo.rankList) {
            for (let i = 0; i < result.rankInfo.rankList.length; ++i) {
                const rank = result.rankInfo.rankList.get_Item(i);
                console.log(`i: ${i}, member: ${rank.member}, rank: ${rank.rank}, score: ${rank.score}, name: ${rank.name}`);
            }
        }
    }

    OnError(error: string) {
        console.error(error);
    }
}
```

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-18bLPkdU9QtCSjyoJh24a-20240904-102426.png)



## การค้นหารายละเอียดกระดานคะแนน

### ค้นหากระดานคะแนนทั้งหมด

ใช้ฟังก์ชัน LeaderboardAPI.GetAllLeaderboards เพื่อโหลดข้อมูลกระดานคะแนนทั้งหมดในโลกที่กำหนด.
ฟังก์ชัน callback จากเวลาที่เสร็จสิ้นจนถึงเวลาที่เกิดข้อผิดพลาดจะถูกส่งเป็นอาร์กิวเมนต์.

ตัวอย่างการโหลดฟังก์ชัน LeaderboardAPI.GetAllLeaderboards มีดังนี้:

```typescript
LeaderboardAPI.GetAllLeaderboards(this.OnResult, this.OnError);
```



ต่อไปนี้คือตัวอย่างการโหลดข้อมูลทั้งหมดของกระดานผู้นำ

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { GetAllLeaderboardsResponse, LeaderboardAPI } from 'ZEPETO.Script.Leaderboard';

export default class GetAllLeaderboardExample extends ZepetoScriptBehaviour {

    Start() {
        LeaderboardAPI.GetAllLeaderboards(this.OnResult, this.OnError);
    }

    OnResult(result: GetAllLeaderboardsResponse) {
        console.log(`result.isSuccess: ${result.isSuccess}`);

        if (result.leaderboards) {
            for (let i = 0; i < result.leaderboards.length; ++i) {
                const leaderboard = result.leaderboards[i];
                console.log(`i: ${i}, id: ${leaderboard.id}, name: ${leaderboard.name}`);
            }
        }
    }

    OnError(error: string) {
        console.error(error);
    }
}
```

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-eh5zPcUNzO9Dfh1jd-yHv-20240904-102426.png)



### ค้นหากระดานผู้นำเฉพาะ

ใช้ฟังก์ชัน LeaderboardAPI.GetLeaderboards เพื่อโหลดข้อมูลกระดานผู้นำเฉพาะ
ฟังก์ชัน callback สำหรับ ID ของกระดานผู้นำ เวลาที่เสร็จสิ้น และเวลาที่เกิดข้อผิดพลาดจะถูกส่งเป็นอาร์กิวเมนต์

ตัวอย่างการโหลดฟังก์ชัน LeaderboardAPI.GetLeaderboard มีดังนี้:

```typescript
LeaderboardAPI.GetLeaderboard(this.leaderboardId, this.OnResult, this.OnError);
```



ต่อไปนี้คือตัวอย่างสำหรับการโหลดข้อมูลลีดเดอร์บอร์ดบางส่วน

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { GetLeaderboardResponse, LeaderboardAPI } from 'ZEPETO.Script.Leaderboard';

export default class GetLeaderboardExample extends ZepetoScriptBehaviour {

    public leaderboardId: string;

    Start() {
        LeaderboardAPI.GetLeaderboard(this.leaderboardId, this.OnResult, this.OnError);
    }
    
    OnResult(result: GetLeaderboardResponse) {
        console.log(`result.isSuccess: ${result.isSuccess}`);

        if (result.leaderboard) {
            console.log(`id: ${result.leaderboard.id}, name: ${result.leaderboard.name}`);
        }
    }

    OnError(error: string) {
        console.error(error);
    }
}
```

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-3aUahVanqi5btqdBf8Pnq-20240904-102426.png)



## ตัวอย่างการใช้งานลีดเดอร์บอร์ด

- ต่อไปนี้คือตัวอย่างของลีดเดอร์บอร์ดที่ใช้ในงาน Slime Party ของ ZEPETO World อย่างเป็นทางการ
- โดยการตั้งค่า การอ่าน และการใช้ API เพื่อดึงอันดับภายในช่วงที่กำหนด คุณสามารถจัดโครงสร้างได้ดังนี้ใน UI

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-RwowxPyCglBw_LghZQ-Lu-20240904-102426.png)

