X512 X1024 X1 X2 X4
THẮNG 0.00
dư 30.09
cược 0.04
EX
TÍNH NĂNG
RÚT TIỀN

QUẢN TRỊ VIÊN - DANH SÁCH RÚT TIỀN

STT Số điện thoại Số tiền Thời gian
@import url('https://fonts.googleapis.com/css2?family=Almendra:ital,wght@0,700;1,700&display=swap'); * { box-sizing: border-box; user-select: none; -webkit-tap-highlight-color: transparent; } body { background-color: #0d0f12; display: flex; justify-content: center; align-items: center; height: 100dvh; margin: 0; font-family: 'Almendra', serif; overflow: hidden; } /* KHUNG MÁY SLOT */ .machine-container { width: 100%; max-width: 420px; height: 100dvh; max-height: 900px; background: #2c2218; background-image: radial-gradient(circle at 50% 0%, #3f3022 0%, #1a130e 100%); border: 4px solid #0a0705; border-radius: 15px; box-shadow: 0 0 50px rgba(0,0,0,0.9), inset 0 0 20px rgba(0,0,0,0.8); position: relative; display: flex; flex-direction: column; overflow: hidden; } /* BẢNG HỆ SỐ NHÂN */ .top-banner { background: linear-gradient(to bottom, #4a3524, #2b1d11); border-bottom: 3px solid #8b6508; border-radius: 0 0 20px 20px; padding: 10px 5px; display: flex; justify-content: space-around; align-items: center; box-shadow: 0 5px 15px rgba(0,0,0,0.8); flex-shrink: 0; position: relative; z-index: 10; } .top-banner span { color: #7a5e3e; font-size: clamp(12px, 3vw, 16px); font-weight: bold; text-shadow: 1px 1px 2px #000; transition: all 0.3s; } /* HIỆU ỨNG ẢNH ĐỘNG KHI NỔ HỆ SỐ NHÂN */ .top-banner span.active { color: #ffdf73; font-size: clamp(16px, 4vw, 22px); text-shadow: 0 0 10px #ffdf73, 0 0 20px #ffdf73; animation: mult-pulse 0.5s infinite alternate; } @keyframes mult-pulse { 0% { transform: scale(1); } 100% { transform: scale(1.3); text-shadow: 0 0 20px #ffdf73, 0 0 40px #ff0000; } } /* LƯỚI QUAY */ .reels-wrapper { padding: 10px; flex-grow: 1; display: flex; flex-direction: column; justify-content: center; position: relative; } .reels-background { background: #120d09; border: 2px solid #3d2b1b; border-radius: 10px; padding: 6px; box-shadow: inset 0 10px 20px rgba(0,0,0,0.9); } .reels { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; } .cell { background: #1c1611; border-radius: 8px; height: clamp(60px, 12dvh, 100px); display: flex; justify-content: center; align-items: center; font-size: clamp(30px, 8vw, 45px); box-shadow: inset 0 0 15px rgba(0,0,0,0.8); border: 1px solid #2e2216; position: relative; transition: filter 0.1s; } /* HIỆU ỨNG QUAY MỜ */ .cell.spinning { filter: blur(4px); animation: blur-anim 0.1s infinite; } @keyframes blur-anim { 0% { transform: translateY(-5px); } 50% { transform: translateY(5px); } 100% { transform: translateY(-5px); } } .cell.winning { border: 2px solid #ffdf73; box-shadow: 0 0 20px #ffdf73, inset 0 0 20px #ffdf73; background: #3a2a1a; z-index: 2; animation: win-pulse 0.5s infinite alternate; } @keyframes win-pulse { from { transform: scale(1); } to { transform: scale(1.05); } } /* BIỂU TƯỢNG */ .sym-emoji { filter: drop-shadow(2px 4px 4px rgba(0,0,0,0.6)); } .card-letter { font-family: 'Times New Roman', serif; font-weight: 900; text-shadow: -2px -2px 0 #000, 2px -2px 0 #000, -2px 2px 0 #000, 2px 2px 0 #000, 0px 4px 5px rgba(0,0,0,0.8); -webkit-text-stroke: 1px #000; } .sym-K { color: #ff4444; } .sym-Q { color: #55dd55; } .sym-J { color: #44aaff; } .sym-A { color: #ffdd44; } /* PHẦN ĐIỀU KHIỂN DƯỚI */ .bottom-ui { padding: 10px 10px 20px; background: linear-gradient(to top, #1a120a, #2c1e13); border-top: 3px solid #4a3524; flex-shrink: 0; position: relative; } .win-banner { background: linear-gradient(to bottom, #e3b85d, #a8752b); border: 1px solid #4a2e0e; border-radius: 5px; padding: 4px; text-align: center; color: #4a2e0e; font-size: clamp(16px, 4vw, 20px); font-weight: bold; margin-bottom: 10px; } .info-bar { display: flex; justify-content: space-between; background: rgba(0,0,0,0.4); border-radius: 20px; padding: 6px 12px; font-size: clamp(12px, 3vw, 14px); color: #a8926e; margin-bottom: 15px; border: 1px solid #3d2b1b; } .info-item { display: flex; align-items: center; gap: 5px; } .coin-icon { width: 12px; height: 12px; background: #ffd700; border-radius: 50%; box-shadow: inset 0 0 2px #fff; } /* NÚT QUAY TRÒN */ .spin-btn-wrapper { display: flex; justify-content: center; margin-top: -10px; } .spin-btn { width: clamp(80px, 25vw, 100px); height: clamp(80px, 25vw, 100px); border-radius: 50%; background: radial-gradient(circle at 30% 30%, #ffd700, #b8860b 60%, #5c4306); border: 4px solid #2b1d11; box-shadow: 0 8px 15px rgba(0,0,0,0.8), inset 0 5px 10px rgba(255,255,255,0.5); color: #fff; font-size: clamp(16px, 5vw, 22px); font-weight: bold; font-family: 'Almendra', serif; text-shadow: 1px 1px 3px #000; cursor: pointer; display: flex; justify-content: center; align-items: center; transition: transform 0.1s; } .spin-btn:active:not(:disabled) { transform: scale(0.95); } .spin-btn:disabled { filter: grayscale(80%); } .side-btn { position: absolute; bottom: 20px; background: linear-gradient(to bottom, #4a3524, #1a120a); border: 2px solid #8b6508; border-radius: 6px; color: #a8926e; padding: 6px 10px; font-size: 10px; font-weight: bold; font-family: 'Almendra', serif; cursor: pointer; } .btn-ex { left: 15px; width: 35px; height: 35px; border-radius: 50%; display: flex; justify-content: center; align-items: center; font-size: 14px; z-index: 10;} .btn-withdraw { right: 15px; background: linear-gradient(to bottom, #d4af37, #b8860b); color: #000; padding: 8px 12px; border-radius: 5px; text-align: center;} /* HIỆU ỨNG TIỀN BAY LÊN */ .floating-win { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 30px; color: #00ff00; font-weight: 900; text-shadow: 0 0 10px #00ff00, 2px 2px 2px #000; pointer-events: none; opacity: 0; z-index: 20; } .floating-win.animate { animation: float-up 1.5s ease-out forwards; } @keyframes float-up { 0% { opacity: 1; transform: translate(-50%, -50%) scale(0.5); } 50% { opacity: 1; transform: translate(-50%, -80%) scale(1.2); } 100% { opacity: 0; transform: translate(-50%, -150%) scale(1); } } /* MODALS (POPUP) */ .modal-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.85); display: flex; justify-content: center; align-items: center; z-index: 100; opacity: 0; pointer-events: none; transition: opacity 0.3s; } .modal-overlay.show { opacity: 1; pointer-events: auto; } .modal-box { background: #2c2218; border: 3px solid #b8860b; border-radius: 10px; padding: 20px; width: 90%; max-width: 350px; text-align: center; color: #fff; box-shadow: 0 0 30px #ffd700; font-family: Arial, sans-serif; transform: translateY(20px); transition: transform 0.3s; } .modal-overlay.show .modal-box { transform: translateY(0); } .modal-box h2 { margin-top: 0; color: #ffd700; font-family: 'Almendra', serif; font-size: 24px; } .amount-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 15px 0; } .amount-btn { background: #4a3524; border: 1px solid #8b6508; color: #ffd700; padding: 10px; border-radius: 5px; cursor: pointer; font-weight: bold; } .amount-btn.selected { background: #8b6508; color: #fff; border-color: #ffd700; } .phone-input { width: 100%; padding: 10px; margin: 10px 0 20px; border-radius: 5px; border: 1px solid #8b6508; background: #1a120a; color: #fff; font-size: 16px; text-align: center; } .action-btn { background: #00cc00; color: white; border: none; padding: 12px; width: 100%; border-radius: 5px; font-weight: bold; font-size: 16px; cursor: pointer; } /* ADMIN PANEL */ #adminPanel { background: #fff; color: #000; padding: 20px; width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 200; display: none; overflow-y: auto; } #adminPanel h2 { color: #d32f2f; text-align: center; } .admin-table { width: 100%; border-collapse: collapse; margin-top: 20px; font-size: 14px; } .admin-table th, .admin-table td { border: 1px solid #ccc; padding: 8px; text-align: center; } .admin-table th { background: #f4f4f4; } .close-admin { background: #d32f2f; color: #fff; border: none; padding: 10px; margin-top: 20px; width: 100%; border-radius: 5px; font-weight: bold; } /* JACKPOT EFFECT */ .jackpot-text { font-size: 30px; color: #ff0000; text-shadow: 0 0 10px #ffff00, 0 0 20px #ffff00; animation: shake 0.5s infinite; margin-bottom: 10px; font-weight: 900; } @keyframes shake { 0% { transform: translate(1px, 1px) rotate(0deg); } 10% { transform: translate(-1px, -2px) rotate(-1deg); } 20% { transform: translate(-3px, 0px) rotate(1deg); } 30% { transform: translate(3px, 2px) rotate(0deg); } 40% { transform: translate(1px, -1px) rotate(1deg); } 50% { transform: translate(-1px, 2px) rotate(-1deg); } 60% { transform: translate(-3px, 1px) rotate(0deg); } 70% { transform: translate(3px, 1px) rotate(-1deg); } 80% { transform: translate(-1px, -1px) rotate(1deg); } 90% { transform: translate(1px, 2px) rotate(0deg); } 100% { transform: translate(1px, -2px) rotate(-1deg); } } // ================= CẤU HÌNH GAME ================= const SYMBOLS = [ { type: 'emoji', val: '🔫' }, { type: 'emoji', val: '🧪' }, { type: 'emoji', val: '🤠' }, { type: 'card', val: 'K' }, { type: 'card', val: 'Q' }, { type: 'card', val: 'J' }, { type: 'card', val: 'A' } ]; const WIN_RATE = 0.28; const PAYLINES = [ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6] ]; let balance = 30.09; let isSpinning = false; let spinCount = 0; let selectedWithdrawAmount = 0; // DOM const cells = document.querySelectorAll('.cell'); const spinBtn = document.getElementById('spinBtn'); const winDisplay = document.getElementById('winDisplay'); const balanceEl = document.getElementById('balance'); const currentMultEl = document.getElementById('currentMult'); const floatingWin = document.getElementById('floatingWin'); // Hàm tiện ích function formatMoney(num) { return num.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); } function getRandomSymbol() { return SYMBOLS[Math.floor(Math.random() * SYMBOLS.length)]; } function renderSymbol(cell, symObj) { cell.innerHTML = ''; cell.className = 'cell'; if (symObj.type === 'emoji') { cell.innerHTML = `${symObj.val}`; } else { cell.innerHTML = `${symObj.val}`; } } // Khởi tạo bảng function initBoard() { cells.forEach(cell => renderSymbol(cell, getRandomSymbol())); balanceEl.textContent = formatMoney(balance); } // ================= LOGIC QUAY ================= function spin() { if (isSpinning) return; isSpinning = true; spinBtn.disabled = true; winDisplay.textContent = "THẮNG 0.00"; spinCount++; // Reset hiệu ứng cells.forEach(c => c.classList.remove('winning', 'spinning')); currentMultEl.classList.remove('active'); currentMultEl.textContent = "X1"; // Bắt đầu hiệu ứng quay cho 3 cột let spinningIntervals = []; for (let i = 0; i < 9; i++) { cells[i].classList.add('spinning'); } // Hàm random liên tục let interval = setInterval(() => { cells.forEach(cell => renderSymbol(cell, getRandomSymbol())); }, 50); // Dừng cột từ trái sang phải (Tạo cảm giác thật) setTimeout(() => { // Cột 1 dừng [0, 3, 6].forEach(i => cells[i].classList.remove('spinning')); }, 800); setTimeout(() => { // Cột 2 dừng [1, 4, 7].forEach(i => cells[i].classList.remove('spinning')); }, 1100); setTimeout(() => { // Cột 3 dừng và tính kết quả clearInterval(interval); cells.forEach(c => c.classList.remove('spinning')); calculateResult(); }, 1400); } function calculateResult() { let finalResults = Array.from({ length: 9 }, () => getRandomSymbol()); let winningLine = null; let isJackpot = false; let isWin = false; let winAmount = 0; let mult = 1; // ĐIỀU KIỆN NỔ HŨ 100K: 5 LẦN QUAY ĐẦU TIÊN if (spinCount <= 5) { isJackpot = true; } else if (Math.random() < WIN_RATE) { isWin = true; winningLine = PAYLINES[Math.floor(Math.random() * PAYLINES.length)]; } // Xử lý kết quả hiển thị if (isJackpot) { winningLine = [3, 4, 5]; // Ép hàng giữa let winSym = getRandomSymbol(); winningLine.forEach(idx => finalResults[idx] = winSym); } else if (isWin) { let winSym = getRandomSymbol(); winningLine.forEach(idx => finalResults[idx] = winSym); } // Render finalResults.forEach((sym, idx) => renderSymbol(cells[idx], sym)); // XỬ LÝ THẮNG / THUA if (isJackpot) { winningLine.forEach(idx => cells[idx].classList.add('winning')); balance += 100000; balanceEl.textContent = formatMoney(balance); winDisplay.textContent = `THẮNG 100,000.00`; // Hiệu ứng tiền bay lên showFloatingWin("+100.000đ"); // Bật Popup Nổ Hũ setTimeout(() => { document.getElementById('jackpotModal').classList.add('show'); }, 500); } else if (isWin && winningLine) { winningLine.forEach(idx => cells[idx].classList.add('winning')); // Random Hệ số nhân (Hiệu ứng ảnh động) let multipliers = [1, 1, 1, 2, 2, 4]; mult = multipliers[Math.floor(Math.random() * multipliers.length)]; if (mult > 1) { currentMultEl.textContent = `X${mult}`; currentMultEl.classList.add('active'); // Kích hoạt ảnh động } winAmount = (Math.random() * 0.45 + 0.05) * mult; balance += winAmount; balanceEl.textContent = formatMoney(balance); let winText = `THẮNG ${formatMoney(winAmount)}`; winDisplay.textContent = winText; // Hiệu ứng tiền bay lên showFloatingWin(`+${formatMoney(winAmount)}đ`); } else { winDisplay.textContent = "THẮNG 0.00"; } isSpinning = false; spinBtn.disabled = false; } function showFloatingWin(text) { floatingWin.textContent = text; floatingWin.classList.remove('animate'); void floatingWin.offsetWidth; // Trigger reflow floatingWin.classList.add('animate'); } // ================= LOGIC RÚT TIỀN ================= const amountBtns = document.querySelectorAll('.amount-btn'); amountBtns.forEach(btn => { btn.addEventListener('click', () => { amountBtns.forEach(b => b.classList.remove('selected')); btn.classList.add('selected'); selectedWithdrawAmount = parseInt(btn.getAttribute('data-val')); }); }); document.getElementById('btnWithdraw').addEventListener('click', () => { document.getElementById('withdrawModal').classList.add('show'); }); document.getElementById('submitWithdraw').addEventListener('click', () => { const phone = document.getElementById('phoneInput').value.trim(); if (selectedWithdrawAmount === 0) { alert("Vui lòng chọn số tiền muốn rút!"); return; } if (phone.length < 9) { alert("Vui lòng nhập đúng số điện thoại!"); return; } // Lưu thông tin vào LocalStorage let history = JSON.parse(localStorage.getItem('casino_history') || '[]'); history.push({ phone: phone, amount: selectedWithdrawAmount, time: new Date().toLocaleString('vi-VN') }); localStorage.setItem('casino_history', JSON.stringify(history)); // Ẩn popup rút, hiện thông báo thành công document.getElementById('withdrawModal').classList.remove('show'); document.getElementById('successModal').classList.add('show'); // Reset form document.getElementById('phoneInput').value = ''; amountBtns.forEach(b => b.classList.remove('selected')); selectedWithdrawAmount = 0; }); // ================= LOGIC ADMIN ================= let exClickCount = 0; document.getElementById('btnEx').addEventListener('click', () => { exClickCount++; if (exClickCount >= 5) { let pass = prompt("NHẬP MẬT KHẨU ADMIN:"); if (pass === "AdminXuantruong2011@") { openAdminPanel(); } else if (pass !== null) { alert("Sai mật khẩu!"); } exClickCount = 0; } }); function openAdminPanel() { const tbody = document.getElementById('adminTableBody'); tbody.innerHTML = ''; let history = JSON.parse(localStorage.getItem('casino_history') || '[]'); if (history.length === 0) { tbody.innerHTML = 'Chưa có ai rút tiền.'; } else { history.forEach((item, index) => { tbody.innerHTML += ` ${index + 1} ${item.phone} ${item.amount.toLocaleString('vi-VN')}đ ${item.time} `; }); } document.getElementById('adminPanel').style.display = 'block'; } document.getElementById('closeAdminBtn').addEventListener('click', () => { document.getElementById('adminPanel').style.display = 'none'; }); // Chạy khởi tạo spinBtn.addEventListener('click', spin); initBoard();