ВАЖНО: Заполните анкету, нажмите "Сгенерировать анкету", затем создайте в данном разделе новую тему, к примеру "Анкета Рыжика", "Анкета Чумазика" (можно проявить фантазию и назвать оригинально) и вставляйте в анкету полученный ниже код.
!! ВНИМАНИЕ, удалите из полученного кода звездочки в [*html]....[/html*]

В помощь вам темы:
• Правила форума
• Помощь в написании анкеты
• О наших племенах/типах одиночек: что выбрать?
• Новичкам в постах

[html]

<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;600&display=swap" rel="stylesheet">

<style>
body {
  font-family: Tahoma, sans-serif;
  background:#f7f7f7;
  margin:20px;
}
form.gen-form {
  background: var(--zelenlight);
  border:1px solid #ccc;
  padding:15px 20px;
  border-radius:8px;
  max-width:700px;
  margin:auto;
}
form.gen-form h2 {
  font-family:'Oswald';
  font-size:18px;
  margin-bottom:10px;
  color:#333;
}
form.gen-form label {
  display:block;
  margin-top:10px;
  font-weight:bold;
}
form.gen-form input,
form.gen-form textarea {
  width:100%;
  padding:8px;
  border:1px solid #ccc;
  border-radius:6px;
  font-size:12px;
}
form.gen-form button {
  margin-top:20px;
  padding:12px 24px;
  background:#5e6456;
  border:none;
  color:#fff;
  border-radius:6px;
  cursor:pointer;
  font-family:'Oswald';
  letter-spacing:0.05em;
}
form.gen-form button.copied {
  background:#4a7c59;
}
</style>

<form class="gen-form" onsubmit="copyGenerated(); return false;">
  <h2>Создание анкеты персонажа</h2>

  <label>Имя персонажа:</label>
  <input id="name" required>

  <label>Цепь имён:</label>
  <input id="names">

  <label>Ссылка на аватар:</label>
  <input id="avatar" placeholder="https://...">

  <label>Возраст:</label>
  <input id="age">

  <label>Пол:</label>
  <input id="gender">

  <label>Племя:</label>
  <input id="clan">

  <label>Статус в племени:</label>
  <input id="rank">

  <label>Приверженность:</label>
  <input id="faith">

  <label>Личный статус:</label>
  <input id="status">

  <label>Характер:</label>
  <textarea id="char" rows="3"></textarea>

  <label>Внешность:</label>
  <textarea id="look" rows="3"></textarea>

  <label>Биография:</label>
  <textarea id="bio" rows="3"></textarea>

  <label>Как часто будете писать посты:</label>
  <input id="freq">

  <label>Контакты:</label>
  <input id="contacts">

  <label>Что делать при исчезновении:</label>
  <input id="gone">

  <label>Пробный пост:</label>
  <textarea id="sample" rows="4"></textarea>

  <button id="copy-btn" type="submit">Скопировать в буфер</button>
</form>

