11

MortisMorsMors

Объявление

лучший пост от лорда

Уж к чему, а к беснующимся рядом со Стоунхенджем магглам Лорд относился весьма спокойно, хотя едва ли стал бы транслировать это свое отношение в окружающую действительность, особенно здесь и сейчас. Его отношения с древней магией были сложными, в каких-то моментах даже напряженными, но малопонятными даже ему самому. То, что чистокровному волшебнику полагалось впитывать с молоком матери для Лорда была зоной, плотно укрытой туманом войны, который трудно было рассеять. И все же, он прекрасно в этом тумане ориентировался.

новости #185 от профессионального умирателя ЗАПИСЬ В СЮЖЕТпоиск желающих в 6.2 ПАЗЛЫс куличамиМЕМОнайди пару

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

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


Вы здесь » MortisMorsMors » админка » Селин


Селин

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

Перевести1

https://i.ibb.co/0tScjW8/25.webp

0

2

<!----------------- хтмл в постах с допуском по группам  --------------->

<!-- HTML в постах -->
<script type="text/javascript" src="https://forumstatic.ru/files/0018/25/96/94151.js"></script>
<script type="text/javascript">
HTMLinPost.groups = [1,2,3,4,5,6,7,8]; // Группы, допущенные к вставке HTML в посты
HTMLinPost.noAccess = []; // Пользователи с запретом вставки HTML в посты
HTMLinPost.parseHTMLinPosts()
</script>

0

3

[html]<div style="max-width:700px; margin:30px auto; border:2px solid #555; border-radius:12px; padding:24px; background:#6f3531; color:#fff; box-shadow:0 8px 25px rgba(0,0,0,0.6);">

    <div style="font-size:24px; text-align:center; margin-bottom:22px; font-weight:bold; color:#ffd700;">
        Калькулятор постов
    </div>

    <!-— Монеты на профиле -->
    <div style="margin-bottom:20px; max-width:260px;">
        <input type="number" id="start" placeholder="Монеты на профиле" style="width:100%; padding:11px; background:#3f1f1d; color:#fff; border:1px solid #777; border-radius:8px;">
    </div>

    <!-— Бонусы -->
    <div style="margin-bottom:20px; background:#3f1f1d; padding:14px; border-radius:8px;">
        <label style="display:block; margin-bottom:6px;"><input type="checkbox" id="epComplete"> Завершённый эпизод (+300)</label>
        <label style="display:block; margin-bottom:6px;"><input type="checkbox" id="epigraph"> Эпиграф (+15)</label>
        <label style="display:block;"><input type="checkbox" id="openEp"> Открытие эпизода (+15)</label>
    </div>

    <!-— Посты -->
    <div style="margin-bottom:20px;">
        <div style="background:#3f1f1d; padding:14px; border-radius:8px; margin-bottom:12px;">
            <b>Пост 1</b><br>
            <textarea id="p1" rows="3" style="width:100%; margin:8px 0; background:#2c1614; color:white; border:1px solid #666; border-radius:6px; resize:vertical;"></textarea>
            <input type="text" id="l1" placeholder="Ссылка на пост" style="width:100%; padding:8px; background:#2c1614; color:#fff; border:1px solid #666; border-radius:6px;">
            <div style="margin-top:8px; font-size:14px;">
                <label><input type="checkbox" id="d1"> x2 (в сутки)</label>
                <label style="margin-left:15px;"><input type="checkbox" id="t1"> x2 (10-й пост)</label>
            </div>
        </div>

        <div style="background:#3f1f1d; padding:14px; border-radius:8px; margin-bottom:12px;">
            <b>Пост 2</b><br>
            <textarea id="p2" rows="3" style="width:100%; margin:8px 0; background:#2c1614; color:white; border:1px solid #666; border-radius:6px; resize:vertical;"></textarea>
            <input type="text" id="l2" placeholder="Ссылка на пост" style="width:100%; padding:8px; background:#2c1614; color:#fff; border:1px solid #666; border-radius:6px;">
            <div style="margin-top:8px; font-size:14px;">
                <label><input type="checkbox" id="d2"> x2 (в сутки)</label>
                <label style="margin-left:15px;"><input type="checkbox" id="t2"> x2 (10-й пост)</label>
            </div>
        </div>

        <div style="background:#3f1f1d; padding:14px; border-radius:8px; margin-bottom:12px;">
            <b>Пост 3</b><br>
            <textarea id="p3" rows="3" style="width:100%; margin:8px 0; background:#2c1614; color:white; border:1px solid #666; border-radius:6px; resize:vertical;"></textarea>
            <input type="text" id="l3" placeholder="Ссылка на пост" style="width:100%; padding:8px; background:#2c1614; color:#fff; border:1px solid #666; border-radius:6px;">
            <div style="margin-top:8px; font-size:14px;">
                <label><input type="checkbox" id="d3"> x2 (в сутки)</label>
                <label style="margin-left:15px;"><input type="checkbox" id="t3"> x2 (10-й пост)</label>
            </div>
        </div>

        <div style="background:#3f1f1d; padding:14px; border-radius:8px;">
            <b>Пост 4</b><br>
            <textarea id="p4" rows="3" style="width:100%; margin:8px 0; background:#2c1614; color:white; border:1px solid #666; border-radius:6px; resize:vertical;"></textarea>
            <input type="text" id="l4" placeholder="Ссылка на пост" style="width:100%; padding:8px; background:#2c1614; color:#fff; border:1px solid #666; border-radius:6px;">
            <div style="margin-top:8px; font-size:14px;">
                <label><input type="checkbox" id="d4"> x2 (в сутки)</label>
                <label style="margin-left:15px;"><input type="checkbox" id="t4"> x2 (10-й пост)</label>
            </div>
        </div>
    </div>

    <button onclick="let s=parseInt(document.getElementById('start').value)||0; let epC=document.getElementById('epComplete').checked?300:0; let epG=document.getElementById('epigraph').checked?15:0; let openE=document.getElementById('openEp').checked?15:0; let t=0; let o=`Монет в профиле: ${s}\nЭпиграф: ${epG?'+15':'нет'}\nОткрытие эпизода: ${openE?'+15':'нет'}\nЗавершённый эпизод: ${epC?'+300':'нет'}\n\nПОСТЫ:\n`; for(let i=1;i<=4;i++){ let len=document.getElementById('p'+i).value.trim().length; let pl=document.getElementById('l'+i).value.trim(); let day=document.getElementById('d'+i).checked; let ten=document.getElementById('t'+i).checked; let c=0; if(len>0){ c=50; if(len>4000)c+=Math.floor((len-4000)/1000)*15; if(day)c*=2; if(ten)c*=2; } t+=c; o+=`Пост ${i} (${len} симв.)`; if(pl)o+=' — '+pl; if(day)o+=' • x2 сутки'; if(ten)o+=' • x2 10-й'; o+=` → ${c}\n`; } o+=`\n━━━━━━━━ ИТОГО ━━━━━━━━\nС постов: ${t}\nБонусы: +${epC+epG+openE}\nВсего: ${s+t+epC+epG+openE} монет`; document.getElementById('result').innerText=o; document.getElementById('result').style.display='block';"
        style="width:100%; padding:16px; background:#8b4a46; color:white; font-weight:bold; border:none; border-radius:8px; font-size:17px; cursor:pointer;">
        Посчитать всё
    </button>

    <div id="result" style="display:none; margin-top:24px; padding:20px; background:#3f1f1d; border-radius:8px; white-space:pre-wrap; line-height:1.6; font-size:15.2px; border:1px solid #664444;"></div>
