bookmarklet

    @@ -1,6 +1,6 @@ /* * @title bookmarklet - * @description 特訓ポイントのもらい忘れ確認 + * @description DQX特訓ポイントのもらい忘れ確認 * @include http://hiroba.dqx.jp/sc/home/status/detail/ * @license MIT License * @require
  • /*
     * @title bookmarklet
     * @description DQX特訓ポイントのもらい忘れ確認
     * @include http://hiroba.dqx.jp/sc/home/status/detail/
     * @license MIT License
     * @require 
     */
    (function(){
        var totalPoints = {};
    
        function getText(expression, context) {
            return $(expression, context).text();
        }
        function getNumber(expression, context) {
            return parseInt($.trim(getText(expression, context)).replace(/^([0-9,]+).*/, "$1").replace(",", ""));
        }
        function stampToPoint(stamp) {
            if (stamp < 100) {
                return 0;
            } else if (stamp < 300) {
                return 1;
            } else if (stamp < 600) {
                return 2;
            } else if (stamp < 1000) {
                return 3;
            } else {
                return parseInt(stamp / 500) + 2;
            }
        }
        function levelToPoint(level) {
            var points = [  3,   6,   6,   9,  13,  13,  17,  21,  21,  25,  29,  29,  32,  36,  36,
                           40,  44,  44,  49,  54,  54,  58,  63,  63,  68,  72,  72,  76,  79,  79,
                           83,  87,  87,  90,  93,  93,  97, 100, 100, 103, 107, 107, 110, 113, 113,
                          116, 118, 119, 122, 124, 126, 129, 131, 132, 134, 136, 138, 141, 144, 146,
                          148, 151, 152, 154, 156, 158, 161, 163, 165, 167, 170];
            if (level < 10) {
                return 0;
            }
            return points[level - 10];
        }
    
        var expRows = $("#jobLvExp table tr");
    
        // 未使用ポイント処理
        expRows.each(function(i) {
            if (i == 0) {
                return true;
            }
            totalPoints[getText("td.col1", this)] = getNumber("td.col5", this);
        });
        totalPoints["マスタースキル"] = getNumber("#skillBook ul li:first .point", document);
        // 使用済みポイント
        for (var k in skillMap) {
            var jobSkillPoints = skillMap[k]["jobSkillPoints"];
            for (var i = 0; i < jobSkillPoints.length; i++) {
                if (!(jobSkillPoints[i]["job"] in totalPoints)) {
                    totalPoints[jobSkillPoints[i]["job"]] = 0;
                }
                totalPoints[jobSkillPoints[i]["job"]] += jobSkillPoints[i]["value"];
            }
        }
    console.log(totalPoints);
    
        expRows.each(function() {
            var self = $(this);
            if (self.find("th").length == 5) {
               self.append("<th>未取得特訓ポイント</th>");
            }
            if (self.find("td").length == 5) {
                self.append("<td style=\"text-align:right\"></td>");
            }
            if (self.find("td").length == 6) {
                var syokugyou = self.find("td.col1").text();
                var tokkunPoint = stampToPoint(getNumber("td.col4", this));
                var levelPoint = levelToPoint(getNumber("td.col2", this));
                var unknownPoint = levelPoint + tokkunPoint - totalPoints[syokugyou];
                self.find("td:last").html(unknownPoint + "&nbsp;P").text();
            }
        });
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/07/09 00:46:35 - 2014-07-09
  2. 2014/07/09 00:46:09 - 2014-07-09