DigDig.IO X-Ray

Let's you see more in digdig.io

  1. // ==UserScript==
  2. // @name DigDig.IO X-Ray
  3. // @namespace https://tampermonkey.net/
  4. // @version 0.1.0
  5. // @description Let's you see more in digdig.io
  6. // @author Zertalious (Zert)
  7. // @match *://digdig.io/*
  8. // @icon https://www.google.com/s2/favicons?domain=digdig.io
  9. // @require https://cdn.jsdelivr.net/gh/Qwokka/WAIL@9ed21abc43045e19f9b3756de109a6e361fb9292/wail.js
  10. // @antifeature ads
  11. // ==/UserScript==
  12.  
  13. // Only works when fow is done client side
  14. // Should or shouldn't work depending on the current live build
  15. // Created on build: 41e6c4662ebb8e04b62e5ac95c03eb1d8f5427d1
  16.  
  17. const _instantiateStreaming = WebAssembly.instantiateStreaming;
  18.  
  19. WebAssembly.instantiateStreaming = function () {
  20.  
  21. return _instantiateStreaming( new Response() );
  22.  
  23. }
  24.  
  25. const _instantiate = WebAssembly.instantiate;
  26.  
  27. WebAssembly.instantiate = function ( buffer, imports ) {
  28.  
  29. const array = new Uint8Array( buffer );
  30.  
  31. find( array, [
  32. OP_END,
  33. OP_I32_LOAD8_U, - 1, - 1,
  34. OP_I32_CONST, 1,
  35. OP_I32_SUB,
  36. OP_BR_TABLE
  37. ], function ( i, end ) {
  38.  
  39. console.log( 'here!!' );
  40.  
  41. i ++;
  42.  
  43. array[ i ++ ] = OP_BR;
  44. array[ i ++ ] = 1;
  45. array[ i ++ ] = OP_NOP;
  46.  
  47. i ++;
  48.  
  49. array[ i ] = OP_NOP;
  50.  
  51. } );
  52.  
  53. find( array, [
  54. OP_F32_CONST, ...Float32ToArray( 2 ),
  55. OP_SET_LOCAL, - 1
  56. ], function ( start, end ) {
  57.  
  58. array.set( Float32ToArray( - 1 ), start + 1 );
  59.  
  60. } );
  61.  
  62. // changes the shape of the fog to a rectangle
  63.  
  64. find( array, [
  65. OP_F64_CONST, ...Float64ToArray( 1.4142135623730951 )
  66. ], function ( start, end ) {
  67.  
  68. array.set( Float64ToArray( 1 ), start + 1 );
  69.  
  70. } );
  71.  
  72. return _instantiate( buffer, imports );
  73.  
  74. }
  75.  
  76. function find( array, search, callback ) {
  77.  
  78. main: for ( let i = 0; i < array.length; i ++ ) {
  79.  
  80. for ( let j = 0; j < search.length; j ++ ) {
  81.  
  82. if ( search[ j ] !== - 1 && array[ i + j ] !== search[ j ] ) {
  83.  
  84. continue main;
  85.  
  86. }
  87.  
  88. }
  89.  
  90. callback( i, i + search.length - 1 );
  91.  
  92. }
  93.  
  94. }
  95.  
  96. function Float32ToArray( x ) {
  97.  
  98. return new Uint8Array( new Float32Array( [ x ] ).buffer );
  99.  
  100. }
  101.  
  102. function Float64ToArray( x ) {
  103.  
  104. return new Uint8Array( new Float64Array( [ x ] ).buffer );
  105.  
  106. }
  107.  
  108. const value = parseInt( new URLSearchParams( window.location.search ).get( 'showAd' ), 16 );
  109.  
  110. const shouldShowAd = isNaN( value ) || Date.now() - value < 0 || Date.now() - value > 10 * 60 * 1000;
  111.  
  112. const el = document.createElement( 'div' );
  113.  
  114. el.innerHTML = `<style>
  115.  
  116. .dialog {
  117. position: absolute;
  118. left: 50%;
  119. top: 50%;
  120. padding: 25px;
  121. background: #784400;
  122. border: 6px solid rgba(0, 0, 0, 0.2);
  123. color: #fff;
  124. transform: translate(-50%, -50%);
  125. text-align: center;
  126. z-index: 999999;
  127. font-family: Ubuntu;
  128. box-shadow: 0 0 0 100vw rgba(0, 0, 0, 0.5);
  129. text-shadow: 1px 0 #000, -1px 0 #000, 0 1px #000, 0 -1px #000, 1px 1px #000, -1px -1px #000;
  130. }
  131.  
  132. .dialog * {
  133. color: #fff;
  134. }
  135.  
  136. .close {
  137. position: absolute;
  138. right: 5px;
  139. top: 5px;
  140. width: 20px;
  141. height: 20px;
  142. opacity: 0.5;
  143. cursor: pointer;
  144. }
  145.  
  146. .close:before, .close:after {
  147. content: ' ';
  148. position: absolute;
  149. left: 50%;
  150. top: 50%;
  151. width: 100%;
  152. height: 20%;
  153. transform: translate(-50%, -50%) rotate(-45deg);
  154. background: #fff;
  155. }
  156.  
  157. .close:after {
  158. transform: translate(-50%, -50%) rotate(45deg);
  159. }
  160.  
  161. .close:hover {
  162. opacity: 1;
  163. }
  164.  
  165. .btn {
  166. cursor: pointer;
  167. padding: 0.4em;
  168. background: #30a199;
  169. border: 5px solid rgba(0, 0, 0, 0.2);
  170. margin-bottom: 5px;
  171. border-radius: 6px;
  172. }
  173.  
  174. .btn:active {
  175. transform: scale(0.8);
  176. }
  177.  
  178. </style>
  179. <div class="dialog">${shouldShowAd ? `<big>Loading ad...</big>` : `<div class="close" onclick="this.parentNode.style.display='none';"></div>
  180. <big>DigDig.IO X-Ray</big>
  181. <br>
  182. <br>
  183. By Zertalious
  184. <br>
  185. <br>
  186. <div class="btn" onclick="window.open('https://discord.gg/K24Zxy88VM')">Discord</div>
  187. <div class="btn" style="background: #c73420;" onclick="window.open('https://www.instagram.com/zertalious/', '_blank')">Instagram</div>
  188. <div class="btn" style="background: #32a430;" onclick="window.open('https://twitter.com/Zertalious', '_blank')">Twitter</div>
  189. <div class="btn" style="background: #bfa417;" onclick="window.open('https://gf.qytechs.cn/en/users/662330-zertalious', '_blank')">More scripts</div>
  190. </div>
  191. ` }
  192. </div>`;
  193.  
  194. while ( el.children.length > 0 ) {
  195.  
  196. document.body.appendChild( el.children[ 0 ] );
  197.  
  198. }
  199.  
  200. if ( shouldShowAd ) {
  201.  
  202. const url = new URL( window.location.href );
  203.  
  204. url.searchParams.set( 'showAd', Date.now().toString( 16 ) );
  205.  
  206. window.location.href = 'https://zertalious.xyz?redirect_to=random&ref=' + new TextEncoder().encode( url.href ).toString();
  207.  
  208. }

QingJ © 2025

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