</div>[/html]

0

4

[html]<!-- === MEMO 8×6 (48 карточек), серый, American Typewriter, хороший рандом === -->
<style>
.memo{
  --tile:96px; --gap:12px; --radius:14px; --cols:8;      /* кол-во колонок и размер ячейки */
  --front:#1d1d1f; --back:#2a2a2c; --accent:#9aa0a6;
  --ok:#9b9b9b; --text:#e6e6e6; --muted:#b5b5b5; --blank:#242426;
  font-family:"American Typewriter","Georgia","Times New Roman",serif;
  max-width:950px; margin:16px auto; padding:14px;
  background:linear-gradient(180deg,#151516,#1c1c1e);
  border-radius:20px; box-shadow:10 10px 28px rgba(0,0,0,.45); color:var(--text)
}
.memo h3{margin:0 0 .5rem;font-size:20px}
.memo .memo__controls{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.memo .memo__btn{appearance:none;border:1px solid #3a3a3c;background:#171718;color:var(--text);padding:6px 10px;border-radius:10px;cursor:pointer;font-size:13px}
.memo .memo__btn:hover{border-color:var(--accent);box-shadow:0 0 0 2px rgba(154,160,166,.15) inset}
.memo .memo__status{font-size:13px;color:var(--muted)}
.memo .grid{display:grid;grid-template-columns:repeat(var(--cols),var(--tile));gap:var(--gap);justify-content:center}

@media (max-width:880px){.memo{--tile:86px}}
@media (max-width:760px){.memo{--cols:7;--tile:78px}}
@media (max-width:620px){.memo{--cols:6;--tile:70px}}
@media (max-width:520px){.memo{--cols:5;--tile:64px}}

.memo input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}
.memo .memo-card{width:var(--tile);height:var(--tile);border-radius:var(--radius);position:relative;perspective:900px}
.memo .memo-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:var(--radius);
  transition:transform .5s,box-shadow .2s;backface-visibility:hidden;user-select:none}
.memo .memo-front{background:var(--front);border:1px solid #2c2c2e;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.memo .memo-back{background:var(--back);border:1px dashed rgba(255,255,255,.12);transform:rotateY(180deg);
  font-size:28px; letter-spacing:.6px}
.memo input:checked + label .memo-front{transform:rotateY(180deg)}
.memo input:checked + label .memo-back{transform:rotateY(360deg)}
.memo label{display:block;width:100%;height:100%;cursor:pointer;outline:none}
.memo label:focus-visible .memo-front{box-shadow:0 0 0 3px rgba(154,160,166,.35)}
.memo label:hover .memo-front{box-shadow:0 0 0 2px rgba(154,160,166,.18) inset}

/* Цифры/иконки на обороте из data-symbol */
.memo label .memo-back::before{content:attr(data-symbol); transform:translateY(-1px)}

/* Зафиксированная пара */
.memo label[data-locked]{pointer-events:none}
.memo label[data-locked] .memo-back{
  box-shadow:0 0 0 2px rgba(155,155,155,.35) inset, 0 6px 14px rgba(0,0,0,.25);
  border-color:rgba(200,200,200,.4)
}
</style>

<div class="memo" id="memo48">
  <form>
    <h3>MEMO — найди пары</h3>
    <div class="memo__controls">
      <small>Открывай по две карточки</small>
      <div class="memo__status">Найдено: <b class="memo__found">0</b> / 24</div>
      <button class="memo__btn" type="reset">СБРОС</button>
    </div>

    <div class="grid" id="memo-grid"></div>
  </form>
</div>

<script>
(() => {
  const root = document.getElementById('memo48');
  if (!root) return;

  const grid = root.querySelector('#memo-grid');
  const form = root.querySelector('form');
  const foundEl = root.querySelector('.memo__found');
  const TOTAL = 24;                       // число пар
  const symbols = Array.from({length: TOTAL}, (_,i) => String(i+1).padStart(2,'0'));

  let opened = [];
  let lock = false;
  let found = 0;

  // криптографически стойкий (при наличии) Фишер–Йетс
  function rndInt(max){
    if (window.crypto && crypto.getRandomValues){
      const buf = new Uint32Array(1);
      crypto.getRandomValues(buf);
      return buf[0] % max;
    }
    return Math.floor(Math.random() * max);
  }
  function shuffle(arr){
    for (let m = arr.length; m; ){
      const i = rndInt(m--);
      [arr[m], arr[i]] = [arr[i], arr[m]];
    }
    return arr;
  }

  function buildDeck(){
    grid.innerHTML = '';
    const deck = shuffle(symbols.concat(symbols)); // дублируем и мешаем

    deck.forEach((sym, idx) => {
      const card  = document.createElement('div');  card.className = 'memo-card';
      const input = document.createElement('input'); input.type='checkbox'; input.id = `mc${idx}`;
      const label = document.createElement('label'); label.setAttribute('for', input.id);
      const front = document.createElement('span');  front.className = 'memo-face memo-front';
      const back  = document.createElement('span');  back.className  = 'memo-face memo-back'; back.dataset.symbol = sym;
      label.append(front, back); card.append(input, label); grid.append(card);
    });

    // сброс внутренних состояний
    opened = [];
    lock = false;
    found = 0;
    foundEl.textContent = '0';
  }

  function getSymbol(input){
    return input.nextElementSibling.querySelector('.memo-back').dataset.symbol;
  }
  function lockPair(a,b){
    a.nextElementSibling.dataset.locked = '1';
    b.nextElementSibling.dataset.locked = '1';
  }

  root.addEventListener('change', (e) => {
    const input = e.target;
    if (input.tagName !== 'INPUT') return;

    if (input.nextElementSibling.dataset.locked){ input.checked = true; return; }
    if (lock && input.checked){ input.checked = false; return; }

    if (input.checked){
      opened.push(input);
      if (opened.length === 2){
        lock = true;
        const [a,b] = opened;
        const sa = getSymbol(a), sb = getSymbol(b);
        if (sa === sb){
          lockPair(a,b);
          found++;
          foundEl.textContent = String(found);
          opened = [];
          lock = false;
        } else {
          const toClose = opened.slice();
          opened = [];
          setTimeout(() => {
            toClose.forEach(inp => inp.checked = false);
            lock = false;
          }, 700);
        }
      }
    } else {
      opened = opened.filter(x => x !== input);
    }
  });

  form.addEventListener('reset', () => {
    setTimeout(buildDeck, 0); // при сбросе — новая случайная раскладка
  });

  buildDeck(); // старт
})();
</script>[/html]

[hideprofile]

0

5

— СТО ВОСЕМЬДЕСЯТ ШЕСТАЯ НЕДЕЛЯ —
❛❛ 

Сто восемьдесят шестая неделя нашей телестройки, друзья, мы еще живы, веселы и готовы к новому!

Начать хочу с восхищения @Atticus Goyle, @Abraxas Malfoy и @Thomas Miller: свидетели Мерлина дописаны и выложены для глаз публики! Они (свидетели) ждут, когда их будут активно играть, вообще-то! Матчасть получилась подробной, интересной и заслуживающей внимания. В самом деле, сколько ее ждали!

На проекте ряд новшеств, которые никто не просил, но получите: облегчили поход в банк, теперь у нас есть свой калькулятор, который сам считает ваши символы и конвертирует их в монеты, более того, подтягивает ссылки, вам остается только скопировать bb-код нажав на кнопку revelio. Важное замечание: система не считает х2 за отпись поста в течении суток, каждый 10й пост, открытие/закрытие эпизода, эпиграф, это вы можете посчитать в ручную, но так как я об этом пишу, значит вопрос уже взят в работу)

