Test

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Test » memory management » абстерго


абстерго

Сообщений 1 страница 5 из 5

1

[html]
<section class='lore'>

<h5></h5>

<span></span>

<div class='lore-block' data-title='абстерго'>
<ttl>об абстерго</ttl>
<span>"Абстерго" — частная исследовательская организация, основанная в 2019 году группой нейробиологов, инженеров и специалистов по искусственному интеллекту, объединённых общей идеей. формально "Абстерго" позиционировала себя как научно-медицинский консорциум, работающий над проблемами сознания, памяти и продления жизни, не афишируя своей структуры. в публичном поле она существовала как закрытая, но легальная компания, работающая по международным лицензиям и договорам, чьё финансирование обеспечивали частные фонды, государственные гранты и инвестиции тех, кто видел в проекте будущее человечества.

внутри же организация представляла собой жёстко иерархичную систему, где каждая группа отвечала за строго определённый участок:
> оцифровку и хранение сознаний,
> поддержку симуляции,
> анализ поведения загруженных людей,
> контроль стабильности личности.

в 2026 году "Абстерго" представило миру "Загрузку": проект, дающий возможность людям не исчезнуть даже после того, как физическая оболочка умрёт, но настоящей целью "Загрузки" было изучение сознания людей (особенно со способностями), исследование устойчивости личности, возможности бесконечного существования человека без разрушения "я" и шаг к цифровому — а в дальнейшем будущем и настоящему — бессмертию.

<b>что скрывалось за публичными обещаниями на самом деле?</b>
для создателей "Загрузка" быстро перестала быть просто услугой и стала средой наблюдения, потому что впервые в истории человечества появилась возможность следить за тем, как сознание существует без финальной точки; как человек меняется, если смерть является не окончанием, а лишь паузой.
особый интерес представляли люди со способностями — те, чьё восприятие мира отличалось от нормы. "Загрузка" позволяла изучать их без ограничений времени, не опасаясь последствий, которые были бы неизбежны в реальном мире.</span>
<ttl>общая структура компании</ttl>
<span>организация представляет собой крупный исследовательский комплекс с административным, техническим, научным и административными блоками. большая часть сотрудников никогда напрямую не работает с симуляцией, а воспринимает проект как обычную высокотехнологичную работу, не имея нужного уровня доступа к деталям.

<b>генеральный директор / исполнительный директор</b>
отвечает за стратегию развития проекта, внешние договорённости, финансирование, публичный образ организации.
редко погружается в детали симуляции, получает отчёты в агрегированном виде, может войти в загрузку только по собственному желанию или в исключительных случаях.
вход возможен, но не обязателен и не поощряется.

<b>совет директоров / научный комитет</b>
состоит из ведущих учёных, инвесторов, представителей государственных структур.
отвечает за утверждение ключевых решений, допуск новых этапов эксперимента, этические рамки (формально).
в загрузку практически не входят, но имеют право это сделать.

<b>отдел исследования сознания</b>
занимается анализом поведения загруженных людей, изучением устойчивости личности, разработкой моделей памяти и идентичности.
работа в основном аналитическая, через отчёты, записи, поведенческие модели.
в загрузку могут входить редко, как наблюдатели или участники эксперимента, чаще — совместно с операторами.

<b>отдел аномалий и способностей</b>
специализация: люди со способностями, нестабильные сознания, нетипичные реакции симуляции.
отвечает за классификацию способностей, отслеживание рисков, рекомендации по вмешательству.
в загрузку входят чаще других учёных, иногда под прикрытием обычных жителей.

<b>операторы (ангелы)</b>
ключевая рабочая сила проекта.
отвечают за наблюдение за подопечными, локальные вмешательства, экстренную стабилизацию сознания, вход в симуляцию при необходимости.
они входят в загрузку регулярно.

<b>старшие операторы / координаторы</b>
функции: распределение нагрузки, контроль действий младших операторов, принятие решений в спорных ситуациях.
в загрузку входят реже, чаще при сложных или опасных случаях.

<b>инженеры симуляции</b>
отвечают за стабильность среды, обновления, устранение багов, инфраструктуру города.
работают преимущественно извне, в загрузку почти не входят.

<b>системные администраторы</b>
поддержка серверов, хранилищ сознаний, безопасности данных.
в загрузку практически не входят, исключение — аварийные сценарии.

остальные: юристы, бухгалтеры, hr, секретари, служба безопасности и другие.

<b>важно!</b>
даже если сотрудник может войти в загрузку, это требует допуска, фиксируется, и почти всегда имеет последствия. вход — не развлечение, а рабочий инструмент: сотрудники внутренней безопасности строго следят за утечками информации, нарушениями протоколов и поведением персонала.</span>

</div>

</section>[/html][hideprofile]

0

2

[html]
<section class='lore'>

<h5></h5>

<span></span>

<div class='lore-block' data-title='ангелы'>
<ttl>кто они?</ttl>
<span>поддержкой загрузки занимаются так называемые ангелы — сотрудники "Абстерго", напрямую работающие с загруженными сознаниями. каждый ангел курирует определённое количество загруженных, наблюдая за их жизнью через камеры, системные показатели и поведенческие модели.
в их обязанности входит поддержание стабильности личности, вмешательство в случае критических сбоев и корректировка окружения или сознания подопечного при необходимости.

ангелы могут загружать себя в симуляцию, принимая физическую форму и взаимодействуя с её обитателями напрямую, но никак не отличаются от обычных людей и всегда руководствуются протоколами (например, не вмешиваться в жизнь своего подопечного и не вступать с ним в контакт без особой нужды), потому что не всё можно сделать вне загрузки, и потому что наблюдение ≠ присутствие.</span>
<ttl>чем занимаются ангелы?</ttl>
<span>они отслеживают показатели, вмешиваются в память при необходимости, корректируют окружение и чинят локальные сбои, но сознание — это не код в чистом виде, и некоторые вещи не проявляются в логах: микро-реакции, невербальные сигналы, интуитивные сдвиги, моменты, когда человек почти что-то понял. такие состояния невозможно корректно интерпретировать, не находясь внутри того же контекста.

ангелы не находятся в загрузке 24/7, а входят в неё когда сознание находится на грани распада, загруженный приближается к знанию, которое может вызвать каскадный сбой, способность выходит из-под контроля, несколько подопечных начинают резонировать друг с другом и прочее. в таких случаях как эти удалённое вмешательство слишком заметно, а прямое стирание памяти может нанести необратимый ущерб личности. физическое присутствие внутри загрузки позволяет замаскировать контроль под случайность, приземлить ситуацию и сохранить целостность сознания.

<b>плюс ко всему</b>
"Абстерго" использует ангелов в том числе как тест на устойчивость загрузки и проверку, может ли сознание, знающее правду, долго находиться внутри, не разрушая среду. по сути каждый ангел внутри — это в том числе и стресс-тест для самой системы.</span>
<ttl>принцип работы</ttl>
<span>ангелы не сидят за мониторами круглосуточно, потому что это невозможно ни технически, ни психологически. работа построена как сменная и многоуровневая система, где часть контроля за загрузкой автоматизирована, часть остаётся на людях, и часть сознательно не является приоритетом.

