すべてのプレイヤー、もしくはフレンドのみのリーダーボード情報を取得します
achievement_load_leaderboard(ident, minindex, maxindex, filter)
この関数は指定されたリーダーボードの詳細を取得するよう、サーバーに要求を送信します。リーダーボードは、開発者のダッシュボードにあらかじめ作成しておく必要があり、それにより生成されたIDを指定します。 この関数により、ソーシャル非同期イベントをトリガし、特別な変数"async_load"にds_map形式で結果が格納されます。 このds_mapの"id"は定数"achievement_leaderboard_info"と一致する必要があります。ds_mapの詳細については以下のとおりです。
取得条件には最小値と最大値を指定するだけでなく、次のフィルタ定数を指定することで、フレンドのみ、またはすべてのプレイヤー、というフィルタを指定することが可能です
achievement_login()でログインをした後、AndroidとiOSのいずれかで以下のように分岐する処理を書くことで、フレンドのみのリーダーボードを取得することが可能です
if os_type == os_android { achievement_load_leaderboard("CgkIs9_51u0PEAIQBw", 1, 100, achievement_filter_friends_only); } else { achievement_load_leaderboard("leaderboard1id", 1, 100, achievement_filter_friends_only); }
これは指定のリーダーボードに情報の要求を送信し、特別な変数"async_load"にds_map形式で格納するよう、非同期コールバックを生成します
var ident = ds_map_find_value(async_load, "id"); if ident == achievement_leaderboard_info { var lbid = ds_map_find_value(async_load,"leaderboardid"); if lbid == "CgkIs9_51u0PEAIQBw" || lbid == "leaderboard1id" { global.numentries = ds_map_find_value(async_load,"numentries"; for(var i = 0; i < numentries; i++;) { global.playername[i] = ds_map_find_value(async_load, "Player" + string(i)); global.playerid[i] = ds_map_find_value(async_load, "Playerid" + string(i)); global.playerrank[i] = ds_map_find_value(async_load, "Rank" + string(i)); global.playerscore[i] = ds_map_find_value(async_load, "Score" + string(i)); achievement_get_pic(global.playerid[i]); } } }
上記コードはソーシャル非同期イベントで返されたds_mapをチェックして、その"id"が一致するかどうかチェックして、リーダーボードIDを確認、その後、受信したリーダーボードの値が格納されたds_mapをループして値をグローバル変数に格納します。さらにそのユーザの画像を取得します(詳細はachievement_get_pic()を参照してください)