CREATE YOUR WORLD
Social
리더보드
18min
리더보드 설정하기 리더보드는 각 플레이어의 순위와 최고 점수를 저장하고 관리하는 기능을 제공하는 모듈입니다 1단계 리더보드 생성하기 리더보드를 생성하려면 projectsettings → zepeto → zepetoleaderboard 메뉴에서 \[리더보드 정보 가져오기] 버튼을 선택하세요 \[리더보드 추가]를 선택하여 새 리더보드를 추가하세요 이미 존재하는 리더보드가 있다면, 설정 화면에 리더보드가 나타납니다 2단계 리더보드 사용자 정의 \[리더보드 추가] 버튼을 선택하면 아래에 표시된 팝업 창이 나타납니다 각 매개변수 값을 조정할 수 있습니다 매개변수 설명 이름 리더보드 이름 업데이트 규칙 점수 업데이트 규칙 최대 점수 사용자의 최고 점수를 기록합니다 최소 점수 사용자의 최저 점수를 기록합니다 점수 누적 사용자의 점수를 추가하고 기록으로 저장합니다 resetinfo(s) 점수가 초기화될 기간을 설정할 수 있습니다 \ 이는 리더보드가 매 시즌 업데이트되어야 할 때 유용합니다 \ 점수는 기본적으로 초기화되지 않지만, 초기화 기간(매월, 매주, 매일)을 설정하여 조정할 수 있습니다 3단계 점수 초기화 설정 점수 초기화 규칙은 다음과 같습니다 기간 설명 없음 점수가 초기화되지 않습니다 일 점수는 설정된 시간에 매일 초기화됩니다 (예 일일 순위) 주 점수는 설정된 날짜와 시간에 매주 초기화됩니다 (예 주간 순위) 월 점수는 설정된 날짜와 시간에 매월 초기화됩니다 (예 월간 순위; 최대 일 값은 31이지만, 해당 월에 31일이 없으면 자동으로 해당 월의 마지막 날로 조정됩니다) 4단계 리더보드 id zepetoscript와 리더보드를 사용하려면 리더보드 id 정보가 필요합니다 리더보드 정보를 액세스하려면 설정으로 이동할 수 있습니다(프로젝트 설정 메뉴에서 편집 아래 zepeto → zepeto 리더보드 → 편집으로 이동) 또는 zepetoscript api에서 로드할 수 있습니다 📘 다음 가이드를 참조하십시오 \[ 리더보드 docid\ m17jphxn1cwdevqm91nt0 ] 재설정 규칙이 설정되면 리더보드를 수정할 수 없습니다 재설정 규칙을 변경하려면 새 리더보드를 만들어야 합니다 재설정 시간은 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, 시작 순위, 마지막 순위, 리셋 규칙 및 지난 시즌의 순위 정보를 검색하기 위한 불리언 값과 완료 시점 및 오류 발생 시점의 콜백 함수가 인수로 전달됩니다 순위 정보를 문의하는 사용자 정보가 자동으로 입력되며, 한 번의 문의로 최대 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에서 member 값을 사용하여 프로필 사진을 로드할 수 있습니다 📘 다음 가이드를 참조하십시오 \[ 유저 정보 docid\ fezf1tvnnxndjui8c2ygz ] 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에서 다음과 같이 구조화할 수 있습니다