Enhance Tool I

RT

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/447160/1069297/Enhance%20Tool%20I.js

  1. // ==UserScript==
  2. // @name Enhance Tool I
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.4
  5. // @description RT
  6. // @author lyscop
  7. // @match *
  8. // @include *
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. let isShowEff = GM_getValue('showEff', true);
  13.  
  14. GM_registerMenuCommand('显示隐藏金币灵石效率', () => {
  15. GM_setValue('showEff', !isShowEff);
  16. isShowEff = GM_getValue('showEff', true);
  17. alert('金币灵石效率已' +
  18. (isShowEff ? '显示' : '隐藏') +
  19. ',请刷新'
  20. );
  21. });
  22. // dps显示x
  23. var DPSx=0;
  24. unsafeWindow.dpsx = function dpsx(){
  25. var aps = document.getElementsByClassName("ant-tabs-tabpane ant-tabs-tabpane-active")[0].getElementsByTagName("p");
  26. if(aps.length<20){
  27. return;
  28. }
  29. //计算是物理还是法术
  30. for(var p=0; p<aps.length; p++) {
  31. if(aps[p].innerHTML.split(':')[0] == '物理攻击') {
  32. var wgs = aps[p].innerText.split(":")[1].split("-");
  33. }
  34. if(aps[p].innerHTML.split(':')[0] == '物理暴击几率') {
  35. var wgjl = aps[p].innerText.split(":")[1].split("%")[0];
  36. }
  37. if(aps[p].innerHTML.split(':')[0] == '物理暴击倍率') {
  38. var wgbl = aps[p].innerText.split(":")[1].split("%")[0];
  39. }
  40. if(aps[p].innerHTML.split(':')[0] == '法术攻击') {
  41. var fgs = aps[p].innerText.split(":")[1].split("-");
  42. }
  43. if(aps[p].innerHTML.split(':')[0] == '法术暴击几率') {
  44. var fgjl = aps[p].innerText.split(":")[1].split("%")[0];
  45. }
  46. if(aps[p].innerHTML.split(':')[0] == '法术暴击倍率') {
  47. var fgbl = aps[p].innerText.split(":")[1].split("%")[0];
  48. }
  49. }
  50. var d = 0;
  51. if(wgs.length==1){
  52. return
  53. }
  54. if(parseInt(wgs[1])>parseInt(fgs[1])){
  55. d = (parseInt(wgs[0])+parseInt(wgs[1]))/2*parseInt(wgjl)*parseInt(wgbl)/10000;
  56. } else {
  57. d = (parseInt(fgs[0])+parseInt(fgs[1]))/2*parseInt(fgjl)*parseInt(fgbl)/10000;
  58. }
  59. d = d.toFixed(2);
  60. var txt = ""+d;
  61. if(DPSx == d){
  62. return;
  63. }
  64. if(DPSx!=0){
  65. var dx = d-DPSx;
  66. dx = dx.toFixed(2);
  67. if(d>DPSx){
  68. txt += "<span style='color: red;'>&nbsp;&nbsp;+"+dx+"</span>"
  69. } else {
  70. txt += "<span style='color: green;'>&nbsp;&nbsp;"+dx+"</span>"
  71. }
  72. }
  73. DPSx = d;
  74. document.getElementById("dps").innerHTML=txt;
  75. }
  76. // 升级所需时间x
  77. function upLevelx(){
  78. var href = window.location.href;
  79. if( href.indexOf("login")>0){
  80. return;
  81. }
  82. dpsx();
  83. //console.log("upup...");
  84. var ps = document.getElementsByClassName("ant-tabs-tabpane ant-tabs-tabpane-active")[0].getElementsByTagName("p");
  85. if(ps.length<4){
  86. return;
  87. }
  88. var elem;
  89. var title;
  90. for(var p=0; p<ps.length; p++) {
  91. if(ps[p].innerHTML.split(':')[0] == ' 经验') {
  92. elem = ps[p];
  93. title = elem.getAttribute("title");
  94. }
  95. }
  96. if(title){
  97. var all = title.split("/")[1];
  98. var now = title.split("/")[0];
  99. var xl = elem.nextSibling.innerText.split(":")[1];
  100. xl = xl.split("/")[0];
  101. var txt = "";
  102. if(xl>0) {
  103. var mins = (all-now)/xl;
  104. if(mins>60){
  105. mins = mins/60;
  106. txt += mins.toFixed(2)+"小时";
  107. } else {
  108. txt += mins.toFixed(2)+"分钟";
  109. }
  110. }
  111. document.getElementById("levelUp").innerHTML=txt;
  112. }
  113. }
  114. setInterval(upLevelx, 5000);//每分钟检查一次
  115. function getParams(data) { // GET参数格式化
  116. const keys = Object.keys(data).sort()
  117. let params = keys.reduce((rst, v) => rst += `${v}=${data[v]}&`, '').slice(0, -1)
  118. return params
  119. }
  120. async function postData(url = '', data = {}, method = 'POST') { // 接口请求封装
  121. let request = {
  122. method: method,
  123. headers: {
  124. 'Content-Type': 'application/json',
  125. 'token': localStorage.getItem('token')
  126. },
  127. body: JSON.stringify(data)
  128. }
  129. method === 'GET' && delete (request.body)
  130. let params = method === 'GET' ? '?' + getParams(data) : ''
  131. const response = await fetch(`http://119.91.99.233:8088/api/${url}${params}`, request);
  132. return response.json();
  133. }
  134. async function getGoodsNum(name) {
  135. const result = await postData('getGoods', {}, 'GET')
  136. .then(res => {
  137. console.log(res)
  138. let num = 0
  139. if (res.status === 200) {
  140. res.data.goodsList.forEach(item => { // 遍历物品
  141. if (item.name === name) num = item.count
  142. })
  143. }
  144. return num
  145. });
  146. return result
  147. }
  148. var hour1;
  149. var gold1;
  150. var stone1;
  151. var yp1 = 0;
  152. var zfy1 = 0;
  153. var hour2;
  154. var gold2
  155. var stone2;
  156. var yp2 = 0;
  157. var zfy2 = 0;
  158. var goldData;
  159. var stoneData;
  160. var ypData;
  161. var zfyData;
  162. var effObj = {};
  163. var roleName;
  164. var strData="<div>";
  165. async function getData(){
  166. //getEffData();
  167. var strData1 = '';
  168. var d = new Date();
  169. var nowTime = ('0' +d.getHours().toString()).slice(-2) + ':' + ('0' +d.getMinutes().toString()).slice(-2);
  170.  
  171. var elem = document.getElementsByClassName('ant-tabs-tabpane')[0].getElementsByTagName("p");
  172. roleName = document.getElementsByClassName('ant-card-head')[0].getElementsByClassName('ant-card-head-title')[0].innerHTML;
  173.  
  174. if(('0' +d.getMinutes().toString()).slice(-2) == '00') {
  175. if(!GM_getValue(roleName).gold1) {
  176. hour1 = ('0' +d.getHours().toString()).slice(-2);
  177.  
  178. for(var i=0; i<elem.length; i++) {
  179. if(elem[i].innerHTML.split(':')[0] == '金币') {
  180. gold1 = elem[i].innerHTML.split(':')[1];
  181. }
  182. if(elem[i].innerHTML.split(':')[0] == '灵石') {
  183. stone1 = elem[i].innerHTML.split(':')[1];
  184. }
  185. }
  186.  
  187. yp1 = await getGoodsNum('妖魄');
  188. effObj = GM_getValue(roleName);
  189. effObj['hour1'] = hour1;
  190. effObj['gold1'] = gold1;
  191. effObj['stone1'] = stone1;
  192. effObj['yp1'] = yp1;
  193. GM_setValue(roleName, effObj);
  194.  
  195. //GM_setValue('zfy1', zfy1);
  196. strData1 = "<span style='color:brown'>" + nowTime + "</span><br>记录当前数据<br>";
  197.  
  198. } else {
  199. hour2 = ('0' +d.getHours().toString()).slice(-2);
  200.  
  201. for(var p=0; p<elem.length; p++) {
  202. if(elem[p].innerHTML.split(':')[0] == '金币') {
  203. gold2 = elem[p].innerHTML.split(':')[1];
  204. }
  205. if(elem[p].innerHTML.split(':')[0] == '灵石') {
  206. stone2 = elem[p].innerHTML.split(':')[1];
  207. }
  208. }
  209.  
  210. yp2 = await getGoodsNum('妖魄');
  211. if(hour2 - GM_getValue(roleName).hour1 == 1 || hour2 - GM_getValue(roleName).hour1 == -23) {
  212. effObj = GM_getValue(roleName);
  213. goldData = gold2 - GM_getValue(roleName).gold1;
  214. stoneData = stone2 - GM_getValue(roleName).stone1;
  215. ypData = yp2 - GM_getValue(roleName).yp1;
  216. //zfyData = zfy2 - GM_getValue('zfy1');
  217. if(goldData < 0) {
  218. goldData = 0;
  219. effObj['gold1'] = gold2;
  220. GM_setValue(roleName, effObj);
  221. }
  222. if(stoneData < 0) {
  223. stoneData = 0;
  224. effObj['stone1'] = stone2;
  225. GM_setValue(roleName, effObj);
  226. }
  227.  
  228. if(ypData < 0) {
  229. ypData = 0;
  230. effObj['yp1'] = yp2;
  231. GM_setValue(roleName, effObj);
  232. }
  233. if(zfyData < 0) {
  234. //zfyData = 0;
  235. //GM_setValue('zfy1', zfy2);
  236. }
  237. /*strData1 += "<span style='color:brown'>" + nowTime + "</span><br>每小时金币 " + goldData +
  238. "<br>每小时灵石 " + stoneData + " / " + stone2 + " - " + GM_getValue('stone1') +
  239. "<br>每小时妖魄 " + ypData + " / " + yp2 + " - " + GM_getValue('yp1') +
  240. "<br>每小时祝福油 " + zfyData + " / " + zfy2 + " - " + GM_getValue('zfy1') + "<br>";*/
  241. strData1 += "<span style='color:brown'>" + nowTime + "</span><br>每小时金币 " + goldData +
  242. "<br>每小时灵石 " + stoneData + " / " + stone2 + " - " + GM_getValue(roleName).stone1 +
  243. "<br>每小时妖魄 " + ypData + " / " + yp2 + " - " + GM_getValue(roleName).yp1 + "<br>";
  244. effObj['hour1'] = hour2;
  245. effObj['gold1'] = gold2;
  246. effObj['stone1'] = stone2;
  247. effObj['yp1'] = yp2;
  248. GM_setValue(roleName, effObj);
  249. //GM_setValue('zfy1', zfy2);
  250.  
  251. } else {
  252. effObj = GM_getValue(roleName);
  253. effObj['hour1'] = hour2;
  254. effObj['gold1'] = gold2;
  255. effObj['stone1'] = stone2;
  256. effObj['yp1'] = yp2;
  257. GM_setValue(roleName, effObj);
  258. //GM_setValue('zfy1', zfy2);
  259. strData1 += "<span style='color:brown'>" + nowTime + "</span><br>记录当前数据<br>";
  260. }
  261. }
  262. strData = strData1
  263. strData +="</div>";
  264. $("#ixxlog").append(strData);
  265. var ele = document.getElementById('ixxlog');
  266. //ele.scrollTop=500
  267. //ele.scrollTop = ele.scrollHeight;
  268. ele.scrollTop = ele.scrollHeight - ele.clientHeight;
  269.  
  270. }
  271. }
  272.  
  273. var goldDaily;
  274. var stoneDaily;
  275. var ypDaily;
  276. var zfyDaily;
  277. var strDailyData="<div>";
  278. async function getDailyData(){
  279. var strDailyData1 = '';
  280. var d = new Date();
  281. var nowTime = ('0' +d.getHours().toString()).slice(-2) + ':' + ('0' +d.getMinutes().toString()).slice(-2);
  282. var elem = document.getElementsByClassName('ant-tabs-tabpane')[0].getElementsByTagName("p");
  283. roleName = document.getElementsByClassName('ant-card-head')[0].getElementsByClassName('ant-card-head-title')[0].innerHTML;
  284. if(('0' +d.getHours().toString()).slice(-2) == '21' && ('0' +d.getMinutes().toString()).slice(-2) == '00') {
  285. if(!GM_getValue(roleName).goldDaily) {
  286. effObj = GM_getValue(roleName);
  287. for(var i=0; i<elem.length; i++) {
  288. if(elem[i].innerHTML.split(':')[0] == '金币') {
  289. goldDaily = elem[i].innerHTML.split(':')[1];
  290. }
  291. if(elem[i].innerHTML.split(':')[0] == '灵石') {
  292. stoneDaily = elem[i].innerHTML.split(':')[1];
  293. }
  294. }
  295.  
  296. ypDaily = yp1;
  297. effObj['goldDaily'] = goldDaily;
  298. effObj['stoneDaily'] = stoneDaily;
  299. effObj['ypDaily'] = ypDaily;
  300. GM_setValue(roleName, effObj);
  301. //GM_setValue('zfyDaily', zfyDaily);
  302. strDailyData1 = "<span style='color:orange'>" + nowTime + "</span><br>记录当日数据<br>";
  303.  
  304. } else {
  305. effObj = GM_getValue(roleName);
  306. for(var p=0; p<elem.length; p++) {
  307. if(elem[p].innerHTML.split(':')[0] == '金币') {
  308. goldDaily = elem[p].innerHTML.split(':')[1];
  309. }
  310. if(elem[p].innerHTML.split(':')[0] == '灵石') {
  311. stoneDaily = elem[p].innerHTML.split(':')[1];
  312. }
  313. }
  314.  
  315. ypDaily = yp2;
  316. goldData = goldDaily - GM_getValue(roleName).goldDaily;
  317. stoneData = stoneDaily - GM_getValue(roleName).stoneDaily;
  318. ypData = ypDaily - GM_getValue(roleName).ypDaily;
  319. //zfyData = zfyDaily - GM_getValue('zfyDaily');
  320.  
  321. /*strDailyData1 += "<span style='color:orange'>" + nowTime + "</span><br>每日金币 " + goldData +
  322. "<br>每日灵石 "+ stoneData + " / "+ stoneDaily + " - " + GM_getValue('stoneDaily') +
  323. "<br>每日妖魄 "+ ypData + " / "+ ypDaily + " - " + GM_getValue('ypDaily') +
  324. "<br>每日祝福油 "+ zfyData + " / "+ zfyDaily + " - " + GM_getValue('zfyDaily') + "<br>";*/
  325. strDailyData1 += "<span style='color:orange'>" + nowTime + "</span><br>每日金币 " + goldData +
  326. "<br>每日灵石 "+ stoneData + " / "+ stoneDaily + " - " + GM_getValue(roleName).stoneDaily +
  327. "<br>每日妖魄 "+ ypData + " / "+ ypDaily + " - " + GM_getValue(roleName).ypDaily + "<br>";
  328.  
  329. effObj['goldDaily'] = goldDaily;
  330. effObj['stoneDaily'] = stoneDaily;
  331. effObj['ypDaily'] = ypDaily;
  332. GM_setValue(roleName, effObj);
  333. //GM_setValue('zfyDaily', zfyDaily);
  334. }
  335. strDailyData = strDailyData1;
  336. strDailyData +="</div>";
  337. $("#ixxlog").append(strDailyData);
  338. var ele = document.getElementById('ixxlog');
  339. ele.scrollTop = ele.scrollHeight - ele.clientHeight;
  340. }
  341. }
  342.  
  343. // 计算效率
  344. var goldEff;
  345. var stoneEff;
  346. var hourEff;
  347. var minEff;
  348. var leave1;
  349. var leave2;
  350. var ft;
  351. var firstTime;
  352. var firstGold;
  353. var firstStone;
  354. var goldElt;
  355. var stoneElt;
  356. var resetAll = document.createElement('a');
  357. var goldTag = document.createElement('p');
  358. var stoneTag = document.createElement('p');
  359. var timeTag = document.createElement('p');
  360. function getEffDataInit() {
  361. var href = window.location.href;
  362. if( href.indexOf("login")>0){
  363. setTimeout(getEffDataInit, 1500);
  364. return;
  365. }
  366. if(!isShowEff) {
  367. return;
  368. }
  369. roleName = document.getElementsByClassName('ant-card-head')[0].getElementsByClassName('ant-card-head-title')[0].innerHTML;
  370. if(!GM_getValue(roleName)) {
  371. effObj['roleName'] = roleName;
  372. GM_setValue(roleName, effObj);
  373. }
  374. var elt = document.getElementsByClassName('ant-tabs-tabpane')[0].getElementsByTagName("p");
  375. firstTime = Date.parse(new Date());
  376. effObj = GM_getValue(roleName);
  377. for(var i=0; i<elt.length; i++) {
  378. if(elt[i].innerHTML.split(':')[0] == '金币') {
  379. goldElt = elt[i];
  380. //console.log(goldElt);
  381. firstGold = elt[i].innerHTML.split(':')[1];
  382. }
  383. if(elt[i].innerHTML.split(':')[0] == '灵石') {
  384. stoneElt = elt[i];
  385. //console.log(goldElt);
  386. firstStone = elt[i].innerHTML.split(':')[1];
  387. }
  388. }
  389. resetAll.href = '#';
  390. //resetAll.onclick = 'resetAllData()'
  391. resetAll.onclick = function(){
  392. resetAllData()
  393. };
  394. resetAll.innerText = ' 重置All';
  395. goldTag.innerText = ' 效率:0/小时';
  396. stoneTag.innerText = ' 效率:0/小时';
  397. timeTag.innerText = ' 时长:0小时 0分钟';
  398. timeTag.title = '挂机时长';
  399. elt[0].append(resetAll);
  400. goldElt.nextSibling.parentNode.insertBefore(goldTag, goldElt.nextSibling);
  401. stoneElt.nextSibling.parentNode.insertBefore(stoneTag, stoneElt.nextSibling);
  402. elt[0].nextSibling.parentNode.insertBefore(timeTag, elt[0].nextSibling);
  403.  
  404. effObj['ft'] = firstTime;
  405. effObj['firstTime'] = firstTime;
  406. effObj['firstGold'] = firstGold;
  407. effObj['firstStone'] = firstStone;
  408. GM_setValue(roleName, effObj);
  409. console.log(effObj)
  410. //console.log(firstGold + firstStone)
  411. }
  412. window.setTimeout(getEffDataInit, 2000);
  413.  
  414. function resetAllData() {
  415. var newGoldEffTag;
  416. var newStoneTag;
  417. var nowTime = Date.parse(new Date());
  418. roleName = document.getElementsByClassName('ant-card-head')[0].getElementsByClassName('ant-card-head-title')[0].innerHTML;
  419. var elt = document.getElementsByClassName('ant-tabs-tabpane')[0].getElementsByTagName("p");
  420. effObj = GM_getValue(roleName);
  421. for(var h =0; h<elt.length; h++) {
  422. if(elt[h].innerHTML.split(':')[0] == '金币') {
  423. newGoldEffTag = elt[h].nextSibling;
  424. firstGold = elt[h].innerHTML.split(':')[1];
  425. }
  426. if(elt[h].innerHTML.split(':')[0] == '灵石') {
  427. newStoneTag = elt[h].nextSibling;
  428. firstStone = elt[h].innerHTML.split(':')[1];
  429. }
  430. }
  431. newGoldEffTag.innerHTML = ' 效率:0/小时';
  432. newStoneTag.innerHTML = ' 效率:0/小时';
  433. console.log('ok')
  434. for(var i=0; i<elt.length; i++) {
  435. if(elt[i].innerHTML.split(':')[0] == ' 经验') {
  436. elt[i].nextSibling.childNodes[1].click();
  437. }
  438. }
  439.  
  440. effObj['firstTime'] = nowTime;
  441. effObj['firstGold'] = firstGold;
  442. effObj['firstStone'] = firstStone;
  443. GM_setValue(roleName, effObj);
  444. clearInterval(effData);
  445. effData = setInterval(getEffData, 60000);
  446. }
  447.  
  448.  
  449. function getEffData(){
  450. var href = window.location.href;
  451. if( href.indexOf("login")>0){
  452. return;
  453. }
  454. if(!isShowEff) {
  455. return;
  456. }
  457. roleName = document.getElementsByClassName('ant-card-head')[0].getElementsByClassName('ant-card-head-title')[0].innerHTML;
  458. getData();
  459. window.setTimeout(function(){
  460. getDailyData();
  461. }, 500);
  462.  
  463. effObj = GM_getValue(roleName);
  464. var elt = document.getElementsByClassName('ant-tabs-tabpane')[0].getElementsByTagName("p");
  465. var nowTime = Date.parse(new Date());
  466. var nowGold;
  467. var nowStone;
  468. var newGoldEffTag;
  469. var newStoneTag;
  470. var newTimeTag;
  471. for(var j=0; j<elt.length; j++) {
  472. if(elt[j].innerHTML.split(':')[0] == '金币') {
  473. newGoldEffTag = elt[j].nextSibling;
  474. nowGold = elt[j].innerHTML.split(':')[1];
  475. }
  476. if(elt[j].innerHTML.split(':')[0] == '灵石') {
  477. newStoneTag = elt[j].nextSibling;
  478. nowStone = elt[j].innerHTML.split(':')[1];
  479. }
  480. }
  481.  
  482. goldEff = parseInt((nowGold - GM_getValue(roleName).firstGold) / ((nowTime - GM_getValue(roleName).firstTime) / (3600 * 1000)));
  483. //console.log(goldEff);
  484. stoneEff = parseInt((nowStone - GM_getValue(roleName).firstStone) / ((nowTime - GM_getValue(roleName).firstTime) / (3600 * 1000)));
  485. //console.log(stoneEff);
  486.  
  487. if(goldEff < 0) {
  488. goldEff = 0;
  489. effObj['firstTime'] = nowTime;
  490. effObj['firstGold'] = nowGold;
  491. effObj['firstStone'] = nowStone;
  492. GM_setValue(roleName, effObj);
  493. }
  494. if(stoneEff < 0) {
  495. stoneEff = 0;
  496. effObj['firstTime'] = nowTime;
  497. effObj['firstGold'] = nowGold;
  498. effObj['firstStone'] = nowStone;
  499. GM_setValue(roleName, effObj);
  500. }
  501.  
  502. leave1 = (nowTime - GM_getValue(roleName).ft) % (24 * 3600 * 1000);
  503. hourEff = Math.floor(leave1 / (3600 * 1000));
  504. leave2 = leave1 % (3600 * 1000);
  505. minEff = Math.floor(leave2 / (60 * 1000)) + 1;
  506. //console.log(minEff)
  507. newGoldEffTag.innerHTML = ' 效率:' + goldEff + '/小时';
  508. newStoneTag.innerHTML = ' 效率:' + stoneEff + '/小时';
  509. elt[0].nextSibling.innerHTML = ' 时长:' + hourEff + '小时 ' + minEff + '分钟';
  510.  
  511. }
  512. var effData = setInterval(getEffData, 60000); //每分钟启动一次

QingJ © 2025

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