「javascript/サーヴァント経験値計算」の編集履歴(バックアップ)一覧はこちら

javascript/サーヴァント経験値計算 - (2015/08/19 (水) 23:13:44) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

//制作者はjavascript初心者なので、あまり見ないでください #javascript(){{ function func() { // 数値を代入 var now = document.formN.nowLv.value; var goal = document.formG.goalLv.value; var exp = 0; var mag = document.formC.class.value; // 現在レベルから目標レベルまでに必要な経験値を計算 // 現在レベルが目標レベルより高い場合は、1Lv分だけ計算 if(goal <= now){exp = now * (50 * now + 50);} else{ for(var lv = now; lv < goal; lv++){ exp += lv * (50 * lv + 50); } } // テーブルに入力 document.formEXP.totalEXP.value = exp; //必要になる強化素材数を計算してテーブルに入力 document.formT1.reqT1.value = Math.ceil(exp / (1000 * mag)); document.formT2.reqT2.value = Math.ceil(exp / (3000 * mag)); document.formT3.reqT3.value = Math.ceil(exp / (9000 * mag)); document.formT4.reqT4.value = Math.ceil(exp / (27000 * mag)); } }} #html2(){{ <table> <tr> <td bgcolor="#FFF">現在のレベル</td> <td><form name="formN" id="formN"> <input type="text" maxlength="6" size="8" name="nowLv" value="1"> </form></td> </tr> <tr> <td bgcolor="#FFF">目標のレベル</td> <td><form name="formG" id="formG"> <input type="text" maxlength="6" size="8" name="goalLv" value="0"> </form></td> </tr> <tr align=center> <td bgcolor="#FFF">強化素材</td> <td><form name="formC" id="formC"><select name="class" style="width:100px;"> <option value="1.2">クラス一致</option> <option value="1.0">クラス不一致</option> </select></form></td> </tr> <tr align=center> <td colspan="2"><form name="calc" id="calc"> <input type="button" value="計算" onclick="func()"> </form></td> </tr> <tr align=center> <td bgcolor="#FFF"><b>必要経験値</b></td> <td bgcolor="#FFF"><form name="formEXP" id="formEXP"><input readonly type="text" size="8" name="totalEXP"> </form></td> </tr> <tr align=center> <td bgcolor="#FFF">叡智の種火</td> <td bgcolor="#FFF"><form name="formT1" id="formT1"> <input readonly type="text" maxlength="4" size="8" name="reqT1"> 個 </form></td> </tr> <tr align=center> <td bgcolor="#FFF">叡智の灯火</td> <td bgcolor="#FFF"><form name="formT2" id="formT2"> <input readonly type="text" maxlength="4" size="8" name="reqT2"> 個 </form></td> </tr> <tr align=center> <td bgcolor="#FFF">叡智の大火</td> <td bgcolor="#FFF"><form name="formT3" id="formT3"> <input readonly type="text" maxlength="4" size="8" name="reqT3"> 個 </form></td> </tr> <tr align=center> <td bgcolor="#FFF">叡智の猛火</td> <td bgcolor="#FFF"><form name="formT4" id="formT4"> <input readonly type="text" maxlength="4" size="8" name="reqT4"> 個 </form></td> </tr> </table> }}
#javascript(){{{{{ <style> #svExp tbody tr td:nth-of-type(1){text-align: center;} #svExp input[type=text]{text-align: right;} </style> <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript"> function calcqp(sr, lv){ switch (sr) { case 11: return 70+30*lv; case 21: return 105+45*lv; case 31: return 140+60*lv; case 41: return 280+120*lv; case 51: return 420+180*lv; case 10: return 42+18*lv; case 20: return 63+27*lv; case 30: return 84+36*lv; case 40: return 168+72*lv; case 50: return 252+108*lv; default: return 0; } } function toComma(num) { return parseInt(num / 1000) == 0 ? num % 1000 : toComma(parseInt(num / 1000)) + ',' + ('000' + (num % 1000)).slice(-3); } function func(){ // 数値を取得 var now = parseFloat($('#svExp [name="nowLv"]').val()); var goal = parseFloat($('#svExp [name="goaLv"]').val()); // 現在レベルが目標レベルより高い場合は、1Lv分だけ計算 if(now >= goal){goal = now + 1.0;} // 目標レベルがMAX超の場合、Lv.MAXまでに修正 var sr = parseInt($('#svExp [name="sv_ce"]').val()); var sv = sr & 1; if (sv == 1 && goal > 120) { goal = 120; } else if(sv == 0 && goal > 100){goal = 100;} // 現在レベルから目標レベルまでに必要な経験値を計算 var Tn = exp_total(now,sv); var Tg = exp_total(goal,sv); exp = Tg - Tn; // 現在レベルがMAX超の場合 if((sv == 1 && now >= 120) || (sv == 0 && now >= 100)){exp = 0;} // テーブルに入力 $('#svExp [name="totalEXP"]').val(toComma(exp)); //必要になる強化素材数を計算してテーブルに入力 $('#svExp input.num').each(function(i, out){ if(out.name.match(/(\d+?)(.+?)/)){ var n = RegExp.$1; var x = RegExp.$2; if (x == 'A'){var mag = 1.2;} else if (x == 'B'){var mag = 1.0;} var one = (1000 * Math.pow(3, n-1) * mag); $(out).val(toComma(Math.ceil(exp / one))); var Tc = Tn; var lc = now; var qpt = 0; while (Tc < Tg){ var en; if ((Tg - Tc) < (one * 20)){en = Math.ceil((Tg - Tc) / one);} else {en = Math.ceil((exp_total(lc+1, sv) - Tc) / one); if (lc+1<goal) en += (20 - en % 20);} Tc += one * en; qpt += calcqp(sr,lc) * en; while (Tc >= exp_total(lc+1, sv)){lc++;} } $(out).parent().next().find('input.qp').val(toComma(qpt)); } }); } function exp_total(Lv, sv){ // Lv.91以上の場合は、別な経験値テーブルを参照 // ただし、対象がサーヴァントの場合のみ var over90 = [ 12567000, 13021900, 13532000, 14116500, 14795000, 15587500, 16514400, 17596500, 18855000, 20311500, 40623000, 60934500, 81246000, 101557500, 121869000, 142180500, 162492000, 182803500, 203115000, 223426500, 243738000, 264049500, 284361000, 304672500, 324984000, 345295500, 365607000, 385918500, 406230000, 426541500 ]; if(sv == 1 && Lv > 90){return over90[Lv - 91];} // Lv.90以下 return 100.0 * Lv * (Lv - 1.0) * (Lv + 1.0) / 6.0; } </script> }}}}} #html2(){{ <table id="svExp"> <tbody> <tr> <td>現在のレベル</td> <td colspan="4"><input type="number" maxlength="6" style="width:6em;" name="nowLv" value="1"></td> </tr> <tr> <td>目標のレベル</td> <td colspan="4"><input type="number" maxlength="6" style="width:6em;" name="goaLv" value="0"></td> </tr> <tr> <td>対象</td> <td colspan="4"><select name="sv_ce" style="width:10em;"> <option value="51" selected>サーヴァント☆5</option> <option value="41" selected>サーヴァント☆4</option> <option value="31" selected>サーヴァント☆3</option> <option value="21" selected>サーヴァント☆2(☆0)</option> <option value="11" selected>サーヴァント☆1</option> <option value="50">概念礼装☆5</option> <option value="40">概念礼装☆4</option> <option value="30">概念礼装☆3</option> <option value="20">概念礼装☆2</option> <option value="10">概念礼装☆1</option> </select></td> </tr> <tr> <td colspan="5"><form name="calc" id="calc"><input type="button" value="計算" onclick="func()"></form></td> </tr> <tr> <td><b>必要経験値</b></td> <td colspan="4"><input readonly type="text" style="width:8em;" name="totalEXP"></td> </tr> <tr align=center> <td>強化素材</td> <td colspan="2">クラス一致</td> <td colspan="2">クラス不一致</td> </tr> <tr> <td>★1 叡智の種火</td> <td><input readonly type="text" style="width:5em;" name="1A" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP1A" class="qp">QP</td> <td><input readonly type="text" style="width:5em;" name="1B" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QPBA" class="qp">QP</td> </tr> <tr> <td>★2 叡智の灯火</td> <td><input readonly type="text" style="width:5em;" name="2A" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP2A" class="qp">QP</td> <td><input readonly type="text" style="width:5em;" name="2B" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP2B" class="qp">QP</td> </tr> <tr> <td>★3 叡智の大火</td> <td><input readonly type="text" style="width:5em;" name="3A" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP3A" class="qp">QP</td> <td><input readonly type="text" style="width:5em;" name="3B" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP3B" class="qp">QP</td> </tr> <tr> <td>★4 叡智の猛火</td> <td><input readonly type="text" style="width:5em;" name="4A" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP4A" class="qp">QP</td> <td><input readonly type="text" style="width:5em;" name="4B" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP4B" class="qp">QP</td> </tr> <tr> <td>★5 叡智の業火</td> <td><input readonly type="text" style="width:5em;" name="5A" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP5A" class="qp">QP</td> <td><input readonly type="text" style="width:5em;" name="5B" class="num"> 個</td><td><input readonly type="text" style="width:7em;" name="QP5B" class="qp">QP</td> </tr> </tbody> </table> <p>※再臨時のQP消費は除く。単純に20個ずつ強化素材を捧げ続けた場合の消費QP。</p> }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: