あなたの世界を作りなさい
ソーシャル
リーダーボード
17分
リーダーボードの設定 リーダーボードは、各プレイヤーのランキングとハイスコアを保存および管理するための機能を提供するモジュールです。 ステップ 1 リーダーボードを作成する リーダーボードを作成するには、projectsettings → zepeto → zepetoleaderboard メニューの \[get leaderboardinfo] ボタンを選択します。 \[add leaderboard] を選択して新しいリーダーボードを追加します。 既に存在するリーダーボードがある場合、そのリーダーボードが設定画面に表示されます。 ステップ 2 リーダーボードをカスタマイズする \[リーダーボードを追加] ボタンが選択されると、以下のポップアップウィンドウが表示されます。各パラメータの値を調整することができます。 パラメータ 説明 名前 リーダーボード名 更新ルール スコア更新ルール 最大スコア ユーザーの最高スコアを記録する 最小スコア ユーザーの最低スコアを記録する スコアを累積する ユーザーのスコアを加算し、記録として保存する resetinfo(s) スコアをリセットする期間を設定できます。 \ これは、リーダーボードを毎シーズン更新する必要がある場合に役立ちます。 \ スコアはデフォルトではリセットされませんが、リセット期間(月次、週次、日次)を設定することで調整できます。 ステップ 3 スコアリセットの設定 スコアリセットのルールは以下の通りです: 期間 説明 なし スコアはリセットされません 日 スコアは設定された時間に毎日リセットされます(例:日次ランキング) 週 スコアは設定された日付と時間に毎週リセットされます(例:週次ランキング) 月 スコアは設定された日付と時間に毎月リセットされます(例:月次ランキング;最大日数は31ですが、月に31日がない場合は自動的にその月の最終日に調整されます) ステップ 4 リーダーボード id zepetoscript とリーダーボードを使用するには、リーダーボード id 情報が必要です。 リーダーボード情報にアクセスするには、設定に移動するか(プロジェクト設定メニューの編集の下で、zepeto → zepeto リーダーボード → 編集に進む)、zepetoscript api から読み込むことができます。 📘 次のガイドを参照してください。 \[ リーダーボード docid\ dxj1rn4yo1c6ihw2ifwsw ] リセットルールが設定されると、リーダーボードは変更できません。 リセットルールを変更するには、新しいリーダーボードを作成する必要があります。 リセット時間は utc+0 に基づいています。オフセットが提供されるため、将来的にタイムゾーンを変更できます。 スコアの記録 leaderboardapi setscore() は、ユーザーのスコアをリーダーボードに記録するapiです。 リーダーボードid、スコア値、完了ポイント、およびエラーポイントが引数として渡されます。 スコアのユーザー情報は自動的に保存されます。 以下は、leaderboardapi setscore関数を読み込むための例です。 leaderboardapi setscore(this leaderboardid, this score, this onresult, this onerror); 以下は、ユーザーのスコアをリーダーボードに取得するためのコードテンプレートです。 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); } } ランキング詳細の検索 特定の範囲のランキング情報を取得する leaderboardapi getrangerank() 関数を使用して、特定の範囲のランキング詳細をロードします。 リーダーボードid、開始ランキング、最終ランキング、リセットルール、前シーズンのランキング情報を取得するためのブール値、および完了時とエラー発生時のコールバック関数が引数として渡されます。 ランキング情報を照会するユーザー情報が自動的に入力され、1回の照会で最大100件のランキング情報を処理できます(例:1のページング形式、 100, 101 200形式での実装) ❗️ 注意 一度に100件以上のデータをロードすると、apiの負荷の問題やレート制限により、正しく動作しない可能性があります。 関数呼び出しの例 leaderboardapi getrangerank() 関数を呼び出す例は以下の通りです: leaderboardapi getrangerank(this leaderboardid, this startrank, this endrank, this resetrule, false, this onresult, this onerror); 以下のコードは、特定の範囲のランキング情報をロードするための例です。 onresultからメンバー値を使用して、プロフィール写真をロードできます。 📘 以下のガイドを参照してください。 \[ ユーザー情報 docid\ u7ddubms3cujnfxizpcqv ] 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); } } リーダーボードの詳細を検索する すべてのリーダーボードを検索する leaderboardapi getallleaderboards関数を使用して、指定されたワールド内のすべてのリーダーボード情報をロードします。 完了からエラー発生までのコールバック関数が引数として渡されます。 leaderboardapi getallleaderboards関数をロードする例は次のとおりです: leaderboardapi getallleaderboards(this onresult, this onerror); 以下は、リーダーボードの全情報を読み込むための例です。 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); } } 特定のリーダーボードを検索する leaderboardapi getleaderboards関数を使用して、特定のリーダーボード情報を読み込みます。 リーダーボードid、完了時刻、エラー発生時刻のコールバック関数が引数として渡されます。 leaderboardapi getleaderboard関数を読み込む例は以下の通りです: leaderboardapi getleaderboard(this leaderboardid, this onresult, this onerror); 以下は、特定のリーダーボード情報を読み込むための例です。 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); } } リーダーボード使用例 以下は、公式zepetoワールドスライムパーティーに適用されたリーダーボードの例です。 特定の範囲内でランキングを取得するためにapi呼び出しを設定、読み取り、利用することで、ui内で次のように構成できます。