Так же на главной странице появилась легкая мини-игра с письмами! Нажимайте на конвертик в правом нижнем углу экрана, ловите письма и на каждом 20 письме получайте предсказание, а так же устанавливайте рекорд по форуму, пока рекорд принадлежит @ Charlotte Bott! Она собрала больше ЧЕТЫРЕХ ТЫСЯЧ писем, с ума сойти. Остановить игру можно просто обновив страницу) Продолжаем собирать пазлы и получать монеты. Так же готовится ивент для постописцев, разминаем пальцы и готовимся писать!

В последнее время на форуме упало количество пользователей в сутки, мы видим это, стараемся делать всем составом амс все, что от нас зависит, поэтому надеемся, что вы тоже отнесетесь лояльно: будете писать во флуд, посты, а так же не будете забывать выгуливать своих твинков. Было бы еще чудеснее, если бы вы приглашали своих игроков к нам, мы всем рады) Особенно прошу зайти в "омут памяти" и посмотреть свои эпизоды, которые больше играться не будут. Можете написать мне в лс о переносе, можете в вопросы и предложения, как пожелаете) Если у вас есть идеи, чтобы вы хотели видеть на форуме, на что стоит обратить внимание, вы можете так же прийти в лс ко мне, к @Atticus Goyle или написать в тему

Что у нас в квестах?

Родные, я сидела в кустах двое суток, чтобы собрать комментарии наших волшебников и колдунов о событиях в Малфой-Мэноре

Первый мне попался молодой аврор по имени Джеймс Поттер. Нашу программу интересовало нравится ли молодому поколению работать в Аврорате? Конечно, мы не пальцем деланы, друзья, и спросили о событиях в меноре. Вот что говорит @James Potter  :

Мне очень нравится работать в Аврорате, - искренне признается Джеймс Поттер, - большая нагрузка отвлекает от любых ненужных мыслей, знаете. По поводу виновности Абраксаса Малфоя никаких комментариев давать не могу, но пока обыск идет более чем отлично - если продолжим в таком темпе управимся как раз в положенное время. Насчет работы с женой - говорят, что нельзя мешать рабочие отношения с личными. Ну, мы и перестали это делать.

Что имел ввиду Джеймс говоря о своей жене, мы не знаем, но похоже ему не поможет даже самая скоростная метла, чтобы уклониться от этих вопросов!

Так же под внимание моего взгляда и моего микрофона попал несравненный красавчик (Он буквально Ален Делон, ок?) консультант-судмедэксперт Герхард Тодд. И несмотря на то как он уклонялся от тысячи вопросов, ускорял шаг, я все равно добилась от него ответа, жалко, что не адреса для совы. Так вот @Gerhard Todd сообщает про обыск:

Если брать во внимание финансовое положение мистера Малфоя, я могу предположить, что он, как и многие ему подобные, почти не может совершать преступлений, он просто позволяет себе маленькие забавные слабости

Глава департамента обеспечения магической безопасности - @Renard R. Rosier, наследник богатейшего рода @Lucius Malfoy и юный стажер @Sirius Black отказались давать комментарии.

И последний, но не по значимости, Абраксас Малфой! Выловить такую крупную рыбу, знаете непросто, но у меня свои наживки, иногда родство помогает, так вот, его мнение по теме:

@Abraxas Malfoy

В бытии собой нет ничего сложного, благодарю вас за заботу! Того же я бы порекомендовал и всем юным сотрудникам и сотрудницам всех ведомств: быть на своём месте и не надевать то, что не можете снять. Я имею ввиду - стресс. Знаете, я и моя семья находимся в интересном положении,  но я уверен, что компетентные органы разберутся в ситуации: не зря же обучение на аврора длится целых 3 года!

https://i.ibb.co/5k25j3D/48.webp[html]<audio controls src="https://videotourl.com/audio/1778759825174-453b8e9a-ea04-4186-9163-df77790254c5.ogg" preload="none">Загруженное mp3</audio>[/html]

[indent]   
❜❜

— АКТИВИСТЫ —
https://upforme.ru/uploads/001b/b9/c5/603/476273.png https://upforme.ru/uploads/001b/b9/c5/603/515635.png https://upforme.ru/uploads/001b/b9/c5/603/728787.png  https://upforme.ru/uploads/001b/b9/c5/603/278585.png
@Abraxas Malfoy  & @Adelaide Yaxley  & @Walburga Black   & @Sirius Black 

— ПОСТОПИСЦЫ —
https://upforme.ru/uploads/001b/b9/c5/603/333033.png https://upforme.ru/uploads/001b/b9/c5/603/332159.png https://upforme.ru/uploads/001b/b9/c5/99/403150.png https://upforme.ru/uploads/001b/b9/c5/603/617622.png
@Celine Rowley & @Tybalt Yaxley & @Sandrine Yaxley & @Fabian Prewett

— П О С Т   Н Е Д Е Л И —
@Abraxas Malfoy :Перестав пачкать всё кровавыми чернилами, Дневник заговорил почерком Лорда, но каким-то более круглым и аккуратным. Лорд писал ровно и легко, быстрыми, почти прямыми буквами, эти же были, как по школьной норме, чуть наклонены вправо. Абраксасу стало вдвойне неприятно от прошедшего сна — мало того, что от него несло черномагической тухлятиной, так и его артефактный собеседник и на лицо, которое он смутно помнил, и на манеру письма был подростком, считай ребёнком. С другой стороны, применима ли человеческая возрастная градация к искусственно созданной сущности, и каким уровнем любви к себе нужно обладать, чтобы дать ей своё детское лицо? Абраксас решил не думать в этом направлении, потому что Лорд, на протяжении всего их знакомства, порождал у Малфоя многие вопросы, на часть из которых он получал ответы, которые, на деле, знать не хотел. Абраксас всю жизнь совершал одну и ту же ошибку — недооценивал то, насколько ему нужно что-то знать, и хочет ли он этого на самом деле.
...

— Э П И З О Д   Н Е Д Е Л И —
@Tybalt Yaxley & @Sandrine Yaxley
https://upforme.ru/uploads/001b/b9/c5/603/11197.jpg
THE WARMEST WELCOME

[sign] [/sign]

0

6

[html]<style>
/* Красивый фон для всех аудиоплееров */
audio {
    background: #dcdcd2 !important;
    border: 2px solid #b8b8b0 !important;
    border-radius: 10px !important;
    width: 100% !important;
    max-width: 520px !important;
    margin: 8px 0 !important;
    padding: 2px !important;
}

audio::-webkit-media-controls-panel,
.mejs-container .mejs-controls {
    background: #dcdcd2 !important;
}

audio::-webkit-media-controls-timeline {
    background: #c4c4bc !important;
}
</style>[/html]

0

7