<b>ангелы работают по сменам:</b>
дневная смена — 08:00–16:00
вечерняя смена — 16:00–00:00
ночная смена — 00:00–08:00
и каждый из них курирует определённое количество подопечных, за которыми закреплён.

когда ангел не на смене, подопечные не остаются совсем без присмотра — за ними следит сама система: поведенческие алгоритмы, триггеры нестабильности, фильтры аномалий и прочее. сама по себе система не вмешивается в происходящее внутри загрузки, а лишь фиксирует информацию и сигнализирует о ней ангелам.

ангел может подключиться к загрузке в любой момент жизни своего подопечного где бы он не находился, но не видит каждый разговор, не читает каждую мысль и не следит за каждым шагом (хотя при желании и может).

<b>удалёнка</b>
некоторые ангелы могут подключаться к загрузке из дома, да, но она имеет более ограниченный доступ, поскольку менее стабильна, даёт меньше контроля и в основном используется для анализа логов, отчётов и наблюдения без вмешательства.

<b>ангелы вмешиваются когда</b>
> есть угроза стабильности симуляции
> происходит массовое влияние
> случается потеря контроля над способностью
> происходит прямая попытка выйти за пределы города

всё остальное откладывается, записывается, "посмотрим завтра, если это не критично".

наблюдение за загрузкой ведётся круглосуточно, однако большая часть контроля осуществляется автоматически. ангелы подключаются к происходящему выборочно, если система сигнализирует о потенциальной угрозе.</span>

</div>

</section>[/html][hideprofile]

0

3

<!-- Разделение ников пользователей в теме запятой -->
<script>$('#topic-users-in a').prev('a').after(',');</script>
<!--конец-->

<!----------------------- ЛИЧНАЯ СТРАНИЦА ------------------------->
<script type="text/javascript">
const gridConfigs = [
    { container: 'ppcoupons div', item: 'coupon', min: 6, emptySrc: 'https://forumstatic.ru/files/001c/aa/0d/21106.png' },
    { container: 'ppplaques div', item: 'plaque', min: 8, emptySrc: 'https://forumstatic.ru/files/001c/aa/0d/77520.png' },
    { container: 'ppbgs div', item: 'img:not(._empty)', min: 12, emptySrc: 'https://forumstatic.ru/files/001c/aa/0d/84430.png' },
    { container: 'ppgifts div', item: 'gift', min: 5, emptySrc: 'https://forumstatic.ru/files/001c/aa/0d/30402.png' },
    { container: 'achievements div', item: 'achiev', min: 6, emptySrc: 'https://forumstatic.ru/files/001c/aa/0d/84762.png' }
];

function fillEmptySlots(modalNode) {
    gridConfigs.forEach(cfg => {
        const container = modalNode.querySelector(cfg.container);
        if (!container) return;

        const currentItems = container.querySelectorAll(cfg.item).length;
        const emptySlotsNeeded = cfg.min - currentItems;

        for (let i = 0; i < emptySlotsNeeded; i++) {
            const emptyImg = document.createElement('img');
            emptyImg.className = '_empty';
            emptyImg.src = cfg.emptySrc;
            container.appendChild(emptyImg);
        }
    });
}

$(document).ready(function () {
    $(".modal-link").click(function (e) {
        e.preventDefault();
        e.stopPropagation();
       
        let pageId = $(this).attr("id");
        let modal = $("#charppage");
        let container = modal.find(".modal_wrap");
       
        container.html('<div style="text-align:center; padding: 40px;">Загрузка данных...</div>');
        modal.removeClass("closing").addClass("open");
        $(".reveal-modal-bg").show();
       
        container.load("/pages/" + pageId + " .charppage", function(response, status, xhr) {
            if (status === "error") {
                container.html('<div style="text-align:center; padding: 40px; color: red;">Ошибка: контент не найден!</div>');
            } else {
                fillEmptySlots(modal[0]);
            }
        });
    });

    $(document).on("click", "#charppage .close-reveal-modal", function (e) {
        e.preventDefault();
        e.stopImmediatePropagation();
       
        let modal = $("#charppage");
        modal.removeClass("open").addClass("closing");
        $(".reveal-modal-bg").fadeOut(400);
       
        setTimeout(() => {
            modal.removeClass("closing");
            modal.find(".modal_wrap").empty();
        }, 400);
    });

    $(document).on("click", ".reveal-modal-bg", function(e) {
        $("#charppage .close-reveal-modal").click();
    });
});
</script>

<!-- аватар для гостя и по умолчанию --------------------------------------------------------------->
<script type="text/javascript">
var DefAvtr="https://forumstatic.ru/files/001c/91/4b/11856.png"; //Для Игрока
var GuestAvtr="https://forumstatic.ru/files/001c/91/4b/11856.png";//Для Гостя
$("li.pa-title").each(function(){
var b = DefAvtr;if($(this).text()=='Гость')b = GuestAvtr;
var s='<li class="pa-avatar item2"><img class="defavtr" src="'+b+'" alt="Аватар"/></li>';
if (($(this).parents(".post-author").find("li.pa-avatar").length)==0){$(this).after(s);};});
</script>

<!-- стрелки вверх-вниз ------------------------------------------------------------------------------>
<div class="go-up" id='ToTop'></div>
<div class="go-down" id='OnBottom'></div>
<script type="text/javascript">
$(function(){
if ($(window).scrollTop()>="250") $("#ToTop").fadeIn("slow")
$(window).scroll(function(){
  if ($(window).scrollTop()<="250") $("#ToTop").fadeOut("slow")
  else $("#ToTop").fadeIn("slow")
});
if ($(window).scrollTop()<=$(document).height()-"999") $("#OnBottom").fadeIn("slow")
$(window).scroll(function(){
  if ($(window).scrollTop()>=$(document).height()-"999") $("#OnBottom").fadeOut("slow")
  else $("#OnBottom").fadeIn("slow")
});
$("#ToTop").click(function(){$("html,body").animate({scrollTop:0},"slow")})
$("#OnBottom").click(function(){$("html,body").animate({scrollTop:$(document).height()},"slow")})
});</script>

<!-- Ссылка на новые сообщения -->
<script type="text/javascript">
$('#pun-ulinks ul').prepend('<li class="item1"><a href="/search.php?action=show_new">Новые сообщения</a></li>');
</script>

<!-- Исключение из "Цитировать" подписи и "отредактировано" © Deff -->
<script type="text/javascript"> (function(){    var p =[];
  $('.post').find('.pl-quote').click(function(){
    p[0] = $(this).parents('.post').find('.lastedit');
    p[1] = $(this).parents('.post').find('.post-sig');
    p[2] = p[0].html();p[3] = p[1].html();
    p[0].html('');p[1].html('');
    setTimeout(function(){p[0].html(p[2]);p[1].html(p[3])},600);});
}());
</script>

