Подсчет постов для банка

How it works

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

What to do

Создайте на форуме новую страницу и установите туда скрипт ниже. Отредактируйте currency_dict, subforums и UserFld3 (встречается в коде в двух местах).

currency_dict - это ваши настройки стоимости постов.
- "one", "two" и "five" - это три варианта склонения названия вашей валюты. Одна шестеренка за пост, две шестеренки за пост, пять шестеренок за пост.
- "pricelist" - это ваш прайс-лист за посты. Считыются символы. В примере ниже за пост до 100 символов полагается одна шестеренка, до 200 - две шестеренки, от 301 и выше - четыре шестеренки.

subforums - это номера подфорумов, в которых могут быть игровые посты. Не забудьте добавить архивные подфорумы.

UserFld3 - это поле в профиле, в котором у вас считается валюта. В поле не обязательно должно быть только число, там может быть написано что-то вроде "100 шестеренок". Скрипт сам найдет число в тексте.


<div>
<form>
    <div><label> Имя пользователя:
    <input type="text" id="user_name_fld" name="user_name" />
    </label></div>
    <div><label> Дата последнего захода в банк (в формате гггг-мм-дд чч:мм:сс):
    <input type="text" id="last_date_fld" name="last_date" />
    </label></div>
    <div><label> Сколько сейчас билетов в профиле:
    <input type="text" id="before_fld" name="before" />
    </label></div>
    <a onclick="calculate()">Посчитать</a>
</form>
</div>
<div id="code"></div>

<script src="https://frpgtools.com/static/scripts/calculate.js"></script>
<script>
    const currency_dict = {
        "one": "шестеренка",
        "two": "шестеренки",
        "five": "шестеренок",
        "pricelist": [{
            "min": 0,
            "max": 100,
            "price": 1
        },
            {
                "min": 101,
                "max": 200,
                "price": 2
            },
            {
                "min": 201,
                "max": 300,
                "price": 3
            },
            {
                "min": 301,
                "price": 4
            }]
    }

    const subforums = [10, 11, 9, 19, 20]

    document.getElementById('user_name_fld').value = UserLogin;
    let tickets = 0

    if (typeof UserFld3 !== 'undefined') {
        let numberPattern = /\d+/g;
        tickets = UserFld3.match(numberPattern)[0]
    }
    document.getElementById('before_fld').value = tickets

    async function calculate() {
        const user_name = document.getElementById('user_name_fld').value
        const start_time_str = document.getElementById('last_date_fld').value
        const before = document.getElementById('before_fld').value
        const posts = await get_posts(subforums, user_name, start_time_str, currency_dict)
        const result = '<div class="code-box"><strong class="legend">Код:</strong><div class="blockcode"><div class="scrollbox"><pre>'+format_message(posts, before)+'</pre></div></div></div>'
        document.getElementById('code').innerHTML = result
    }
</script>