Diep.io Клоны (Рус)

Позволяет контролировать больше одного танка

  1. // ==UserScript==
  2. // @name Diep.io Клоны (Рус)
  3. // @description Позволяет контролировать больше одного танка
  4. // @author https://gf.qytechs.cn/ru/users/393261-фелкис
  5. // @version Полная - 1.3
  6. // @include http://Diep.io/*
  7. // @include https://Diep.io/*
  8. // @grant GM_getValue
  9. // @grant GM_setValue
  10. // @run-at document-start
  11. // @namespace https://gf.qytechs.cn/users/393261
  12. // ==/UserScript==
  13.  
  14. //Назначение клавиш
  15. //V (Рус. М) (Удерживайте) - Отключает репликатор на время удержания клавиши, однако ваши клоны продолжают повторять ваши последние действия
  16.  
  17. //Почему это? Ведь уже есть 1.6!
  18. // + Да, согласен, но я в разы уменьшил лаги за счет ограничения клавиш и фокусировки документа
  19. // + Видимо, только я додумался добавить клавишу "V", что бы у вас было не только силовое, но и тактическое преимущество
  20.  
  21. //Англоязычный коллега
  22. //https://gf.qytechs.cn/ru/scripts/401910-diep-io-tool
  23. //Внимание! Его скрипт реализован через Diepsocket, он кушает меньше RAM, но не сможет обеспечить вам больше 5 ботов (А я смогу :D)
  24.  
  25. //Пакеты контроля
  26. var KeycodesTrick;
  27. //KeycodesTrick = [87,65,83,68,13,32,16,69,67,49,50,51,52,53,54,55,56,77,85,72,75,79] //Полный пакет + (Все клавиши, но может тормозить)
  28. KeycodesTrick = [87,65,83,68,13,32,16,69,67,49,50,51,52,53,54,55,56,77,85,72] //Полный пакет (Все клавиши, кроме Sandbox)
  29. //KeycodesTrick = [87,65,83,68,13,32,16,69,67,49,50,51,52,53,54,55,56,77,85] //Универсальный (Нет клавиш режимов)
  30. //KeycodesTrick = [87,65,83,68,13,32,16,69,67,49,50,51,52,53,54,55,56] //Достаточный (Нет клавиш U и M)
  31. //KeycodesTrick = [87,65,83,68,13,32,16,69,67] //Уменьшенный 1 (Отключены клавиши с 1 до 8)
  32. //KeycodesTrick = [87,65,83,68,13,69,67] //Уменьшенный 2 (Отключены клавиши Shift и Emptyspace)
  33. //KeycodesTrick = [87,65,83,68,13] //Минимальный (Только необходимое, нет клавиш C и E)
  34.  
  35. var KeycodesState = []; // < Здесь все прожимаемые в данном окне кнопки
  36. var MouseState = false; // < А здесь мышь
  37. GM_setValue("Keys86", false);
  38.  
  39. //Подключение клавиатуры
  40. document.addEventListener("keyup",function(key){
  41. if (document.hasFocus()){
  42. key = key.keyCode || key.which;
  43. GM_setValue("Keys"+key,false);
  44. };
  45. });
  46. document.addEventListener("keydown",function(key){
  47. if (document.hasFocus()){
  48. key = key.keyCode || key.which;
  49. GM_setValue("Keys"+key,true);
  50. };
  51. });
  52.  
  53. //Подключение мыши
  54. document.addEventListener("mouseup",function(but){
  55. if (document.hasFocus()){
  56. GM_setValue("Click",false);
  57. MouseState = false;
  58. };
  59. });
  60. document.addEventListener("mousedown",function(but){
  61. if (document.hasFocus()){
  62. GM_setValue("Click",true);
  63. MouseState = true;
  64. };
  65. });
  66. document.addEventListener("mousemove",function(mouse){
  67. if (document.hasFocus()){
  68. GM_setValue("GlobalX",mouse.clientX/window.innerWidth);
  69. GM_setValue("GlobalY",mouse.clientY/window.innerHeight);
  70. };
  71. });
  72.  
  73. //Тик репликации (Осторожно: рекурсивная функция!)
  74. function Trick(){
  75. console.log(document.hasFocus());
  76. if (!document.hasFocus()){
  77. if (!GM_getValue("Keys"+86)){
  78. //Синхронизация (Подготовка переменных)
  79. var Frame = [];
  80. KeycodesTrick.forEach(function(key){
  81. Frame[key] = GM_getValue("Keys"+key);
  82. });
  83. Frame.LocalX = GM_getValue("GlobalX")*window.innerWidth;
  84. Frame.LocalY = GM_getValue("GlobalY")*window.innerHeight;
  85. Frame.MouseState = GM_getValue("Click");
  86. //Синхронизация (Обработка события)
  87. //... [Клавиатура]
  88. KeycodesTrick.forEach(function(key){
  89. if (KeycodesState[key] != Frame[key]){
  90. KeycodesState[key] = Frame[key];
  91. var Reply = document.createEvent("Event");
  92. if (Frame[key]) {
  93. Reply.initEvent("keydown",true,true);
  94. Reply.keyCode = key;
  95. } else {
  96. Reply.initEvent("keyup",true,true);
  97. Reply.keyCode = key;
  98. };
  99. window.dispatchEvent(Reply);
  100. };
  101. });
  102. //...[Курсор]
  103. if (isFinite(Frame.LocalX) && isFinite(Frame.LocalY)){
  104. if (Frame.MouseState != MouseState){
  105. MouseState = Frame.MouseState;
  106. if (MouseState){
  107. canvas.dispatchEvent(new MouseEvent('mousedown',{'clientX':Frame.LocalX,'clientY':Frame.LocalY,'button':0,'mozPressure':1.0}));
  108. } else {
  109. canvas.dispatchEvent(new MouseEvent('mouseup',{'clientX':Frame.LocalX,'clientY':Frame.LocalY,'button':0,'mozPressure':1.0}));
  110. };
  111. };
  112. canvas.dispatchEvent(new MouseEvent('mousemove',{'clientX':Frame.LocalX,'clientY':Frame.LocalY}));
  113. };
  114. };
  115. };
  116. setTimeout(Trick,5);
  117. };
  118.  
  119. alert("Репликатор успешно загружен!");
  120. setTimeout(Trick,10);

QingJ © 2025

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