<!-- Кликабельность ника в постах Гостя --><script>$(".post[data-group-id=3]").find(".pa-author").html(function(){return this.innerHTML.replace(/(<.+>)(.+)$/,'$1<a href="javascript:to(\'$2\')">$2</a>')});</script>
<!--Конец -->

<!-- ТЕГ абзаца - [indent] © Deff -->
<style>#button-indent {background:transparent;}</style>
<script type="text/javascript">(function(){ var b = '[indent]';
$("#button-strike").after('<td id="button-indent" title="Отступы"><img src="/i/blank.gif"  onclick="smile(\''+b+'\')"></td>');
var indent = '<span style="display:inline-block;margin:1em 2.1em;"></span>'; /*удвоенные Отступы сверху и слево*/
$('.post-content p:contains("'+b+'")').each(function(){ $(this).html( $(this).html().replace(/\[indent\]/gm,indent));});}());
</script>

<!-- Всплывающее окно цитирования © kozhilya, Deff -->
<div id="Bubble" style="margin-left:0px;margin-top:-12px;display:none;position:fixed;z-index:100000"><span></span></div>
<script>
function PopUpPL_Quote(){
    var fresh=false, SSsq='<div></div>';
    $("#Bubble").prependTo("body");
    $('.post[id]').mouseup(function(pos){
        if((window.getSelection && !getSelection().isCollapsed) && !(fresh)){
            $("#Bubble").css({
                'left': (pos.clientX + 5) + 'px',
                'top':  (pos.clientY + 4) + 'px',
                'display': 'none'
            });
            $("#Bubble span").html('<a href="javascript:$(\'#p'+$(this).attr('id').substr(1)+' .pl-quote a\').click();'+$(this).find("li.pl-quote a:first").attr("href")+';void(0)">'+SSsq+'</a>');
            $("#Bubble").fadeIn(200);
            fresh=true;
        } else if(fresh){
            fresh=false;
        }
    });
    $('#Bubble span').click(function(){
        $('#Bubble').hide(200);
        fresh=false;
    });
    $('.post').mousedown(function(){
        if(fresh){
            $("#Bubble:visible").hide(200);
            fresh=false;
        }
    });
}
if($("#pun-viewtopic").length){ PopUpPL_Quote(); }
</script>

<!-- Замена дефисов на тире © Deff -->
<script>$('.post-content p').html(function(){return this.innerHTML.replace(/(\s|&nbsp;)?-(\s|&nbsp;)/g,'$1&mdash;$2')})</script>

<!--Всплывающие Подсказки при наведении-->
<script type="text/javascript" src="https://forumstatic.ru/files/001c/aa/0d/26671.js?v=2"></script>
<!--//End//-Всплывающие Подсказки при наведении-->

<script>
$(document).ready(function () {
    const $statsContainer = $("#pun-stats ul.container");
    const $itemsStats = $statsContainer.find("li.item1, li.item2, li.item3, li.item4");
    if (!$statsContainer.length || !$itemsStats.length) return;
    const $targetCrumb = $("<li>", { class: "stats-crumbs" }).append($itemsStats);
    $statsContainer.prepend($targetCrumb);
});
</script>

<!-- горизонтальный скролл для указанных контейнеров by Vandra  -->
<script>
function applyHorizontalScroll(containers) {
    $(containers.join(", ")).each(function () {
        if (!this.dataset.scrollApplied) {
            this.addEventListener("wheel", function (e) {
                e.preventDefault();
                  this.scrollLeft += e.deltaY * (navigator.platform.includes('Mac') ? 12 : 6);
            }, { passive: false });
            this.dataset.scrollApplied = "true";
        }
    });
}
$(document).ready(function () {
    const containers = [".headnews > div", "ppicons > div", "ppls > div", "collection", "banners > div"];
    applyHorizontalScroll(containers);
    const scrollObserver = new MutationObserver(() => applyHorizontalScroll(containers));
    scrollObserver.observe(document.body, { childList: true, subtree: true });
});

</script>

<!-- текстовые поля вместо строк для ввода в профиле by Vandra  -->
<script>
document.addEventListener("DOMContentLoaded", function () {
    const profileContainer = document.getElementById("profile8");
    if (!profileContainer) return;
    const profInputs = profileContainer.querySelectorAll("#fld1, #fld2, #fld3, #fld4, #fld5");
    profInputs.forEach(profInput => {
        const profTextarea = document.createElement("textarea");
        for (let { name, value } of profInput.attributes) {
            profTextarea.setAttribute(name, value);
        }
        profTextarea.value = profInput.value;
        profInput.replaceWith(profTextarea);
    });
});
</script>

<!---------------------------- ЗАПРЕТ РЕКЛАМЫ РЕДАКТИРОВАТЬ ПРОФИЛЬ (ДОБАВИТЬ НИК ПОТОМ) ------------------------->
<script type="text/javascript">
if(UserLogin=='pr' || UserLogin=='Ник2'&&document.URL.indexOf("profile.php")!=-1){$("#profile .container").replaceWith("<div style='color: red; padding: 10px 10px 10px 10px;'>Администратор запретил вам редактировать профиль.</div>");
}
</script>

<!-- Быстроплюсы v.2 by Deff -->
<script type="text/javascript" src="https://forumstatic.ru/files/0012/d8/04/58219.js" addComment="1"></script>

<!---- перенос кнопки быстрого редактирования в кнопки формы ответа ------------------>
<script>
$(function () {
    var $toggle = $('#togglePreview');
    var $target = $('.formsubmit');
    if ($toggle.length && $target.length) {
        $toggle.appendTo($target);
    }
});
</script>

<!-- копирование элементов оформления профиля с личной страницы by Vandra  -->
<script>
(function() {
    function copyToClipboard(text) {
        navigator.clipboard.writeText(text).then(() => {
            const notice = document.createElement('div');
            notice.textContent = 'Скопировано в буфер!';
            notice.style.cssText = `
                position: fixed; top: 20px; left: 50%;
                transform: translateX(-50%); padding: 10px 20px;
                background: rgba(0, 0, 0, 0.7); color: white;
                border-radius: 4px; z-index: 9999;
                font-family: Inter, sans-serif; font-size: 11px;
                pointer-events: none;
            `;
            document.body.appendChild(notice);
           
            setTimeout(() => {
                document.body.removeChild(notice);
            }, 2000);
           
        }).catch(err => {
            console.error('Ошибка копирования:', err);
        });
    }

    function setupCopyListeners(node) {
        node.querySelectorAll('ppbgs div.bg').forEach(bgDiv => {
            bgDiv.addEventListener('click', (e) => {
                e.stopPropagation();
                copyToClipboard(bgDiv.outerHTML);
            });
        });

        node.querySelectorAll('ppplaques plaque').forEach(plaque => {
            plaque.addEventListener('click', (e) => {
                e.stopPropagation();
                copyToClipboard(plaque.outerHTML);
            });
        });
    }

    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.addedNodes.length) {
                mutation.addedNodes.forEach((node) => {
                    if (node.nodeType === 1) {
                        setupCopyListeners(node);
                    }
                });
            }
        });
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true   
    });
})();
</script>

