Ваши пользователи любят погоняться за репутацией?
Дайте им возможность погоняться ещё и за уровнем.
Система работает за счёт активности пользователя на сайте.
Учитывается кол-во материалов, комментариев и репутация.
Так же для любой активности можно поставить множитель:
Допустим Вы поставили для репутации множитель "3", если у пользователя репутация "5", то в очки уровня засчитывается "15" (5*3).
Система выводит следующие параметры:
$scoreSL - текущее кол-во очков пользователя;
$levelSL - текущий уровень пользователя;
$thisLvl - кол-во очков у текущего уровня;
$NextLS - кол-во очков у следующего уровня;
$scoreNextLvl - требуемое кол-во очков для следующего уровня.
Установка:
Всё что Вам нужно, это добавить данный код на страницу пользователя в конец body.
ПУ > Управление дизайном > Персональная страница пользователя
Дайте им возможность погоняться ещё и за уровнем.
Система работает за счёт активности пользователя на сайте.
Учитывается кол-во материалов, комментариев и репутация.
Так же для любой активности можно поставить множитель:
Допустим Вы поставили для репутации множитель "3", если у пользователя репутация "5", то в очки уровня засчитывается "15" (5*3).
Система выводит следующие параметры:
$scoreSL - текущее кол-во очков пользователя;
$levelSL - текущий уровень пользователя;
$thisLvl - кол-во очков у текущего уровня;
$NextLS - кол-во очков у следующего уровня;
$scoreNextLvl - требуемое кол-во очков для следующего уровня.
Установка:
Всё что Вам нужно, это добавить данный код на страницу пользователя в конец body.
ПУ > Управление дизайном > Персональная страница пользователя
Код
<script>
// Активность
var $SLuser = [// 'количество', 'множитель'
['$_BLOG_ENTRIES$', '1'], ['$_BOARD_ENTRIES$', '1'], ['$_COM_ENTRIES$', '1'],
['$_FORUM_ENTRIES$', '1'], ['$_LOAD_ENTRIES$', '1'], ['$_NEWS_ENTRIES$', '1'],
['$_PHOTO_ENTRIES$', '1'], ['$_PUBL_ENTRIES$', '1'], ['$_STUFF_ENTRIES$', '1'],
['$_SHOP_ENTRIES$', '1'], ['$_VIDEO_ENTRIES$', '1'], ['$_RANK$', '1'], ['$_REPUTATION$', '1']
];
// Уровни
var $SLlevel = [];
for(var i=0; i<=100; i++){$SLlevel[i] = i*5}; // Генерация уровней (100)
/* Или так
$SLlevel = ['5','10','15','20','25','30'];
*/
// **************
function CheckUserScore(arr) {
return arr.map(a => a.reduce((a, c) => a * +c, 1)).reduce((a, c) => a + c, 0);
};
var $scoreSL = CheckUserScore($SLuser);
function CheckUserLevel(arr, toFind) {
if(!arr) return -1;
var first = 0, last = arr.length - 1;
while(first < last) {
var mid = first + Math.floor((last - first) / 2);
if (arr[mid] >= toFind) last = mid; else first = mid + 1;
}
if(arr[last] == toFind || last == 0 || last == arr.length - 1) return last; else return last - 1;
};
var $levelSL = CheckUserLevel($SLlevel, $scoreSL) + 1; // +1 потому что массив начинается с нуля.
var $NextLS = $SLlevel[$levelSL];
var $thisLvl = $SLlevel[$levelSL-1];
var $scoreNextLvl = ($NextLS - $scoreSL);
// **************
console.info('Кол-во очков: '+$scoreSL);
console.info('Уровень: '+$levelSL);
console.info('Кол-во очков у уровня: '+$thisLvl);
console.info('Кол-во очков у след. уровня: '+$NextLS);
console.info('Кол-во очков до след. уровня: '+$scoreNextLvl);
</script>
// Активность
var $SLuser = [// 'количество', 'множитель'
['$_BLOG_ENTRIES$', '1'], ['$_BOARD_ENTRIES$', '1'], ['$_COM_ENTRIES$', '1'],
['$_FORUM_ENTRIES$', '1'], ['$_LOAD_ENTRIES$', '1'], ['$_NEWS_ENTRIES$', '1'],
['$_PHOTO_ENTRIES$', '1'], ['$_PUBL_ENTRIES$', '1'], ['$_STUFF_ENTRIES$', '1'],
['$_SHOP_ENTRIES$', '1'], ['$_VIDEO_ENTRIES$', '1'], ['$_RANK$', '1'], ['$_REPUTATION$', '1']
];
// Уровни
var $SLlevel = [];
for(var i=0; i<=100; i++){$SLlevel[i] = i*5}; // Генерация уровней (100)
/* Или так
$SLlevel = ['5','10','15','20','25','30'];
*/
// **************
function CheckUserScore(arr) {
return arr.map(a => a.reduce((a, c) => a * +c, 1)).reduce((a, c) => a + c, 0);
};
var $scoreSL = CheckUserScore($SLuser);
function CheckUserLevel(arr, toFind) {
if(!arr) return -1;
var first = 0, last = arr.length - 1;
while(first < last) {
var mid = first + Math.floor((last - first) / 2);
if (arr[mid] >= toFind) last = mid; else first = mid + 1;
}
if(arr[last] == toFind || last == 0 || last == arr.length - 1) return last; else return last - 1;
};
var $levelSL = CheckUserLevel($SLlevel, $scoreSL) + 1; // +1 потому что массив начинается с нуля.
var $NextLS = $SLlevel[$levelSL];
var $thisLvl = $SLlevel[$levelSL-1];
var $scoreNextLvl = ($NextLS - $scoreSL);
// **************
console.info('Кол-во очков: '+$scoreSL);
console.info('Уровень: '+$levelSL);
console.info('Кол-во очков у уровня: '+$thisLvl);
console.info('Кол-во очков у след. уровня: '+$NextLS);
console.info('Кол-во очков до след. уровня: '+$scoreNextLvl);
</script>