• pda
  • 01.07.2018

  • 13:52

  • 84

  • 1

Система уровней пользователей для uCoz

1.0

Проголосовало

6
Оценить мод

Ваши пользователи любят погоняться за репутацией?
Дайте им возможность погоняться ещё и за уровнем.

Система работает за счёт активности пользователя на сайте.
Учитывается кол-во материалов, комментариев и репутация.
Так же для любой активности можно поставить множитель:
Допустим Вы поставили для репутации множитель "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>
Порядок установки:
Ссылка
BB-Code
HTML-код
Аватар CbIPoK2513
CbIPoK2513
CbIPoK2513
0
Полезная статейка!
Спам
12.07.2018, 09:44
:)