<!-- Возможность скопировать последний пост при переполнении темы -->
<script>
$(document).ready(function() {
  $('#pun-viewtopic #pun-main > h2')
    .append('<div style="opacity: 0;position: absolute;bottom: 210px;right: 60px;width: 10px;height: 10px;"><textarea id="reserved_post">' + localStorage.ReservePost + '</textarea></div>');
  $('#pun-viewtopic #pun-main > h2')
    .append('<div id="reserve_post">Если вы потеряли свой пост из-за этого, нажмите на этот текст — отправленный пост будет скопирован в буфер обмена.</div>');
  $('#reserve_post').on('click', function () {
    var post = document.getElementById('reserved_post');
    post.select();
    document.execCommand('copy');
  });
});
</script>

<!------------— переключатель меню в шапке -------------------------------------------------------------------------->
<script>
document.querySelector('.blush-dropdown-toggle').addEventListener('click', () => {
  document.querySelector('.blush-dropdown').classList.toggle('open');
});
</script>

<!-- Переключение раскладки выделенного текста © Deff -->
<style>#button-transL{background-image:url(https://upforme.ru/uploads/000f/09/5e/6201/44477.png)}</style>
<script type="text/javascript">S='<img src="https://forum.mybb.ru/i/blank.gif" title="Lat↔ Русс" onclick="bbcode(\'[Lat-Rus]\',\'[/Rus-Lat]\');LatRus();"/>';
$("#button-font").after('<td id=button-transL>'+S+'</td>');var TxtTrans1='lat';
function LatRus(){if(TxtTrans1=='lat'){TxtTrans1='rus'}else{TxtTrans1='lat'};
lat0='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~[].'.split('');
lat='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~'.split('');
lat.push('\\[');lat.push('\\]');lat.push('\\.');
rus=('йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю').split('');
function transF(p){ar1=lat;ar2=rus;if(TxtTrans1=='lat'){ar2=lat0;ar1=rus}for(var i=0; i<ar1.length; i++){trans='/'+ar1[i]+'/g';p=p.replace(eval(trans), ar2[i])}return p;}L=$('#main-reply').val();L=L.replace(/\[Lat-Rus\]([\s\S]*)\[\/Rus-Lat\]/mg,function(a,b,c){return transF(b);});$('#main-reply').val(L);}
</script>

<!-- Вставить картинку © Deff -->
<script>
var oldIMG="<td id=\"button-image\" title=\"Изображение2\"><img onclick=\"bbcode('--')\" src=\"/i/blank.gif\"/><b><p style=\"z-index:20;position:absolute;height14px;margin:-15px 0 0 22px;\">2</p></b></td>"
$("#button-image").after(oldIMG);
</script>

<!-- Восстановление последнего поста при утере by Человек-Шаман -->
<script>
$(document).ready(function() {
  $('#addition-area').append(function() {
    return $('<div>Восстановить последний пост</div>').click(restoreLastPost);
  });
  function restoreLastPost() {
    $('#main-reply').val(localStorage.ReservePost);
  };
});
</script>
<!--конец-->

<!-- Счётчик символов в форме ответа © Deff -->
<script>var a,L,epl=$("#main-reply"),str='<small id="plng" style="background: rgb(var(--canvas-quarternary)); padding: 3px 10px; border-radius: 4px; margin: 0 20px 0 0px; color: rgba(var(--text-primary)); opacity: .6;"> символов: <b>00</b> </small>';epl.parents("fieldset").find("legend").prepend(str);function epl3(){a=epl.val().length;if(a>9){L=''}else{L='0'};$("#plng b").text(L+a)};epl3();$(".pl-quote").click(function (){setTimeout('epl3()',100)});epl.bind('mouseout mousemove keydown keypress keyup',function(e){epl3()});</script>

<banners class=""><div>
<a href="#"><img src="https://forumstatic.ru/files/001c/aa/0d/58866.png" title="рисованные внешности, симуляция жизни"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>
<a href="#"><img src="https://forumstatic.ru/files/001c/97/3a/80032.png"></a>

</div></banners>

<!-- сайдбар скрипт -->
<script>
if (GroupID <= 2 || GroupID >= 4) {
    if (typeof $ != 'undefined') {
        $(document).ready(function() {
            if ($('#BookmCntToggle').length) {
                $('#BookmCntToggle').remove();
                $('#MyBookmarks').appendTo('#sidebar').prop('id', 'MyBookmarksCustom').css({'display': 'block','position': 'static', 'width': '100%', 'height': 'auto', 'box-shadow': 'none', 'background': 'none'});
      }
  });
}}
</script>

0

4

Код:
<!-- онлайн / оффлайн контейнеры вместо картинок на основе скрипта от Deff, доработано Vandra -->
<script>
const ImgONClass = 'status-online';  
const ImgOffClass = 'status-offline';  
const iconOnlineHTML = '<i class="fa-solid fa-microphone"></i>'; 
const iconOfflineHTML = '<i class="fa-solid fa-microphone-slash"></i>'; 
document.querySelectorAll("#pun-viewtopic .post .post-author > ul").forEach((ul) => {
    const isOnline = ul.querySelector(".pa-online") !== null;
    const lastVisit = ul.querySelector('.pa-last-visit')?.textContent.split('Последний визит:')[1]?.trim() || 'неизвестно';
    const activeTime = ul.querySelector('.pa-online')?.textContent.split('Активен')[1]?.trim() || 'неизвестно';
    const statusContainer = document.createElement('div');
    statusContainer.classList.add('status-container');
    if (isOnline) {
        statusContainer.classList.add(ImgONClass);
        statusContainer.title = `Онлайн ${activeTime}`;
        statusContainer.innerHTML = iconOnlineHTML; 
    } else {
        statusContainer.classList.add(ImgOffClass);
        statusContainer.title = `Был(а) онлайн ${lastVisit}`;
        statusContainer.innerHTML = iconOfflineHTML; 
    }
    ul.appendChild(statusContainer);
});
</script>