https://i.ibb.co/5k25j3D/48.webp

<div style="background:#dcdcd2; padding:12px; border-radius:12px; display:inline-block; max-width:520px; border:2px solid #b8b8b0;">
    <audio controls src="https://videotourl.com/audio/1778759825174-453b8e9a-ea04-4186-9163-df77790254c5.ogg" preload="none" style="width:100%; min-width:380px;">
        Загруженное mp3
    </audio>
</div>

0

8

[html]https://i.ibb.co/5k25j3D/48.webp

<div style="background:#dcdcd2; padding:12px; border-radius:12px; display:inline-block; max-width:520px; border:2px solid #b8b8b0;">
    <audio controls src="https://videotourl.com/audio/1778759825174-453b8e9a-ea04-4186-9163-df77790254c5.ogg" preload="none" style="width:100%; min-width:380px;">
        Загруженное mp3
    </audio>
</div>

[/html]

0

9

[removeprofile]
[html]
<style>
.memo{
  --tile:98px;
  --gap:14px;
  --radius:16px;
  --cols:8;
 

  --main: #763c38;
  --secondary: #918f82;
  --front: #5c2f2a;     
  --back: #918f82;
  --accent: #763c38;
  --ok: #c4a38a;
  --text: #f5e9d8;
  --muted: #d4c4b0;

  font-family: "American Typewriter", "Georgia", "Times New Roman", serif;
  max-width: 1000px;
  margin: 20px auto;
  padding: 18px;
  background: linear-gradient(180deg, #3f2a26, #52423d);
  border-radius: 24px;
  box-shadow: 0 12px 32px rgba(0,0,0,.55);
  color: var(--text);
}

.memo h3{margin:0 0 .6rem; font-size:22px; color:var(--text)}
.memo .memo__controls{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.memo .memo__btn{
  appearance:none;
  border:1px solid #a16e64;
  background:#3f2a26;
  color:var(--text);
  padding:7px 12px;
  border-radius:12px;
  cursor:pointer;
  font-size:13.5px;
}
.memo .memo__btn:hover{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(118,60,56,.3) inset;
}
.memo .memo__status{font-size:14px;color:var(--muted)}

.memo .grid{
  display:grid;
  grid-template-columns:repeat(var(--cols),var(--tile));
  gap:var(--gap);
  justify-content:center;
}

/* Адаптив */
@media (max-width:920px){.memo{--tile:88px}}
@media (max-width:780px){.memo{--cols:7;--tile:82px}}
@media (max-width:680px){.memo{--cols:6;--tile:76px}}
@media (max-width:560px){.memo{--cols:5;--tile:68px}}

.memo input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}
.memo .memo-card{width:var(--tile);height:var(--tile);border-radius:var(--radius);position:relative;perspective:1000px}

.memo .memo-face{
  position:absolute; inset:0; border-radius:var(--radius);
  transition:transform .55s cubic-bezier(0.23,1,0.32,1);
  backface-visibility:hidden;
  display:grid; place-items:center;
  user-select:none;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.4);
}
.memo .memo-front{
  background:var(--front);
  border:2px solid #8a5a52;
}
.memo .memo-back{
  background:var(--back);
  border:2px solid var(--main);
  transform:rotateY(180deg);
  overflow:hidden;
}
.memo .memo-back img{
  width:100%; height:100%; object-fit:cover;
}

.memo input:checked + label .memo-front{transform:rotateY(180deg)}
.memo input:checked + label .memo-back{transform:rotateY(360deg)}

.memo label{display:block;width:100%;height:100%;cursor:pointer}
.memo label:focus-visible .memo-front{box-shadow:0 0 0 4px rgba(118,60,56,.6)}
.memo label:hover .memo-front{box-shadow:0 0 0 3px rgba(118,60,56,.35) inset}

.memo label[data-locked]{pointer-events:none}
.memo label[data-locked] .memo-back{
  box-shadow:0 0 0 3px rgba(196,163,138,.7) inset;
  filter: brightness(1.1);
}
</style>

<div class="memo" id="memo40">
  <form>
    <h3>MEMO — найди пары</h3>
    <div class="memo__controls">
      <small>Открывай по две карточки</small>
      <div class="memo__status">Найдено: <b class="memo__found">0</b> / 20</div>
      <button class="memo__btn" type="reset">НОВАЯ ИГРА</button>
    </div>
    <div class="grid" id="memo-grid"></div>
  </form>
</div>

<script>
(() => {
  const root = document.getElementById('memo40');
  if (!root) return;

  const grid = root.querySelector('#memo-grid');
  const foundEl = root.querySelector('.memo__found');

 
  const imageUrls = [
    "https://upforme.ru/uploads/001c/a5/42/2/928103.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/796942.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/920791.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/210253.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/539522.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/570476.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/142848.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/792870.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/364056.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/940122.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/216561.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/193804.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/313646.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/539420.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/498050.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/805098.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/84622.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/958212.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/592960.jpg",
    "https://upforme.ru/uploads/001c/a5/42/2/387049.jpg"
  ];
 
  let opened = [];
  let lock = false;
  let found = 0;

  function rndInt(max) {
    if (window.crypto?.getRandomValues) {
      const buf = new Uint32Array(1);
      crypto.getRandomValues(buf);
      return buf[0] % max;
    }
    return Math.floor(Math.random() * max);
  }

  function shuffle(arr) {
    for (let m = arr.length; m; ) {
      const i = rndInt(m--);
      [arr[m], arr[i]] = [arr[i], arr[m]];
    }
    return arr;
  }

  function buildDeck() {
    grid.innerHTML = '';
    const deck = shuffle([...imageUrls, ...imageUrls]);

    deck.forEach((imgUrl, idx) => {
      const card = document.createElement('div'); card.className = 'memo-card';
      const input = document.createElement('input'); input.type='checkbox'; input.id = `mc${idx}`;
      const label = document.createElement('label'); label.setAttribute('for', input.id);

      const front = document.createElement('span'); front.className = 'memo-face memo-front';
      const back = document.createElement('span'); back.className = 'memo-face memo-back';
     
      const img = document.createElement('img');
      img.src = imgUrl;
      img.alt = '';
      back.appendChild(img);

      label.append(front, back);
      card.append(input, label);
      grid.appendChild(card);
    });

    opened = []; lock = false; found = 0;
    foundEl.textContent = '0';
  }

  root.addEventListener('change', (e) => {
    const input = e.target;
    if (input.tagName !== 'INPUT') return;
    if (input.nextElementSibling.dataset.locked) { input.checked = true; return; }
    if (lock && input.checked) { input.checked = false; return; }

    if (input.checked) {
      opened.push(input);
      if (opened.length === 2) {
        lock = true;
        const [a, b] = opened;
        const imgA = a.nextElementSibling.querySelector('img').src;
        const imgB = b.nextElementSibling.querySelector('img').src;

        if (imgA === imgB) {
          a.nextElementSibling.dataset.locked = '1';
          b.nextElementSibling.dataset.locked = '1';
          found++;
          foundEl.textContent = found;
          opened = [];
          lock = false;
        } else {
          const toClose = opened.slice();
          opened = [];
          setTimeout(() => {
            toClose.forEach(inp => inp.checked = false);
            lock = false;
          }, 800);
        }
      }
    } else {
      opened = opened.filter(x => x !== input);
    }
  });

  root.querySelector('form').addEventListener('reset', () => setTimeout(buildDeck, 10));

  buildDeck();
})();
</script>[/html]

