本WIKI由闪耀暖暖山药攻略组申请于2020年04月24日创建,编辑权限开放。

全站通知:

Widget:工具:竞技场兑换(简中)

来自闪耀暖暖WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<style>

   .remark {
       font-size: 80%;
   }
   p.title1 {
       font-size: 140%;
       font-weight: 800;
       color: #1F4499;
       text-align: center;
   }
   #mainTable{
       width:60%;
   }
   #Table1{
       width:60%;
   }
   hr.mhr {
       border: 1px dashed #2E9FCC;
   }
   table {
       border: solid #999;
       border-width: 1px 0px 0px 1px;
       border-spacing: 0;
       font-family: "Microsoft YaHei", Sans-Serif;
       color: #bd2020;
       line-height: 1.5em;
       width:40%;
   }
   td {
       border: solid #999;
       border-width: 0px 1px 1px 0px;
       border-spacing: 0;
   }
   tr:nth-child(2n+1) {
       background: rgba(234, 242, 250, 0.5);
       font-size: 90%;
   }
   tr:nth-child(2n) {
       background: rgba(219, 229, 248, 0.5);
       font-size: 90%;
   }
   tr:nth-child(1) {
       font-size: 100%;
       font-weight: 700;
       background-color: #ff8ea4;
   }
   a {
       text-decoration: none;
       color: #3377ff;
   }
   .noinner td:not(:last-child) {
       border-right-width: 0;
   }
   .noinner td:not(:first-child) {
       border-left-width: 0;
   }
   tr.nobottom td {
       border-bottom-width: 0;
   }
   tr.notop td {
       border-top-width: 0;
   }
   td.withbottom {
       border-bottom-width: thin !important;
   }

</style> <script type="text/javascript" charset="UTF-8"> //结束时间 var timeEnd = new Date("05/8/2022 5:00:00 GMT+0800").getTime(); var ymd = '200412'; //部件类别 var ctype = ['外套', '饰品-特殊-背饰', '妆容', '设计师之影', '真我复苏', '影之召唤', '饰品-特殊-戒指', '上衣', '妆容', '下装', '鞋子', '妆容', '发型', '妆容', '饰品-手持物', '饰品-耳饰']; //部件名称 var cname = ['暗夜烁金', '星域放逐', '幻影浮金', '剑与启示录', '剑与启示录', '剑与启示录', '圣洁血脉', '叛谕之征', '光影流辉', '旧日辉芒', '荆途初启', '无尽戮海', '焚寂战歌', '静默之诺', '信仰长剑', '权欲蔓生']; //需要段位 var creq = ['第5001-10000名','颠覆未来之王3星','颠覆未来之王2星','颠覆未来之王1星','颠覆未来之王1星','颠覆未来之王1星','颠覆未来之王1星','灵感重构大师3星','灵感重构大师2星','灵感重构大师1星','记忆创造者3星','记忆创造者2星','记忆创造者1星','自由搭配师3星','自由搭配师2星','自由搭配师1星']; //记忆回响位置 var multPos = 6; //单价 var need = [1188, 792, 528, 1500, 750, 750, 528, 660, 264, 660, 528, 198, 528, 264, 165, 198]; //礼包名字 var pack = ['钥匙礼包','稀有钥匙','普通钥匙','印象礼包']; //礼包价格 var packNeed = [10,10,4,50]; //礼包最大购买数 var packMax = [10,15,50,999]; //道具名称 var itemName = '礼赞之花'; //买一次花费钻石 var price = 10; //每天免费次数 var free1Day = 5; //赢奖励 var win = 5; //输奖励 var lose = 3; //段位名字 var weeklyName = ['第1名','第2名','第3名','第4-50名','第51-100名','第101-200名','第201-500名','第501-1000名','第1001-2000名','第2001-3000名','第3001-5000名','第5001-10000名','颠覆未来之王3星','颠覆未来之王2星','颠覆未来之王1星','灵感重构大师3星','灵感重构大师2星','灵感重构大师1星','记忆创造者3星','记忆创造者2星','记忆创造者1星','自由搭配师3星','自由搭配师2星','自由搭配师1星','初心学徒']; //段位奖励 var weeklyNum = [600,580,560,520,480,440,400,360,320,280,240,200,150,140,130,120,110,90,80,70,60,50,40,30,20]; //段位提升名字 var topup=['永恒的传奇','颠覆未来之王3星','颠覆未来之王2星','颠覆未来之王1星','灵感重构大师3星','灵感重构大师2星','灵感重构大师1星','记忆创造者3星','记忆创造者2星','记忆创造者1星','自由搭配师3星','自由搭配师2星','自由搭配师1星','初心学徒']; //段位提升奖励数(每档) var topup_gain=[200,100,100,100,80,80,80,50,50,50,30,30,30,0]; //影之召唤升级 var skillLv = ['2级(1个)','3级(3个)','4级(6个)','5级(11个)','自定']; //影之召唤升级需求(累计) var skillUp = [1,3,6,11,0];

