DigDig.IO X-Ray

Let's you see more in digdig.io

目前为 2021-09-09 提交的版本。查看 最新版本

// ==UserScript==
// @name         DigDig.IO X-Ray
// @namespace    https://tampermonkey.net/
// @version      0.0.3
// @description  Let's you see more in 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==

// Only works when fow is done client side
// Should or shouldn't work depending on the current live build
// Created on build: 41e6c4662ebb8e04b62e5ac95c03eb1d8f5427d1

// code block ids:
// 4 = lava, diamond, gold, uranium
// 3 = ?? (not empty, maybe some reversed id)
// 0 = dirt
// 1 = quartz
// 2 = bedrock

// Changes the shape of the fog to a square.
// Isn't really needed but kinda cool.

/*find( array, [
	OP_F64_CONST, ...Float64ToArray( 1.4142135623730951 )
], function ( start, end ) {

	array.set( Float64ToArray( 1 ), start + 1 );

} );*/

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_BR_TABLE, 7, 4, 4, 4, 2, 4, 1, 3, 0
	], function ( i, end ) {

		i += 2;

		for ( ; i <= end; i ++ ) {

			array[ i ] = 1;

		}

	} );

	find( array, [
		OP_F32_CONST, ...Float32ToArray( 2 ), 
		OP_SET_LOCAL, 28
	], function ( start, end ) {

		array.set( Float32ToArray( - 1 ), start + 1 );

	} );

	// Break noob anti-cheat (git gud m28, took me 10 seconds to find)

	find( array, [
		OP_GET_LOCAL, 3, 
		OP_GET_LOCAL, 28, 
		OP_F32_GE, 
		OP_IF, VALUE_TYPE_BLOCK
	], function ( start, end ) {

		array[ end + 1 ] = OP_BR;
		array[ end + 2 ] = 0;

	} );

	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 );

}

QingJ © 2025

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