(Diep.io) Minimap Rescaler with Position and Size UI (Memory-Based)

Upon death, change the position and size of the minimap in Diep.io by manipulating memory. Discord: Tariteur

目前为 2024-12-11 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name (Diep.io) Minimap Rescaler with Position and Size UI (Memory-Based)
  3. // @namespace http://tampermonkey.net/
  4. // @version 2024-12-11
  5. // @description Upon death, change the position and size of the minimap in Diep.io by manipulating memory. Discord: Tariteur
  6. // @author Tariteur
  7. // @match https://diep.io/
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=diep.io
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Fonction d'ajout de l'interface utilisateur pour déplacer et redimensionner la minimap
  16. function createMinimapUI() {
  17. // Créer un panneau d'interface utilisateur
  18. const uiPanel = document.createElement('div');
  19. uiPanel.style.position = 'absolute'; // Positionnement absolu
  20. uiPanel.style.right = '150px';
  21. uiPanel.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
  22. uiPanel.style.color = 'white';
  23. uiPanel.style.padding = '15px';
  24. uiPanel.style.borderRadius = '5px';
  25. uiPanel.style.zIndex = 10000;
  26. uiPanel.style.width = '250px'; // Taille fixe pour l'interface
  27.  
  28. uiPanel.innerHTML = '<strong>Reposition and resize the Minimap</strong><br><br>';
  29.  
  30. // Ajouter les sliders pour Position X et Y
  31. uiPanel.innerHTML += 'Position X: <input type="range" id="minimapX" min="0" max="1600" value="0" style="width: 100%;"><br>';
  32. uiPanel.innerHTML += 'Position Y: <input type="range" id="minimapY" min="0" max="1600" value="0" style="width: 100%;"><br><br>';
  33.  
  34. // Ajouter un seul slider pour la taille de la minimap
  35. uiPanel.innerHTML += 'Taille: <input type="range" id="minimapSize" min="0" max="1600" value="0" style="width: 100%;"><br><br>';
  36.  
  37. // Ajouter le panneau à l'élément 'game-over-screen'
  38. const gameOverScreen = document.getElementById('game-over-screen');
  39. if (gameOverScreen) {
  40. gameOverScreen.appendChild(uiPanel);
  41. } else {
  42. console.error('Élément "game-over-screen" non trouvé.');
  43. }
  44.  
  45. // Charger les paramètres depuis le localStorage
  46. loadSettings();
  47.  
  48. // Lier les événements aux sliders pour appliquer les modifications immédiatement
  49. document.getElementById('minimapX').addEventListener('input', updateMinimap);
  50. document.getElementById('minimapY').addEventListener('input', updateMinimap);
  51. document.getElementById('minimapSize').addEventListener('input', updateMinimap);
  52. }
  53.  
  54. // Fonction pour mettre à jour la minimap en temps réel
  55. function updateMinimap() {
  56. const x = parseInt(document.getElementById('minimapX').value, 10);
  57. const y = parseInt(document.getElementById('minimapY').value, 10);
  58. const size = parseInt(document.getElementById('minimapSize').value, 10);
  59.  
  60. // Limiter la taille de la minimap en fonction de la taille de l'écran
  61. const screenWidth = window.innerWidth;
  62. const screenHeight = window.innerHeight;
  63.  
  64. const maxSize = Math.min(screenWidth, screenHeight); // La taille max de la minimap ne doit pas dépasser la taille de l'écran
  65. const minSize = 0; // Taille minimale
  66.  
  67. // Redimensionner la minimap pour ne pas dépasser les bords de l'écran
  68. const clampedSize = Math.min(Math.max(size, minSize), maxSize);
  69.  
  70. // Calculer la nouvelle position pour centrer la minimap par rapport à son nouveau taille
  71. const newX = Math.max(0, Math.min(x - clampedSize / 2, screenWidth - clampedSize));
  72. const newY = Math.max(0, Math.min(y - clampedSize / 2, screenHeight - clampedSize));
  73.  
  74. // Appliquer les nouvelles valeurs à la minimap
  75. moveAndResizeMinimap(newX, newY, clampedSize, clampedSize); // La taille est identique en largeur et hauteur
  76.  
  77. // Sauvegarder les paramètres dans le localStorage
  78. saveSettings(newX, newY, clampedSize);
  79. }
  80.  
  81. // Fonction pour déplacer et redimensionner la minimap dans la mémoire
  82. function moveAndResizeMinimap(x, y, width, height) {
  83. if (window.HEAPF32) {
  84. // Appliquer les nouvelles valeurs aux indices correspondants dans la mémoire WebAssembly
  85. window.HEAPF32[60903] = x; // Position X
  86. window.HEAPF32[60904] = y; // Position Y
  87. window.HEAPF32[60905] = width; // Taille X
  88. window.HEAPF32[60906] = height; // Taille Y
  89.  
  90. console.log(`Minimap déplacée à X: ${x}, Y: ${y} et redimensionnée à ${width}x${height}`);
  91. } else {
  92. console.error('HEAPF32 non trouvé. Impossible de manipuler la mémoire.');
  93. }
  94. }
  95.  
  96. // Fonction pour sauvegarder les paramètres dans le localStorage
  97. function saveSettings(x, y, size) {
  98. localStorage.setItem('minimapX', x);
  99. localStorage.setItem('minimapY', y);
  100. localStorage.setItem('minimapSize', size);
  101. }
  102.  
  103. // Fonction pour charger les paramètres depuis le localStorage
  104. function loadSettings() {
  105. const savedX = localStorage.getItem('minimapX');
  106. const savedY = localStorage.getItem('minimapY');
  107. const savedSize = localStorage.getItem('minimapSize');
  108.  
  109. if (savedX !== null && savedY !== null && savedSize !== null) {
  110. document.getElementById('minimapX').value = savedX;
  111. document.getElementById('minimapY').value = savedY;
  112. document.getElementById('minimapSize').value = savedSize;
  113. // Appliquer les valeurs sauvegardées
  114. updateMinimap();
  115. }
  116. }
  117.  
  118. // Créer l'interface une fois que la page est chargée
  119. window.addEventListener('load', () => {
  120. // Vérifier si HEAPF32 est accessible
  121. const waitForHeapF32 = setInterval(() => {
  122. if (window.HEAPF32) {
  123. clearInterval(waitForHeapF32);
  124. createMinimapUI();
  125. console.log("HEAPF32 trouvé, interface prête.");
  126. }
  127. }, 100);
  128. });
  129.  
  130. })();