Xbox Live 통계 리더보드 가져오기
이 문서는 Xbox Live에서 특정 통계에 대한 글로벌 리더보드를 가져오는 함수인 xboxlive_stats_get_leaderboard
에 대해 설명합니다. 이 함수를 사용하면 사용자 ID, 통계 문자열, 그리고 리더보드 정보를 가져오기 위한 여러 세부 정보를 제공해야 합니다.
함수 설명
함수 사용법
- 사용자 ID:
xboxlive_get_user()
함수로 반환된 사용자 ID를 사용합니다. - 통계 문자열: "Featured Stat"로 등록된 통계 문자열을 입력합니다.
- 리더보드 정보: 가져오고자 하는 리더보드 정보의 세부 사항을 지정합니다.
중요! 글로벌 리더보드에 사용되는 통계는 XDP/Windows Dev Center에서 "Featured Stats"로 등록되어야 하며, 그렇지 않으면 오류가 발생합니다. 로컬(소셜) 리더보드를 원하신다면 xboxlive_stats_get_social_leaderboard()
함수를 참조하세요.
콜백 및 이벤트
이 함수는 Social Asynchronous Event
를 트리거하는 콜백을 생성합니다. 이 이벤트는 다음과 같은 키를 포함하는 DS 맵을 반환합니다:
키 | 설명 |
---|---|
"id" | 상수 achievement_stat_event 를 포함합니다. |
"event" | 문자열 "GetLeaderboardComplete"를 포함합니다. |
"userid" | 요청과 관련된 사용자 ID입니다. |
"error" | 성공 시 0, 오류 발생 시 다른 값이 반환됩니다. |
"errormessage" | 오류 메시지가 있을 경우 문자열로 포함됩니다. |
"display_name" | 제공자 대시보드에서 정의된 리더보드의 고유 ID입니다. |
"numentries" | 수신한 리더보드 항목의 수입니다. |
리더보드 데이터는 다음 형식으로 포함됩니다:
키 | 설명 |
---|---|
"PlayerN" | 플레이어의 이름 (N은 리더보드 데이터에서의 위치) |
"PlayeridN" | 플레이어의 고유 사용자 ID (N) |
"RankN" | 리더보드에서 플레이어의 순위 (N) |
"ScoreN" | 플레이어의 점수 (N) |
함수 구문
xboxlive_stats_get_leaderboard(user_id, stat, num_entries, start_rank, start_at_user, ascending);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
user_id | Xbox User ID | 리더보드를 가져올 사용자 ID입니다. |
stat | String | 글로벌 리더보드를 생성할 통계 문자열입니다. |
num_entries | Real | 가져올 글로벌 리더보드 항목의 수입니다. |
start_rank | Real | 리더보드에서 시작할 순위입니다 (start_at_user가 true일 경우 0 사용). |
start_at_user | Boolean | true로 설정하면 사용자 ID 순위에서 시작합니다. false일 경우는 다른 값 사용. |
ascending | Boolean | true로 설정하면 오름차순, false로 설정하면 내림차순입니다. |
확장 예제
다음은 이 함수를 사용하는 확장 예제입니다. Room Start
또는 Create
이벤트에서 호출할 수 있습니다.
xboxlive_stats_get_leaderboard(user_id, "GlobalTime", 20, 1, false, true);
위 코드는 게임의 모든 소셜 리더보드 위치를 가져오기 위해 호출되며, Social Asynchronous Event
콜백을 생성합니다. 이 콜백을 처리하는 방법은 다음과 같습니다:
if (async_load[? "id"] == achievement_stat_event) {
if (async_load[? "event"] == "GetLeaderboardComplete") {
global.numentries = async_load[? "numentries"];
for(var i = 0; i < numentries; i++) {
global.playername[i] = async_load[? "Player" + string(i)];
global.playerid[i] = async_load[? "Playerid" + string(i)];
global.playerrank[i] = async_load[? "Rank" + string(i)];
global.playerscore[i] = async_load[? "Score" + string(i)];
}
}
}
위 코드는 반환된 DS 맵을 확인하고, "id"가 확인된 상수와 일치하는지 확인한 후, 리더보드 데이터로 트리거된 이벤트인지 확인합니다. 그 후, 맵을 반복하여 다양한 값을 여러 글로벌 배열에 저장합니다.