업적을 달성하려면 (부분적으로) 필요한 모든 데이터를 추적해야합니다. 추적 이벤트가 트리거 될 때마다
user_id | login
1 | 2013-07-20
1 | 2013-07-19
1 | 2013-07-16
2 | 2013-07-20
...
, 당신은 또한 성과를 확인 : 로그인 주변의 업적
, 당신은 같은 테이블을 가지고, 하루에 한 번 각 로그인을 추적 할 필요가있다.
event onLogin {
// get the last 4 logins before the current login
statement = (
SELECT login FROM tracking_user_login
WHERE user_id = 1
ORDER BY login DESC
LIMIT 1,4
);
statement.execute();
// did the user even login at least 4 times already?
if (statement.rowCount == 4) {
date lastLogin = todaysLogin;
int consecutiveLogins = 1;
// iterate descending through the last days
foreach (row in statement) {
if (row.login == (lastLogin - 1day)) {
consecutiveLogins++; // increment consecution
lastLogin = (lastLogin - 1day); // prepare next comparison
} else {
// consecution interrupted, ignore the rest
break;
}
}
// enough to achieve something?
if (consecutiveLogins >= 5) {
user.addAchievement('5 CONSECUTIVE LOGINS');
}
}
}
기본적으로 로그인 할 때 모든 업적을이 이벤트에 추가 할 수 있습니다.
개별 메트릭 수준에서 왜 이런 종류의 것을 추적합니까? 왜 각 로그인 시간을 저장 한 다음 일종의 일정 (또는 각 로그인 등)에 저장하면 보너스 수준에 도달했는지 확인하십시오. 그런 다음 연관 테이블을 사용하여 사용자에게 성취도를 부여하십시오. – Brad