Advertisement
Guest User

Cookie FHF script

a guest
Feb 13th, 2021
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 20.88 KB | None | 0 0
  1. <html>
  2.  
  3. <script type="text/javascript">
  4.  
  5. // 本家より
  6. // add seedrandom to Math
  7. (function(a,b,c,d,e,f){function k(a){var b,c=a.length,e=this,f=0,g=e.i=e.j=0,h=e.S=[];for(c||(a=[c++]);d>f;)h[f]=f++;for(f=0;d>f;f++)h[f]=h[g=j&g+a[f%c]+(b=h[f])],h[g]=b;(e.g=function(a){for(var b,c=0,f=e.i,g=e.j,h=e.S;a--;)b=h[f=j&f+1],c=c*d+h[j&(h[f]=h[g=j&g+b])+(h[g]=b)];return e.i=f,e.j=g,c})(d)}function l(a,b){var e,c=[],d=(typeof a)[0];if(b&&"o"==d)for(e in a)try{c.push(l(a[e],b-1))}catch(f){}return c.length?c:"s"==d?a:a+"\0"}function m(a,b){for(var d,c=a+"",e=0;c.length>e;)b[j&e]=j&(d^=19*b[j&e])+c.charCodeAt(e++);return o(b)}function n(c){try{return a.crypto.getRandomValues(c=new Uint8Array(d)),o(c)}catch(e){return[+new Date,a,a.navigator.plugins,a.screen,o(b)]}}function o(a){return String.fromCharCode.apply(0,a)}var g=c.pow(d,e),h=c.pow(2,f),i=2*h,j=d-1;c.seedrandom=function(a,f){var j=[],p=m(l(f?[a,o(b)]:0 in arguments?a:n(),3),j),q=new k(j);return m(o(q.S),b),c.random=function(){for(var a=q.g(e),b=g,c=0;h>a;)a=(a+c)*d,b*=d,c=q.g(1);for(;a>=i;)a/=2,b/=2,c>>>=1;return(a+c)/b},p},m(c.random(),b)})(this,[],Math,256,6,52);
  8.  
  9. // https://qiita.com/higuma/items/5af4e62bdf4df42ce673
  10. // 組み合わせ生成
  11. // JavaScript Array permutation generator
  12. // (optimized from CoffeeScript output: see ArrayPermutation.coffee)
  13. (function() {
  14.     var generatePermutation = function(perm, pre, post, n) {
  15.         var elem, i, rest, len;
  16.         if (n > 0)
  17.             for (i = 0, len = post.length; i < len; ++i) {
  18.                 rest = post.slice(0);
  19.                 elem = rest.splice(i, 1);
  20.                 generatePermutation(perm, pre.concat(elem), rest, n - 1);
  21.             }
  22.         else
  23.             perm.push(pre);
  24.     };
  25.     Array.prototype.permutation = function(n) {
  26.         if (n == null) n = this.length;
  27.         var perm = [];
  28.         generatePermutation(perm, [], this, n);
  29.         return perm;
  30.     };
  31. })();
  32.  
  33. // Grimoire実行順序リスト
  34. // 0,1,2,3 : 1-4回目のFHF実行 (Diminishに変更する場合もある)
  35. // 5,6,7,8 : 1-4回目のFHFで生成されたGC/WCをクリック
  36. // 4       : GC/RC自然生成を待つ
  37. // 9       : GC/RC自然生成分をクリック
  38. // 置き換え後
  39. // 100     : Diminish
  40. // -1      : NOP
  41. (function() {
  42.     var seqAll = [0,1,2,3,4,5,6,7,8,9].permutation(10);
  43.     $seqEnable = [];
  44.     for (var x = 0; x < seqAll.length; ++x)
  45.     {
  46.         var seq = seqAll[x];
  47.         if (seq.indexOf(0) > seq.indexOf(1)) continue;
  48.         if (seq.indexOf(0) > seq.indexOf(2)) continue;
  49.         if (seq.indexOf(0) > seq.indexOf(3)) continue;
  50.         if (seq.indexOf(1) > seq.indexOf(2)) continue;
  51.         if (seq.indexOf(1) > seq.indexOf(3)) continue;
  52.         if (seq.indexOf(2) > seq.indexOf(3)) continue;
  53.         if (seq.indexOf(0) > seq.indexOf(5)) continue;
  54.         if (seq.indexOf(1) > seq.indexOf(6)) continue;
  55.         if (seq.indexOf(2) > seq.indexOf(7)) continue;
  56.         if (seq.indexOf(3) > seq.indexOf(8)) continue;
  57.         if (seq.indexOf(4) > seq.indexOf(9)) continue;
  58.         $seqEnable.push(seq);
  59.     }
  60. })();
  61.  
  62. // なんか参照するやつ
  63. function _(name)
  64. {
  65.     return document.getElementById(name);
  66. }
  67.  
  68. // 実行本体
  69. function run()
  70. {
  71.     // セーブデータを環境に読み込む 失敗したら終わり
  72.     if (!loadSaveString()) return;
  73.  
  74.     // 抽選テーブル解析
  75.     var numLoad = _('numLoad').value - 0;
  76.     var cookieList = getCookieList(numLoad + 4);
  77.  
  78.     // 抽選テーブル表示
  79.     var startDisp = _('startDisp').value - 0;
  80.     var numDisp = 20;
  81.     if (startDisp > numLoad - numDisp + 4) startDisp = numLoad - numDisp + 4;
  82.     showCookieList(cookieList, startDisp, numDisp);
  83.  
  84.     // 都合のいいパターンを検索
  85.     var startIndex = _('startFind').value - 0;
  86.     var isFound = false;
  87.     var targetEffects = getTargetEffects();
  88.     for (var i = startIndex; i < numLoad; ++i)
  89.     {
  90.         for (var pat = 0; pat < 256; ++pat)
  91.         {
  92.             // GC/WC/Seasonの選択パターン
  93.             var pattern = getEffectPattern(pat);
  94.  
  95.             // この選択パターンで選択された効果のリスト
  96.             // 特殊効果数が足りなかったらやり直し
  97.             var effectList = getEffectList(cookieList, i, pattern);
  98.             var actualEffects = getActualEffects(effectList);
  99.             if (!checkActualEffects(actualEffects, targetEffects)) continue;
  100.  
  101.             // 選択可能なGrimoire実行順序の一覧を取得する
  102.             var seqOKList = getAvailableSequenceList(effectList);
  103.             if (!seqOKList.length) continue;
  104.  
  105.             // 最も使い勝手の良さそうなGrimoire実行順序を推定する
  106.             var bestSeq = estimateBestSequence(seqOKList, effectList);
  107.             showWorkStep(bestSeq, effectList, i);
  108.             isFound = true;
  109.             break;
  110.         }
  111.         if (isFound) break;
  112.     }
  113.     if (!isFound)
  114.     {
  115.         var result = numLoad + '回先まで見たけど無理でした'
  116.         _('result').innerHTML = result;
  117.     }
  118. }
  119.  
  120. // セーブデータを環境に読み込む
  121. function loadSaveString()
  122. {
  123.     var str = _('in').value;
  124.     if (str == '') return false;
  125.  
  126.     str = decodeURI(str);
  127.     str = str.split('!END!')[0];
  128.     var idx;
  129.     while ((idx = str.indexOf('%')) != -1)
  130.     {
  131.         var str1 = str.slice(0,idx);
  132.         var str2 = str.slice(idx,idx+3);
  133.         var str3 = str.slice(idx+3);
  134.         var code = parseInt(str2.slice(1), 16);
  135.         str = str1 + String.fromCharCode(code) + str3;
  136.     }
  137.     str = atob(str);
  138.     str = str.split('|');
  139.  
  140.     $scope = {};
  141.     $scope.seed = str[2].split(';')[4];
  142.     $scope.ascend = parseInt(str[4].split(';')[29]);
  143.     $scope.totalCast = parseInt(str[5].split(';')[7].split(' ')[2]);
  144.     return true;
  145. }
  146.  
  147. // 抽選テーブル解析
  148. function getCookieList(numLoad)
  149. {
  150.     var cookieList = [];
  151.     for (var i = 0; i < numLoad; ++i)
  152.     {
  153.         var cookieItem = {}
  154.         cookieItem.roll = getRoll(i);
  155.         cookieItem.gc_n = getCookie(i, false, false);
  156.         cookieItem.wc_n = getCookie(i, true,  false);
  157.         cookieItem.gc_s = getCookie(i, false, true);
  158.         cookieItem.wc_s = getCookie(i, true , true);
  159.         cookieList.push(cookieItem);
  160.     }
  161.     return cookieList;
  162. }
  163.  
  164. // GC/WC判定ロール
  165. function getRoll(castIndex)
  166. {
  167.     // Init random seed
  168.     Math.seedrandom($scope.seed + '/' + ($scope.totalCast + castIndex));
  169.  
  170.     // Check GC or RC
  171.     var roll = {};
  172.     roll.value = Math.random();
  173.     roll.isWC = (roll.value < 0.85) ? false : true
  174.     roll.value = Math.ceil((1 - roll.value) * 10000) / 100;
  175.     return roll;
  176. }
  177.  
  178. // GC(WC)内容判定
  179. function getCookie(castIndex, isWC, isSeason)
  180. {
  181.     // Init random seed
  182.     Math.seedrandom($scope.seed + '/' + ($scope.totalCast + castIndex));
  183.  
  184.     // Pass some random() call
  185.     Math.random(); // for roll
  186.     if (isSeason) Math.random();
  187.     Math.random();
  188.     Math.random();
  189.  
  190.     var choose = function(ar)
  191.     {
  192.         return ar[Math.floor(Math.random() * ar.length)];
  193.     }
  194.  
  195.     var cookie = {};
  196.     cookie.isWC = isWC;
  197.     cookie.isSeason = isSeason;
  198.     if (isWC == false)
  199.     {
  200.         // GC
  201.         var choices = [];
  202.         choices.push('Frenzy');
  203.         choices.push('Lucky');
  204.         choices.push('Click Frenzy');
  205.         if (Math.random() < 0.1) choices.push('Cookie Storm', 'Cookie Storm', 'Blab');
  206.         if (Math.random() < 0.25) choices.push('Building Special');
  207.         if (Math.random() < 0.15) choices = ['Lucky 2'];
  208.         if (Math.random() < 0.0001) choices.push('Free Sugar Lump');
  209.         cookie.str = choose(choices)
  210.     }
  211.     else
  212.     {
  213.         // WC
  214.         var choices = [];
  215.         choices.push('Clot');
  216.         choices.push('Ruin');
  217.         if (Math.random() < 0.1) choices.push('Cursed Finger', 'Elder Frenzy');
  218.         if (Math.random() < 0.003) choices.push('Free Sugar Lump');
  219.         if (Math.random() < 0.1) choices=['Blab'];
  220.         cookie.str = choose(choices)
  221.     }
  222.     return cookie;
  223. }
  224.  
  225. // 目標の特殊効果の数
  226. function getTargetEffects()
  227. {
  228.     var targetEffects = [0,0,0];
  229.     targetEffects[0] = _('targetCF').value - 0;
  230.     targetEffects[1] = _('targetEF').value - 0;
  231.     targetEffects[2] = _('targetBS').value - 0;
  232.     return targetEffects;
  233. }
  234.  
  235. // GC/WC/Seasonの選択パターン
  236. function getEffectPattern(pat)
  237. {
  238.     var pattern = [0,0,0,0];
  239.     pattern[0] = Math.floor(pat /  1) % 4;
  240.     pattern[1] = Math.floor(pat /  4) % 4;
  241.     pattern[2] = Math.floor(pat / 16) % 4;
  242.     pattern[3] = Math.floor(pat / 64) % 4;
  243.     return pattern;
  244. }
  245.  
  246. // 指定の選択パターンで選択された効果のリスト
  247. function getEffectList(cookieList, gen, pattern)
  248. {
  249.     var effectList = [0,0,0,0];
  250.     for (var c = 0; c < 4; ++c)
  251.         effectList[c] = getSelectEffect(cookieList[gen + c], pattern[c]);
  252.     return effectList;
  253. }
  254.  
  255. // 選択パターンに応じたクッキーの選択
  256. function getSelectEffect(cookieItem, pattern)
  257. {
  258.     var effect = {};
  259.     switch (pattern)
  260.     {
  261.     case 0: effect = cookieItem.gc_n; break;
  262.     case 1: effect = cookieItem.wc_n; break;
  263.     case 2: effect = cookieItem.gc_s; break;
  264.     case 3: effect = cookieItem.wc_s; break;
  265.     }
  266.     effect.roll = cookieItem.roll.value;
  267.     return effect;
  268. }
  269.  
  270. // この選択パターンでの特殊効果の数
  271. function getActualEffects(effectList)
  272. {
  273.     var actualEffects = [0,0,0];
  274.     for (var c = 0; c < 4; c++)
  275.     {
  276.         if (effectList[c].str == 'Click Frenzy') actualEffects[0]++;
  277.         if (effectList[c].str == 'Elder Frenzy') actualEffects[1]++;
  278.         if (effectList[c].str == 'Building Special') actualEffects[2]++;
  279.     }
  280.     return actualEffects;
  281. }
  282.  
  283. // 特殊効果数が足りているかどうか
  284. function checkActualEffects(actualEffects, targetEffects)
  285. {
  286.     for (var i = 0; i < 3; ++i)
  287.         if (actualEffects[i] < targetEffects[i]) return false;
  288.     return true;
  289. }
  290.  
  291. // 選択可能なGrimoire実行順序の一覧を取得する
  292. function getAvailableSequenceList(effectList)
  293. {
  294.     var seqOKList = [];
  295.     for (var s = 0; s < $seqEnable.length; ++s)
  296.     {
  297.         for (var dim = -1; dim < 3; ++dim)
  298.         {
  299.             var seq = [ ...$seqEnable[s] ]; // deep copy
  300.             if (dim >= 0)
  301.             {
  302.                 seq[seq.indexOf(dim)]   = 100; // change to Diminish
  303.                 seq[seq.indexOf(dim+5)] = -1;  // change to NOP
  304.             }
  305.             if (!checkSequence(seq, effectList)) continue;
  306.             seqOKList.push(seq);
  307.         }
  308.     }
  309.     return seqOKList;
  310. }
  311.  
  312. // 指定のGrimoire実行順序で希望する選択パターンになるかどうか
  313. function checkSequence(seq, effectList)
  314. {
  315.     var bfRate = 15;
  316.     var numCookie = 0;
  317.     var spellIndex = 0;
  318.     for (var i = 0; i < seq.length; ++i)
  319.     {
  320.         var cmd = seq[i];
  321.         if (0 <= cmd && cmd <= 3)
  322.         {
  323.             // Cast spell : FHF
  324.             var effect = effectList[spellIndex++];
  325.             var isBF = effect.roll < (bfRate + numCookie * 15)
  326.             if (( isBF) && (!effect.isWC)) return false;
  327.             if ((!isBF) && ( effect.isWC)) return false;
  328.             numCookie++;
  329.         }
  330.         else if (cmd == 100)
  331.         {
  332.             // Cast spell : Diminish
  333.             var effect = effectList[spellIndex++];
  334.             var isBF = effect.roll < bfRate;
  335.             if (['Click Frenzy', 'Elder Frenzy', 'Building Special'].indexOf(effect.str) >= 0) return false;
  336.             bfRate = isBF ? 75 : 1.5;
  337.         }
  338.         else if (cmd == 4)
  339.         {
  340.             numCookie++;
  341.         }
  342.         else if (5 <= cmd && cmd <= 9)
  343.         {
  344.             numCookie--;
  345.         }
  346.     }
  347.     return true;
  348. }
  349.  
  350. // 最も使い勝手の良さそうなGrimoire実行順序を推定する
  351. function estimateBestSequence(seqOKList, effectList)
  352. {
  353.     var scoreMax = 0;
  354.     var seqMax = {};
  355.     for (var s = 0; s < seqOKList.length; ++s)
  356.     {
  357.         var seq = seqOKList[s];
  358.         var score = calcSequenceEffectivity(seq, effectList)
  359.         if (score > scoreMax)
  360.         {
  361.             scoreMax = score;
  362.             seqMax = seq;
  363.         }
  364.     }
  365.     return seqMax;
  366. }
  367.  
  368. // 指定のGrimoire実行順序+効果リストで、使い勝手の良さを計算する
  369. // 長効果のGCは先に使い、短効果のGCは後に残せるのが使い勝手が良い
  370. function calcSequenceEffectivity(seq, effectList)
  371. {
  372.     var score = 0;
  373.     for (var i = 0; i < seq.length; ++i)
  374.     {
  375.         var cmd = seq[i];
  376.         var scoreBase = 0;
  377.         if (5 <= cmd && cmd <= 8)
  378.         {
  379.             scoreBase = -1;
  380.             var str = effectList[cmd - 5].str;
  381.             if (str == 'Click Frenzy') scoreBase = 10; // 後に発動したほうが良い
  382.             if (str == 'Elder Frenzy') scoreBase = 20; // もっと後のほうが良い
  383.             if (str == 'Building Special') scoreBase = 1; // 適当
  384.         }
  385.         if (cmd == 4)
  386.         {
  387.             scoreBase = -3; // 前に発動したほうが良い
  388.         }
  389.         if (cmd == 9)
  390.         {
  391.             scoreBase = -2; // 前に発動したほうが良い
  392.         }
  393.         if (scoreBase > 0) score +=  scoreBase * (i + 1);
  394.         if (scoreBase < 0) score += -scoreBase * (seq.length - i);
  395.     }
  396.     return score;
  397. }
  398.  
  399. // 抽選テーブル表示
  400. function showCookieList(cookieList, startDisp, numDisp)
  401. {
  402.     for (var i = 0; i < numDisp; ++i)
  403.     {
  404.         var idx = i + startDisp;
  405.         var cookieItem = cookieList[idx];
  406.         var rollStr = cookieItem.roll.value + '%';
  407.         if (cookieItem.roll.isWC) rollStr = rollStr.fontcolor('red');
  408.         _('idx_' + i).innerHTML = idx;
  409.         _('roll_' + i).innerHTML = rollStr;
  410.         _('gc_n_' + i).innerHTML = cookieItem.gc_n.str;
  411.         _('wc_n_' + i).innerHTML = cookieItem.wc_n.str.fontcolor('red');
  412.         _('gc_s_' + i).innerHTML = cookieItem.gc_s.str;
  413.         _('wc_s_' + i).innerHTML = cookieItem.wc_s.str.fontcolor('red');
  414.     }
  415. }
  416.  
  417. // 作業リスト表示
  418. function showWorkStep(seq, effectList, gen)
  419. {
  420.     var finalSteps = [];
  421.  
  422.     finalSteps.push([100]);
  423.     if (gen > 0) finalSteps.push([101, gen]);
  424.     finalSteps.push([102]);
  425.     finalSteps.push([103]);
  426.  
  427.     var cookieID = ['[A]', '[B]', '[C]', '[D]', '[E]'];
  428.     var cookieMap = [0,0,0,0,0];
  429.     var cookieIndex = 0;
  430.     var spellIndex = 0;
  431.     for (var i = 0; i < seq.length; ++i)
  432.     {
  433.         var cmd = seq[i];
  434.         var isSpell = false;
  435.         switch (cmd)
  436.         {
  437.         case 0:
  438.         case 1:
  439.         case 2:
  440.         case 3:
  441.             finalSteps.push([4, effectList[cmd].isSeason]);
  442.             finalSteps.push([0, spellIndex + 1, effectList[cmd].isWC, effectList[cmd].str, cookieID[cookieIndex]]);
  443.             cookieMap[cmd] = cookieIndex++;
  444.             isSpell = true;
  445.             spellIndex++;
  446.             break;
  447.         case 4:
  448.             finalSteps.push([2, cookieID[cookieIndex]]);
  449.             cookieMap[cmd] = cookieIndex++;
  450.             break;
  451.         case 5:
  452.         case 6:
  453.         case 7:
  454.         case 8:
  455.         case 9:
  456.             finalSteps.push([3, cookieID[cookieMap[cmd - 5]]]);
  457.             break;
  458.         case 100:
  459.             finalSteps.push([1, spellIndex + 1, effectList[spellIndex].roll < 15]);
  460.             isSpell = true;
  461.             spellIndex++;
  462.             break;
  463.         case -1:
  464.         default:
  465.             break;
  466.         }
  467.         if (isSpell)
  468.         {
  469.             if (spellIndex == 1) finalSteps.push([5]);
  470.             if (spellIndex == 2) finalSteps.push([6]);
  471.             if (spellIndex == 3) finalSteps.push([5]);
  472.         }
  473.     }
  474.     finalSteps.push([7]);
  475.  
  476.     _('result').innerHTML = showWorkStep_JA(finalSteps);
  477. }
  478.  
  479. function showWorkStep_JA(finalSteps)
  480. {
  481.     for (var i = 0; i < finalSteps.length; ++i)
  482.     {
  483.         if (finalSteps[i][0] == 4)
  484.         {
  485.             var tmp = [];
  486.             finalSteps = tmp.concat([finalSteps[0]], [finalSteps[i]], finalSteps.slice(1,i), finalSteps.slice(i+1));
  487.             break;
  488.         }
  489.     }
  490.  
  491.     var lastSeasonSet = false;
  492.     var lastSeason = false;
  493.  
  494.     var result = '';
  495.     for (var i = 0; i < finalSteps.length; ++i)
  496.     {
  497.         var cmd = finalSteps[i];
  498.         switch (cmd[0])
  499.         {
  500.         case 0:
  501.             result += '魔法' + cmd[1] + ' : FHF → ' + (cmd[2] ? 'WC' : 'GC') + '(' + cmd[3] + ') ... ' + cmd[4];
  502.             if (finalSteps[i+1][0] == 3 && finalSteps[i+1][1] == cmd[4])
  503.             {
  504.                 result += ' : 即クリック';
  505.                 ++i;
  506.             }
  507.             result += '</br>';
  508.             break;
  509.         case 1:
  510.             result += '魔法' + cmd[1] + ' : Diminish' + (cmd[2] ? '(Backfire)' : '') + '</br>';
  511.             break;
  512.         case 2:
  513.             result += '自然GC ... ' + cmd[1];
  514.             if (finalSteps[i+1][0] == 3 && finalSteps[i+1][1] == cmd[1])
  515.             {
  516.                 result += ' : 即クリック';
  517.                 ++i;
  518.             }
  519.             result += '</br>';
  520.             break;
  521.         case 3:
  522.             result += cmd[1] + ' クリック</br>';
  523.             break;
  524.         case 4:
  525.             if (!lastSeasonSet || (lastSeason != cmd[1]))
  526.             {
  527.                 result += 'Season ' + (cmd[1] ? 'On' : 'Off') + '</br>';
  528.             }
  529.             lastSeasonSet = true;
  530.             lastSeason = cmd[1];
  531.             break;
  532.         case 5:
  533.             result += '塔1回分売る</br>';
  534.             break;
  535.         case 6:
  536.             result += '塔1回分買う</br>';
  537.             result += 'MP充填</br>';
  538.             break;
  539.         case 7:
  540.             result += '大クッキー超連打</br>';
  541.             break;
  542.         case 100:
  543.             result += '[準備]</br>';
  544.             break;
  545.         case 101:
  546.             result += '魔法 ' + cmd[1] + '回 空撃ち</br>';
  547.             break;
  548.         case 102:
  549.             result += '塔をFHF2回分の状態にする</br>';
  550.             result += 'MP最大まで待つ</br>';
  551.             result += '(ここでセーブ推奨)</br>';
  552.             result += '</br>';
  553.             break;
  554.         case 103:
  555.             result += '[手順]</br>';
  556.             break;
  557.         }
  558.     }
  559.     return result;
  560. }
  561.  
  562. </script>
  563.  
  564. <body>
  565.  
  566. <table><tr><td>
  567.  
  568. <table border="1">
  569. <tr><td colspan="6"><input id="in" size="60"><input type="button" value="Read" onclick="run();" /></td></tr>
  570. <tr><td>回数</td><td>roll</td><td colspan="2">Season Off</td><td colspan="2">Season On</td></tr>
  571. <tr><td><span id="idx_0">0</span></td><td><span id="roll_0" /></td><td><span id="gc_n_0" /></td><td><span id="wc_n_0" /></td><td><span id="gc_s_0" /></td><td><span id="wc_s_0" /></td></tr>
  572. <tr><td><span id="idx_1">1</span></td><td><span id="roll_1" /></td><td><span id="gc_n_1" /></td><td><span id="wc_n_1" /></td><td><span id="gc_s_1" /></td><td><span id="wc_s_1" /></td></tr>
  573. <tr><td><span id="idx_2">2</span></td><td><span id="roll_2" /></td><td><span id="gc_n_2" /></td><td><span id="wc_n_2" /></td><td><span id="gc_s_2" /></td><td><span id="wc_s_2" /></td></tr>
  574. <tr><td><span id="idx_3">3</span></td><td><span id="roll_3" /></td><td><span id="gc_n_3" /></td><td><span id="wc_n_3" /></td><td><span id="gc_s_3" /></td><td><span id="wc_s_3" /></td></tr>
  575. <tr><td><span id="idx_4">4</span></td><td><span id="roll_4" /></td><td><span id="gc_n_4" /></td><td><span id="wc_n_4" /></td><td><span id="gc_s_4" /></td><td><span id="wc_s_4" /></td></tr>
  576. <tr><td><span id="idx_5">5</span></td><td><span id="roll_5" /></td><td><span id="gc_n_5" /></td><td><span id="wc_n_5" /></td><td><span id="gc_s_5" /></td><td><span id="wc_s_5" /></td></tr>
  577. <tr><td><span id="idx_6">6</span></td><td><span id="roll_6" /></td><td><span id="gc_n_6" /></td><td><span id="wc_n_6" /></td><td><span id="gc_s_6" /></td><td><span id="wc_s_6" /></td></tr>
  578. <tr><td><span id="idx_7">7</span></td><td><span id="roll_7" /></td><td><span id="gc_n_7" /></td><td><span id="wc_n_7" /></td><td><span id="gc_s_7" /></td><td><span id="wc_s_7" /></td></tr>
  579. <tr><td><span id="idx_8">8</span></td><td><span id="roll_8" /></td><td><span id="gc_n_8" /></td><td><span id="wc_n_8" /></td><td><span id="gc_s_8" /></td><td><span id="wc_s_8" /></td></tr>
  580. <tr><td><span id="idx_9">9</span></td><td><span id="roll_9" /></td><td><span id="gc_n_9" /></td><td><span id="wc_n_9" /></td><td><span id="gc_s_9" /></td><td><span id="wc_s_9" /></td></tr>
  581. <tr><td><span id="idx_10">10</span></td><td><span id="roll_10" /></td><td><span id="gc_n_10" /></td><td><span id="wc_n_10" /></td><td><span id="gc_s_10" /></td><td><span id="wc_s_10" /></td></tr>
  582. <tr><td><span id="idx_11">11</span></td><td><span id="roll_11" /></td><td><span id="gc_n_11" /></td><td><span id="wc_n_11" /></td><td><span id="gc_s_11" /></td><td><span id="wc_s_11" /></td></tr>
  583. <tr><td><span id="idx_12">12</span></td><td><span id="roll_12" /></td><td><span id="gc_n_12" /></td><td><span id="wc_n_12" /></td><td><span id="gc_s_12" /></td><td><span id="wc_s_12" /></td></tr>
  584. <tr><td><span id="idx_13">13</span></td><td><span id="roll_13" /></td><td><span id="gc_n_13" /></td><td><span id="wc_n_13" /></td><td><span id="gc_s_13" /></td><td><span id="wc_s_13" /></td></tr>
  585. <tr><td><span id="idx_14">14</span></td><td><span id="roll_14" /></td><td><span id="gc_n_14" /></td><td><span id="wc_n_14" /></td><td><span id="gc_s_14" /></td><td><span id="wc_s_14" /></td></tr>
  586. <tr><td><span id="idx_15">15</span></td><td><span id="roll_15" /></td><td><span id="gc_n_15" /></td><td><span id="wc_n_15" /></td><td><span id="gc_s_15" /></td><td><span id="wc_s_15" /></td></tr>
  587. <tr><td><span id="idx_16">16</span></td><td><span id="roll_16" /></td><td><span id="gc_n_16" /></td><td><span id="wc_n_16" /></td><td><span id="gc_s_16" /></td><td><span id="wc_s_16" /></td></tr>
  588. <tr><td><span id="idx_17">17</span></td><td><span id="roll_17" /></td><td><span id="gc_n_17" /></td><td><span id="wc_n_17" /></td><td><span id="gc_s_17" /></td><td><span id="wc_s_17" /></td></tr>
  589. <tr><td><span id="idx_18">18</span></td><td><span id="roll_18" /></td><td><span id="gc_n_18" /></td><td><span id="wc_n_18" /></td><td><span id="gc_s_18" /></td><td><span id="wc_s_18" /></td></tr>
  590. <tr><td><span id="idx_19">19</span></td><td><span id="roll_19" /></td><td><span id="gc_n_19" /></td><td><span id="wc_n_19" /></td><td><span id="gc_s_19" /></td><td><span id="wc_s_19" /></td></tr>
  591. </table>
  592.  
  593. </td><td>
  594.  
  595. 検索件数 <select id="numLoad" onchange="run();">
  596.     <option value="100" selected>100</option>
  597.     <option value="200">200</option>
  598.     <option value="300">300</option>
  599.     <option value="400">400</option>
  600.     <option value="500">500</option>
  601.     <option value="600">600</option>
  602.     <option value="700">700</option>
  603.     <option value="800">800</option>
  604.     <option value="900">900</option>
  605.     <option value="1000">1000</option>
  606. </select><br/>
  607. <input id="startDisp" type="text" size="2" onchange="run()" value="0"/> 回目から表示<br/>
  608. <input id="startFind" type="text" size="2" onchange="run()" value="0"/> 回目から手順調整<br/>
  609. <br/>
  610. Click Flenzy <select id="targetCF" onchange="run();"><option value="0">0</option><option value="1" selected>1</option></select><br/>
  611. Elder Flenzy <select id="targetEF" onchange="run();"><option value="0">0</option><option value="1" selected>1</option></select><br/>
  612. Building Special <select id="targetBS" onchange="run();"><option value="0">0</option><option value="1" selected>1</option><option value="2">2</option><option value="3">3</option></select><br/>
  613. <br/>
  614. <span id="result" /><br/>
  615.  
  616. </td></tr></table>
  617.  
  618. </body>
  619.  
  620. </html>
  621.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement