您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
打小抄支持网页版和微端,微端文件请加群 830137048
// ==UserScript== // @name 三国杀worker // @namespace sgsworker // @version 3.2.1 // @author 小麦 孤独尊 // @description 打小抄支持网页版和微端,微端文件请加群 830137048 // @icon https://i0.hdslb.com/bfs/new_dyn/17ec41a0ca79633b77399065ab80da3f2138912.png // @match *://game.4399iw2.com/yxsgs/* // @match *://my.4399.com/yxsgs/* // @match *://*.sanguosha.com/* // @match *://web.kuaiwan.com/kwsgsn/* // @match *://wan.baidu.com/microend?gameId=19793595/* // @match *://www.7k7k.com/special/sgs/?* // @match *://playgame.iqiyi.com/login/iframe_page_web/top?game_id=146 // @grant none // @run-at document-start // @license MIT // ==/UserScript== function testCanImageData() { try { cc = new ImageData(20,20), canUseImageData = !0 } catch (t) {} } function loadImage(t) { PNG.load(t.url, pngLoaded) } function loadImage2(t) { var e, a = t.url; console.debug(t.url); e = new XMLHttpRequest, e.open("GET", a, !0), e.responseType = "arraybuffer", e.onload = function() { var t, i, r = e.response || e.mozResponseArrayBuffer; if (t = new Uint8Array(r), self.createImageBitmap) return void doCreateImageBitmap(t, a); try { startTime = getTimeNow(), i = new PNG(t), i.url = a, i.startTime = startTime, i.decodeEndTime = getTimeNow(), i.decodeTime = i.decodeEndTime - startTime, pngLoaded(i) } catch (s) { pngFail(a, "parse fail" + s.toString() + ":ya") } } , e.onerror = function(t) { pngFail(a, "loadFail") } , e.send(null) } function doCreateImageBitmap(t, e) { try { var a = getTimeNow(); t = new self.Blob([t],{ type: "image/png" }), self.createImageBitmap(t).then(function(t) { var i = {}; i.url = e, i.imageBitmap = t, i.dataType = "imageBitmap", i.startTime = a, i.decodeTime = getTimeNow() - a, i.sendTime = getTimeNow(), console.log("Decode By createImageBitmap," + i.decodeTime, e), i.type = "Image", postMessage(i, [i.imageBitmap]) })["catch"](function(t) { showMsgToMain("cache:" + t), pngFail(e, "parse fail" + t + ":ya") }) } catch (i) { pngFail(e, "parse fail" + i.toString() + ":ya") } } function getTimeNow() { return (new Date).getTime() } function pngFail(t, e) { var a = {}; a.url = t, a.imagedata = null, a.type = "Image", a.msg = e, console.log(e), postMessage(a) } function showMsgToMain(t) { var e = {}; e.type = "Msg", e.msg = t, postMessage(e) } function pngLoaded(t) { var e = {}; e.url = t.url, canUseImageData ? (e.imagedata = t.getImageData(), e.dataType = "imagedata") : (e.buffer = t.getImageDataBuffer(), e.dataType = "buffer"), e.width = t.width, e.height = t.height, e.decodeTime = getTimeNow() - t.startTime, console.log("Decode By PNG.js," + (getTimeNow() - t.startTime), t.url), e.type = "Image", canUseImageData ? postMessage(e, [e.imagedata.data.buffer]) : postMessage(e, [e.buffer.buffer]) } var DecodeStream = function() { function t() { this.pos = 0, this.bufferLength = 0, this.eof = !1, this.buffer = null } return t.prototype = { ensureBuffer: function(t) { var e = this.buffer , a = e ? e.byteLength : 0; if (a > t) return e; for (var i = 512; t > i; ) i <<= 1; for (var r = new Uint8Array(i), s = 0; a > s; ++s) r[s] = e[s]; return this.buffer = r }, getByte: function() { for (var t = this.pos; this.bufferLength <= t; ) { if (this.eof) return null; this.readBlock() } return this.buffer[this.pos++] }, getBytes: function(t) { var e = this.pos; if (t) { this.ensureBuffer(e + t); for (var a = e + t; !this.eof && this.bufferLength < a; ) this.readBlock(); var i = this.bufferLength; a > i && (a = i) } else { for (; !this.eof; ) this.readBlock(); var a = this.bufferLength } return this.pos = a, this.buffer.subarray(e, a) }, lookChar: function() { for (var t = this.pos; this.bufferLength <= t; ) { if (this.eof) return null; this.readBlock() } return String.fromCharCode(this.buffer[this.pos]) }, getChar: function() { for (var t = this.pos; this.bufferLength <= t; ) { if (this.eof) return null; this.readBlock() } return String.fromCharCode(this.buffer[this.pos++]) }, makeSubStream: function(t, e, a) { for (var i = t + e; this.bufferLength <= i && !this.eof; ) this.readBlock(); return new Stream(this.buffer,t,e,a) }, skip: function(t) { t || (t = 1), this.pos += t }, reset: function() { this.pos = 0 } }, t }() , FlateStream = function() { function t(t) { throw new Error(t) } function e(e) { var a = 0 , i = e[a++] , r = e[a++]; -1 != i && -1 != r || t("Invalid header in flate stream"), 8 != (15 & i) && t("Unknown compression method in flate stream"), ((i << 8) + r) % 31 != 0 && t("Bad FCHECK in flate stream"), 32 & r && t("FDICT bit set in flate stream"), this.bytes = e, this.bytesPos = a, this.codeSize = 0, this.codeBuf = 0, DecodeStream.call(this) } var a = new Uint32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]) , i = new Uint32Array([3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, 258]) , r = new Uint32Array([1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545]) , s = [new Uint32Array([459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079]), 9] , n = [new Uint32Array([327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0]), 5]; return e.prototype = Object.create(DecodeStream.prototype), e.prototype.getBits = function(e) { for (var a, i = this.codeSize, r = this.codeBuf, s = this.bytes, n = this.bytesPos; e > i; ) "undefined" == typeof (a = s[n++]) && t("Bad encoding in flate stream"), r |= a << i, i += 8; return a = r & (1 << e) - 1, this.codeBuf = r >> e, this.codeSize = i -= e, this.bytesPos = n, a } , e.prototype.getCode = function(e) { for (var a = e[0], i = e[1], r = this.codeSize, s = this.codeBuf, n = this.bytes, o = this.bytesPos; i > r; ) { var h; "undefined" == typeof (h = n[o++]) && t("Bad encoding in flate stream"), s |= h << r, r += 8 } var f = a[s & (1 << i) - 1] , d = f >> 16 , c = 65535 & f; return (0 == r || d > r || 0 == d) && t("Bad encoding in flate stream"), this.codeBuf = s >> d, this.codeSize = r - d, this.bytesPos = o, c } , e.prototype.generateHuffmanTable = function(t) { for (var e = t.length, a = 0, i = 0; e > i; ++i) t[i] > a && (a = t[i]); for (var r = 1 << a, s = new Uint32Array(r), n = 1, o = 0, h = 2; a >= n; ++n, o <<= 1, h <<= 1) for (var f = 0; e > f; ++f) if (t[f] == n) { for (var d = 0, c = o, i = 0; n > i; ++i) d = d << 1 | 1 & c, c >>= 1; for (var i = d; r > i; i += h) s[i] = n << 16 | f; ++o } return [s, a] } , e.prototype.readBlock = function() { function e(t, e, a, i, r) { for (var s = t.getBits(a) + i; s-- > 0; ) e[I++] = r } var o = this.getBits(3); if (1 & o && (this.eof = !0), o >>= 1, 0 == o) { var h, f = this.bytes, d = this.bytesPos; "undefined" == typeof (h = f[d++]) && t("Bad block header in flate stream"); var c = h; "undefined" == typeof (h = f[d++]) && t("Bad block header in flate stream"), c |= h << 8, "undefined" == typeof (h = f[d++]) && t("Bad block header in flate stream"); var l = h; "undefined" == typeof (h = f[d++]) && t("Bad block header in flate stream"), l |= h << 8, l != (65535 & ~c) && t("Bad uncompressed block length in flate stream"), this.codeBuf = 0, this.codeSize = 0; var u = this.bufferLength , p = this.ensureBuffer(u + c) , g = u + c; this.bufferLength = g; for (var m = u; g > m; ++m) { if ("undefined" == typeof (h = f[d++])) { this.eof = !0; break } p[m] = h } return void (this.bytesPos = d) } var y, v; if (1 == o) y = s, v = n; else if (2 == o) { for (var b = this.getBits(5) + 257, w = this.getBits(5) + 1, B = this.getBits(4) + 4, T = Array(a.length), I = 0; B > I; ) T[a[I++]] = this.getBits(3); for (var U = this.generateHuffmanTable(T), D = 0, I = 0, k = b + w, A = new Array(k); k > I; ) { var C = this.getCode(U); 16 == C ? e(this, A, 2, 3, D) : 17 == C ? e(this, A, 3, 3, D = 0) : 18 == C ? e(this, A, 7, 11, D = 0) : A[I++] = D = C } y = this.generateHuffmanTable(A.slice(0, b)), v = this.generateHuffmanTable(A.slice(b, k)) } else t("Unknown block type in flate stream"); for (var p = this.buffer, S = p ? p.length : 0, P = this.bufferLength; ; ) { var M = this.getCode(y); if (256 > M) P + 1 >= S && (p = this.ensureBuffer(P + 1), S = p.length), p[P++] = M; else { if (256 == M) return void (this.bufferLength = P); M -= 257, M = i[M]; var L = M >> 16; L > 0 && (L = this.getBits(L)); var D = (65535 & M) + L; M = this.getCode(v), M = r[M], L = M >> 16, L > 0 && (L = this.getBits(L)); var x = (65535 & M) + L; P + D >= S && (p = this.ensureBuffer(P + D), S = p.length); for (var N = 0; D > N; ++N, ++P) p[P] = p[P - x] } } } , e }(); (function() { var t; t = function() { function t(t) { var e, a, i, r, s, n, o, h, f, d, c, l, u, p; for (this.data = t, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, s = null; ; ) { switch (e = this.readUInt32(), f = function() { var t, e; for (e = [], n = t = 0; 4 > t; n = ++t) e.push(String.fromCharCode(this.data[this.pos++])); return e } .call(this).join("")) { case "IHDR": if (this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++], 0 != this.interlaceMethod) throw new Error("Invalid interlaceMethod: " + this.interlaceMethod); break; case "acTL": this.animation = { numFrames: this.readUInt32(), numPlays: this.readUInt32() || 1 / 0, frames: [] }; break; case "PLTE": this.palette = this.read(e); break; case "fcTL": s && this.animation.frames.push(s), this.pos += 4, s = { width: this.readUInt32(), height: this.readUInt32(), xOffset: this.readUInt32(), yOffset: this.readUInt32() }, r = this.readUInt16(), i = this.readUInt16() || 100, s.delay = 1e3 * r / i, s.disposeOp = this.data[this.pos++], s.blendOp = this.data[this.pos++], s.data = []; break; case "IDAT": case "fdAT": for ("fdAT" === f && (this.pos += 4, e -= 4), t = (null != s ? s.data : void 0) || this.imgData, n = l = 0; e >= 0 ? e > l : l > e; n = e >= 0 ? ++l : --l) t.push(this.data[this.pos++]); break; case "tRNS": switch (this.transparency = {}, this.colorType) { case 3: if (this.transparency.indexed = this.read(e), d = 255 - this.transparency.indexed.length, d > 0) for (n = u = 0; d >= 0 ? d > u : u > d; n = d >= 0 ? ++u : --u) this.transparency.indexed.push(255); break; case 0: this.transparency.grayscale = this.read(e)[0]; break; case 2: this.transparency.rgb = this.read(e) } break; case "tEXt": c = this.read(e), o = c.indexOf(0), h = String.fromCharCode.apply(String, c.slice(0, o)), this.text[h] = String.fromCharCode.apply(String, c.slice(o + 1)); break; case "IEND": return s && this.animation.frames.push(s), this.colors = function() { switch (this.colorType) { case 0: case 3: case 4: return 1; case 2: case 6: return 3 } } .call(this), this.hasAlphaChannel = 4 === (p = this.colorType) || 6 === p, a = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * a, this.colorSpace = function() { switch (this.colors) { case 1: return "DeviceGray"; case 3: return "DeviceRGB" } } .call(this), void (this.imgData = new Uint8Array(this.imgData)); default: this.pos += e } if (this.pos += 4, this.pos > this.data.length) throw new Error("Incomplete or corrupt PNG file") } } var e, a, i, r, s, n; return t.load = function(e, a) { var i; return "function" == typeof canvas && (a = canvas), i = new XMLHttpRequest, i.open("GET", e, !0), i.responseType = "arraybuffer", i.onload = function() { var r, s; return r = new Uint8Array(i.response || i.mozResponseArrayBuffer), s = new t(r), s.url = e, "function" == typeof a ? a(s) : void 0 } , i.send(null) } , r = 0, i = 1, s = 2, a = 0, e = 1, t.prototype.read = function(t) { var e, a, i; for (i = [], e = a = 0; t >= 0 ? t > a : a > t; e = t >= 0 ? ++a : --a) i.push(this.data[this.pos++]); return i } , t.prototype.readUInt32 = function() { var t, e, a, i; return t = this.data[this.pos++] << 24, e = this.data[this.pos++] << 16, a = this.data[this.pos++] << 8, i = this.data[this.pos++], t | e | a | i } , t.prototype.readUInt16 = function() { var t, e; return t = this.data[this.pos++] << 8, e = this.data[this.pos++], t | e } , t.prototype.decodePixels = function(t) { var e, a, i, r, s, n, o, h, f, d, c, l, u, p, g, m, y, v, b, w, B, T, I; if (null == t && (t = this.imgData), 0 === t.length) return new Uint8Array(0); for (t = new FlateStream(t), t = t.getBytes(), l = this.pixelBitlength / 8, m = l * this.width, u = new Uint8Array(m * this.height), n = t.length, g = 0, p = 0, a = 0; n > p; ) { switch (t[p++]) { case 0: for (r = b = 0; m > b; r = b += 1) u[a++] = t[p++]; break; case 1: for (r = w = 0; m > w; r = w += 1) e = t[p++], s = l > r ? 0 : u[a - l], u[a++] = (e + s) % 256; break; case 2: for (r = B = 0; m > B; r = B += 1) e = t[p++], i = (r - r % l) / l, y = g && u[(g - 1) * m + i * l + r % l], u[a++] = (y + e) % 256; break; case 3: for (r = T = 0; m > T; r = T += 1) e = t[p++], i = (r - r % l) / l, s = l > r ? 0 : u[a - l], y = g && u[(g - 1) * m + i * l + r % l], u[a++] = (e + Math.floor((s + y) / 2)) % 256; break; case 4: for (r = I = 0; m > I; r = I += 1) e = t[p++], i = (r - r % l) / l, s = l > r ? 0 : u[a - l], 0 === g ? y = v = 0 : (y = u[(g - 1) * m + i * l + r % l], v = i && u[(g - 1) * m + (i - 1) * l + r % l]), o = s + y - v, h = Math.abs(o - s), d = Math.abs(o - y), c = Math.abs(o - v), f = d >= h && c >= h ? s : c >= d ? y : v, u[a++] = (e + f) % 256; break; default: throw new Error("Invalid filter algorithm: " + t[p - 1]) } g++ } return u } , t.prototype.decodePalette = function() { var t, e, a, i, r, s, n, o, h, f; i = this.palette, n = this.transparency.indexed || []; var d; for (d = 4 * i.length / 3, s = new Uint8Array(d), r = 0, a = i.length, t = 0, e = o = 0, h = i.length; h > o; e = o += 3) s[r++] = i[e], s[r++] = i[e + 1], s[r++] = i[e + 2], s[r++] = null != (f = n[t++]) ? f : 255; return s } , t.prototype.getImageData = function() { var t = new self.ImageData(this.width,this.height); return this.copyToImageData(t, this.decodePixels()), t } , t.prototype.getImageDataBuffer = function() { var t; return t = self.Uint8ClampedArray ? new self.Uint8ClampedArray(this.width * this.height * 4) : new self.Uint8Array(this.width * this.height * 4), this.copyToImageData(t, this.decodePixels()), t } , t.prototype.copyToImageData = function(t, e) { var a, i, r, s, n, o, h, f, d, c, l; if (i = this.colors, d = null, a = this.hasAlphaChannel, this.palette.length && (d = null != (l = this._decodedPalette) ? l : this._decodedPalette = this.decodePalette(), i = 4, a = !0), r = t.data || t, f = r.length, n = d || e, s = o = 0, 1 === i) for (; f > s; ) h = d ? 4 * e[s / 4] : o, c = n[h++], r[s++] = c, r[s++] = c, r[s++] = c, r[s++] = a ? n[h++] : 255, o = h; else for (; f > s; ) h = d ? 4 * e[s / 4] : o, r[s++] = n[h++], r[s++] = n[h++], r[s++] = n[h++], r[s++] = a ? n[h++] : 255, o = h } , t.prototype.decode = function() { var t; return t = new Uint8Array(this.width * this.height * 4), this.copyToImageData(t, this.decodePixels()), t } , t.prototype.decodeFrames = function(t) { var e, a, i, r, s, o, h, f; if (this.animation) { for (h = this.animation.frames, f = [], a = s = 0, o = h.length; o > s; a = ++s) e = h[a], i = t.createImageData(e.width, e.height), r = this.decodePixels(new Uint8Array(e.data)), this.copyToImageData(i, r), e.imageData = i, f.push(e.image = n(i)); return f } } , t }(), this.PNG = t } ).call(this), onmessage = function(t) { var e = t.data; switch (e.type) { case "load": loadImage2(e) } } ; var canUseImageData = !1; testCanImageData();