<!----- обёртка и объединение некоторых блоков  -------------->
<script>
function wrapElements(containerSelector, itemSelector, wrapperHTML, wrapperContainerSelector = null, insertMode = "append", anchorSelector = null) {
    const containers = document.querySelectorAll(containerSelector);

    containers.forEach(container => {
        const elementsToWrap = container.querySelectorAll(itemSelector);
        if (elementsToWrap.length === 0) return;

        const wrapperTemplate = document.createElement('div');
        wrapperTemplate.innerHTML = wrapperHTML.trim();
        const wrapperNode = wrapperTemplate.firstElementChild;

        const targetContainer = wrapperContainerSelector
            ? container.querySelector(wrapperContainerSelector)
            : container;

        if (!targetContainer) {
            return;
        }

        let inserted = false;
        if (anchorSelector) {
            const anchorNode = targetContainer.querySelector(anchorSelector);
            if (anchorNode) {
                targetContainer.insertBefore(wrapperNode, anchorNode);
                inserted = true;
            }
        }

        if (!inserted) {
            switch (insertMode) {
                case "prepend":
                    targetContainer.prepend(wrapperNode);
                    break;
                case "before": 
                    targetContainer.parentNode.insertBefore(wrapperNode, targetContainer);
                    break;
                case "after": 
                    targetContainer.parentNode.insertBefore(wrapperNode, targetContainer.nextSibling);
                    break;
                default: 
                    targetContainer.appendChild(wrapperNode);
            }
        }

        const fragment = document.createDocumentFragment();
        elementsToWrap.forEach(el => fragment.appendChild(el));
        wrapperNode.appendChild(fragment);
    });
}

try {
    wrapElements(
        '.post .container',                                     // Глобальный контекст
        '.pa-author, .status-container',                  // Конты для перемещения
        '<div class="pa-author-2"></div>',          // Название обёртки
        '.post-author ul',                                      // Родитель для приёма конта
        'prepend',                                               // Режим вставки
        '.pa-title'                                                // После чего вставлять
    );
} catch (e) {
    console.error("Случилась херня:", e);
}

try {
    wrapElements(
        '.post .container',                                     // Глобальный контекст
        'li.pa-posts, li.pa-respect, li.pa-fld2, li.pa-fld3',   // Конты для перемещения
        '<div class="prof-elems"></div>',                       // Название обёртки
        '.post-author ul',                                      // Родитель для приёма конта
        'append',                                               // Режим вставки
        'li.pa-fld2'                                            // После чего вставлять
    );

} catch (e) {
    console.error("Случилась херня:", e);
}

try {
    wrapElements(
        '#viewprofile',                                     // Глобальный контекст
        '#profile-name, #profile-title, #pa-avatar, #pa-fld1, #pa-fld4, #pa-fld5',   // Конты для перемещения
        '<div class="prof-decor"></div>',                       // Название обёртки
        '#profile-left',                                      // Родитель для приёма конта
        'prepend',                                               // Режим вставки
        '#pa-online'                                            // После чего вставлять
    );

} catch (e) {
    console.error("Случилась херня:", e);
}

</script>



<!-- замена стандартных слов -->
<script>
function UniverСhange(selektor,changed,substitute){
$(selektor).each(function(){if ($(this).parent().html()!=null){if($(this).parent().html().indexOf(changed)!=-1){
$(this).parent().html($(this).parent().html().replace(changed,substitute));};};});}
UniverСhange("#pun-stats .item2","Зарегистрированных пользователей:","пользователей:");
UniverСhange("#pun-stats .item3","Зарегистрированных пользователей:","пользователей:");
UniverСhange("#pun-stats .item4","Последним зарегистрировался:","привет:");
// UniverСhange("#pun-stats .item4","Последним зарегистрировался:","новорег:"); 
//UniverСhange("#pun-stats .item5","Активны","<b>онлайн:</b>");
//UniverСhange("#pun-stats .item5","Посетили за сутки","<b>Проходили мимо:</b>");
// UniverСhange("span.item1","Привет,","Добро пожаловать,<br>");
UniverСhange("span.item1",".","!");
 //На следующей строке можно добавить еще запрос
</script>
<!-- замена стандартных слов -->

<!--а эта хрень фиксирует рядом с названием форума by Vandra -->
<script>
const titulInForum = document.querySelectorAll('.forum-name');
titulInForum.forEach((element) => {
  const parentUniq = element.closest(".tclcon");
  const targetUniq = parentUniq.querySelector('h3');
  targetUniq.insertBefore(element, targetUniq.firstElementChild);
});
</script>


<! --------- свежие новости! by Vandra -------------------------------------------------------------->
<script>
document.addEventListener("DOMContentLoaded", function () {
  const links = document.querySelectorAll(".headnews a");
  const now = new Date();
  const currentYear = now.getFullYear();
  links.forEach(link => {
    const span = link.querySelector("date");
    if (!span) return;
    const dateText = span.textContent.trim(); 
    const [day, month] = dateText.split(".").map(Number);
    if (!day || !month) return; 
    const newsDate = new Date(currentYear, month - 1, day); 
    const timeDiff = now - newsDate;
    const daysDiff = timeDiff / (1000 * 60 * 60 * 24);
    if (daysDiff >= 0 && daysDiff <= 3) {
      link.classList.add("breaking-news");
    }
  });
});
</script>





<!------------ быстрое редактирование личной страницы by Vandra ------------->

<script>
let plaqueField = 'li.pa-fld4';
let forumLinkPl = 'https://upload.rusff.me';
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/001c/04/0a/95884.js"></script>

