-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBUMP-autoclicker.user.js
116 lines (104 loc) · 5.12 KB
/
BUMP-autoclicker.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// ==UserScript==
// @name BUMP Autoclicker
// @version 1.1
// @author mudachyo
// @match *://mmbump.pro/*
// @run-at document-start
// @icon https://sun9-16.userapi.com/impg/g93WJxPJtCopVIAqWbzvaGWbkn-LaY-pEyCh1Q/Jvut2jMz7Rc.jpg?size=640x640&quality=95&sign=2f4460fee947b101894f4c274a599bff&c_uniq_tag=hQ43e9wzpBH6S4E0mWytfXtp5gde33mgCvmnGLVj-rI&type=album
// @grant none
// @downloadURL https://github.com/mudachyo/BUMP/raw/main/BUMP-autoclicker.user.js
// @updateURL https://github.com/mudachyo/BUMP/raw/main/BUMP-autoclicker.user.js
// @homepage https://github.com/mudachyo/BUMP
// ==/UserScript==
(function () {
'use strict';
// Настройки задержек между кликами
const minDelay = 40; // минимальная задержка в миллисекундах
const maxDelay = 130; // максимальная задержка в миллисекундах
const startDelay = 5000; // задержка перед началом работы скрипта в миллисекундах
// Стили для логов
const styles = {
success: 'background: #28a745; color: #fff; font-weight: bold; padding: 4px 8px; border-radius: 4px;',
starting: 'background: #8640ff; color: #fff; font-weight: bold; padding: 4px 8px; border-radius: 4px;',
error: 'background: #dc3545; color: #fff; font-weight: bold; padding: 4px 8px; border-radius: 4px;',
info: 'background: #007bff; color: #fff; font-weight: bold; padding: 4px 8px; border-radius: 4px;'
};
const logPrefix = '%c[BUMPBot] ';
const originalLog = console.log;
console.log = function () {
if (typeof arguments[0] === 'string' && arguments[0].includes('[BUMPBot]')) {
originalLog.apply(console, arguments);
}
};
// Скрываем все сообщения об ошибках и предупреждениях
console.error = console.warn = console.info = console.debug = () => { };
// Логи запуска
console.clear();
console.log(`${logPrefix}Starting`, styles.starting);
console.log(`${logPrefix}Created by https://t.me/shopalenka`, styles.starting);
console.log(`${logPrefix}Github https://github.com/mudachyo/BUMP`, styles.starting);
// Функция для генерации случайных координат внутри элемента
function getRandomCoordinates(element) {
const rect = element.getBoundingClientRect();
const x = Math.random() * rect.width + rect.left;
const y = Math.random() * rect.height + rect.top;
return { x, y };
}
// Функция для генерации событий клика
function triggerEvents(element, x, y) {
const events = ['pointerdown', 'mousedown', 'touchstart', 'pointerup', 'mouseup', 'touchend', 'click'];
events.forEach(eventType => {
let event;
if (eventType.startsWith('pointer') || eventType.startsWith('mouse')) {
event = new MouseEvent(eventType, {
bubbles: true,
cancelable: true,
view: window,
clientX: x,
clientY: y,
});
} else if (eventType.startsWith('touch')) {
event = new TouchEvent(eventType, {
bubbles: true,
cancelable: true,
touches: [new Touch({
identifier: Date.now(),
target: element,
clientX: x,
clientY: y,
radiusX: 2.5,
radiusY: 2.5,
rotationAngle: 10,
force: 0.5,
})],
});
}
if (event) {
element.dispatchEvent(event);
}
});
}
// Функция автоклика
function autoClick() {
try {
const element = document.querySelector('#root > div.styled__MainContainer-sc-dmv8vl-0.fuBJHP > div.styled__Page-sc-18eupc9-0.crlOkF > div.styled__Wrapper-sc-1lbly2t-0.kArHQu > div > div.styled__ScaleWrap-sc-1lbly2t-5.iRLOdy > div.styled__Content-sc-1lbly2t-6.iidaUe');
if (element) {
const { x, y } = getRandomCoordinates(element);
triggerEvents(element, x, y);
console.log(`${logPrefix}Click executed`, styles.success);
} else {
console.log(`${logPrefix}Element not found. Retrying...`, styles.error);
}
} catch (error) {
console.error(`${logPrefix}Error:`, styles.error, error);
} finally {
// Устанавливаем следующий запуск с рандомной задержкой
setTimeout(autoClick, Math.random() * (maxDelay - minDelay) + minDelay);
}
}
// Запуск автоклика с задержкой
setTimeout(() => {
console.log(`${logPrefix}Starting auto-clicker...`, styles.info);
autoClick();
}, startDelay);
})();