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

857
10 из 10
Проголосовало: 14






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

Система работает за счёт активности пользователя на сайте.
Учитывается кол-во материалов, комментариев и репутация.
Так же для любой активности можно поставить множитель:
Допустим Вы поставили для репутации множитель "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>


!! ВАЖНО !!
Я выкладываю только код системы, не визуализацию.
На превью материала представлена реализация.
Это альфа версия! Баги и предложения описывайте в комментариях здесь - ссылка

Для заказа реализации обращаться ко мне: ссылка
Автор публикации: Загрузка
Загрузка
CbIPoK2513, это его n материал
Источник: http://pandora.clan.su/
  • Оставить первым комментарий:
Добавлять комментарии могут только зарегистрированные пользователи.
Регистрация | Вход
Меню сайта
Категории
Для помощи создания сайта uCoz 25
Скрипты и модификации для Ucoz 2124
Шаблоны форумов Ucoz 28
Шаблоны сайтов Ucoz 431
Авторство Webo4ki 309
php скрипты для ucoz 57
Графика для uCoz 40
Мини-чат
Последние комментарии
  • xXx_Pycckuu_xXx написал:
  • Загнулся ucodes.ru xD
  • ЯдеR написал:
  • ставлю CSS стили и слетает стиль шапки и статистика ни как не меняется на такую, как у вас в примере
  • ЯдеR написал:
  • не работает(
  • BLAzER написал:
  • 404 sad
  • Site_Test написал:
  • вместо
    Код
    <script type="text/javascript">  
    <!-- Progess bar - NEW uCoz "By Lekus" 2017. uFace -->  
    <!--  
    document.write(unescape('%3C%6C%69%6E%6B%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%72%65%6C%3D%22%53%74%79%6C%65%53%68%65%65%74%22%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%75%66%61%63%65%2E%61%74%2E%75%61%2F%64%65%6D%6F%2F%50%72%6F%67%65%73%73%5F%62%61%72%4E%45%57%2F%73%74%79%6C%65%2E%63%73%73%22%20%2F%3E'));
    //-->  
    </script>


    пишем просто
    Код
    <link type="text/css" rel="StyleSheet" href="http://uface.at.ua/demo/Progess_barNEW/style.css" />
    Последние темы
    Опрос
    291
    А
    Р
    Что произойдёт: $("#...
    Статистика
    Анализ интернет сайта
    0
    онлайн
    0
    наших
    0
    чужих
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    0
    Сегодня были
    Топ пользователей: