您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add NPC attack time to the news ticker
当前为
// ==UserScript== // @name Attack NPC Timing // @namespace npc.timing // @version v0.0.3 // @description Add NPC attack time to the news ticker // @author IceBlueFire // @license MIT // @match https://www.torn.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=torn.com // @grant unsafeWindow // @grant GM_xmlhttpRequest // @require https://code.jquery.com/jquery-1.8.2.min.js // @connect api.lzpt.io // ==/UserScript== const lzpt = getAttackTimes(); const color = "#8abeef"; const { fetch: originalFetch } = unsafeWindow; unsafeWindow.fetch = async (...args) => { var [resource, config] = args; var response = await originalFetch(resource, config); const json = () => response.clone().json() .then((data) => { data = { ...data }; if(response.url.indexOf('?sid=newsTicker') != -1) { lzpt.then(function(result) { var attackOrder = ''; $.each(result.order, function(key, value) { if(result.npcs[value].next){ attackOrder += result.npcs[value].name+', '; } }); attackOrder = attackOrder.slice(0, -2); attackOrder += '.'; let attackItem = {ID: 0, headline: '<span style="color:'+color+'; font-weight: bold;">NPC attack set for '+utcformat(result.time.clear)+'. Order is: '+attackOrder+'</span>', countdown: true, endtime: result.time.clear, link: 'loader.php?sid=attack&user2ID='+result.order[0], isGlobal: false, type: 'generalMessage'}; data.headlines.unshift(attackItem); }, function(err) { console.log(err); // Error: "It broke" }); } return data }) response.json = json; response.text = async () =>JSON.stringify(await json()); return response; }; function getTime(timestamp) { // Create a new JavaScript Date object based on the timestamp // multiplied by 1000 so that the argument is in milliseconds, not seconds var date = new Date(timestamp * 1000); // Hours part from the timestamp var hours = date.getHours(); // Minutes part from the timestamp var minutes = "0" + date.getMinutes(); // Seconds part from the timestamp var seconds = "0" + date.getSeconds(); // Will display time in 10:30:23 format var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2); return formattedTime; } function utcformat(d){ d= new Date(d * 1000); var tail= ' TCT', D= [d.getUTCFullYear(), d.getUTCMonth()+1, d.getUTCDate()], T= [d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds()]; /* 12 hour format */ /* if(+T[0]> 12){ T[0]-= 12; tail= 'PM '+tail; } else tail= 'AM '+tail; */ var i= 3; while(i){ --i; if(D[i]<10) D[i]= '0'+D[i]; if(T[i]<10) T[i]= '0'+T[i]; } return T.join(':')+ tail; } async function getAttackTimes() { return new Promise(resolve => { const request_url = `https://api.lzpt.io/loot`; GM_xmlhttpRequest ({ method: "GET", url: request_url, headers: { "Content-Type": "application/json" }, onload: response => { try { const data = JSON.parse(response.responseText); if(!data) { console.log('No response from Loot Rangers'); } else { return resolve(data) } } catch (e) { console.error(e); } }, onerror: (e) => { console.error(e); } }) }); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址