Super Pro Autohit + Strong Antiban + Advanced Aim Assist
// ==UserScript==
// @name sopo
// @namespace sopo
// @version 4.1
// @description Super Pro Autohit + Strong Antiban + Advanced Aim Assist
// @author sopo
// @match *://*.evoworld.io/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function () {
'use strict';
let enabled = false;
let lastHitTime = 0;
let isResting = false;
let clickStreak = 0;
let sessionStart = Date.now();
// === SUPER ANTIBAN ===
let lastHumanAction = Date.now();
let suspiciousLevel = 0;
let longBreakChance = 0;
const statusDiv = document.createElement('div');
statusDiv.style.position = 'fixed';
statusDiv.style.bottom = '75px';
statusDiv.style.left = '50%';
statusDiv.style.transform = 'translateX(-50%)';
statusDiv.style.background = 'rgba(0, 0, 0, 0.96)';
statusDiv.style.padding = '12px 28px';
statusDiv.style.borderRadius = '12px';
statusDiv.style.fontFamily = 'Arial, sans-serif';
statusDiv.style.fontSize = '18px';
statusDiv.style.fontWeight = 'bold';
statusDiv.style.zIndex = '999999';
statusDiv.style.pointerEvents = 'none';
statusDiv.style.border = '3px solid #00ff88';
statusDiv.style.boxShadow = '0 0 25px rgba(0, 255, 136, 0.8)';
document.body.appendChild(statusDiv);
function updateStatus() {
const playTime = Math.floor((Date.now() - sessionStart) / 60000);
statusDiv.innerHTML = enabled
? `🔥 sopo <span style='color:#00ff88'>ON</span><br><span style='font-size:14px'>Thời gian: ${playTime} phút</span>`
: `⛔ sopo <span style='color:#ff4444'>OFF</span>`;
statusDiv.style.borderColor = enabled ? '#00ff88' : '#ff4444';
}
document.addEventListener('keydown', (e) => {
if (e.key.toLowerCase() === 'r') {
enabled = !enabled;
updateStatus();
}
});
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function getClickDelay() {
if (isResting) return getRandomInt(950, 2450);
const playTime = (Date.now() - sessionStart) / 60000;
let cps = getRandomInt(19, 24);
if (playTime > 25) cps = getRandomInt(17, 22);
if (playTime > 60) cps = getRandomInt(16, 20);
let delay = 1000 / cps;
delay += getRandomInt(-30, 65);
if (Math.random() < 0.12 + longBreakChance) {
delay += getRandomInt(2200, 5200);
longBreakChance = 0;
} else if (Math.random() < 0.28) {
delay += getRandomInt(320, 780);
}
return Math.max(40, Math.floor(delay));
}
function performProAutohit() {
const canvas = document.querySelector('canvas');
if (!canvas) return;
clickStreak++;
const rect = canvas.getBoundingClientRect();
const mouseX = window.mouseX || (rect.left + rect.width * 0.5);
const mouseY = window.mouseY || (rect.top + rect.height * 0.5);
let x = mouseX + getRandomInt(-48, 48);
let y = mouseY + getRandomInt(-48, 48);
if (Math.random() < 0.35) {
x += getRandomInt(-25, 25);
y += getRandomInt(-22, 22);
}
const holdTime = getRandomInt(13, 31);
const eventsDown = [
new PointerEvent('pointerdown', {bubbles: true, clientX: x, clientY: y, button: 0}),
new MouseEvent('mousedown', {bubbles: true, clientX: x, clientY: y, button: 0})
];
eventsDown.forEach(ev => canvas.dispatchEvent(ev));
setTimeout(() => {
const eventsUp = [
new PointerEvent('pointerup', {bubbles: true, clientX: x, clientY: y, button: 0}),
new MouseEvent('mouseup', {bubbles: true, clientX: x, clientY: y, button: 0}),
new MouseEvent('click', {bubbles: true, clientX: x, clientY: y, button: 0})
];
eventsUp.forEach(ev => canvas.dispatchEvent(ev));
}, holdTime);
if (clickStreak > getRandomInt(8, 14)) {
isResting = true;
suspiciousLevel++;
setTimeout(() => {
isResting = false;
clickStreak = 0;
}, getRandomInt(850, 2350));
}
lastHumanAction = Date.now();
}
document.addEventListener('mousemove', (e) => {
window.mouseX = e.clientX;
window.mouseY = e.clientY;
lastHumanAction = Date.now();
longBreakChance = Math.max(0, longBreakChance - 0.08);
});
function proLoop() {
if (!enabled) {
requestAnimationFrame(proLoop);
return;
}
if (Date.now() - lastHumanAction > 28000) {
isResting = true;
setTimeout(() => { isResting = false; }, getRandomInt(4500, 11000));
}
if (Date.now() - lastHitTime > getClickDelay()) {
performProAutohit();
lastHitTime = Date.now();
}
requestAnimationFrame(proLoop);
}
updateStatus();
requestAnimationFrame(proLoop);
console.log('%c✅ sopo v4.1 LOADED! Press R to toggle',
'color: #00ff88; font-weight: bold; font-size: 15px');
})();