<script>
// ---------- BBCode + переносы строк ----------
function parseText(text) {
if(!text)return '';
const esc=s=>s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&'+'#39;');
let out=esc(String(text).replace(/\r\n?/g,'\n'));
const safe=s=>/^https?:\/\//i.test(s)?s:'#';
for(let i=0;i<8;i++){
const old=out;
out=out.replace(/\[(b|i|u|s)\]([\s\S]*?)\[\/\1\]/gi,(_,t,v)=>'<'+t+'>'+v+'</'+t+'>')
.replace(/\[url=([^\]]+)\]([\s\S]*?)\[\/url\]/gi,(_,u,v)=>'<a href="'+safe(u)+'" target="_blank" rel="noopener">'+v+'</a>')
.replace(/\[url\]([^\[]+)\[\/url\]/gi,(_,u)=>'<a href="'+safe(u)+'" target="_blank" rel="noopener">'+u+'</a>')
.replace(/\[img\]([^\[]+)\[\/img\]/gi,(_,u)=>'<img src="'+safe(u)+'" alt="">')
.replace(/\[quote(?:=([^\]]+))?\]([\s\S]*?)\[\/quote\]/gi,(_,n,v)=>'<blockquote>'+(n?'<cite>'+n+'</cite>':'')+v+'</blockquote>')
.replace(/\[spoiler(?:=([^\]]+))?\]([\s\S]*?)\[\/spoiler\]/gi,(_,n,v)=>'<details><summary>'+(n||'Спойлер')+'</summary><div>'+v+'</div></details>')
.replace(/\[size=(\d+)\]([\s\S]*?)\[\/size\]/gi,(_,n,v)=>'<span style="font-size:'+Math.min(33,Math.max(8,+n))+'px">'+v+'</span>')
.replace(/\[color=([#\w(),. %\-]+)\]([\s\S]*?)\[\/color\]/gi,(_,c,v)=>'<span style="color:'+c+'">'+v+'</span>')
.replace(/\[align=(left|right|center|justify)\]([\s\S]*?)\[\/align\]/gi,(_,a,v)=>'<div style="text-align:'+a+'">'+v+'</div>')
.replace(/\[list(=1)?\]([\s\S]*?)\[\/list\]/gi,(_,n,v)=>{const tag=n?'ol':'ul';return '<'+tag+'>'+v.split('[*]').filter(s=>s.trim()).map(s=>'<li>'+s.trim()+'</li>').join('')+'</'+tag+'>'});
if(out===old)break;
}
return out.replace(/\n/g,'<br>').replace(/ {2,}/g,s=>' '+'\u00a0'.repeat(s.length-1));
}

// ---------- генерация + надёжное копирование ----------
function copyGenerated() {
  const raw = id => document.getElementById(id).value || '';
  const v   = id => parseText(raw(id));

  const content = `
<div class="chr0" data-ot-application="${encodeURIComponent(JSON.stringify({name:raw('name'),rank:raw('rank'),age:raw('age'),clan:raw('clan'),avatar:raw('avatar')}))}">
  <div class="shpk1">
    <img src="${/^https?:\/\//i.test(raw('avatar')) ? raw('avatar').replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/</g,'&lt;') : ''}" decoding="async">
    <ul>
      <li>${v('name')}</li>
      <li>Цепь имён: ${v('names')}</li>
    </ul>
  </div>

  <p class="epp">
    <zag>ОСНОВНАЯ ИНФОРМАЦИЯ</zag>
    <em>
      Возраст: ${v('age')}<br>
      Пол: ${v('gender')}<br>
      Племя: ${v('clan')}<br>
      Статус в племени: ${v('rank')}<br>
      Приверженность персонажа: ${v('faith')}<br>
      Личный статус: ${v('status')}
    </em>
  </p>

  <p class="epp"><zag>ХАРАКТЕР</zag>${v('char')}</p>
  <p class="epp"><zag>ВНЕШНОСТЬ</zag>${v('look')}</p>
  <p class="epp"><zag>БИОГРАФИЯ</zag>${v('bio')}</p>

  <p class="epp">
    <zag>ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ</zag>
    <em>
      Как часто Вы готовы писать игровые посты: ${v('freq')}<br>
      Контакты: ${v('contacts')}<br>
      Что делать с персонажем в случае Вашего исчезновения: ${v('gone')}
    </em>
  </p>

  <details>
    <summary>Пробный пост</summary>
    <p>${v('sample')}</p>
  </details>
</div>`;

  const bridge = "<scr"+"ipt>"+"(function(){var s=document.createElement(\"script\");s.src=\"https://forumstatic.ru/files/0004/e7/0d/41497.js?v=4\";s.charset=\"utf-8\";document.head.appendChild(s)})();"+"</scr"+"ipt>";
  const wrapped = `[*html]${content}${bridge}[/html*]`;

  const temp = document.createElement('textarea');
  temp.value = wrapped;
  temp.setAttribute('readonly', '');
  temp.style.position = 'absolute';
  temp.style.left = '-9999px';
  document.body.appendChild(temp);

  temp.select();
  temp.setSelectionRange(0, 999999);
  const copied = document.execCommand('copy');
  document.body.removeChild(temp);
  let output=document.getElementById('ot-generated-code');
  if(!output){
    const box=document.createElement('details');box.style.gridColumn='1 / -1';
    const label=document.createElement('summary');label.textContent='Готовый код анкеты';box.append(label);
    output=document.createElement('textarea');output.id='ot-generated-code';output.readOnly=true;output.rows=5;output.setAttribute('aria-label','Готовый код анкеты');box.append(output);
    document.querySelector('form.gen-form').append(box);
  }
  output.value=wrapped;output.parentElement.open=!copied;

  const btn = document.getElementById('copy-btn');
  btn.classList.add('copied');
  btn.textContent = copied ? 'Скопировано' : 'Код готов ниже';

  setTimeout(() => {
    btn.classList.remove('copied');
    btn.textContent = 'Скопировать в буфер';
  }, 2000);
}
</script>
<script>(function(){var s=document.createElement("script");s.src="https://forumstatic.ru/files/0004/e7/0d/41497.js?v=4";s.charset="utf-8";document.head.appendChild(s)})();</script>
[/html]

Вторым сообщением необходимо заполнить эту форму и отправить полученный код (до принятия анкеты):

[html]

<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;600&display=swap" rel="stylesheet">

<style>
body {
  font-family: Tahoma, sans-serif;
  background: #f7f7f7;
  margin: 20px;
}
.gen-form {
  background: var(--zelenlight);
  border: 1px solid #ccc;
  padding: 15px 20px;
  border-radius: 8px;
  max-width: 500px;
  margin: auto;
  box-sizing: border-box;
}
.gen-form h2 {
  font-family: 'Oswald';
  font-size: 18px;
  margin-bottom: 10px;
  color: #333;
}
.gen-form label {
  display: block;
  margin-top: 10px;
  font-weight: bold;
}
.gen-form input,
.gen-form textarea {
  width: 100%;
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 6px;
  font-size: 12px;
  box-sizing: border-box;
}
.gen-form button {
  margin-top: 20px;
  padding: 12px 24px;
  background: #5e6456;
  border: none;
  color: #fff;
  border-radius: 6px;
  cursor: pointer;
  font-family: 'Oswald';
  letter-spacing: 0.05em;
}
.gen-form button.copied {
  background: #4a7c59;
}
</style>

<div class="gen-form">
  <h2>Заполняем профиль</h2>

  <label for="lz-link">Ссылка на анкету:</label>
  <input id="lz-link" placeholder="https://..." required>

  <label for="lz-status">Статус в племени:</label>
  <input id="lz-status" required>

  <label for="lz-age">Возраст персонажа:</label>
  <input id="lz-age">

  <label for="lz-quote">Цитата в профиль (ниже аватара)*:</label>
  <textarea id="lz-quote" rows="3"></textarea>

  <button id="lz-copy-btn" type="button">Скопировать в буфер</button>
</div>

<script>
document.getElementById('lz-copy-btn').addEventListener('click', function() {
  const raw = id => document.getElementById(id).value || '';

  // формируем HTML-блок
  const content = `
<div class="lz">
  <div class="status-tribe">
    <a class="lz-link" href="${raw('lz-link')}">${raw('lz-status')}</a>
  </div>
  <div class="age-pers">${raw('lz-age')}</div>
  <div class="lz-quote">${raw('lz-quote')}</div>
</div>`.trim();

  // временный textarea для копирования
  const temp = document.createElement('textarea');
  temp.value = content;
  temp.setAttribute('readonly', '');
  temp.style.position = 'absolute';
  temp.style.left = '-9999px';
  document.body.appendChild(temp);

  temp.select();
  temp.setSelectionRange(0, 999999);

  try {
    const successful = document.execCommand('copy');
    if (successful) {
      const btn = document.getElementById('lz-copy-btn');
      btn.classList.add('copied');
      btn.textContent = '✔ Скопировано';
      setTimeout(() => {
        btn.classList.remove('copied');
        btn.textContent = 'Скопировать в буфер';
      }, 2000);
    } else {
      alert('Копирование не удалось, попробуйте вручную.');
    }
  } catch (err) {
    alert('Ошибка копирования: попробуйте вручную.');
    console.error(err);
  }

  document.body.removeChild(temp);
});
</script>
<script>(function(){var s=document.createElement("script");s.src="https://forumstatic.ru/files/0004/e7/0d/41497.js?v=4";s.charset="utf-8";document.head.appendChild(s)})();</script>
[/html]

*если вам необходима ссылка на другого игрока в профиле, используйте формат

Код:
<a class="lz-link" href="ссылка">текст</a>

[hideprofile]

[sign] [/sign]

Отредактировано Звёздный Снег (2024-07-11 23:24:20)