<!-- Мгновенный предпросмотр сообщения © Alex_63 -->
    <script type="text/javascript">
    var PPREV = {};
    PPREV.position = 0; //Положение окна Предпросмотра: 0 - над полем ввода, 1 - под полем ввода, 2 - справа
    PPREV.quote_cite = 'написал(а):'; //Надпись в окне цитаты
    </script>
    <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/10524.js"></script>

   <!-- Кнопка отключения мгновенного предпросмотра -->
    <style>#togglePreview{margin-top: 0px;}</style>
    <script type="text/javascript">(function (){
      var a='Включить быстрый предпросмотр';
      var b='Отключить быстрый предпросмотр';
      var d='_PreviewToggle';
      setCookiePPrev=function(a,b,c){if(c){var d=new Date();d.setTime(d.getTime()+c);}if(a && b)document.cookie=a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
      getCookiePPrev=function(a){var b=new RegExp(a+'=([^;]){1,}');var c=b.exec(document.cookie);if(c)c=c[0].split('=');else return false;return c[1] ? c[1] : false;}
      $('<small id="togglePreview"><input type="button" class="button" value="'+ b +'" onclick="togglePreview(this)"/></small>').insertAfter('#post fieldset:last legend');
      var x = ParseContent;
      window.togglePreview = function(sel){//alert(sel.value);
        if(sel.value==a){sel.value=b;setCookiePPrev(d,'0',-1000);ParseContent=x;ParseContent();$('#post-preview').show(); return}
        if(sel.value==b){sel.value=a;setCookiePPrev(d,'OFF',30*3600*24*30*1000);if($('#pun-viewtopic').length){$('#post-preview').hide()}ParseContent=function(){return};return}
      }; if(getCookiePPrev(d)=='OFF'){$('#togglePreview>.button').click()};
    }())
    </script>



<!-— Объявление по центру и с прокруткой by Vandra -->
<script>
document.addEventListener("DOMContentLoaded", () => {
    const c = document.querySelector('.headnews div');
    c.classList.toggle('overflown', c.scrollWidth > c.clientWidth);
});
</script>

<!--------------- Дополнительные шрифты по категориям by Vandra ----------------->
<script>
(function() {
    if (!$('#pun-viewtopic,#pun-post,#pun-edit,#pun-poll,#pun-messages').length) return;
    const fontContainer = document.getElementById("font-area");
    if (!fontContainer) return;
    const fontCategories = {
        "Латиница": [
           "Boldonse", "Abril Fatface", "Satisfy", "Oleo Script", "Bodoni Moda", "Readex Pro", "Zeyada", "Staatliches", "Antonio", "League Gothic", "Anton SC", "Barlow Condensed", "Bebas Neue", "EB Garamond", "Edu VIC WA NT Hand", "Indie Flower", "Libre Barcode 39", "Permanent Marker", "Playfair Display", "Quicksand", "Smooch Sans", "Teko", "WDXL Lubrifont SC", "Zeyada"
        ],
        "Кириллица": [
            "Unbounded", "Source Code Pro", "Playfair Display", "Dela Gothic One", "Caveat", "Curator", "Amatic SC", "Alumni Sans", "Noto Serif Display", "Comforter Brush", "Oswald", "Montserrat", "Raleway", "Great Vibes", "Russo One", "Yeseva One", "Poiret One", "Viaoda Libre", "Code Pro", "Neucha", "Press Start 2P", "Handjet", "Kontrabanda"
        ]
    };
    function createCategory(title, fonts) {
        const categoryTitle = document.createElement("div");
        categoryTitle.className = "font-category-title";
        categoryTitle.textContent = title;
        const categoryWrapper = document.createElement("div");
        categoryWrapper.className = "font-category";
        fonts.forEach(font => {
            const fontItem = document.createElement("div");
            fontItem.className = "font-item";
            fontItem.dataset.font = font;
            fontItem.innerHTML = `
                <span class="font-name" style="font-family: '${font}';">${font}</span>
                <img class="font-btn" src="/i/blank.gif" />
            `;
            categoryWrapper.appendChild(fontItem);
        });
        const firstChild = fontContainer.firstChild;
        if (firstChild) {
            fontContainer.insertBefore(categoryWrapper, firstChild);
            fontContainer.insertBefore(categoryTitle, categoryWrapper);
        } else {
            fontContainer.appendChild(categoryTitle);
            fontContainer.appendChild(categoryWrapper);
        }
    }
    for (const [category, fonts] of Object.entries(fontCategories)) {
        createCategory(category, fonts);
    }
const defaultTitle = document.createElement("div");
defaultTitle.className = "font-category-title";
defaultTitle.textContent = "дефолтные";
const firstDivWithoutClassOrId = fontContainer.querySelector('div:not([class]):not([id])');
if (firstDivWithoutClassOrId) {
    fontContainer.insertBefore(defaultTitle, firstDivWithoutClassOrId);  
} else {
    fontContainer.appendChild(defaultTitle);  
}
    fontContainer.addEventListener("click", function(event) {
        let target = event.target.closest(".font-item");
        if (target) {
            let font = target.dataset.font;
            bbcode(`[font=${font.includes(' ') ? `'${font}'` : font}]`, `[/font]`);
        }
    });
})();
</script>


<!-- вкладки для ЛС без ID by Vandra  -->
<script>
function initTabs(modal) {
    modal.querySelectorAll(".vtabs-cont").forEach(tabContainer => {
        const buttons = tabContainer.querySelectorAll(".vtab-btn");
        const tabs = tabContainer.querySelectorAll(".vtab-content");

        if (!buttons.length || !tabs.length) return;

        if (tabContainer.dataset.tabsInitialized === "true") return;
        tabContainer.dataset.tabsInitialized = "true";

        function switchTab(index) {
            tabs.forEach(tab => tab.classList.remove("active"));
            buttons.forEach(btn => btn.classList.remove("active"));

            tabs[index].classList.add("active");
            buttons[index].classList.add("active");
        }

        buttons.forEach((button, index) => {
            button.addEventListener("click", () => switchTab(index));
        });

        switchTab(0);
    });
}

const observer = new MutationObserver(mutations => {
    mutations.forEach(mutation => {
        mutation.addedNodes.forEach(node => {
            if (node.nodeType === 1 && node.classList.contains(".vtabs-wrapper")) {
                initTabs(node);
            }
        });
    });
});

observer.observe(document.body, { childList: true, subtree: true });

document.addEventListener("DOMContentLoaded", () => {
    document.querySelectorAll(".vtabs-wrapper").forEach(initTabs);
});
</script>


<!-- Снять автоматическую галочку удаления всех сообщений © Duka -->
<script type="text/javascript">
if (document.getElementById('pun-deleteuser')) {
    document.querySelector('input[name=delete_posts]').checked = false;
}
</script>


<!-- кнопка редактирования лз для админов / © hagalnaud&nothingale -->
 <script type="text/javascript">
var posts = $(".post");
posts.each(function() {
  var senderId = $(this).data("user-id");
  var editLink = $("<a>").attr("href", "/profile.php?section=fields&id=" + senderId).attr("rel", "nofollow").text("Смена ЛЗ");
  var editLi = $("<li>").addClass("editpole").append(editLink);
  $(this).find(".pl-email.pm").after(editLi);
});</script>
<style>li.editpole {display: none!important; float: left;}
.isadmin li.editpole {display: inline!important;}
</style>


<!---------- Разделение тем: "Важные темы" и "Темы форума" // © Alex_63 ---------->
<script type="text/javascript">if($('#pun-viewforum').length){$('tr[class$="isticky"]:first').before('<tr class="tr-divider imp"><td class="td-divider" colspan="4">Важные темы</td></tr>');$('tr[class$="isticky"]:last').next('tr').before('<tr class="tr-divider st"><td class="td-divider" colspan="4">Темы форума</td></tr>')}</script>


<!------------- Обтекание изображения 2.4.4 © Romych, мод. max, the murderer! ------------->
<div id="float"><strong>направление обтекания</strong><span class="vibor" title="слева" onclick="bbcode('[float=left]', '[/float]')"><i class="fa-solid fa-indent"></i></span><span class="vibor" title="справа" onclick="bbcode('[float=right]', '[/float]')"><i style="transform: scaleX(-1)" class="fa-solid fa-indent"></i></span></div>
<script language="javascript">
$(function(){
$('td#button-link').before('<td id="button-float" title="Обтекание"></td>');
$('#button-float, .vibor').click(function(){
$('div#float').toggle();});
  });
elm=document.getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content") 
{
post = elm[x].innerHTML;
if(post.indexOf("[/float]") != -1) {
floats = /\[float=(.*?)\]([^\[]{1,11000})\[\/float\]/gi
elm[x].innerHTML = elm[x].innerHTML.replace(floats, "<span style='float: $1; margin: 15px; text-align: $1;'>$2</span>")
}};
$('#float').insertBefore('#button-link');
</script>


<!-- Удаляем лишние строки после цитаты и кода // v.3 © Alex_63 -->
    <script type="text/javascript">
    $('.post-content').each(function() {
        var CNT = $(this).html();
        CNT = CNT.replace(/<p><br><\/p>/img,'');
        CNT = CNT.replace(/<p><br><br>(.*?)<\/p>/img,'<p>$1</p>');
        CNT = CNT.replace(/<p><br>(.*?)<\/p>/img,'<p>$1</p>');
        $(this).html(CNT);
    });
    </script>
<!-- Удаляем лишние строки после цитаты и кода -------------> 
<script>
document.addEventListener("DOMContentLoaded", function () {
    const MAX_HEIGHT = 500;
    const CHECK_INTERVAL = 200;
    const CHECK_DURATION = 4000;
    const adjustHeights = () => {
        document.querySelectorAll('.code-box .scrollbox').forEach(scrollbox => {
            const pre = scrollbox.querySelector('pre');
            if (pre) {
                const contentHeight = pre.scrollHeight;
                const finalHeight = Math.min(contentHeight + 8, MAX_HEIGHT);
                scrollbox.style.height = finalHeight + "px";
            }
        });
    };
    adjustHeights();
    let elapsed = 0;
    const interval = setInterval(() => {
        adjustHeights();
        elapsed += CHECK_INTERVAL;
        if (elapsed >= CHECK_DURATION) clearInterval(interval);
    }, CHECK_INTERVAL);
});
</script>


<!-- запятая после ника -->
<script type="text/javascript">
function to(username)
{insert('[b]' + username + '[/b]' + ', ');}
</script>


<!-- Разделение ников пользователей в теме запятой -->
<script>$('#topic-users-in a').prev('a').after(',');</script>
<!--конец-->

0

5

Код:
<!-- онлайн / оффлайн контейнеры вместо картинок на основе скрипта от Deff, доработано Vandra -->
<script>
const ImgONClass = 'status-online';  
const ImgOffClass = 'status-offline';  
const iconOnlineHTML = '<i class="fa-solid fa-microphone"></i>'; 
const iconOfflineHTML = '<i class="fa-solid fa-microphone-slash"></i>'; 
document.querySelectorAll("#pun-viewtopic .post .post-author > ul").forEach((ul) => {
    const isOnline = ul.querySelector(".pa-online") !== null;
    const lastVisit = ul.querySelector('.pa-last-visit')?.textContent.split('Последний визит:')[1]?.trim() || 'неизвестно';
    const activeTime = ul.querySelector('.pa-online')?.textContent.split('Активен')[1]?.trim() || 'неизвестно';
    const statusContainer = document.createElement('div');
    statusContainer.classList.add('status-container');
    if (isOnline) {
        statusContainer.classList.add(ImgONClass);
        statusContainer.title = `Онлайн ${activeTime}`;
        statusContainer.innerHTML = iconOnlineHTML; 
    } else {
        statusContainer.classList.add(ImgOffClass);
        statusContainer.title = `Был(а) онлайн ${lastVisit}`;
        statusContainer.innerHTML = iconOfflineHTML; 
    }
    ul.appendChild(statusContainer);
});
</script>

<!----- обёртка и объединение некоторых блоков  -------------->
<script>
function wrapElements(containerSelector, itemSelector, wrapperHTML, wrapperContainerSelector = null, insertMode = "append", anchorSelector = null) {
    const containers = document.querySelectorAll(containerSelector);

    containers.forEach(container => {
        const elementsToWrap = container.querySelectorAll(itemSelector);
        if (elementsToWrap.length === 0) return;

        const wrapperTemplate = document.createElement('div');
        wrapperTemplate.innerHTML = wrapperHTML.trim();
        const wrapperNode = wrapperTemplate.firstElementChild;

        const targetContainer = wrapperContainerSelector
            ? container.querySelector(wrapperContainerSelector)
            : container;

        if (!targetContainer) {
            return;
        }

        let inserted = false;
        if (anchorSelector) {
            const anchorNode = targetContainer.querySelector(anchorSelector);
            if (anchorNode) {
                targetContainer.insertBefore(wrapperNode, anchorNode);
                inserted = true;
            }
        }

        if (!inserted) {
            switch (insertMode) {
                case "prepend":
                    targetContainer.prepend(wrapperNode);
                    break;
                case "before": 
                    targetContainer.parentNode.insertBefore(wrapperNode, targetContainer);
                    break;
                case "after": 
                    targetContainer.parentNode.insertBefore(wrapperNode, targetContainer.nextSibling);
                    break;
                default: 
                    targetContainer.appendChild(wrapperNode);
            }
        }

        const fragment = document.createDocumentFragment();
        elementsToWrap.forEach(el => fragment.appendChild(el));
        wrapperNode.appendChild(fragment);
    });
}

try {
    wrapElements(
        '.post .container',                                     // Глобальный контекст
        '.pa-author, .status-container',                  // Конты для перемещения
        '<div class="pa-author-2"></div>',          // Название обёртки
        '.post-author ul',                                      // Родитель для приёма конта
        'prepend',                                               // Режим вставки
        '.pa-title'                                                // После чего вставлять
    );
} catch (e) {
    console.error("Случилась херня:", e);
}

try {
    wrapElements(
        '.post .container',                                     // Глобальный контекст
        'li.pa-posts, li.pa-respect, li.pa-fld2, li.pa-fld3',   // Конты для перемещения
        '<div class="prof-elems"></div>',                       // Название обёртки
        '.post-author ul',                                      // Родитель для приёма конта
        'append',                                               // Режим вставки
        'li.pa-fld2'                                            // После чего вставлять
    );

} catch (e) {
    console.error("Случилась херня:", e);
}

try {
    wrapElements(
        '#viewprofile',                                     // Глобальный контекст
        '#profile-name, #profile-title, #pa-avatar, #pa-fld1, #pa-fld4, #pa-fld5',   // Конты для перемещения
        '<div class="prof-decor"></div>',                       // Название обёртки
        '#profile-left',                                      // Родитель для приёма конта
        'prepend',                                               // Режим вставки
        '#pa-online'                                            // После чего вставлять
    );

} catch (e) {
    console.error("Случилась херня:", e);
}

</script>



<!-- замена стандартных слов -->
<script>
function UniverСhange(selektor,changed,substitute){
$(selektor).each(function(){if ($(this).parent().html()!=null){if($(this).parent().html().indexOf(changed)!=-1){
$(this).parent().html($(this).parent().html().replace(changed,substitute));};};});}
UniverСhange("#pun-stats .item2","Зарегистрированных пользователей:","пользователей:");
UniverСhange("#pun-stats .item3","Зарегистрированных пользователей:","пользователей:");
UniverСhange("#pun-stats .item4","Последним зарегистрировался:","привет:");
// UniverСhange("#pun-stats .item4","Последним зарегистрировался:","новорег:"); 
//UniverСhange("#pun-stats .item5","Активны","<b>онлайн:</b>");
//UniverСhange("#pun-stats .item5","Посетили за сутки","<b>Проходили мимо:</b>");
// UniverСhange("span.item1","Привет,","Добро пожаловать,<br>");
UniverСhange("span.item1",".","!");
 //На следующей строке можно добавить еще запрос
</script>
<!-- замена стандартных слов -->

<!--а эта хрень фиксирует рядом с названием форума by Vandra -->
<script>
const titulInForum = document.querySelectorAll('.forum-name');
titulInForum.forEach((element) => {
  const parentUniq = element.closest(".tclcon");
  const targetUniq = parentUniq.querySelector('h3');
  targetUniq.insertBefore(element, targetUniq.firstElementChild);
});
</script>


<! --------- свежие новости! by Vandra -------------------------------------------------------------->
<script>
document.addEventListener("DOMContentLoaded", function () {
  const links = document.querySelectorAll(".headnews a");
  const now = new Date();
  const currentYear = now.getFullYear();
  links.forEach(link => {
    const span = link.querySelector("date");
    if (!span) return;
    const dateText = span.textContent.trim(); 
    const [day, month] = dateText.split(".").map(Number);
    if (!day || !month) return; 
    const newsDate = new Date(currentYear, month - 1, day); 
    const timeDiff = now - newsDate;
    const daysDiff = timeDiff / (1000 * 60 * 60 * 24);
    if (daysDiff >= 0 && daysDiff <= 3) {
      link.classList.add("breaking-news");
    }
  });
});
</script>





<!------------ быстрое редактирование личной страницы by Vandra ------------->

<script>
let plaqueField = 'li.pa-fld4';
let forumLinkPl = 'https://upload.rusff.me';
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/001c/04/0a/95884.js"></script>

<!-- Мгновенный предпросмотр сообщения © Alex_63 -->
    <script type="text/javascript">
    var PPREV = {};
    PPREV.position = 0; //Положение окна Предпросмотра: 0 - над полем ввода, 1 - под полем ввода, 2 - справа
    PPREV.quote_cite = 'написал(а):'; //Надпись в окне цитаты
    </script>
    <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/10524.js"></script>

   <!-- Кнопка отключения мгновенного предпросмотра -->
    <style>#togglePreview{margin-top: 0px;}</style>
    <script type="text/javascript">(function (){
      var a='Включить быстрый предпросмотр';
      var b='Отключить быстрый предпросмотр';
      var d='_PreviewToggle';
      setCookiePPrev=function(a,b,c){if(c){var d=new Date();d.setTime(d.getTime()+c);}if(a && b)document.cookie=a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
      getCookiePPrev=function(a){var b=new RegExp(a+'=([^;]){1,}');var c=b.exec(document.cookie);if(c)c=c[0].split('=');else return false;return c[1] ? c[1] : false;}
      $('<small id="togglePreview"><input type="button" class="button" value="'+ b +'" onclick="togglePreview(this)"/></small>').insertAfter('#post fieldset:last legend');
      var x = ParseContent;
      window.togglePreview = function(sel){//alert(sel.value);
        if(sel.value==a){sel.value=b;setCookiePPrev(d,'0',-1000);ParseContent=x;ParseContent();$('#post-preview').show(); return}
        if(sel.value==b){sel.value=a;setCookiePPrev(d,'OFF',30*3600*24*30*1000);if($('#pun-viewtopic').length){$('#post-preview').hide()}ParseContent=function(){return};return}
      }; if(getCookiePPrev(d)=='OFF'){$('#togglePreview>.button').click()};
    }())
    </script>



<!-— Объявление по центру и с прокруткой by Vandra -->
<script>
document.addEventListener("DOMContentLoaded", () => {
    const c = document.querySelector('.headnews div');
    c.classList.toggle('overflown', c.scrollWidth > c.clientWidth);
});
</script>

<!--------------- Дополнительные шрифты по категориям by Vandra ----------------->
<script>
(function() {
    if (!$('#pun-viewtopic,#pun-post,#pun-edit,#pun-poll,#pun-messages').length) return;
    const fontContainer = document.getElementById("font-area");
    if (!fontContainer) return;
    const fontCategories = {
        "Латиница": [
           "Boldonse", "Abril Fatface", "Satisfy", "Oleo Script", "Bodoni Moda", "Readex Pro", "Zeyada", "Staatliches", "Antonio", "League Gothic", "Anton SC", "Barlow Condensed", "Bebas Neue", "EB Garamond", "Edu VIC WA NT Hand", "Indie Flower", "Libre Barcode 39", "Permanent Marker", "Playfair Display", "Quicksand", "Smooch Sans", "Teko", "WDXL Lubrifont SC", "Zeyada"
        ],
        "Кириллица": [
            "Unbounded", "Source Code Pro", "Playfair Display", "Dela Gothic One", "Caveat", "Curator", "Amatic SC", "Alumni Sans", "Noto Serif Display", "Comforter Brush", "Oswald", "Montserrat", "Raleway", "Great Vibes", "Russo One", "Yeseva One", "Poiret One", "Viaoda Libre", "Code Pro", "Neucha", "Press Start 2P", "Handjet", "Kontrabanda"
        ]
    };
    function createCategory(title, fonts) {
        const categoryTitle = document.createElement("div");
        categoryTitle.className = "font-category-title";
        categoryTitle.textContent = title;
        const categoryWrapper = document.createElement("div");
        categoryWrapper.className = "font-category";
        fonts.forEach(font => {
            const fontItem = document.createElement("div");
            fontItem.className = "font-item";
            fontItem.dataset.font = font;
            fontItem.innerHTML = `
                <span class="font-name" style="font-family: '${font}';">${font}</span>
                <img class="font-btn" src="/i/blank.gif" />
            `;
            categoryWrapper.appendChild(fontItem);
        });
        const firstChild = fontContainer.firstChild;
        if (firstChild) {
            fontContainer.insertBefore(categoryWrapper, firstChild);
            fontContainer.insertBefore(categoryTitle, categoryWrapper);
        } else {
            fontContainer.appendChild(categoryTitle);
            fontContainer.appendChild(categoryWrapper);
        }
    }
    for (const [category, fonts] of Object.entries(fontCategories)) {
        createCategory(category, fonts);
    }
const defaultTitle = document.createElement("div");
defaultTitle.className = "font-category-title";
defaultTitle.textContent = "дефолтные";
const firstDivWithoutClassOrId = fontContainer.querySelector('div:not([class]):not([id])');
if (firstDivWithoutClassOrId) {
    fontContainer.insertBefore(defaultTitle, firstDivWithoutClassOrId);  
} else {
    fontContainer.appendChild(defaultTitle);  
}
    fontContainer.addEventListener("click", function(event) {
        let target = event.target.closest(".font-item");
        if (target) {
            let font = target.dataset.font;
            bbcode(`[font=${font.includes(' ') ? `'${font}'` : font}]`, `[/font]`);
        }
    });
})();
</script>

0


Вы здесь » Test » memory management » абстерго


Рейтинг форумов | Создать форум бесплатно