本WIKI由闪耀暖暖山药攻略组申请于2020年04月24日创建,编辑权限开放。
Widget:工具:竞技场兑换(简中)
<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&×>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>