NGA ui-原神树脂计算器

一个基于nga-ui的树脂计算器

  1. // ==UserScript==
  2. // @name NGA ui-原神树脂计算器
  3. // @version 1.2
  4. // @description 一个基于nga-ui的树脂计算器
  5. // @author InfSeinP
  6. // @match *://nga.178.com/*
  7. // @match *://ngabbs.com/*
  8. // @match *://bbs.nga.cn/*
  9. // @grant none
  10. // @note v1.1 ui优化
  11. // @note v1.2 ui优化; 添加误差提示; 优化错误提示
  12. // @namespace https://gf.qytechs.cn/users/994825
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. // Init common
  19. const page = typeof unsafeWindow == 'undefined' ? window : unsafeWindow;
  20. const $ = page.$;
  21. const _$ = page._$;
  22. const commonui = page.commonui;
  23. if (!commonui) { return; }
  24. const limit = 15; // 显示的最大行数
  25.  
  26. // Core functions
  27.  
  28. // 1. 计算回满时间
  29. function _f1(curr) {
  30. var remainingTime = Math.floor((160 - curr) * 8);
  31. var h = Math.floor(remainingTime / 60);
  32. var m = remainingTime % 60;
  33. var date = new Date();
  34. var d = date.getDate();
  35. date.setHours(date.getHours() + h);
  36. date.setMinutes(date.getMinutes() + m);
  37. var day = date.getDate();
  38. var hours = date.getHours();
  39. var minutes = date.getMinutes();
  40. if (hours < 10) {
  41. hours = "0" + hours;
  42. }
  43. if (minutes < 10) {
  44. minutes = "0" + minutes;
  45. }
  46.  
  47. var res = d != day ? '次日' : '今日';
  48. res += hours + ":" + minutes;
  49. return res;
  50. }
  51. // 2. 按整点输出
  52. function _f2(curr) {
  53. var date = new Date();
  54. var hours = date.getHours();
  55. var minutes = date.getMinutes();
  56. var nd = false;
  57.  
  58. var data = [];
  59.  
  60. while (curr < 320) {
  61. var remainingMinutes = 60 - minutes;
  62. minutes = 0;
  63. curr += remainingMinutes / 8;
  64. if (data.length >= limit) {
  65. break;
  66. }
  67.  
  68. hours++;
  69. if (hours >= 24) { hours -= 24; nd = true; }
  70. if (hours < 10) { hours = "0" + hours; }
  71. var key = (nd ? '次日' : '') + hours + ":00";
  72. key = `<div>${key}</div>`
  73.  
  74. var value = `<div>${parseInt(curr)}</div>`;
  75. if (curr > 160) {
  76. value = `<p style='color: red'>${parseInt(curr)}</p>`;
  77. }
  78. else if (curr == 160) {
  79. value = `<p style='color: orange'>${parseInt(curr)}</p>`;
  80. }
  81.  
  82. data.push({key:key,value:value});
  83. }
  84.  
  85. return data;
  86. }
  87. // 3. 按树脂输出
  88. function _f3(curr) {
  89. const interval = 8 * 60 * 1000;
  90. var date = new Date();
  91. var d = date.getDate();
  92.  
  93. var data = [];
  94.  
  95. while (curr < 320) {
  96. curr++;
  97. date.setTime(date.getTime() + interval);
  98.  
  99. if (data.length >= limit) {
  100. break;
  101. }
  102.  
  103. if (curr%10 == 0) {
  104. var c = parseInt(curr)
  105. var key = c>160 ? `<div style='color: red'>${c}</div>` : c==160 ? `<div style='color: orange'>${c}</div>` : `<div>${c}</div>`;
  106.  
  107. var day = date.getDate();
  108. var hours = date.getHours();
  109. var minutes = date.getMinutes();
  110. var value = '';
  111. if (day != d ) { value += '次日'; }
  112. if (hours< 10) { hours = '0' + hours; }
  113. if (minutes < 10) { minutes = '0' + minutes; }
  114. value += hours + ":" + minutes;
  115. value = `<div>${value}</div>`;
  116.  
  117. data.push({key:key,value:value});
  118. }
  119. }
  120.  
  121. return data;
  122. }
  123.  
  124. // Add ui-entry
  125. commonui.mainMenu && commonui.mainMenu.addItemOnTheFly('树脂计算器', null, () => {
  126. const w = commonui.createadminwindow();
  127. var csz, ft, bt, bs, bt1, bt2, bs1, bs2, blk;
  128. w._.addContent(null);
  129. w._.addContent(
  130. '当前树脂 ',
  131. csz = _$('/input','id','csz','maxlength','3','style','width:105px;','placeholder','只能是整数'),
  132. _$('/button','type','button','innerHTML','更新','onclick',async () => {
  133. console.log(csz.value);
  134. let sz = parseInt(csz.value);
  135. if (!csz.value || sz<0 || sz>160) { alert('输入0~160的整数'); return; }
  136. ft.innerHTML = _f1(sz);
  137. console.log('f1.success')
  138.  
  139. let t1 = _f2(sz);
  140. let t2 = _f3(sz);
  141. var t1a = '',t1b = '',t2a = '',t2b = '';
  142. for(var i=0;i<t1.length;i++){
  143. t1a += t1[i].key// + '</br>';
  144. t1b += t1[i].value// + '</br>';
  145. }
  146. for(i=0;i<t2.length;i++){
  147. t2a += t2[i].key// + '</br>';
  148. t2b += t2[i].value// + '</br>';
  149. }
  150. var blklen = Math.max(t1.length, t2.length);
  151. var blkcon = ' | </br> | </br>';
  152. for(i=0;i<blklen;i++){
  153. blkcon += ' | </br>';
  154. }
  155. blk.innerHTML = blkcon;
  156. bt1.innerHTML = t1a; bt2.innerHTML = t1b;
  157. bs1.innerHTML = t2a; bs2.innerHTML = t2b;
  158. console.log('f2/3.success')
  159.  
  160. }),
  161. _$('/br'),
  162. _$('/span','class','silver','innerHTML',' - 将于 ', 'style', 'margin-left: 5px;'),
  163. ft = _$('/span','class','silver','innerHTML',''),
  164. _$('/span','class','silver','innerHTML',' 回满'),_$('/br'),
  165. _$('/span','class','silver','innerHTML','注意: 本工具提供的时间会有最多8分钟的误差!'),_$('/br'),
  166. _$('/table')._.add(_$('/tbody')._.add(_$('/tr')._.add(
  167. _$('/td','colspan','2','innerHTML','<strong>时间轴</strong>','style','text-align:center'),
  168. blk = _$('/td','rowspan','3','innerHTML',' | '),
  169. _$('/td','colspan','2','innerHTML','<strong>树脂轴</strong>','style','text-align:center'),
  170. ))._.add(_$('/tr')._.add(
  171. _$('/td','innerHTML','时间','style','text-align:left;padding-right:0.7em;'),
  172. _$('/td','innerHTML','树脂','style','text-align:center;padding-right:0.7em;'),
  173. _$('/td','innerHTML','树脂','style','text-align:center;padding-left:0.7em;padding-right:0.7em'),
  174. _$('/td','innerHTML','时间','style','text-align:right;padding-right:0.7em;'),
  175. ))._.add(_$('/tr')._.add(
  176. bt1 = _$('/td','style','padding-right:0.7em;text-align:right'),
  177. bt2 = _$('/td','style','padding-right:0.7em'),
  178. bs1 = _$('/td','style','padding-left:0.7em;padding-right:0.7em'),
  179. bs2 = _$('/td','style','padding-right:0.7em;text-align:right'),
  180. )))
  181. );
  182. w._.addTitle('原神树脂计算器');
  183. w._.show();
  184. });
  185. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址