Код:
<!-- сохранение тёмной версии в страницах -->
<script>
(function () {
var theme = localStorage.getItem('selectedTheme');
if (theme !== 'light' && theme !== 'dark') {
theme = 'light';
}
document.documentElement.classList.remove('light', 'dark');
document.documentElement.classList.add(theme);
})();
</script>
<!-- кнопка Мобила -->
<script src="https://forumstatic.ru/files/0015/28/00/95682.js?v=3"></script>
<!-- навигация для мобилы -->
<script>
document.addEventListener('DOMContentLoaded', function () {
const nav = document.querySelector('.tablichka__nav');
const btn = document.querySelector('.tablichka__navtitle');
if (!nav || !btn) return;
btn.addEventListener('click', function () {
nav.classList.toggle('open');
});
});
</script>
<!-- скрыть подпись для мобилы -->
<script>
(function () {
function isMobile() {
return window.matchMedia('(max-width: 540px)').matches;
}
function wrapMobileSigs() {
if (!isMobile()) return;
document.querySelectorAll('#pun-viewtopic dl.post-sig, #pun-viewtopic .post-sig').forEach(function (sig) {
if (sig.closest('.mobile-sig-toggle')) return;
var parent = sig.parentNode;
if (!parent) return;
var details = document.createElement('details');
details.className = 'mobile-sig-toggle';
var summary = document.createElement('summary');
summary.textContent = 'Показать подпись';
parent.insertBefore(details, sig);
details.appendChild(summary);
details.appendChild(sig);
});
}
function startMobileSigs() {
wrapMobileSigs();
var observer = new MutationObserver(function () {
wrapMobileSigs();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', startMobileSigs);
} else {
startMobileSigs();
}
window.addEventListener('load', wrapMobileSigs);
})();
</script>
<!-- генератор эпизодов -->
<script type="text/javascript" src="https://forumstatic.ru/files/0015/28/00/22955.js?v=4"></script>
<!-- END генератор эпизодов -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<!----------------------- Добавить классы в меню при прокрутке -------------------------->
<script>
document.addEventListener("DOMContentLoaded", function () {
const nav = document.getElementById("pun-navlinks");
const ulinks = document.getElementById("pun-ulinks");
if (!nav || !ulinks) return;
const startOffset = 450;
const mobileWidth = 540;
function updateMenu() {
const isMobile = window.innerWidth <= mobileWidth;
const y = window.pageYOffset || document.documentElement.scrollTop;
/* на мобиле отключаем всё */
if (isMobile) {
nav.classList.remove("is-fixed", "scrolled");
ulinks.classList.remove("is-fixed", "scrolled");
return;
}
/* десктоп */
if (y > startOffset) {
nav.classList.add("is-fixed", "scrolled");
ulinks.classList.add("is-fixed", "scrolled");
} else {
nav.classList.remove("is-fixed", "scrolled");
ulinks.classList.remove("is-fixed", "scrolled");
}
}
window.addEventListener("scroll", updateMenu, { passive: true });
window.addEventListener("resize", updateMenu);
window.addEventListener("load", updateMenu);
updateMenu();
});
</script>
<!----------------------- для таблички -------------------------->
<script>
document.addEventListener('DOMContentLoaded', function () {
if (window.matchMedia('(max-width: 540px)').matches) {
return;
}
const tablichka = document.querySelector('.tablichka');
if (!tablichka) return;
const STORAGE_KEY = 'tablichkaPinned';
const button = document.createElement('button');
button.className = 'tablichka-toggle';
button.type = 'button';
button.setAttribute('aria-label', 'Закрепить табличку');
tablichka.prepend(button);
const inner = document.createElement('div');
inner.className = 'tablichka__inner';
const elements = Array.from(tablichka.children).filter(function (el) {
return el !== button;
});
elements.forEach(function (el) {
inner.appendChild(el);
});
tablichka.appendChild(inner);
function setPinnedState(isPinned) {
if (isPinned) {
tablichka.classList.remove('is-hover');
tablichka.classList.add('is-fixed');
button.setAttribute('aria-label', 'Открепить табличку');
localStorage.setItem(STORAGE_KEY, 'true');
} else {
tablichka.classList.remove('is-fixed');
tablichka.classList.add('is-hover');
button.setAttribute('aria-label', 'Закрепить табличку');
localStorage.setItem(STORAGE_KEY, 'false');
}
}
const savedPinned = localStorage.getItem(STORAGE_KEY) === 'true';
setPinnedState(savedPinned);
button.addEventListener('click', function (e) {
e.preventDefault();
e.stopPropagation();
const isPinnedNow = tablichka.classList.contains('is-fixed');
setPinnedState(!isPinnedNow);
});
});
</script>
<div class="tablichka is-collapsed">
<ul id="theme_switcher"></ul>
<div class="tablichka__inner"><div class="tablichka__top">
<div class="tablichka__top-left">АВАТАР ААНГ • ЭПИЗОДИЧКА • NC-21 • ДАТА <span class="forum-current-date"></span></div>
<div class="tablichka__top-right">
<span class="tablichka__ams">амс:</span>
<a href="#" class="tablichka__adminlink" title="скрипты, оформление">Envy</a>
<a href="#" class="tablichka__adminlink" title="сюжет, хронология, ивенты">Yakone</a>
<a href="#" class="tablichka__adminlink" title="мастер игры, ивенты">Toph</a>
</div>
</div><div class="tablichka__bot">
<div class="tablichka__icons-title">
активисты
</div>
<div class="tablichka__icons">
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/5e/b9/5d/5eb95d1636bb700cd73a54b8fbf5fd9b.jpg" title="Тоф">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/86/20/7a/86207a2caae2538e79e470feda2390af.jpg" title="Катара">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/00/be/87/00be875aef6afd898897c28fad42a31d.jpg" title="Якон">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/d7/20/fc/d720fc868468974a873be07183889296.jpg" title="Энви">
</a>
</div>
<div class="tablichka__nav">
<div class="tablichka__navtitle">
НАВИГАЦИЯ
</div>
<div class="tablichka__navlist">
<a class="tablichka__navitem" href="#">сюжет и события</a>
<a class="tablichka__navitem" href="https://madnyaska.anihub.me/pages/spisok_rolei">список ролей</a>
<a class="tablichka__navitem" href="https://madnyaska.anihub.me/pages/shablon_anket">шаблон анкет</a>
<a class="tablichka__navitem" href="https://madnyaska.anihub.me/pages/shablon_hronologii_personazha">шаблон хронологии</a>
<a class="tablichka__navitem" href="https://madnyaska.anihub.me/pages/generator_epizodov">шаблон эпизодов</a>
<a class="tablichka__navitem" href="https://madnyaska.anihub.me/pages/karta">карта мира</a>
<a class="tablichka__navitem" href="#">F.A.Q</a>
<a class="tablichka__navitem" href="#">гостевая</a>
</div>
</div>
<div class="tablichka__center">
<div class="tablichka__logo"><div class="header-parallax">
<div class="parallax-layer candles"></div>
</div></div>
<div class="tablichka__news">
<div class="tablichka__newsscroll">
<div class="tablichka__newshead">новости</div>
<div class="tablichka__newsitem">
<div class="tablichka__newsdate">22.02</div>
<div class="tablichka__newstext">
Открытие форума. Добавлены первые игровые разделы и базовая навигация.
</div>
</div>
<div class="tablichka__newsitem">
<div class="tablichka__newsdate">18.02</div>
<div class="tablichka__newstext">
Обновлён дизайн. Исправлены ошибки отображения профилей персонажей.
</div>
</div>
<div class="tablichka__newsitem">
<div class="tablichka__newsdate">18.02</div>
<div class="tablichka__newstext">
Обновлён дизайн. Исправлены ошибки отображения профилей персонажей.
</div>
</div>
<div class="tablichka__newsitem">
<div class="tablichka__newsdate">18.02</div>
<div class="tablichka__newstext">
Обновлён дизайн. Исправлены ошибки отображения профилей персонажей.
</div>
</div>
<div class="tablichka__newsitem">
<div class="tablichka__newsdate">18.02</div>
<div class="tablichka__newstext">
Обновлён дизайн. Исправлены ошибки отображения профилей персонажей.
</div>
</div>
</div>
</div>
</div>
<div class="tablichka__right">
<div class="tablichka__award">
<div class="tablichka__title">ЗОЛОТОЕ ПЕРО</div>
<div class="tablichka__box">В данном разделе находятся все самые важные темы, которые обязательны к прочтению всем, кто собирается создавать персонажа. Просим внимательно ознакомиться с ними перед подачей анкеты.В данном разделе находятся все самые важные темы, которые обязательны к прочтению всем, кто собирается создавать персонажа. Просим внимательно ознакомиться с ними перед подачей анкеты.В данном разделе находятся все самые важные темы, которые обязательны к прочтению всем, кто собирается создавать персонажа. Просим внимательно ознакомиться с ними перед подачей анкеты.В данном разделе находятся все самые важные темы, которые обязательны к прочтению всем, кто собирается создавать персонажа. Просим внимательно ознакомиться с ними перед подачей анкеты.</div>
</div>
<div class="tablichka__player">НИК ИГРОКА (<a href="#">ССЫЛКА</a>)</div>
<div class="tablichka__wanted">
<div class="tablichka__title">РАЗЫСКИВАЮТСЯ</div>
<div class="tablichka__box2">
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/ea/c0/ef/eac0ef5ad375a6eb22adf56ea42a860b.jpg" title="ищут сестру">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/af/ea/93/afea9323f012e6ff96d07f1f87106a60.jpg" title="ищут брата">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/1200x/ad/15/75/ad1575dd0f253b4416a5782b4d284100.jpg" title="ищут телохранителя">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/99/fa/a5/99faa5999467b81facd376b2104eee48.jpg" title="ищут подругу">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/ca/f2/49/caf249f09831d9fa92ea136da8bb16d3.jpg" title="ищут любовь всей жизни">
</a>
<a class="tablichka__icon" href="#">
<img src="https://i.pinimg.com/736x/ea/70/26/ea7026c866d133dd6bef09f3f29a0f05.jpg" title="ищут заклятого врага">
</a>
</div>
</div>
</div>
<div class="tablichka__clear"></div>
</div></div></div>
<!-- описание категорий by бродяга -->
<script type="text/javascript">
// Описания для категорий
const descriptions = {
"category-1": "Все, что нужно знать",
"category-2": "И то, что не нужно знать",
"category-6": "Он ушел, но обещал вернуться",
"category-5": "Отдыхаем от игры",
"category-7": "Важен вклад каждого",
"category-8": "Только взаимная реклама",
"category-9": "Вы пишите историю",
"category-10": "Лязг стали, злобный свист стрел"
};
function addCategoryDescriptions() {
for (const key in descriptions) {
const container = document.querySelector("." + key) || document.getElementById(key);
if (container) {
const h2 = container.querySelector("h2");
if (h2 && !h2.querySelector(".catDescr")) {
const p = document.createElement("p");
p.className = "catDescr";
p.textContent = descriptions[key];
// Добавляем описание ПОСЛЕ h2, а не внутрь него
h2.insertAdjacentElement("afterend", p);
}
}
}
}
// Гарантируем, что описание вставится после появления кнопок сворачивания
document.addEventListener('DOMContentLoaded', function () {
// Задержка, чтобы сначала отработал скрипт сворачивания
setTimeout(addCategoryDescriptions, 100);
});
</script>
<!-------------- Кликабельность "Сообщений" в профиле мод. © Alex_63 (для аякса) -------------->
<script type="text/javascript">
(function() {
function init(sel) {
$(sel).each(function(){
var id = $(this).attr('data-user-id');
$(this).find('.post-author .pa-posts .fld-name').html('<a href="/search.php?action=show_user_posts&user_id='+id+'" target="_blank">Сообщений: </a>');
});
}
init('#pun-viewtopic .post');
$(document).on('pun_post', function() { init('#pun-viewtopic .new-ajax') });
$('#pun-messages .post').each(function(){
var id = $(this).find('.pa-author a').attr('href').split('id=')[1];
$(this).find('.post-author .pa-posts .fld-name').html('<a href="/search.php?action=show_user_posts&user_id='+id+'" target="_blank"></a>');
});
})();
</script>
<!-- Пиар-вход v.2 © Alex_63 -->
<script src="https://forumstatic.ru/files/0015/c4/3f/26781.js"></script>
<script type="text/javascript">
PR.nick = 'Реклама'; // Ник PR-аккаунта
PR.pass = 'пароль'; // Пароль PR-аккаунта
PR.btn_text = 'PR-вход'; // Надпись на кнопке PR-входа (или ссылка на картинку);
PR.set();</script>
<!-- Смена аватара в топике (в HTML верх) © Deff, Alex_63 -->
<link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0015/c4/3f/67168.css" />
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/67169.js"></script>
<!-------------------------- Всплывающая подсказка © Домофой -------------------------->
<script type="text/javascript" src="/files/001b/95/a1/53719.js"></script>
<script type="text/javascript">
$(document).on('DOMContentLoaded pun_main_update', function() {
// Заголовки иконок тем
$(".punbb table div.icon").attr('title', 'Нет новых сообщений');
$(".punbb table tr.inew div.icon").attr('title', 'Есть новые сообщения');
$(".punbb table tr.isticky div.icon").attr('title', 'Важная тема');
$(".punbb table tr.iclosed div.icon").attr('title', 'Тема закрыта');
$(".punbb table tr.iredirect div.icon").attr('title', 'Тема перемещена');
// Авторский блок
$(".post-author .pa-posts .fld-name a").attr('title', 'Сообщения');
$(".post-author .pa-respect .fld-name a").attr('title', 'Репутация');
$('.post-author .pa-fld1 .fld-name:not(:has(a))').attr('title', 'О персонаже');
$('.post-author .pa-fld1 .fld-name a').attr('title', 'О персонаже');
// На тач-устройствах не используем title на рейтинге
if (matchMedia('(hover: none)').matches) $('.post-rating a').removeAttr('title');
// ИНИЦИАЛИЗАЦИЯ QUICKTIP БЕЗ abbr[title^="float:"]
setTimeout(function() {
$('.main *[title]:not(abbr[title^="float:"])').quicktip({ speed: 300 });
}, 100);
});
$(document).on('pun_post', function() {
$('.new-ajax .post-author .pa-fld1 .fld-name:not(:has(a))').attr('title', 'Люмены');
$('.new-ajax .post-author .pa-fld1 .fld-name a').attr('title', 'Люмены');
if (matchMedia('(hover: none)').matches) $('.post-rating a').removeAttr('title');
// Для подгруженного контента — то же исключение
setTimeout(function() {
$('.new-ajax *[title]:not(abbr[title^="float:"])').quicktip({ speed: 300 });
}, 100);
});
</script>
<!--выделить код Alex_63-->
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/26102.js"></script>
<script>
eval(select_text.toString().replace(/\}$/, 'try{document.execCommand("copy")}catch(e){}}'))
</script>
<script type="text/javascript">
select_text.linkText = window.UserLanguage == 'ru' ? 'скопировать [в буфер]' : 'Copy code'
</script>
<!--Cворачивание категорией Ч1-->
<script defer src="https://forumstatic.ru/files/0015/28/00/47982.js?v=4"></script>
<!--end Cворачивание категорией Ч1-->
<!-- HTML в постах с допуском по группам © Alex_63 -->
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/52361.js"></script>
<script type="text/javascript">
HTMLinPost.groups = [1,2,4,6]; // Группы, допущенные к вставке HTML в посты
HTMLinPost.noAccess = ['user','newTst2']; // Пользователи с запретом вставки HTML в посты
HTMLinPost.parseHTMLinPosts()
</script>
<!-- Скрыть минипрофиль по [hideprofile], не удаляя тег. Безопасная версия -->
<style>
.hideprofile .post-author,
.hideprofile .pl-email,
.hideprofile .pl-website,
.hideprofile .post-sig { display: none !important; }
.hideprofile .post-body,
.hideprofile .post-links,
.hideprofile .post-links ul,
.post.hideprofile h3,
.hideprofile .post.blockButton > span { margin-left: 0 !important; }
.hideprofile .post-body { width: 100%; }
/* сам маркер тега скрываем, но не удаляем */
.hideprofile-tag { display: none !important; }
</style>
<script>
FORUM.set('editor.addition.tags.hideprofile',{name:'Скрыть минипрофиль',onclick:function(){insert('[hideprofile]');}});
$().pun_mainReady(function(){$('.post:contains("[hideprofile]")').addClass('hideprofile').html(function(){return $(this).html().replace(/\[hideprofile\]/gim,'')})});
</script>
<!-- Конец -->
<style>
/* что скрывать */
.hideprofile-all .post-author,
.hideprofile-all .pl-email,
.hideprofile-all .pl-website,
.hideprofile-all .post-sig { display: none !important; }
/* выравнивание контента поста без минипрофиля */
.hideprofile-all .post-body,
.hideprofile-all .post-links,
.hideprofile-all .post-links ul,
.post.hideprofile-all h3,
.hideprofile-all .post.blockButton > span { margin-left: 0 !important; }
.hideprofile-all .post-body { width: 100% !important; }
</style>
<!-- Скрипт быстрой смены аккаунтов от Feathertail -->
<script src="https://forumstatic.ru/files/001c/83/b6/82777.js"></script>
<link rel="stylesheet" href="https://forumstatic.ru/files/0015/28/00/50077.css?v=6" />
<script>
document.addEventListener('DOMContentLoaded', function () {
var btn = document.getElementById('wg-build');
var copyBtn = document.getElementById('wg-copy');
var result = document.getElementById('wg-result');
if (!btn || !copyBtn || !result) return;
function val(id) {
var el = document.getElementById(id);
return el ? el.value.trim() : '';
}
function html(id) {
var el = document.getElementById(id);
return el ? el.innerHTML.trim() : '';
}
function esc(text) {
return String(text || '')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>');
}
btn.addEventListener('click', function () {
var type = val('wg-type');
var typeText =
type === 'ams'
? 'акционный персонаж от АМС'
: 'акционный персонаж от игрока';
var tags = val('wg-tags')
.split(',')
.map(function(tag) {
return tag.trim();
})
.filter(Boolean)
.map(function(tag) {
return ' <span>' + esc(tag) + '</span>\n';
})
.join('');
var code =
'[html]\n' +
'<div class="wanted-card wanted-card--' + type + '">\n\n' +
' <div class="wanted-role">' + esc(val('wg-role')) + '</div>\n\n' +
' <div class="wanted-head">\n' +
' <div class="wanted-img">\n' +
' <img src="' + esc(val('wg-img')) + '" alt="' + esc(val('wg-name-ru')) + '">\n' +
' </div>\n\n' +
' <div class="wanted-main">\n' +
' <div class="wanted-kicker">' + typeText + '</div>\n\n' +
' <div class="wanted-name">\n' +
' <span>' + esc(val('wg-name-ru')) + '</span>\n' +
' <em>' + esc(val('wg-name-en')) + '</em>\n' +
' </div>\n\n' +
' <div class="wanted-info">\n' +
' <div><b>Возраст:</b>\n' +
' <span class="character-profile">\n' +
' <span class="birth-date" data-birth="' + esc(val('wg-birth')) + '"></span>\n' +
' <span class="character-age"></span>\n' +
' </span>\n' +
' </div>\n\n' +
' <div><b>Деятельность:</b> ' + esc(val('wg-job')) + '</div>\n' +
' <div><b>Лояльность:</b> ' + esc(val('wg-loyalty')) + '</div>\n' +
' </div>\n' +
' </div>\n' +
' </div>\n\n' +
' <div class="wanted-tags">\n' +
tags +
' </div>\n\n' +
' <div class="wanted-text">\n' +
' ' + html('wg-desc') + '\n' +
' </div>\n\n' +
' <div class="wanted-request">\n' +
' <div class="wanted-subtitle">от заявителя</div>\n' +
' ' + html('wg-request') + '\n' +
' </div>\n\n' +
'</div>\n' +
'[/html]';
result.textContent = code;
});
copyBtn.addEventListener('click', function () {
var text = result.textContent.trim();
if (!text) {
copyBtn.textContent = 'Сначала соберите код';
setTimeout(function () {
copyBtn.textContent = 'Скопировать код';
}, 1600);
return;
}
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(function () {
copyBtn.textContent = 'Код скопирован';
setTimeout(function () {
copyBtn.textContent = 'Скопировать код';
}, 1600);
}).catch(function () {
fallbackCopy(text);
});
} else {
fallbackCopy(text);
}
});
function fallbackCopy(text) {
var area = document.createElement('textarea');
area.value = text;
area.style.position = 'fixed';
area.style.left = '-9999px';
area.style.top = '-9999px';
document.body.appendChild(area);
area.focus();
area.select();
try {
document.execCommand('copy');
copyBtn.textContent = 'Код скопирован';
} catch (e) {
copyBtn.textContent = 'Не удалось скопировать';
}
document.body.removeChild(area);
setTimeout(function () {
copyBtn.textContent = 'Скопировать код';
}, 1600);
}
});
</script>
<!-- Быстроплюсы v.2 by Deff -->
<script type="text/javascript" src="https://forumstatic.ru/files/0012/d8/04/58219.js" addComment="1"></script>


