您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Imported to Greasy Fork for a privated TornPDA edit of the racing enhancement script
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/510149/1486318/lugburz%27%20Torn%20Scripts%20library.js
// ==UserScript== // @name Torn: Scripts library // @namespace lugburz.lib // @version 0.1.5 // @description Library of functions used in my Torn scripts. // @author Lugburz // @exclude * // @grant none // ==/UserScript== function ajax(callback) { $(document).ajaxComplete((event, xhr, settings) => { if (xhr.readyState > 3 && xhr.status == 200) { let url = settings.url; if (url.indexOf("torn.com/") < 0) url = "torn.com" + (url.startsWith("/") ? "" : "/") + url; const page = url.substring(url.indexOf("torn.com/") + "torn.com/".length, url.indexOf(".php")); callback(page, xhr, settings); } }); } function pad(num, size) { return ('000000000' + num).substr(-size); } function formatTime(date) { return pad(date.getUTCHours(), 2) + ':' + pad(date.getUTCMinutes(), 2) + ':' + pad(date.getUTCSeconds(), 2); } function formatTimeMsec(msec, alwaysShowHours = false) { const hours = Math.floor((msec % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((msec % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((msec % (1000 * 60)) / 1000); const mseconds = Math.floor(msec % 1000); return (alwaysShowHours ? pad(hours, 2) + ":" : (hours > 0 ? hours + ":" : '')) + (hours > 0 || minutes > 0 ? pad(minutes, 2) + ":" : '') + pad(seconds, 2) + "." + pad(mseconds, 3); } function formatTimeSecWithLetters(msec) { const hours = Math.floor((msec % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((msec % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((msec % (1000 * 60)) / 1000); return (hours > 0 ? hours + "h " : '') + (hours > 0 || minutes > 0 ? minutes + "min " : '') + seconds + "s"; } function decode64(input) { var output = ''; var chr1, chr2, chr3 = ''; var enc1, enc2, enc3, enc4 = ''; var i = 0; var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; var base64test = /[^A-Za-z0-9\+\/\=]/g; if (base64test.exec(input)) { console.log('There were invalid base64 characters in the input text.\n' + 'Valid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\n' + 'Expect errors in decoding.'); } input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); do { enc1 = keyStr.indexOf(input.charAt(i++)); enc2 = keyStr.indexOf(input.charAt(i++)); enc3 = keyStr.indexOf(input.charAt(i++)); enc4 = keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } chr1 = chr2 = chr3 = ''; enc1 = enc2 = enc3 = enc4 = ''; } while (i < input.length); return unescape(output); }