0

10

В ОЖИДАНИИ ДОЖДЯ [ПАЗЛЫ]

тебе скучно? одиноко? нечем заняться? позвони по но... собери с нами пазлы, малыш  https://i.ibb.co/2dMvW8H/107.webp 

» вашему вниманию представлены три сгенерированные с ai пазла: простой, средний и посложнее.

» за сбор пазлов вы получите 100 монеток за простой, 200 за средний, 300 за сложный;
» присылайте скрины собранных пазлов в данную тему;
» пазлы будут ждать вас здесь весь месяц, до 25 июля до появления новых пазлов;

простой пазл
чуть-чуть посложнее
сложный пазл

Если есть желание увидеть в пазлах свой эпизод/сюжет, вы знаете куда писать https://i.ibb.co/FBYfd4v/3.webp

Код:
[spoiler="лёгкий пазл"]*скриншот*[/spoiler]
[spoiler="чуть-чуть сложнее"]*скриншот*[/spoiler]
[spoiler="сложный пазл"]*скриншот*[/spoiler]

0

11

меме

morsmordre написал(а):

меме

Отредактировано morsmordre (2026-06-30 18:05:52)

0

12

morsmordre написал(а):

меме

0

13

55,2 написал(а):

меме

прикол

0

14

55,2 написал(а):

меме

прикол

0

15

57,2 написал(а):

прикол

ккк

0

16

57,2 написал(а):

прикол

ккк

56,2 написал(а):

в

0

17

morsmordre написал(а):

ккк

апама

0

18

morsmordre написал(а):

ккк

апама

61,2 написал(а):

апама

ааааааа

0

19

55,2 написал(а):

меме

ааааааааааааааа

0

20

55,2 написал(а):

меме

аааааааааааааааmorsmordre,

63,2 написал(а):

ааааааааааааааа

0

21

[html]<div class="wheel-container">
  <h2>Дискуссионное колесо для флуд-клеток</h2>

  <div class="wheel-wrapper">
    <div class="wheel" id="wheel">
      <div class="stars" id="stars"></div>
      <div class="constellations" id="constellations"></div>
    </div>
    <div class="pointer" id="pointer"></div>
  </div>
 
  <button class="spin-btn" id="spinBtn">КРУТИТЬ</button>
 
  <div class="result-tablet" id="result">
    <p class="result-text" id="questionText">Нажми «КРУТИТЬ», чтобы получить вопрос</p>
  </div>
</div>

<style>
  .wheel-container {
    max-width: 520px;
    margin: 25px auto;
    text-align: center;
    font-family: "Georgia", serif;
    color: #dddcd2;
  }
  h2 {
    color: #743c37;
    margin-bottom: 20px;
    font-size: 27px;
    letter-spacing: 1px;
  }
  .wheel-wrapper {
    position: relative;
    width: 350px;
    height: 350px;
    margin: 0 auto 25px;
  }
  .wheel {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    border: 16px solid #1f2126;
    box-shadow: 0 0 45px rgba(0,0,0,0.9),
                inset 0 0 40px rgba(116, 60, 55, 0.3),
                0 0 70px rgba(15, 18, 32, 0.85);
    position: relative;
    overflow: hidden;
    background: #0b0d12;
    transition: transform 5.4s cubic-bezier(0.33, 0.01, 0.18, 1);
  }
  .stars {
    position: absolute;
    inset: 0;
    border-radius: 50%;
  }
  .star {
    position: absolute;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 0 5px #fff;
    animation: twinkle 4s infinite alternate ease-in-out;
  }
  @keyframes twinkle {
    0% { opacity: 0.45; transform: scale(0.9); }
    100% { opacity: 1; transform: scale(1.2); }
  }
  .constellations {
    position: absolute;
    inset: 0;
    border-radius: 50%;
  }
  .constellation-line {
    position: absolute;
    height: 1.5px;
    background: linear-gradient(90deg, transparent, rgba(225, 215, 190, 0.4), transparent);
  }
  .pointer {
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 0; height: 0;
    border-left: 24px solid transparent;
    border-right: 24px solid transparent;
    border-bottom: 48px solid #743c37;
    z-index: 10;
    filter: drop-shadow(0 6px 10px rgba(0,0,0,0.85));
  }
  .result-tablet {
    background: #1c1f26;
    border: 6px solid #743c37;
    border-radius: 12px;
    padding: 28px 35px;
    min-height: 145px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.75);
    margin: 0 15px;
    opacity: 0;
    transform: translateY(15px);
    transition: all 0.7s ease;
  }
  .result-tablet.show {
    opacity: 1;
    transform: translateY(0);
  }
  .result-text {
    font-size: 19px;
    line-height: 1.5;
    color: #dddcd2;
  }
  .spin-btn {
    margin: 20px 0 10px;
    padding: 14px 42px;
    font-size: 18px;
    font-weight: bold;
    background: #1f2126;
    color: #dddcd2;
    border: 2px solid #4a3f3c;
    border-radius: 50px;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(0,0,0,0.6);
    transition: all 0.25s ease;
  }
  .spin-btn:hover {
    background: #2a2d34;
    border-color: #743c37;
    transform: translateY(-3px);
  }
  .spin-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
</style>

<script>