//==========参数设置完毕==========//

var own=[]; var multi = multPos - 1; var packNum = []; var time_d; var time_w; var topup_index = function(){ var ret = []; for (var i=0; i<topup_gain.length; i++){ ret.unshift(i); } return ret; }(); var skill_index = function(){ var ret = []; for (var i=0; i<skillLv.length; i++){ ret.push(i); } return ret; }();

window.onload = function(){ init(); default_setting(); calc(); };

function init(){

var table = '

'; table += tr(td('部位')+td('名称')+td('所需')+td('已有')); table += tr(td('*勾选代表已有/不需要部件','colspan="4" class="remark"')); var cell1 = []; var cell2 = []; var cell3 = []; var cell4 = []; for (i=0; i<cname.length; i++){ cell1.push('<label for="own'+i+'">' + ctype[i] + '</label>'); cell2.push(i==multi? selectBox('skillLv', 'calc()', skill_index, skillLv) + '' : '<label for="own'+i+'">' + cname[i] + '</label>'); cell3.push('<label for="own'+i+'">' + (i==multi? '': ) + need[i] + (i==multi? '': ) + '</label>'); cell4.push('<input type="checkbox" id="own' + i + '" onclick=calc() >'); } for (i=0; i<cell1.length; i++){ table += tr(td(cell1[i])+td(cell2[i])+td(cell3[i])+td(cell4[i]),'class="noinner' + (i==0?:' notop') + (i==cell1.length-1?:' nobottom') +'"'); } table += tr(td('*每周购买礼包','colspan="4" class="remark"')); var cell1 = []; var cell2 = []; var cell3 = []; for (i=0; i<pack.length; i++){ cell1.push(pack[i]); cell2.push(inputBox('pack'+i,'calc()',2) + '个'); cell3.push('' + packNeed[i] + ''); } for (i=0; i<cell1.length; i++){ table += tr(td(cell1[i])+td(cell2[i])+td(cell3[i],'colspan="2"'),'class="noinner' + (i==0?:' notop') + (i==cell1.length-1?:' nobottom') +'"'); } table += '

';

document.getElementById("table").innerHTML = table;

var input = '

' + tr(td(),'style="display:none"'); input += tr(td('当前'+itemName+':') + td(inputBox('current','calc()',5)+'个')); input += tr(td('平均结算段位:') + td(selectBox('weekly','calc()',weeklyNum,weeklyName))); input += tr(td('今日剩余免费:') + td(inputBox('remain_today','calc()',3)+'次')); input += tr(td('今日还可购买:') + td(inputBox('remain_buy_today','calc()',3)+'次')); input += tr(td('预计胜率:') + td(inputBox('pct_exp','calc()',3)+'%')); input += tr(td('计划最高段位:') + td(selectBox('topupPlan','calc()',topup_index,topup))); input += tr(td('已达最高段位:') + td(selectBox('topupAlready','calc()',topup_index,topup))); input += '

';

document.getElementById("input").innerHTML = input;

var remark = '

'; remark += ''; remark += ''; remark += ''; remark += ''; remark += '
注意事项
赛季结束日的免费次数不计算在内
双倍未计入(赛季末可能会有4天)

';

document.getElementById("remark").innerHTML = remark; }

