твстат без перехода

  • Автор темы Deleted member 46490
  • Дата начала

DeletedUser

Гость
Кому лень переходить на твстат, подгружает графики активности за последние 4 недели в профиль.

Описание:
Работает на странице профиля. Предоставляет график очков/поверженных.
2020-11-10_09-59-59.png
Код:
javascript:
let app = {
    _config: null,

    load(config) {
        this._config = config;

        // Create available options
        let options = "";
        Object.keys(this._config.stats)
            .forEach((s) => options +=
                `<option value="${s}">${this._config.stats[s]}</option>`);

        // Load all required elements
        $('#player_info')
            .parent()
            .next()
            .prepend(`
            <table class="vis" width="100%"> \
                <tbody>
                    <tr>
                        <th colspan="2">
                            <span style="padding-top: 20px; vertical-align: middle;">Статистика игрока</span>
                       
                            <select id="change-stats" class="float_right">${options}</select>
                        </th>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            <img id="profile-stats-img" src="${this.getImage("points")}" alt="Obraz">
                        </td>
                    </tr>
                </tbody>
            </table>
        `);

        $("#change-stats")
            .on('change', (e) => {
                let stat = $(e.delegateTarget)
                    .val();

                $('#profile-stats-img')
                    .attr("src", app.getImage(stat));
            });
    },

    getImage(stat) {
        let id = game_data.player.id;
        let params = window.location.href
            .split('?')[1]
            .split('#')[0]
            .split('&')
            .forEach((e) => {
                if (e.includes("id")) {
                    id = e.split('=')[1];
                }
            });


        let url = this._config.server
            .replace("{world}", game_data.world)
            .replace("{graph_type}", stat)
            .replace("{player_id}", id);

        return url;
    }
};

app.load({
    server: "https://ru.twstats.com/{world}/image.php?type=playergraph&graph={graph_type}&id={player_id}",
    stats: {
        "points": "Очки",
        "villages": "Деры",
        "od": "Всего поверженных",
        "oda": "Поверженные в атаке",
        "odd": "Поверженные в защите",
        "rank": "Ранг"
    }
});
 
Последнее редактирование модератором:

Akkela

Кавалерист
Член команды
Модератор
Оценка реакций
74
Привет,

три момента:
  1. app не константа, обработчики js будут ругаться, иногда критично(хромиум у меня, например).
  2. Код:
    Object.keys(this._config.stats).forEach((s) => options +=`<option value="${s}">${this._config.stats[s]}</option>`);
    думал в скрипте не хватает ссылки на перевод, приписал и только в этом ответе понял что редактор убирает ]s[ ибо это у него перечёркнутый текст, итоговый код оберни плз в тэг код
  3. server: "https://ru.twstats.com/...

А так мне очень нравится. Вопросов с разрешением не будет.
Только опиши скрипт немного понятней - что, куда и зачем. Так, что бы новые игроки, которые статс в глаза не видели, догадались о чем он и что делает.

С ув., Евгений
 
Последнее редактирование:

DeletedUser

Гость
Описание:
Работает на странице профиля. Предоставляет график очков/поверженных.
2020-11-10_09-59-59.png
Код:
javascript:
let app = {
    _config: null,

    load(config) {
        this._config = config;

        // Create available options
        let options = "";
        Object.keys(this._config.stats)
            .forEach((s) => options +=
                `<option value="${s}">${this._config.stats[s]}</option>`);

        // Load all required elements
        $('#player_info')
            .parent()
            .next()
            .prepend(`
            <table class="vis" width="100%"> \
                <tbody>
                    <tr>
                        <th colspan="2">
                            <span style="padding-top: 20px; vertical-align: middle;">Статистика игрока</span>
                        
                            <select id="change-stats" class="float_right">${options}</select>
                        </th>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            <img id="profile-stats-img" src="${this.getImage("points")}" alt="Obraz">
                        </td>
                    </tr>
                </tbody>
            </table> 
        `);

        $("#change-stats")
            .on('change', (e) => {
                let stat = $(e.delegateTarget)
                    .val();

                $('#profile-stats-img')
                    .attr("src", app.getImage(stat));
            });
    },

    getImage(stat) {
        let id = game_data.player.id;
        let params = window.location.href
            .split('?')[1]
            .split('#')[0]
            .split('&')
            .forEach((e) => {
                if (e.includes("id")) {
                    id = e.split('=')[1];
                }
            });


        let url = this._config.server
            .replace("{world}", game_data.world)
            .replace("{graph_type}", stat)
            .replace("{player_id}", id);

        return url;
    }
};

app.load({
    server: "https://ru.twstats.com/{world}/image.php?type=playergraph&graph={graph_type}&id={player_id}",
    stats: {
        "points": "Очки",
        "villages": "Деры",
        "od": "Всего поверженных",
        "oda": "Поверженные в атаке",
        "odd": "Поверженные в защите",
        "rank": "Ранг"
    }
});
 

smiz001

Элитный кавалерист
Оценка реакций
364
В лисе вот так показывает
1604993252679.png
 
Верх