Топ постописцев
Актуально для тех, у кого не куплен счетчик постов от Deff, т.к. у него скрипт выводит топ постописцев.

https://forumstatic.ru/files/0019/41/ed/64422.png

Большое изображение по клику.


Чо эта хрень делает? Считает кто сколько постов написал за указанный период. По клику на "information" раскрывает детальный список - в каких темах и когда были написаны посты конкретным пользователем. Выводит суммарное количество постов, которые написали все игроки. Сортирует по циферке постов - у кого больше, тот первый в списке, такая вот постовая дискриминация. Собственно, всё хд

Каковы ваши доказательства условия использования? Комментарий верхний, сильвупле, не убирайте - мне будет приятно, что автор (это не я, мои познания в js не такие обширные, я тут в роли пресс-секретаря и техподдержки хд) упомянут по касательной. Можете еще зайти на Кингскросс и передать смачный чмок в пупок Архидьюку Авернуса, лично я буду в восторге от этого хд

У меня всё сломалось/нихера не работает/ЯННП! Стучите в личку - разберемся.

Важно. Скрипт проверяет максимум 1000 тем в указанных подфорумах. Это не так, чтобы проблема - крайне маловероятно, что даже за месяц у вас обновится хотя бы 500 разных тем с игровыми эпизодами х)


Инструкция.
Идем в Администрирование - Страницы и создаем новую страницу, куда помещаем сам скрипт. Название и адресное имя страницы значения не имеет.

Код:
<!-- топ постописцев из дома надежды от нежных когтистых лапок хозяина -->
<div class="writers_wrapper-main"><div class="writer-desc">
<p><b>Первое поле (дата, с которой считаем) обязательно для заполнения</b>; точное время указывать не обязательно, это на всякий случай.</p>
<p>Второе поле (дата, до которой считаем) для заполнения не обязательно, по умолчанию скрипт посчитает написанные посты до текущего момента. Сделано на случай, если подсчет ведется немного позже необходимой даты.</p>
</div>

<div class="writer-counter-wrapper">Дата, с которой считаем: <input type="text" id="writer-top-start-date" placeholder="ГГГГ-ММ-ДД ЧЧ:ММ:СС">
Дата, до которой считаем: <input type="text" id="writer-top-end-date" placeholder="ГГГГ-ММ-ДД ЧЧ:ММ:СС">
<button type="button" onclick="writerTopCalculate()">Посчитать посты</button></div>
<div id="writer-top"></div>
<div id="writer-summary">Всего написано постов: <span id="writer-summary-numb" class="writer-summary-numb"></span></div>
</div>
<script src="https://cdn.jsdelivr.net/gh/viper-f/scripts@latest/writer-top/WriterTop.js"></script>
<script>
  const forumIDs = [1,3,4] // id форумов с эпизодами и архивных форумов с эпизодами через запятую, последний элемент без запятой
  function writerTopCalculate() {
    const startDate = document.getElementById('writer-top-start-date').value;
    const endDate = document.getElementById('writer-top-end-date').value;
    const writerTop = new WriterTop(forumIDs, startDate ,endDate);
    writerTop.execute('writer-top', 'writer-summary-numb').then(() => {
   document.querySelectorAll('.writer-item__details').forEach(div =>  div.onclick = (e) => {e.target.closest('.writer-item__details').classList.toggle('open')})
})
}
</script>
<style>
.writer-desc {
	font-size: 11px;
	margin: 10px 0px 15px !important;
	padding: 0px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 10px;
}

.writer-counter-wrapper {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	background: rgba(255,255,255,.05);
	padding: 15px
}

.writer-counter-wrapper button {
	width: 100%;
	margin-top: 10px !important;
}

#writer-top-start-date {
	margin-right: 20px
}

#writer-top {
	display: flex;
	flex-direction: column;
	gap: 1px;
	padding: 0px;
	margin: 0px 0px
}

.writer-item__container {
	padding: 15px;
	display: flex;
	gap: 0px 10px;
	flex-wrap: wrap;
	background: rgba(255,255,255,.05);
}


.writer-item__username {
	font-weight: bold;
	font-size: 13px
}

.writer-item__numb {
	background: #fff;
	border-radius: 10px;
	padding: 0 10px 1px;
	color: #000;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: bold;
	font-size: 11px
}

.writer-item__details {
  width: 100%;
	padding-top: 5px;
	cursor: pointer
}

.writer-item__details:before {
	content: "Information";
	text-transform: uppercase;
	border: 1px solid rgba(255,255,255,.05);
	border-radius: 10px;
	padding: 2px 10px;
	font-size: 9px;
	opacity: .75
}

.writer-item__details.open .writer-item__details-list {
	display: flex
}

.writer-item__details-list {
	display: none;
	flex-direction: column;
	gap: 0;
	font-size: 10px;
	margin-top: 10px !important;
}

.writer-item__details-list a {
	font-size: 12px;
	font-weight: 500
}

.writer-item__details-list li {
	border-bottom: 1px solid rgba(255,255,255,.05);
	padding: 10px 0 !important;
}

.writer-item__details-list li:last-child {
	border: none !important;
	padding-bottom: 0 !important;
}

#writer-summary {
	display: flex;
	gap: 5px;
	flex-wrap: wrap;
	font-weight: bold;
	background: rgba(255,255,255,.05);
	padding: 15px;
	margin-top: 1px;
	margin-bottom: 10px
}
</style>

[indent][!]  const forumIDs = [1,3,4] // id форумов с эпизодами и архивных форумов с эпизодами через запятую, последний элемент без запятой
Не забудьте исправить вот эту часть под себя. На ролевой обязательно должен быть отдельный форум для архива эпизодов. Не обязательно, чтобы замороженные эпизоды и отыгранные лежали отдельно, главное чтобы не все в одной куче - и эпизоды, и флудные темы, и анкеты, потому что тогда скрипт не будет работать корректно.



Как использовать.
Открываем созданную страницу. Следуя подсказкам, заполняем одно или оба поля, жмем "Посчитать посты". Радостно хлопаем в ласты, получив результат хд