const questions = [
  "1. Как произошел выбор персонажа за которого вы сейчас играете? Доп.вопросы: важно ли вам, чтобы он был прописан в каноне и проработан автором или проще беретесь продумывать историю персонажа с нуля?",
  "2. Что объединяет всех ваших персонажей? Есть ли какие-то общие черты между ними, детали. Сделано это специально или просто так написалось?",
  "3. А что вашего персонажа объединяет с вами? Есть ли общие черты характера, особености поведения, что-то из истории самого персонажа? Добавляете ли вы себя в своего персонажа намеренно или пишите максимально противоположный от себя образ?",
  "4. Если взять всех персонажей, которых ты играл(а) есть ли у них всех общие черты, способности, детали личности?",
  "5. Ролевые/писательские табу? Что это за зверь и с чем его едят? Что вам не нравится отыгрывать, какие сцены, персонажей или сюжеты вызывают отторжение. Что может отталкивать в персонаже другого человека? Про что вы точно можете сказать: Это не мое",
  "6. Юмор в тексте - уместно или нелепо? Как часто мы сталкиваемся с тем, что у людей просто разное чувство юмора: не плохое, просто разное. Как вы реагируете на юмор в постах/текстах и шутите ли от лица персонажа?",
  "7. Дисциплина или вдохновение? Что движет вами при отписи постов?",
  "8. Напоминание о посте. Является ли для вас нормальным напоминать соигроку о постовом долге или вы предпочитаете просто ждать? Какой максимум у вас случался и в ожидании и в отписи?",
  "9. Пишите вы посты в тишине или под музыку? Если пишите под музыку, поделитесь с нами списком любимых треков! Чем больше песен тем лучше!",
  "10. Играете ли вы одновременно двух-трех-четырех разных персонажей? Меняется ли от этого ваш стиль, настроение, ритм поста? Сложно ли переключаться между персонажами? Как быть в том настроении чтобы писать сейчас за одного, через три часа за совершенно другого персонажа? Насколько легко держать разные образы в голове?",
  "11. Второстепенные персонажи - продумываете ли вы их, используете ли постоянно одних или в каждой сцене новые? Считаете ли вы, что прописывать второстепенных персонажей - это лишний текст? Поделитесь, что для вас хороший второстепенный со своим голосом, а что для вас плохой второстепенный?",
  "12. Имеет ли размер поста значение для вас? Что для вас хороший пост? С какого размера в словах/символах вы начинали и сколько пишете сейчас?",
  "13. Как вы считаете, вы пишите сейчас лучше, чем год-два назад или нет? По каким признакам понимаете что текст хорош?",
  "14. Расскажи кринжовую историю с ролевых, не важны сроки давности, лишь бы был чистый и отборный кринж",
  "15. Как возвращать вдохновение на игру? Что если в один момент вообще не хочется ничего писать и только лежать? Поделись своими мыслями, бывало ли у тебя такое и как ты справляешься",
  "16. Какую музыку бы слушал твой персонаж в 2026 году? Накинь треков",
  "17. Выбери несколько персонажей с форума и напиши ассоциации: погода, заклинание, песня, цвет, блюдо, животное, время суток, запах, можешь придумать свои ассоциации дополнительно",
  "18. Играли ли вы когда-нибудь свою профессию? А видели, как кто-то играет? Как вам это действо? Считаете ли вы наличие работы у персонажа важным?",
  "19. Продумывание персонажа - с чего вы начинаете? Что делаете в первую очередь: придумыватее имя, выбираете внешность или придумываете историю? Какие детали для вас важны, а какие вы не прописываете, но, может, держите в голове? Продумываете ли вы персонажа от трусов до вкусовых предпочтений или считаете это лишним?",
  "20. Что такое ролевой этикет? Понятие-то существует, но каждый как будто читал разный ролевой кодекс чести. Что это для вас? В чем этот ролевой этикет проявляется, какие негласные правила сущестуют. Каким вы следуете, а каким нет?",
  "21. Случалось ли вам перенимать настроение персонажа? Становилось обидно при отыгрыше конфликта, грустно/радостно и тд. Считаете ли это слиянием или нормальной реакцией?",
  "22. Внутренние монологи, воспоминания, сны - какой процент ваших постов, на ваш взгляд, посвящен взаимодействию персонажа с миром/с персонажем соигрока, а какой с внутренним миром? Считаете ли вы важным эту часть или предпочитаете не писать ее?",
  "23. Реткон - да или нет? Что это египетская казнь или египетская сила? Лучше откатать сцену или просто смириться?",
  "24. Ваш идеальный пост. О чем он был, какой он, был ли он вообще? А цитаты из него будут?",
  "25. Внутренний критик - друг или пиздец? Есть ли он у вас, как справляетесь - если да, лайфхаки по отключению говорящей головы внутри головы.",
  "26. Стиль для меня - это? Есть ли признаки этого хорошего и плохого стиля? Что вас вдохновляет в чужих текстах, что хотели бы позаимствовать себе? Вообще цепляли ли что-то у других соигроков, что именно и говорили ли об этом?",
  "27. Какая графа в анкете вызывает мигрень, а какую готовы расписывать страницами?",
  "28. Анкета - большая или маленькая? Что для вас важно указать в анкете и что важно прочесть в других анкетах? Читаете ли вы вообще анкеты других игроков и опираетесь ли на них?",
  "29. Токсичные привычки. Есть ли у вас вредные писательные привычки? Например: длинные диалоги или много реплик, слишком длинные абзацы с мыслями и тд."
];

let isSpinning = false;
let spinsToday = 0;
let lastSpinDate = '';

const STORAGE_KEY = 'wheel_spins';
const MAX_SPINS = 3;

function createStars() {
  const container = document.getElementById('stars');
  container.innerHTML = '';
  for (let i = 0; i < 160; i++) {
    const star = document.createElement('div');
    star.className = 'star';
    const size = Math.random() * 3 + 1;
    star.style.width = `${size}px`;
    star.style.height = `${size}px`;
    star.style.left = `${Math.random() * 100}%`;
    star.style.top = `${Math.random() * 100}%`;
    star.style.animationDelay = `-${Math.random() * 4}s`;
    container.appendChild(star);
  }
}

function createConstellations() {
  const container = document.getElementById('constellations');
  container.innerHTML = '';

  const lines = [
    {x1:32, y1:25, x2:47, y2:20}, {x1:47, y1:20, x2:65, y2:33},
    {x1:25, y1:52, x2:40, y2:68}, {x1:40, y1:68, x2:58, y2:55},
    {x1:70, y1:42, x2:85, y2:37}, {x1:72, y1:70, x2:88, y2:63}
  ];
 
  lines.forEach(line => {
    const el = document.createElement('div');
    el.className = 'constellation-line';
    const dx = line.x2 - line.x1;
    const dy = line.y2 - line.y1;
    const length = Math.sqrt(dx*dx + dy*dy);
    const angle = Math.atan2(dy, dx) * 180 / Math.PI;
   
    el.style.left = `${line.x1}%`;
    el.style.top = `${line.y1}%`;
    el.style.width = `${length}%`;
    el.style.transform = `rotate(${angle}deg)`;
    container.appendChild(el);
  });
}

function loadSpinData() {
  const data = localStorage.getItem(STORAGE_KEY);
  if (data) {
    const parsed = JSON.parse(data);
    lastSpinDate = parsed.date || '';
    spinsToday = parsed.count || 0;
  }
}

function saveSpinData() {
  localStorage.setItem(STORAGE_KEY, JSON.stringify({
    date: lastSpinDate,
    count: spinsToday
  }));
}

function checkDailyReset() {
  const today = new Date().toISOString().split('T')[0];
  if (today !== lastSpinDate) {
    lastSpinDate = today;
    spinsToday = 0;
    saveSpinData();
  }
}

function updateButtonState() {
  const spinBtn = document.getElementById('spinBtn');
  if (spinsToday >= MAX_SPINS) {
    spinBtn.disabled = true;
    spinBtn.textContent = `КРУТИТЬ (3/3) — завтра`;
  } else {
    spinBtn.disabled = false;
    spinBtn.textContent = `КРУТИТЬ (${spinsToday}/${MAX_SPINS})`;
  }
}

function spinWheel() {
  if (isSpinning) return;

  checkDailyReset();

  if (spinsToday >= MAX_SPINS) {
    const resultText = document.getElementById('questionText');
    const resultTablet = document.getElementById('result');
    resultTablet.classList.add('show');
    resultText.textContent = `Вы уже использовали все 3 попытки сегодня. Возвращайтесь завтра! 🌙`;
    return;
  }

  isSpinning = true;
  const spinBtn = document.getElementById('spinBtn');
  const wheel = document.getElementById('wheel');
  const resultText = document.getElementById('questionText');
  const resultTablet = document.getElementById('result');

  spinBtn.disabled = true;
  resultTablet.classList.remove('show');
  resultText.textContent = "Крутится...";

  spinsToday++;
  saveSpinData();
  updateButtonState();

  const randomSegment = Math.floor(Math.random() * questions.length);
  const minSpins = 6;
  const extraSpins = Math.random() * 5 + 4;
  const baseRotation = (minSpins + extraSpins) * 360;
  const segmentAngle = 360 / questions.length;
  const finalRotation = baseRotation + (randomSegment * segmentAngle) + (segmentAngle / 2);

  wheel.style.transition = 'transform 5.4s cubic-bezier(0.33, 0.01, 0.18, 1)';
  wheel.style.transform = `rotate(-${finalRotation}deg)`;

  setTimeout(() => {
    resultText.textContent = questions[randomSegment];
    resultTablet.classList.add('show');
   
    wheel.style.transition = 'transform 0.45s ease';
    wheel.style.transform = `rotate(-${finalRotation - 8}deg)`;
   
    setTimeout(() => {
      wheel.style.transition = 'transform 0.65s ease';
      wheel.style.transform = `rotate(-${finalRotation}deg)`;
    }, 150);

    isSpinning = false;
    updateButtonState();
  }, 5500);
}

