welkin : test
// путешествия по кодам
>>>> вселенная вращается вокруг

「 она была как луна — никому не принадлежала,
но все смотрели на нее с восхищением 」
は「彼女は月のように、誰のものでもなかったが、皆が彼女を賞賛の眼差しで見ていた」という意味です。

welkin moon

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

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


Вы здесь » welkin moon » испытательная » автоматический банк


автоматический банк

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

1

[html]<div id="bank-container"></div>[/html]
[hideprofile]

Блаблабла здесь может быть полный список позиций
Бла-бла


пример пример

0

2

ИНСТРУКЦИЯ ПО УСТАНОВКЕ


Код вставляем в ХТМЛ-низ
Меняем адрес в строчке if(location.href.indexOf('viewtopic.php?id=2') на свой (адрес странички темы банка, первое сообщение)

Можно добавить позиции, настроить цвета, поменять цены и тд

Код:
<!-- //автоматический банк welkin+bellberrycat (.autobank версия) -->
<script>
(function(){
  if (location.href.indexOf('viewtopic.php?id=2') === -1) return;

  // === CSS ===
  var style = document.createElement('style');
  style.textContent = `
    .autobank * { box-sizing: border-box; }
    .autobank {
      font-family: Arial, Helvetica, sans-serif;
      width: 100% !important;
      max-width: 100% !important;
      margin: 0 auto !important;
      padding: 0;
    }
    .autobank .bank-columns { display: flex; gap: 10px; flex-wrap: wrap; }
    .autobank .column {
      flex: 1;
      background: #fff;
      padding: 12px;
      border-radius: 8px;
      box-shadow: 0 0 0 1px rgba(0,0,0,0.1);
      min-width: 280px;
    }
    .autobank .position {
      display: flex;
      align-items: center;
      padding: 4px;
      margin: 2px 0;
      background: #f5f6f5;
      border-radius: 4px;
      flex-wrap: wrap;
    }
    .autobank .position span { flex: 1; font-size: 13px; }
    .autobank .position input[type=text] {
      width: 80px;
      margin-left: 5px;
      padding: 2px;
      border: 1px solid #ccc;
      border-radius: 4px;
      font-size: 12px;
    }
    .autobank .btn {
      border: 0;
      padding: 0 auto;
      border-radius: 4px;
      cursor: pointer;
      font-size: 12px;
      margin-left: 4px;
width: 41px;
height: 18px;
    }
    .autobank .btn2 {
      border: 0;
      padding: 4px 6px;
      border-radius: 4px;
      cursor: pointer;
      font-size: 12px;
      margin-left: 4px;
width: 175px;
    }
    .autobank .btn-add { background: #506B76; color: #fff; }
    .autobank .btn-remove { background: #909090; color: #fff; margin-left: 3px; font-size: 12px; }
    .autobank #selection-box {
      margin-top: 10px;
      background: #636363;
      color: #fff;
      padding: 10px;
      border-radius: 6px;
      font-size: 13px;
    }
    .autobank #selected-list li { margin-bottom: 4px; }
    .autobank label { font-weight: 600; font-size: 13px; }
    .autobank h4 { margin-top: 0; color: #506B76; font-size: 17px; font-family: Lighthaus;}
  `;
  document.head.appendChild(style);

  // === HTML банка ===
  var html = `
    <div class="autobank">
      <div style="margin-bottom:8px;">
        <label>Какой профиль используете:</label>
        <input type="text" id="profile-name" placeholder="Введите имя">
      </div>
      <div class="bank-columns">

        <div class="column" id="col-earn">
          <h4>Пополнить счёт</h4>
<div class="position" data-code="Пост от 1К до 3К символов" data-amount="10" data-type="earn">
            <span>Любой пост от 1К до 3К символов</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">10</button>
          </div>
          <div class="position" data-code="Пост свыше 3К символов" data-amount="20" data-type="earn">
            <span>Пост свыше 3К символов</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">20</button>
          </div>
          <div class="position" data-code="Время ожидания вашего поста составило менее 3х дней (в локации)" data-amount="20" data-type="earn">
            <span>Время ожидания вашего поста составило менее 3х дней (в локации)</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">20</button>
          </div>
          <div class="position" data-code="Отыгрыш тренировки с учеником (в локации/эпизоде)" data-amount="40" data-type="earn">
            <span>Отыгрыш тренировки с учеником (в локации/эпизоде)</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">40</button>
          </div>
          <div class="position" data-code="Отыгрыш охотничьего/пограничного патруля (в локации)" data-amount="30" data-type="earn">
            <span>Отыгрыш охотничьего/пограничного патруля (в локации)</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">30</button>
          </div>
          <div class="position" data-code="Получена коллекционная ачивка за локацию (только впервые каждым персонажем)" data-amount="50" data-type="earn">
            <span>Получена коллекционная ачивка за локацию (только впервые каждым персонажем)</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">50</button>
          </div>
          <div class="position" data-code="Получено новое достижение" data-amount="20" data-type="earn">
<span>Получено новое достижение</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">20</button>
          </div>
          <div class="position" data-code="Каждые 100 позитива (с любого профиля)" data-amount="20" data-type="earn">
            <span>Каждые 100 позитива (с любого профиля)</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">20</button></div>
          <div class="position" data-code="Ищем котиков" data-amount="10" data-type="earn">
            <span>Ищем котиков</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">10</button></div>
          <div class="position" data-code="Заполнение бинго" data-amount="20" data-type="earn">
            <span>Заполнение бинго</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">20</button></div>
<div class="position" data-code="Выполнение задания челленджа" data-amount="5" data-type="earn">
            <span>Выполнение задания челленджа (х5)</span><input type="text" placeholder="кол-во"><button class="btn btn-add add-item">*5</button></div>
           <div class="position" data-code="Вы в таблице постописцев на последний день месяца" data-amount="100" data-type="earn">
            <span>Вы в таблице постописцев на последний день месяца</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">100</button></div>
          <div class="position" data-code="Доигранный эпизод" data-amount="100" data-type="earn">
            <span>Доигранный эпизод</span><input type="text" placeholder="пруф"><button class="btn btn-add add-item">100</button></div>
     <div class="position" data-code="Пополнение фонда форума (*3)" data-amount="3" data-type="earn">
            <span>Пополнение фонда форума (х3)</span><input type="text" placeholder="сумма"><button class="btn btn-add add-item">*3</button></div>
        </div>

        <div class="column" id="col-spend">
          <h4>Потратить</h4>

          <div class="position" data-code="Бонус +2 к атаке на следующие 5 бросков кубика" data-amount="600" data-type="spend">
            <span>Бонус +2 к атаке на следующие 5 бросков кубика</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">600</button></div>
          <div class="position" data-code="Бонус +2 к охоте на на следующие 5 бросков кубика" data-amount="300" data-type="spend">
            <span>Бонус +2 к охоте на следующие 5 бросков кубика</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">300</button></div>
          <div class="position" data-code="Одна из стандартных иконок на мини-профиле (также необходимо иметь данное достижение)" data-amount="200" data-type="spend">
            <span>Одна из стандартных иконок на мини-профиле</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">200</button></div>
          <div class="position" data-code="Уникальная иконка на мини-профиле (прикрепите её к сообщению)" data-amount="400" data-type="spend">
            <span>Уникальная иконка на мини-профиле</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">400</button></div>
 <div class="position" data-code="Заказ стикерпака" data-amount="400" data-type="spend">
            <span>Заказать стикерпак со своим котом</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">400</button></div>
          <div class="position" data-code="Подарок другому игроку (прикрепите скрытым текстом картинку, имя получателя и текст)" data-amount="100" data-type="spend">
            <span>Подарок другому игроку</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">100</button></div>
          <div class="position" data-code="Стандартный фон для мини-профиля (на выбор из темы)" data-amount="300" data-type="spend">
            <span>Стандартный фон для мини-профиля</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">300</button></div>
<div class="position" data-code="Уникальный статичный фон для мини-профиля (скиньте ссылку на фон)" data-amount="400" data-type="spend">
            <span>Уникальный статичный фон для мини-профиля</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">400</button></div>
          <div class="position" data-code="Уникальный анимированный фон для мини-профиля (скиньте ссылку на фон)" data-amount="500" data-type="spend">
            <span>Уникальный анимированный фон для мини-профиля</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">500</button></div>
          <div class="position" data-code="Твинк сверх лимита" data-amount="100" data-type="spend">
            <span>Твинк сверх лимита</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">100</button></div>
<div class="position" data-code="Пропуск дня в *вопросе дня*" data-amount="50" data-type="spend">
<span>Пропуск дня в *вопросе дня*</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">50</button></div>
<div class="position" data-code="Нужный на главной странице на месяц" data-amount="200" data-type="spend">
<span>Нужный на главной странице на месяц</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">200</button></div>
<div class="position" data-code="Нужный на главной странице бессрочно" data-amount="2000" data-type="spend">
<span>Нужный на главной странице бессрочно</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">2000</button></div>
<div class="position" data-code="Купить необычное яйцо" data-amount="10000" data-type="spend">
<span>Купить необычное яйцо</span><input type="text" placeholder="ссылка"><button class="btn btn-add add-item">10000</button></div>

        </div>
      </div>

      <div id="selection-box">
        <div style="margin-bottom:6px;">
          <label>Было на счету:</label>
          <input type="number" id="start-amount" value="0" min="0" style="width:80px;padding:2px;">
        </div>
        <ol id="selected-list"></ol>
        <div id="calculation"></div>
        <div style="margin-top:6px;">
          <button id="copy-all" class="btn2 btn-add">Скопировать результат</button>
        </div>
      </div>
    </div>
  `;

  var post = document.querySelector('.post-content');
  if (post) post.insertAdjacentHTML('beforeend', html);


  // === JS логика ===
  var selected = [];

  function renderSelected() {
    var ol = document.getElementById('selected-list');
    ol.innerHTML = '';
    var start = parseInt(document.getElementById('start-amount').value) || 0;
    var total = start;
    var steps = [];

    selected.forEach(function(it, idx) {
      var li = document.createElement('li');
      
      // Чистим название от технических пометок типа (*3) для красоты в списке
      var cleanCode = it.code.replace(/\s*\(\*3\)/g, '');
      
      // Выводим: начислить: Название — Сумма (Комментарий если есть)
      li.innerHTML = '<strong>' + (it.type === 'earn' ? 'начислить' : 'потратить') + '</strong>: ' + 
                     cleanCode + ' — ' + it.amount + (it.comment ? ' [' + it.comment + ']' : '') +
                     ' <button data-idx="' + idx + '" class="btn btn-remove">×</button>';
      ol.appendChild(li);

      var val = it.type === 'earn' ? it.amount : -it.amount;
      steps.push((val > 0 ? '+' : '') + val);
      total += val;
    });

    var calcDiv = document.getElementById('calculation');
    calcDiv.innerHTML = 'Начислено: ' + (steps.length > 0 ? steps.join(' ') : '0');
    calcDiv.style.color = '#fff';
    calcDiv.style.backgroundColor = '#2b2b2b';
    calcDiv.style.padding = '6px';
    calcDiv.style.borderRadius = '4px';

    ol.querySelectorAll('.btn-remove').forEach(function(b) {
      b.onclick = function() {
        selected.splice(parseInt(this.getAttribute('data-idx')), 1);
        renderSelected();
      };
    });

    window.finalTotal = total;
    window.stepsText = steps.join(' ');
  }

  document.querySelectorAll('.add-item').forEach(function(btn) {
    btn.addEventListener('click', function() {
      var parent = btn.closest('.position');
      var code = parent.getAttribute('data-code');
      var type = parent.getAttribute('data-type');
      var inputField = parent.querySelector('input[type=text]');
      var inputVal = inputField.value.trim();
      
      var amount = 0;
      var comment = "";

      // ЛОГИКА ДЛЯ ФОНДА (УМНОЖЕНИЕ)
      if (code.includes("Пополнение фонда форума")) {
          var enteredSum = parseInt(inputVal) || 0;
          amount = enteredSum * 3; // Умножаем введенное на 3
          comment = "сумма: " + enteredSum + " x3"; // Пометка в комментарий
      } else {
          // ОБЫЧНАЯ ЛОГИКА
          // Если в поле введено число — используем его как сумму, иначе берем из data-amount
          amount = parseInt(inputVal) || parseInt(parent.getAttribute('data-amount')) || 0;
          // Если введено НЕ число, считаем это просто комментарием
          if (isNaN(parseInt(inputVal))) {
              comment = inputVal;
          }
      }

      selected.push({code: code, type: type, amount: amount, comment: comment});
      renderSelected();
      inputField.value = '';
    });
  });

  document.getElementById('start-amount').addEventListener('input', renderSelected);

  document.getElementById('copy-all').addEventListener('click', function() {
    var profile = document.getElementById('profile-name').value || '[не указан]';
    var text = 'Профиль: ' + profile + '\n\n';
    text += 'Получаю/трачу:\n';
    selected.forEach(function(it) {
      var cleanCode = it.code.replace(/\s*\(\*3\)/g, '');
      text += (it.type === 'earn' ? 'начислить' : 'потратить') + ': ' + cleanCode + ' — ' + it.amount + (it.comment ? ' (' + it.comment + ')' : '') + '\n';
    });
    text += '\nБыло на счету: ' + (parseInt(document.getElementById('start-amount').value) || 0);
    text += '\nНачислено: ' + (window.stepsText || '0');
    text += '\nФинальная сумма: ' + (window.finalTotal || 0);
    
    navigator.clipboard.writeText(text).then(() => alert('Данные для отчета скопированы!'));
  });
})();
</script>

В само сообщение темы банка вставляем (до либо после требуемого доп контента):

Код:
[html]<div id="bank-container"></div>[/html]

Желательно использовать hideprofile, чтобы встало на всю ширину окна.

[hideprofile]

0


Вы здесь » welkin moon » испытательная » автоматический банк