ВАЖНО: Заполните анкету, нажмите "Сгенерировать анкету", затем создайте в данном разделе новую тему, к примеру "Анкета Рыжика", "Анкета Чумазика" (можно проявить фантазию и назвать оригинально) и вставляйте в анкету полученный ниже код.
!! ВНИМАНИЕ, удалите из полученного кода звездочки в [*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,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').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,'&').replace(/"/g,'"').replace(/</g,'<') : ''}" 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)