function default_setting(){ var dateNow = new Date(); var timeNow = dateNow.getTime(); time_d = Math.max(0,Math.floor((timeEnd-timeNow)/1000/60/60/24)); time_w = Math.max(0,Math.floor((timeEnd-timeNow)/1000/60/60/24/7)); var timeEndDate = new Date(timeEnd); var y = timeEndDate.getFullYear(); var m = timeEndDate.getMonth() + 1; var d = timeEndDate.getDate(); var adjustedDate = new Date(timeNow + time_w*7*24*60*60*1000); var todayDay = dateNow.getDay(); var adjustedDays = 6 - todayDay; var settleDate = new Date(timeNow + (time_w*7 + adjustedDays) *24*60*60*1000); var ys = settleDate.getFullYear(); var ms = settleDate.getMonth() + 1; var ds = settleDate.getDate(); var settleDate21 = new Date(ms + '/' + ds + '/' + ys + ' 21:00:00 GMT+0800'); //周六21点结算 if (settleDate21<timeEndDate && settleDate21>adjustedDate) time_w += 1; document.getElementById("showTime").innerHTML = '赛季结束日期(请用北京时区):' + y + '-' + m + '-' + d + ' 还有' + time_d + '天,' + time_w + '次结算'; for (var i=0; i<pack.length; i++) setVal("pack"+i, 0); setVal('multiCustInput', 0); setVal('current', 0); setVal("remain_today", 0); setVal("remain_buy_today", 0); setVal('pct_exp', 100); }

function calc(){ var multiSelect = getVal('skillLv'); if(multiSelect==skillLv.length-1){ document.getElementById("multiCustSpan").style.display = "inline"; var multiDup = getVal('multiCustInput'); }else{ document.getElementById("multiCustSpan").style.display = "none"; var multiDup = skillUp[multiSelect]; } document.getElementById("multiNeed").innerHTML = need[multi] * multiDup; for (var i=0; i<pack.length; i++) { checkMax('pack'+i, packMax[i]); packNum[i] = getVal('pack'+i); document.getElementById("packNeed"+i).innerHTML = packNeed[i] * packNum[i] + (packNum[i]>0 ? '×' + time_w : ); } var current = Math.max(0,getVal('current')); var weekly = getVal('weekly'); var remain_today = checkMax('remain_today', 5); var remain_buy_today = checkMax('remain_buy_today', 10); var pct_exp = checkMax('pct_exp', 100); var topupAlready=getVal('topupAlready'); var topupPlan=getVal('topupPlan');

for (i=0; i<need.length; i++){ if (document.getElementById('own'+i).checked) own[i]=1; else own[i]=0; }

var aim = 0; for(i=0; i<need.length; i++) { aim += need[i] * (1-own[i]) * (i==multi? multiDup : 1 ); } for(i=0; i<packNeed.length; i++) { aim += packNeed[i] * packNum[i] * time_w; }

var future = 0; for (i=0; i<topup_index.length; i++) { if(topup_index[i]>topupAlready&&topup_index[i]<=topupPlan){ future += topup_gain[i]; } }

var free_times = time_d * free1Day + remain_today; var win_times = Math.floor(free_times*pct_exp/100); var winLose = win * win_times + lose * (free_times-win_times); var weekSettle = weekly*time_w; var free = winLose + weekSettle + future;

var rem = Math.max(0,aim - free - current); var exp = win*pct_exp/100 + lose*(1-pct_exp/100); var times = Math.ceil(rem/exp);

var canAchieve = true; var everyDay = Math.round(Math.max(0,times-remain_buy_today)/time_d*10)/10; if (everyDay>10) canAchieve = false;

var to_pay = times*price;

var calcres='

'+tr(td('计算结果')); calcres+=tr(td('共需'+aim+'个'+itemName)); calcres+=tr(td('免费'+free+'个'+itemName)); calcres+=tr(td('(挑战奖励'+winLose+',周结算'+weekSettle+',段位提升'+future+')')); calcres+=tr(td('还差'+rem+'个'+itemName+',需购买'+times+'次')); calcres+=tr(td('赛季结束前' + (canAchieve?'可以':'不能') + '兑换完所有部件'+(canAchieve?:',请调整目标需求'))); if (canAchieve) calcres+=tr(td((remain_buy_today>0&&times>0 ? '今日买'+Math.min(remain_buy_today,times)+'次后,' :) + '平均每天需购买'+everyDay+'次')); if (canAchieve) calcres+=tr(td('花钻'+to_pay+'个')); calcres+='

';

document.getElementById("calcres").innerHTML = calcres;

//compare weekly vs creq var weeklyInd = weeklyNum.indexOf(weekly); var creqOut = ; for(var i=0; i<creq.length; i++){ if(weeklyName.indexOf(creq[i])<weeklyInd&&!own[i]){ creqOut += cname[i] + '(' + ctype[i] + ')需结算达到' + creq[i] + '
'; } } if (creqOut){ document.getElementById("creq").innerHTML = td(creqOut); document.getElementById("creq").style.display = "table-row"; } else { document.getElementById("creq").innerHTML = td(); document.getElementById("creq").style.display = "none"; } }

function checkMax(boxName, maxVal){ var val = getVal(boxName); if (val>maxVal){ setVal(boxName, maxVal); return maxVal; } else if (val<0){ setVal(boxName, 0); return 0; } return val; }

function loadSettings(){ if (typeof(Storage) !== "undefined" && localStorage.getItem("shineJJC_"+ymd)) { var loadString = localStorage.getItem("shineJJC_"+ymd);

var own_str = getStoredStr(loadString, 'own').split(','); for (i=0;i<need.length;i++) {if(own_str[i]>0) {document.getElementById("own"+i).checked=true;}}

var packNum_str = getStoredStr(loadString, 'packNum').split(','); for (i=0;i<pack.length;i++) {setVal("pack"+i, packNum_str[i]);}

setPlainTextStoredStr(loadString, 'skillLv'); setPlainTextStoredStr(loadString, 'multiCustInput'); setPlainTextStoredStr(loadString, 'current'); setPlainTextStoredStr(loadString, 'weekly'); setPlainTextStoredStr(loadString, 'remain_today'); setPlainTextStoredStr(loadString, 'remain_buy_today'); setPlainTextStoredStr(loadString, 'pct_exp'); setPlainTextStoredStr(loadString, 'topupPlan'); setPlainTextStoredStr(loadString, 'topupAlready');

calc(); } } function getStoredStr(string, id){ var exist = string.indexOf(id+':['); if (exist==-1) return ; var start = exist + (id+':[').length; return string.substr(start,string.substr(start).indexOf('];')); } function setPlainTextStoredStr(string, id){ var tmp = getStoredStr(string, id); setVal(id, tmp); } function saveSettings(){ var saveString = 'own:['+own.join(',')+'];skillLv:['+getVal('skillLv')+'];multiCustInput:['+getVal('multiCustInput')+'];packNum:['+packNum.join(',')+'];current:['+getVal('current')+'];weekly:['+getVal('weekly')+'];remain_today:['+getVal('remain_today')+'];remain_buy_today:['+getVal('remain_buy_today')+'];pct_exp:['+getVal('pct_exp')+'];topupPlan:['+getVal('topupPlan')+'];topupAlready:['+getVal('topupAlready')+'];'; //own:[1,1,0,0,0]; if (typeof(Storage) !== "undefined") { localStorage.setItem("shineJJC_"+ymd, saveString); } document.getElementById('storage').innerHTML = saveString; } function getVal(id){ return noNaN(parseInt(document.getElementById(id).value)); } function setVal(id,val){ document.getElementById(id).value=val; } function noNaN( n ) { return isNaN( n ) ? 0 : n; } function td(text,attr){

return '<td'+(attr?' '+attr:)+'>'+text+''; } function tr(text,attr){ return '<tr'+(attr?' '+attr:)+'>'+text+''; } function inputBox(id,onchange,size){ return '<input type="text" id="'+id+'" onkeyup='+onchange+(size?' size="'+size+'"':)+'>'; } function selectBox(id,onchange,valArr,textArr){ var ret='<select id="'+id+'" onchange='+onchange+'>'; if(!textArr) textArr=valArr; for (var i in valArr){ ret+='<option value="'+valArr[i]+'">'+textArr[i]+'</option>'; } ret+='</select>';; return ret; } </script> <body>

闪耀暖暖竞技场兑换计算(国服)


<button onclick="saveSettings()">保存设置</button><button onclick="loadSettings()">读取设置</button>

</body>