createStars();
createConstellations();
loadSpinData();
checkDailyReset();
updateButtonState();

document.getElementById('spinBtn').addEventListener('click', spinWheel);
</script>[/html]

0

22

[html]<div class="wheel-container">
  <h2>Дискуссионное колесо для флуд-клеток</h2>

  <div class="wheel-wrapper">
    <div class="wheel" id="wheel">
      <div class="stars" id="stars"></div>
      <div class="constellations" id="constellations"></div>
    </div>
    <div class="pointer" id="pointer"></div>
  </div>
 
  <button class="spin-btn" id="spinBtn">КРУТИТЬ</button>
 
  <div class="result-tablet" id="result">
    <p class="result-text" id="questionText">Нажми «КРУТИТЬ», чтобы получить вопрос</p>
  </div>
</div>

<style>
  .wheel-container {
    max-width: 520px;
    margin: 25px auto;
    text-align: center;
    font-family: "Georgia", serif;
    color: #dddcd2;
  }
  h2 {
    color: #743c37;
    margin-bottom: 20px;
    font-size: 27px;
    letter-spacing: 1px;
  }
  .wheel-wrapper {
    position: relative;
    width: 350px;
    height: 350px;
    margin: 0 auto 25px;
  }
  .wheel {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    border: 16px solid #1f2126;
    box-shadow: 0 0 45px rgba(0,0,0,0.9),
                inset 0 0 40px rgba(116, 60, 55, 0.3),
                0 0 70px rgba(15, 18, 32, 0.85);
    position: relative;
    overflow: hidden;
    background: #0b0d12;
    transition: transform 5.4s cubic-bezier(0.33, 0.01, 0.18, 1);
  }
  .stars {
    position: absolute;
    inset: 0;
    border-radius: 50%;
  }
  .star {
    position: absolute;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 0 5px #fff;
    animation: twinkle 4s infinite alternate ease-in-out;
  }
  @keyframes twinkle {
    0% { opacity: 0.45; transform: scale(0.9); }
    100% { opacity: 1; transform: scale(1.2); }
  }
  .constellations {
    position: absolute;
    inset: 0;
    border-radius: 50%;
  }
  .constellation-line {
    position: absolute;
    height: 1.5px;
    background: linear-gradient(90deg, transparent, rgba(225, 215, 190, 0.4), transparent);
  }
  .pointer {
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 0; height: 0;
    border-left: 24px solid transparent;
    border-right: 24px solid transparent;
    border-bottom: 48px solid #743c37;
    z-index: 10;
    filter: drop-shadow(0 6px 10px rgba(0,0,0,0.85));
  }
  .result-tablet {
    background: #1c1f26;
    border: 6px solid #743c37;
    border-radius: 12px;
    padding: 28px 35px;
    min-height: 145px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.75);
    margin: 0 15px;
    opacity: 0;
    transform: translateY(15px);
    transition: all 0.7s ease;
  }
  .result-tablet.show {
    opacity: 1;
    transform: translateY(0);
  }
  .result-text {
    font-size: 19px;
    line-height: 1.5;
    color: #dddcd2;
  }
  .spin-btn {
    margin: 20px 0 10px;
    padding: 14px 42px;
    font-size: 18px;
    font-weight: bold;
    background: #1f2126;
    color: #dddcd2;
    border: 2px solid #4a3f3c;
    border-radius: 50px;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(0,0,0,0.6);
    transition: all 0.25s ease;
  }
  .spin-btn:hover {
    background: #2a2d34;
    border-color: #743c37;
    transform: translateY(-3px);
  }
  .spin-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
</style>

<script>

const questions = [
  "1. Как произошел выбор персонажа за которого вы сейчас играете? Доп.вопросы: важно ли вам, чтобы он был прописан в каноне и проработан автором или проще беретесь продумывать историю персонажа с нуля?",
  "2. Что объединяет всех ваших персонажей? Есть ли какие-то общие черты между ними, детали. Сделано это специально или просто так написалось?",
  "3. А что вашего персонажа объединяет с вами? Есть ли общие черты характера, особености поведения, что-то из истории самого персонажа? Добавляете ли вы себя в своего персонажа намеренно или пишите максимально противоположный от себя образ?",
  "4. Если взять всех персонажей, которых ты играл(а) есть ли у них всех общие черты, способности, детали личности?",
  "5. Ролевые/писательские табу? Что это за зверь и с чем его едят? Что вам не нравится отыгрывать, какие сцены, персонажей или сюжеты вызывают отторжение. Что может отталкивать в персонаже другого человека? Про что вы точно можете сказать: Это не мое",
  "6. Юмор в тексте - уместно или нелепо? Как часто мы сталкиваемся с тем, что у людей просто разное чувство юмора: не плохое, просто разное. Как вы реагируете на юмор в постах/текстах и шутите ли от лица персонажа?",
  "7. Дисциплина или вдохновение? Что движет вами при отписи постов?",
  "8. Напоминание о посте. Является ли для вас нормальным напоминать соигроку о постовом долге или вы предпочитаете просто ждать? Какой максимум у вас случался и в ожидании и в отписи?",
  "9. Пишите вы посты в тишине или под музыку? Если пишите под музыку, поделитесь с нами списком любимых треков! Чем больше песен тем лучше!",
  "10. Играете ли вы одновременно двух-трех-четырех разных персонажей? Меняется ли от этого ваш стиль, настроение, ритм поста? Сложно ли переключаться между персонажами? Как быть в том настроении чтобы писать сейчас за одного, через три часа за совершенно другого персонажа? Насколько легко держать разные образы в голове?",
  "11. Второстепенные персонажи - продумываете ли вы их, используете ли постоянно одних или в каждой сцене новые? Считаете ли вы, что прописывать второстепенных персонажей - это лишний текст? Поделитесь, что для вас хороший второстепенный со своим голосом, а что для вас плохой второстепенный?",
  "12. Имеет ли размер поста значение для вас? Что для вас хороший пост? С какого размера в словах/символах вы начинали и сколько пишете сейчас?",
  "13. Как вы считаете, вы пишите сейчас лучше, чем год-два назад или нет? По каким признакам понимаете что текст хорош?",
  "14. Расскажи кринжовую историю с ролевых, не важны сроки давности, лишь бы был чистый и отборный кринж",
  "15. Как возвращать вдохновение на игру? Что если в один момент вообще не хочется ничего писать и только лежать? Поделись своими мыслями, бывало ли у тебя такое и как ты справляешься",
  "16. Какую музыку бы слушал твой персонаж в 2026 году? Накинь треков",
  "17. Выбери несколько персонажей с форума и напиши ассоциации: погода, заклинание, песня, цвет, блюдо, животное, время суток, запах, можешь придумать свои ассоциации дополнительно",
  "18. Играли ли вы когда-нибудь свою профессию? А видели, как кто-то играет? Как вам это действо? Считаете ли вы наличие работы у персонажа важным?",
  "19. Продумывание персонажа - с чего вы начинаете? Что делаете в первую очередь: придумыватее имя, выбираете внешность или придумываете историю? Какие детали для вас важны, а какие вы не прописываете, но, может, держите в голове? Продумываете ли вы персонажа от трусов до вкусовых предпочтений или считаете это лишним?",
  "20. Что такое ролевой этикет? Понятие-то существует, но каждый как будто читал разный ролевой кодекс чести. Что это для вас? В чем этот ролевой этикет проявляется, какие негласные правила сущестуют. Каким вы следуете, а каким нет?",
  "21. Случалось ли вам перенимать настроение персонажа? Становилось обидно при отыгрыше конфликта, грустно/радостно и тд. Считаете ли это слиянием или нормальной реакцией?",
  "22. Внутренние монологи, воспоминания, сны - какой процент ваших постов, на ваш взгляд, посвящен взаимодействию персонажа с миром/с персонажем соигрока, а какой с внутренним миром? Считаете ли вы важным эту часть или предпочитаете не писать ее?",
  "23. Реткон - да или нет? Что это египетская казнь или египетская сила? Лучше откатать сцену или просто смириться?",
  "24. Ваш идеальный пост. О чем он был, какой он, был ли он вообще? А цитаты из него будут?",
  "25. Внутренний критик - друг или пиздец? Есть ли он у вас, как справляетесь - если да, лайфхаки по отключению говорящей головы внутри головы.",
  "26. Стиль для меня - это? Есть ли признаки этого хорошего и плохого стиля? Что вас вдохновляет в чужих текстах, что хотели бы позаимствовать себе? Вообще цепляли ли что-то у других соигроков, что именно и говорили ли об этом?",
  "27. Какая графа в анкете вызывает мигрень, а какую готовы расписывать страницами?",
  "28. Анкета - большая или маленькая? Что для вас важно указать в анкете и что важно прочесть в других анкетах? Читаете ли вы вообще анкеты других игроков и опираетесь ли на них?",
  "29. Токсичные привычки. Есть ли у вас вредные писательные привычки? Например: длинные диалоги или много реплик, слишком длинные абзацы с мыслями и тд."
];

