您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Minimap for digdig.io
- // ==UserScript==
- // @name DigDig.IO Minimap
- // @namespace http://tampermonkey.net/
- // @version 0.0.5
- // @description Minimap for digdig.io
- // @author Zertalious (Zert)
- // @match *://digdig.io/*
- // @icon https://www.google.com/s2/favicons?domain=digdig.io
- // @require https://cdn.jsdelivr.net/gh/Qwokka/WAIL@9ed21abc43045e19f9b3756de109a6e361fb9292/wail.js
- // ==/UserScript==
- const _instantiateStreaming = WebAssembly.instantiateStreaming;
- WebAssembly.instantiateStreaming = function () {
- return _instantiateStreaming( new Response() );
- }
- const _instantiate = WebAssembly.instantiate;
- WebAssembly.instantiate = function ( buffer, imports ) {
- const array = new Uint8Array( buffer );
- find( array, [
- OP_SELECT,
- OP_F64_PROMOTE_F32,
- OP_TEE_LOCAL, - 1,
- OP_GET_LOCAL, - 1,
- OP_F64_MUL,
- OP_F64_ADD,
- OP_F64_GE,
- OP_BR_IF, 0
- ], function ( start, end ) {
- array[ end - 1 ] = OP_DROP;
- array[ end ] = OP_NOP;
- } );
- return _instantiate( buffer, imports );
- }
- function find( array, search, callback ) {
- main: for ( let i = 0; i < array.length; i ++ ) {
- for ( let j = 0; j < search.length; j ++ ) {
- if ( search[ j ] !== - 1 && array[ i + j ] !== search[ j ] ) {
- continue main;
- }
- }
- callback( i, i + search.length - 1 );
- }
- }
- function Float32ToArray( x ) {
- return new Uint8Array( new Float32Array( [ x ] ).buffer );
- }
- function Float64ToArray( x ) {
- return new Uint8Array( new Float64Array( [ x ] ).buffer );
- }
- const CTX = CanvasRenderingContext2D.prototype;
- let temp;
- CTX.arc = new Proxy( CTX.arc, {
- apply( target, ctx, args ) {
- if ( [ 25, 28, 3, 50, 9 ].indexOf( args[ 2 ] ) === - 1 && ctx.fillStyle === '#222222' ) {
- temp = args;
- }
- return Reflect.apply( ...arguments );
- }
- } );
- let offsetY = window.innerHeight;
- CTX.fill = new Proxy( CTX.fill, {
- apply( target, ctx, args ) {
- Reflect.apply( ...arguments );
- if ( temp ) {
- const [ x, y, r ] = temp;
- temp = null;
- offsetY = Math.min( offsetY, window.innerHeight );
- const size = 50;
- const pointSize = 2;
- ctx.save();
- ctx.globalAlpha = 0.8;
- ctx.translate( 10 + size, offsetY - 10 - size );
- ctx.beginPath();
- ctx.arc( 0, 0, size, 0, Math.PI * 2 );
- ctx.fillStyle = '#111';
- ctx.fill();
- ctx.beginPath();
- const a = size - pointSize;
- ctx.arc( ( window.innerWidth / 2 - x ) / r * a, ( window.innerHeight / 2 - y ) / r * a, 2, 0, Math.PI * 2 );
- ctx.fillStyle = '#fff';
- ctx.fill();
- ctx.restore();
- ctx.beginPath();
- offsetY = window.innerHeight;
- }
- }
- } );
- let statsText;
- const OffscreenContext = typeof OffscreenCanvasRenderingContext2D !== 'undefined' ?
- OffscreenCanvasRenderingContext2D.prototype : Context;
- OffscreenContext.fillText = new Proxy( OffscreenContext.fillText, {
- apply( target, thisArgs, [ text ] ) {
- if ( text === 'Stats' ) {
- statsText = thisArgs.canvas;
- }
- return Reflect.apply( ...arguments );
- }
- } );
- OffscreenContext.drawImage = new Proxy( OffscreenContext.drawImage, {
- apply( target, thisArgs, [ image ] ) {
- if ( image === statsText ) {
- offsetY = thisArgs.getTransform().f;
- }
- return Reflect.apply( ...arguments );
- }
- } );
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址