// ==UserScript== // @name NGA ui-原神树脂计算器 // @version 1.2 // @description 一个基于nga-ui的树脂计算器 // @author InfSeinP // @match *://nga.178.com/* // @match *://ngabbs.com/* // @match *://bbs.nga.cn/* // @grant none // @note v1.1 ui优化 // @note v1.2 ui优化; 添加误差提示; 优化错误提示 // @namespace https://greasyfork.org/users/994825 // @downloadURL https://update.greasyfork.icu/scripts/456308/NGA%20ui-%E5%8E%9F%E7%A5%9E%E6%A0%91%E8%84%82%E8%AE%A1%E7%AE%97%E5%99%A8.user.js // @updateURL https://update.greasyfork.icu/scripts/456308/NGA%20ui-%E5%8E%9F%E7%A5%9E%E6%A0%91%E8%84%82%E8%AE%A1%E7%AE%97%E5%99%A8.meta.js // ==/UserScript== (function() { 'use strict'; // Init common const page = typeof unsafeWindow == 'undefined' ? window : unsafeWindow; const $ = page.$; const _$ = page._$; const commonui = page.commonui; if (!commonui) { return; } const limit = 15; // 显示的最大行数 // Core functions // 1. 计算回满时间 function _f1(curr) { var remainingTime = Math.floor((160 - curr) * 8); var h = Math.floor(remainingTime / 60); var m = remainingTime % 60; var date = new Date(); var d = date.getDate(); date.setHours(date.getHours() + h); date.setMinutes(date.getMinutes() + m); var day = date.getDate(); var hours = date.getHours(); var minutes = date.getMinutes(); if (hours < 10) { hours = "0" + hours; } if (minutes < 10) { minutes = "0" + minutes; } var res = d != day ? '次日' : '今日'; res += hours + ":" + minutes; return res; } // 2. 按整点输出 function _f2(curr) { var date = new Date(); var hours = date.getHours(); var minutes = date.getMinutes(); var nd = false; var data = []; while (curr < 320) { var remainingMinutes = 60 - minutes; minutes = 0; curr += remainingMinutes / 8; if (data.length >= limit) { break; } hours++; if (hours >= 24) { hours -= 24; nd = true; } if (hours < 10) { hours = "0" + hours; } var key = (nd ? '次日' : '') + hours + ":00"; key = `
${key}
` var value = `
${parseInt(curr)}
`; if (curr > 160) { value = `

${parseInt(curr)}

`; } else if (curr == 160) { value = `

${parseInt(curr)}

`; } data.push({key:key,value:value}); } return data; } // 3. 按树脂输出 function _f3(curr) { const interval = 8 * 60 * 1000; var date = new Date(); var d = date.getDate(); var data = []; while (curr < 320) { curr++; date.setTime(date.getTime() + interval); if (data.length >= limit) { break; } if (curr%10 == 0) { var c = parseInt(curr) var key = c>160 ? `
${c}
` : c==160 ? `
${c}
` : `
${c}
`; var day = date.getDate(); var hours = date.getHours(); var minutes = date.getMinutes(); var value = ''; if (day != d ) { value += '次日'; } if (hours< 10) { hours = '0' + hours; } if (minutes < 10) { minutes = '0' + minutes; } value += hours + ":" + minutes; value = `
${value}
`; data.push({key:key,value:value}); } } return data; } // Add ui-entry commonui.mainMenu && commonui.mainMenu.addItemOnTheFly('树脂计算器', null, () => { const w = commonui.createadminwindow(); var csz, ft, bt, bs, bt1, bt2, bs1, bs2, blk; w._.addContent(null); w._.addContent( '当前树脂 ', csz = _$('/input','id','csz','maxlength','3','style','width:105px;','placeholder','只能是整数'), _$('/button','type','button','innerHTML','更新','onclick',async () => { console.log(csz.value); let sz = parseInt(csz.value); if (!csz.value || sz<0 || sz>160) { alert('输入0~160的整数'); return; } ft.innerHTML = _f1(sz); console.log('f1.success') let t1 = _f2(sz); let t2 = _f3(sz); var t1a = '',t1b = '',t2a = '',t2b = ''; for(var i=0;i'; t1b += t1[i].value// + '
'; } for(i=0;i'; t2b += t2[i].value// + '
'; } var blklen = Math.max(t1.length, t2.length); var blkcon = ' |
|
'; for(i=0;i时间轴','style','text-align:center'), blk = _$('/td','rowspan','3','innerHTML',' | '), _$('/td','colspan','2','innerHTML','树脂轴','style','text-align:center'), ))._.add(_$('/tr')._.add( _$('/td','innerHTML','时间','style','text-align:left;padding-right:0.7em;'), _$('/td','innerHTML','树脂','style','text-align:center;padding-right:0.7em;'), _$('/td','innerHTML','树脂','style','text-align:center;padding-left:0.7em;padding-right:0.7em'), _$('/td','innerHTML','时间','style','text-align:right;padding-right:0.7em;'), ))._.add(_$('/tr')._.add( bt1 = _$('/td','style','padding-right:0.7em;text-align:right'), bt2 = _$('/td','style','padding-right:0.7em'), bs1 = _$('/td','style','padding-left:0.7em;padding-right:0.7em'), bs2 = _$('/td','style','padding-right:0.7em;text-align:right'), ))) ); w._.addTitle('原神树脂计算器'); w._.show(); }); })();