let isSpinning = false;
let spinsToday = 0;
let lastSpinDate = '';

const STORAGE_KEY = 'wheel_spins';
const MAX_SPINS = 3;

function createStars() {
  const container = document.getElementById('stars');
  container.innerHTML = '';
  for (let i = 0; i < 160; i++) {
    const star = document.createElement('div');
    star.className = 'star';
    const size = Math.random() * 3 + 1;
    star.style.width = `${size}px`;
    star.style.height = `${size}px`;
    star.style.left = `${Math.random() * 100}%`;
    star.style.top = `${Math.random() * 100}%`;
    star.style.animationDelay = `-${Math.random() * 4}s`;
    container.appendChild(star);
  }
}

function createConstellations() {
  const container = document.getElementById('constellations');
  container.innerHTML = '';

  const lines = [
    {x1:32, y1:25, x2:47, y2:20}, {x1:47, y1:20, x2:65, y2:33},
    {x1:25, y1:52, x2:40, y2:68}, {x1:40, y1:68, x2:58, y2:55},
    {x1:70, y1:42, x2:85, y2:37}, {x1:72, y1:70, x2:88, y2:63}
  ];
 
  lines.forEach(line => {
    const el = document.createElement('div');
    el.className = 'constellation-line';
    const dx = line.x2 - line.x1;
    const dy = line.y2 - line.y1;
    const length = Math.sqrt(dx*dx + dy*dy);
    const angle = Math.atan2(dy, dx) * 180 / Math.PI;
   
    el.style.left = `${line.x1}%`;
    el.style.top = `${line.y1}%`;
    el.style.width = `${length}%`;
    el.style.transform = `rotate(${angle}deg)`;
    container.appendChild(el);
  });
}

function loadSpinData() {
  const data = localStorage.getItem(STORAGE_KEY);
  if (data) {
    const parsed = JSON.parse(data);
    lastSpinDate = parsed.date || '';
    spinsToday = parsed.count || 0;
  }
}

function saveSpinData() {
  localStorage.setItem(STORAGE_KEY, JSON.stringify({
    date: lastSpinDate,
    count: spinsToday
  }));
}

function checkDailyReset() {
  const today = new Date().toISOString().split('T')[0];
  if (today !== lastSpinDate) {
    lastSpinDate = today;
    spinsToday = 0;
    saveSpinData();
  }
}

function updateButtonState() {
  const spinBtn = document.getElementById('spinBtn');
  if (spinsToday >= MAX_SPINS) {
    spinBtn.disabled = true;
    spinBtn.textContent = `КРУТИТЬ (3/3) — завтра`;
  } else {
    spinBtn.disabled = false;
    spinBtn.textContent = `КРУТИТЬ (${spinsToday}/${MAX_SPINS})`;
  }
}

function spinWheel() {
  if (isSpinning) return;

  checkDailyReset();

  if (spinsToday >= MAX_SPINS) {
    const resultText = document.getElementById('questionText');
    const resultTablet = document.getElementById('result');
    resultTablet.classList.add('show');
    resultText.textContent = `Вы уже использовали все 3 попытки сегодня. Возвращайтесь завтра! 🌙`;
    return;
  }

  isSpinning = true;
  const spinBtn = document.getElementById('spinBtn');
  const wheel = document.getElementById('wheel');
  const resultText = document.getElementById('questionText');
  const resultTablet = document.getElementById('result');

  spinBtn.disabled = true;
  resultTablet.classList.remove('show');
  resultText.textContent = "Крутится...";

  spinsToday++;
  saveSpinData();
  updateButtonState();

  const randomSegment = Math.floor(Math.random() * questions.length);
  const minSpins = 6;
  const extraSpins = Math.random() * 5 + 4;
  const baseRotation = (minSpins + extraSpins) * 360;
  const segmentAngle = 360 / questions.length;
  const finalRotation = baseRotation + (randomSegment * segmentAngle) + (segmentAngle / 2);

  wheel.style.transition = 'transform 5.4s cubic-bezier(0.33, 0.01, 0.18, 1)';
  wheel.style.transform = `rotate(-${finalRotation}deg)`;

  setTimeout(() => {
    resultText.textContent = questions[randomSegment];
    resultTablet.classList.add('show');
   
    wheel.style.transition = 'transform 0.45s ease';
    wheel.style.transform = `rotate(-${finalRotation - 8}deg)`;
   
    setTimeout(() => {
      wheel.style.transition = 'transform 0.65s ease';
      wheel.style.transform = `rotate(-${finalRotation}deg)`;
    }, 150);

    isSpinning = false;
    updateButtonState();
  }, 5500);
}

createStars();
createConstellations();
loadSpinData();
checkDailyReset();
updateButtonState();

document.getElementById('spinBtn').addEventListener('click', spinWheel);
</script>[/html]

0


Вы здесь » MortisMorsMors » админка » Селин


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