Gartic.io Casino Panel - Multiplayer

Gartic.io için multiplayer casino paneli

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Gartic.io Casino Panel - Multiplayer
// @namespace    http://tampermonkey.net/
// @version      4.0
// @description  Gartic.io için multiplayer casino paneli
// @author       You
// @match        https://gartic.io/*
// @match        https://*.gartic.io/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let dumCoins = 50000;
    let currentGame = 'rulet';
    let aviatorMultiplier = 1.00;
    let aviatorActive = false;
    let aviatorInterval = null;
    let minesBoard = [];
    let minesRevealed = [];
    let slotSpinning = false;
    let gameActive = false;
    let plinkoActive = false;
    let autoDropping = false;

    // Multiplayer özellikleri
    let playerNick = '';
    let playerId = '';
    let leaderboardData = [];
    let isOnline = false;
    let updateInterval = null;
    let lastUpdate = Date.now();
    let websocket = null;

    let blackjackGame = {
        deck: [], playerCards: [], dealerCards: [],
        gameActive: false, playerStand: false, dealerHidden: true, bet: 0
    };

    let plinkoStats = { totalDrops: 0, totalWinnings: 0, bestMultiplier: 0, totalWins: 0 };
    let casinoStats = { totalBets: 0, totalWon: 0, totalLost: 0, gamesPlayed: 0, biggestWin: 0, biggestLoss: 0 };
    let sessionStats = { startCoins: 50000, sessionsPlayed: 0, biggestSession: 0 };

    // Multiplayer fonksiyonları
    function generatePlayerId() {
        return 'player_' + Math.random().toString(36).substr(2, 9) + '_' + Date.now();
    }

    function connectToServer() {
        // JSONBin.io kullanarak basit bir backend simülasyonu
        // Gerçek projede WebSocket servisi kullanılmalı
        try {
            isOnline = true;
            console.log('🌐 Sunucuya bağlanıldı (Simülasyon)');
            updatePlayerData();
            startDataSync();
        } catch (error) {
            console.log('❌ Sunucu bağlantısı başarısız:', error);
            isOnline = false;
        }
    }

    function startDataSync() {
        if (updateInterval) clearInterval(updateInterval);

        updateInterval = setInterval(() => {
            if (isOnline && playerNick) {
                updatePlayerData();
                fetchLeaderboard();
            }
        }, 2000); // Her 2 saniyede bir güncelle
    }

    function updatePlayerData() {
        if (!playerNick || !isOnline) return;

        const playerData = {
            id: playerId,
            nick: playerNick,
            coins: dumCoins,
            stats: casinoStats,
            plinkoStats: plinkoStats,
            sessionStats: sessionStats,
            lastActive: Date.now(),
            currentGame: currentGame,
            status: autoDropping ? 'Auto Playing' : gameActive ? 'Playing' : 'Online'
        };

        // localStorage'da oyuncuları sakla (gerçek projede API kullanılmalı)
        const allPlayers = JSON.parse(localStorage.getItem('casino_players') || '{}');
        allPlayers[playerId] = playerData;
        localStorage.setItem('casino_players', JSON.stringify(allPlayers));
    }

    function fetchLeaderboard() {
        try {
            const allPlayers = JSON.parse(localStorage.getItem('casino_players') || '{}');
            const currentTime = Date.now();

            // Son 5 dakika içinde aktif olan oyuncuları filtrele
            leaderboardData = Object.values(allPlayers)
                .filter(player => currentTime - player.lastActive < 300000) // 5 dakika
                .sort((a, b) => b.coins - a.coins)
                .slice(0, 10); // İlk 10

            updateLeaderboardDisplay();
        } catch (error) {
            console.log('Leaderboard güncellenemiyor:', error);
        }
    }

    function updateLeaderboardDisplay() {
        const leaderboard = document.getElementById('multiplayer-leaderboard');
        if (!leaderboard) return;

        if (leaderboardData.length === 0) {
            leaderboard.innerHTML = '<div style="color: #666; text-align: center; padding: 10px;">Henüz oyuncu yok</div>';
            return;
        }

        let html = '<div style="color: #FFD700; font-size: 12px; font-weight: bold; text-align: center; margin-bottom: 8px;">🏆 CANLI SIRALAM</div>';

        leaderboardData.forEach((player, index) => {
            const isCurrentPlayer = player.id === playerId;
            const rankIcon = index === 0 ? '🥇' : index === 1 ? '🥈' : index === 2 ? '🥉' : `${index + 1}.`;
            const statusColor = player.status === 'Auto Playing' ? '#FF6B6B' : player.status === 'Playing' ? '#FFA500' : '#4CAF50';
            const netProfit = player.stats.totalWon - player.stats.totalLost;

            html += `
                <div style="
                    background: ${isCurrentPlayer ? 'rgba(255,215,0,0.2)' : 'rgba(255,255,255,0.05)'};
                    border: ${isCurrentPlayer ? '1px solid #FFD700' : '1px solid rgba(255,255,255,0.1)'};
                    border-radius: 6px; padding: 6px; margin: 3px 0; font-size: 10px;
                    display: grid; grid-template-columns: 20px 1fr 60px; gap: 6px; align-items: center;
                ">
                    <div style="text-align: center;">${rankIcon}</div>
                    <div style="color: ${isCurrentPlayer ? '#FFD700' : '#FFF'}; font-weight: ${isCurrentPlayer ? 'bold' : 'normal'};">
                        <div style="font-size: 11px;">${player.nick}</div>
                        <div style="font-size: 9px; color: ${statusColor};">● ${player.status}</div>
                    </div>
                    <div style="text-align: right; color: #FFD700; font-weight: bold;">
                        <div>${player.coins.toLocaleString()}</div>
                        <div style="font-size: 8px; color: ${netProfit >= 0 ? '#4CAF50' : '#F44336'};">${netProfit >= 0 ? '+' : ''}${netProfit}</div>
                    </div>
                </div>
            `;
        });

        // Online oyuncu sayısı
        html += `<div style="text-align: center; color: #666; font-size: 9px; margin-top: 8px; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 6px;">
            🌐 ${leaderboardData.length} oyuncu online
        </div>`;

        leaderboard.innerHTML = html;
    }

    function showNickDialog() {
        const dialog = document.createElement('div');
        dialog.style.cssText = `
            position: fixed; top: 0; left: 0; width: 100vw; height: 100vh;
            background: rgba(0,0,0,0.8); z-index: 10000; display: flex;
            align-items: center; justify-content: center; font-family: Arial;
        `;

        dialog.innerHTML = `
            <div style="
                background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
                border: 3px solid #FFD700; border-radius: 15px; padding: 30px;
                text-align: center; color: white; box-shadow: 0 20px 60px rgba(0,0,0,0.5);
            ">
                <h2 style="color: #FFD700; margin-bottom: 20px;">🎰 DUM CASINO 🎰</h2>
                <p style="margin-bottom: 20px;">Multiplayer moduna katılmak için nick girin:</p>
                <input type="text" id="nick-input" placeholder="Nickinizi girin..." style="
                    width: 200px; padding: 10px; border: 2px solid #FFD700; border-radius: 8px;
                    text-align: center; font-size: 16px; margin-bottom: 20px;
                ">
                <br>
                <button onclick="startMultiplayer()" style="
                    background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);
                    border: none; color: #000; padding: 12px 25px; border-radius: 10px;
                    cursor: pointer; font-weight: bold; font-size: 14px; margin-right: 10px;
                ">🚀 BAŞLA</button>
                <button onclick="startOffline()" style="
                    background: linear-gradient(135deg, #666 0%, #444 100%);
                    border: none; color: white; padding: 12px 25px; border-radius: 10px;
                    cursor: pointer; font-weight: bold; font-size: 14px;
                ">🔒 ÇEVRİMDIŞI</button>
            </div>
        `;

        document.body.appendChild(dialog);

        // Enter tuşu ile başlat
        document.getElementById('nick-input').addEventListener('keypress', (e) => {
            if (e.key === 'Enter') startMultiplayer();
        });

        window.startMultiplayer = () => {
            const nick = document.getElementById('nick-input').value.trim();
            if (!nick || nick.length < 3) {
                alert('Nick en az 3 karakter olmalı!');
                return;
            }
            if (nick.length > 15) {
                alert('Nick en fazla 15 karakter olabilir!');
                return;
            }

            playerNick = nick;
            playerId = generatePlayerId();
            sessionStats.startCoins = dumCoins;

            document.body.removeChild(dialog);
            connectToServer();

            // Multiplayer panelini göster
            const multiplayerPanel = document.getElementById('multiplayer-panel');
            if (multiplayerPanel) multiplayerPanel.style.display = 'block';
        };

        window.startOffline = () => {
            document.body.removeChild(dialog);
            isOnline = false;

            // Multiplayer panelini gizle
            const multiplayerPanel = document.getElementById('multiplayer-panel');
            if (multiplayerPanel) multiplayerPanel.style.display = 'none';
        };

        // Fokus ver
        setTimeout(() => {
            document.getElementById('nick-input').focus();
        }, 100);
    }

    function loadGameData() {
        try {
            const savedCoins = localStorage.getItem('dumCoins');
            const savedPlinkoStats = localStorage.getItem('plinkoStats');
            const savedCasinoStats = localStorage.getItem('casinoStats');
            const savedSessionStats = localStorage.getItem('sessionStats');

            if (savedCoins) dumCoins = parseInt(savedCoins);
            if (savedPlinkoStats) plinkoStats = JSON.parse(savedPlinkoStats);
            if (savedCasinoStats) casinoStats = JSON.parse(savedCasinoStats);
            if (savedSessionStats) sessionStats = JSON.parse(savedSessionStats);
        } catch (error) {
            console.log('Veri yükleme hatası:', error);
        }
    }

    function saveGameData() {
        try {
            localStorage.setItem('dumCoins', dumCoins.toString());
            localStorage.setItem('plinkoStats', JSON.stringify(plinkoStats));
            localStorage.setItem('casinoStats', JSON.stringify(casinoStats));
            localStorage.setItem('sessionStats', JSON.stringify(sessionStats));
        } catch (error) {
            console.log('Veri kaydetme hatası:', error);
        }
    }

    function updateCoinDisplay() {
        const display = document.getElementById('coin-display');
        if (display) display.textContent = dumCoins.toLocaleString();

        // Session stats güncelle
        const sessionProfit = dumCoins - sessionStats.startCoins;
        if (Math.abs(sessionProfit) > Math.abs(sessionStats.biggestSession)) {
            sessionStats.biggestSession = sessionProfit;
        }

        saveGameData();
        if (isOnline) updatePlayerData();
    }

    function updateBetStats(betAmount, winAmount, gameType) {
        casinoStats.totalBets += betAmount;
        casinoStats.gamesPlayed++;
        if (winAmount > betAmount) {
            const profit = winAmount - betAmount;
            casinoStats.totalWon += profit;
            if (profit > casinoStats.biggestWin) casinoStats.biggestWin = profit;
        } else {
            const loss = betAmount - winAmount;
            casinoStats.totalLost += loss;
            if (loss > casinoStats.biggestLoss) casinoStats.biggestLoss = loss;
        }
        saveGameData();
        updateCasinoStatsDisplay();
        if (isOnline) updatePlayerData();
    }

    function updateCasinoStatsDisplay() {
        const statsContainer = document.getElementById('casino-stats');
        if (statsContainer) {
            const netProfit = casinoStats.totalWon - casinoStats.totalLost;
            const sessionProfit = dumCoins - sessionStats.startCoins;

            statsContainer.innerHTML = `
                <div style="color: #FFD700; font-size: 12px; font-weight: bold;">📊 İSTATİSTİK:</div>
                <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; font-size: 11px; color: #FFF; margin-top: 5px;">
                    <div>Oyun: ${casinoStats.gamesPlayed}</div>
                    <div style="color: ${netProfit >= 0 ? '#4CAF50' : '#F44336'};">Toplam: ${netProfit >= 0 ? '+' : ''}${netProfit}</div>
                    <div style="color: ${sessionProfit >= 0 ? '#4CAF50' : '#F44336'};">Oturum: ${sessionProfit >= 0 ? '+' : ''}${sessionProfit}</div>
                    <div style="color: #FFD700;">En İyi: ${sessionStats.biggestSession >= 0 ? '+' : ''}${sessionStats.biggestSession}</div>
                </div>
            `;
        }
    }

    function createCasinoPanel() {
        loadGameData();

        const panel = document.createElement('div');
        panel.id = 'casino-panel';
        panel.style.cssText = `
            position: fixed; top: 10px; left: 10px; width: 380px; height: 580px;
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
            border: 3px solid #FFD700; border-radius: 15px; box-shadow: 0 15px 40px rgba(0,0,0,0.5);
            z-index: 9999; font-family: 'Arial', sans-serif; color: white; overflow: hidden;
        `;

        panel.innerHTML = `
            <div style="padding: 15px; text-align: center; background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); border-bottom: 2px solid #B8860B; color: #000;">
                <h3 style="margin: 0; text-shadow: 1px 1px 2px rgba(0,0,0,0.3);">🎰 DUM CASINO 🎰</h3>
                <div style="margin-top: 5px; font-size: 18px; font-weight: bold;">
                    💰 <span id="coin-display">${dumCoins.toLocaleString()}</span> DumCoin
                </div>
            </div>
            <div style="display: grid; grid-template-columns: repeat(6, 1fr); background: rgba(0,0,0,0.3);">
                <button onclick="switchGame('rulet')" class="game-btn" id="rulet-btn">🎡</button>
                <button onclick="switchGame('aviator')" class="game-btn" id="aviator-btn">✈️</button>
                <button onclick="switchGame('mines')" class="game-btn" id="mines-btn">💣</button>
                <button onclick="switchGame('slot')" class="game-btn" id="slot-btn">🎰</button>
                <button onclick="switchGame('blackjack')" class="game-btn" id="blackjack-btn">🃏</button>
                <button onclick="switchGame('plinko')" class="game-btn" id="plinko-btn">🎯</button>
            </div>
            <div id="casino-stats" style="background: rgba(0,0,0,0.4); padding: 8px; margin: 5px; border-radius: 8px; border: 1px solid #666; font-size: 11px;"></div>
            <div id="game-area" style="padding: 15px; height: 380px; overflow-y: auto;"></div>
        `;

        document.body.appendChild(panel);

        // Multiplayer paneli
        const multiplayerPanel = document.createElement('div');
        multiplayerPanel.id = 'multiplayer-panel';
        multiplayerPanel.style.cssText = `
            position: fixed; top: 10px; right: 10px; width: 280px; height: 400px;
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
            border: 3px solid #FFD700; border-radius: 15px; box-shadow: 0 15px 40px rgba(0,0,0,0.5);
            z-index: 9998; font-family: 'Arial', sans-serif; color: white; overflow: hidden;
            display: none;
        `;

        multiplayerPanel.innerHTML = `
            <div style="padding: 12px; text-align: center; background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); border-bottom: 2px solid #B8860B; color: #000;">
                <h4 style="margin: 0; font-size: 16px;">🌐 MULTIPLAYER</h4>
                <div style="font-size: 12px; margin-top: 3px;">Nick: <span id="player-nick-display"></span></div>
            </div>
            <div id="multiplayer-leaderboard" style="padding: 10px; height: 350px; overflow-y: auto;"></div>
        `;

        document.body.appendChild(multiplayerPanel);

        const style = document.createElement('style');
        style.textContent = `
            .game-btn { padding: 12px 6px; background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%); border: 1px solid rgba(255,255,255,0.2); color: white; cursor: pointer; font-size: 16px; font-weight: bold; transition: all 0.3s ease; }
            .game-btn:hover { background: linear-gradient(135deg, rgba(255,215,0,0.3) 0%, rgba(255,140,0,0.2) 100%); }
            .game-btn.active { background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); color: #000; border-bottom: 3px solid #B8860B; }
            .bet-input { width: 100px; padding: 8px; border: 2px solid #FFD700; border-radius: 8px; text-align: center; font-size: 14px; font-weight: bold; background: rgba(255,255,255,0.9); color: #333; }
            .action-btn { background: linear-gradient(135deg, #FF6B6B 0%, #FF4757 100%); border: none; color: white; padding: 12px 20px; border-radius: 10px; cursor: pointer; font-weight: bold; font-size: 14px; transition: all 0.3s ease; margin: 5px; }
            .action-btn:hover:not(:disabled) { transform: translateY(-2px); }
            .action-btn:disabled { opacity: 0.5; cursor: not-allowed; }
            .success-btn { background: linear-gradient(135deg, #2ED573 0%, #1DD1A1 100%) !important; }
            .warning-btn { background: linear-gradient(135deg, #FFA502 0%, #FF7675 100%) !important; }
            .card { display: inline-block; width: 35px; height: 50px; background: white; border: 2px solid #333; border-radius: 6px; margin: 2px; text-align: center; line-height: 46px; font-size: 11px; font-weight: bold; color: #333; vertical-align: top; }
            .card.red { color: #d63031; }
            .result-display { background: rgba(0,0,0,0.6); border: 2px solid #FFD700; border-radius: 10px; padding: 10px; margin: 10px 0; font-weight: bold; text-align: center; min-height: 20px; }
            .plinko-ball { width: 8px; height: 8px; background: radial-gradient(circle, #FFD700 0%, #FF6B6B 100%); border: 1px solid #FFF; border-radius: 50%; position: absolute; z-index: 10; }
            .plinko-peg { width: 6px; height: 6px; background: #FFF; border-radius: 50%; position: absolute; }
            .plinko-bucket { position: absolute; bottom: 0; width: 16px; height: 35px; border: 2px solid #FFD700; border-radius: 5px 5px 0 0; display: flex; align-items: center; justify-content: center; font-size: 8px; font-weight: bold; color: #FFD700; }
        `;
        document.head.appendChild(style);

        window.switchGame = switchGame;
        window.playRulet = playRulet;
        window.startAviator = startAviator;
        window.cashoutAviator = cashoutAviator;
        window.revealMine = revealMine;
        window.startMines = startMines;
        window.cashoutMines = cashoutMines;
        window.spinSlot = spinSlot;
        window.startBlackjack = startBlackjack;
        window.hitBlackjack = hitBlackjack;
        window.standBlackjack = standBlackjack;
        window.dropPlinkoBall = dropPlinkoBall;
        window.dropMultipleBalls = dropMultipleBalls;
        window.autoDropBalls = autoDropBalls;

        switchGame('rulet');
        updateCasinoStatsDisplay();

        // Nick dialog göster
        setTimeout(() => {
            showNickDialog();
        }, 1000);
    }

    function switchGame(game) {
        currentGame = game;
        document.querySelectorAll('.game-btn').forEach(btn => btn.classList.remove('active'));
        const activeBtn = document.getElementById(game + '-btn');
        if (activeBtn) activeBtn.classList.add('active');

        const gameArea = document.getElementById('game-area');
        if (!gameArea) return;

        switch(game) {
            case 'rulet': gameArea.innerHTML = createRuletGame(); break;
            case 'aviator': gameArea.innerHTML = createAviatorGame(); break;
            case 'mines': gameArea.innerHTML = createMinesGame(); initMinesBoard(); break;
            case 'slot': gameArea.innerHTML = createSlotGame(); break;
            case 'blackjack': gameArea.innerHTML = createBlackjackGame(); break;
            case 'plinko': gameArea.innerHTML = createPlinkoGame(); setupPlinkoBoard(); break;
        }

        // Online oyuncuya hangi oyunu oynadığını güncelle
        if (isOnline) updatePlayerData();
    }

    // Oyun fonksiyonları (önceki script'teki gibi kalacak - çok uzun olduğu için kısaltıyorum)
    function createRuletGame() {
        return `
            <div style="text-align: center;">
                <h3 style="color: #FFD700; margin-bottom: 15px;">🎡 RULET MASASI</h3>
                <div style="margin: 20px 0;">
                    <div style="position: relative; display: inline-block;">
                        <div id="roulette-wheel" style="width: 120px; height: 120px; border: 4px solid #FFD700; border-radius: 50%; margin: 0 auto; background: conic-gradient(#00FF00 0deg 9.7deg, #FF0000 9.7deg 19.4deg, #000000 19.4deg 29.1deg, #FF0000 29.1deg 38.8deg, #000000 38.8deg 48.5deg, #FF0000 48.5deg 58.2deg, #000000 58.2deg 67.9deg, #FF0000 67.9deg 77.6deg, #000000 77.6deg 87.3deg, #FF0000 87.3deg 97deg, #000000 97deg 106.7deg, #FF0000 106.7deg 116.4deg, #000000 116.4deg 126.1deg, #FF0000 126.1deg 135.8deg, #000000 135.8deg 145.5deg, #FF0000 145.5deg 155.2deg, #000000 155.2deg 164.9deg, #FF0000 164.9deg 174.6deg, #000000 174.6deg 184.3deg, #FF0000 184.3deg 194deg, #000000 194deg 203.7deg, #FF0000 203.7deg 213.4deg, #000000 213.4deg 223.1deg, #FF0000 223.1deg 232.8deg, #000000 232.8deg 242.5deg, #FF0000 242.5deg 252.2deg, #000000 252.2deg 261.9deg, #FF0000 261.9deg 271.6deg, #000000 271.6deg 281.3deg, #FF0000 281.3deg 291deg, #000000 291deg 300.7deg, #FF0000 300.7deg 310.4deg, #000000 310.4deg 320.1deg, #FF0000 320.1deg 329.8deg, #000000 329.8deg 339.5deg, #FF0000 339.5deg 349.2deg, #000000 349.2deg 358.9deg, #FF0000 358.9deg 360deg); transition: transform 3s cubic-bezier(0.23, 1, 0.32, 1);"></div>
                        <div style="position: absolute; top: -8px; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 16px solid #FFD700; z-index: 10; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));"></div>
                        <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 8px; height: 8px; background: white; border-radius: 50%; z-index: 5;"></div>
                    </div>
                    <div id="roulette-result-display" class="result-display" style="margin-top: 15px; font-size: 18px; color: #FFD700;">Bahis yapın!</div>
                </div>
                <div style="margin: 15px 0;">
                    <label style="color: #FFD700; font-weight: bold;">💰 Bahis Miktarı: </label>
                    <input type="number" id="rulet-bet" class="bet-input" value="100" min="10" max="${dumCoins}">
                </div>
                <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin: 15px 0;">
                    <button class="action-btn" onclick="playRulet('red')" style="background: linear-gradient(135deg, #FF0000 0%, #CC0000 100%);">🔴 KIRMIZI</button>
                    <button class="action-btn" onclick="playRulet('black')" style="background: linear-gradient(135deg, #333333 0%, #000000 100%);">⚫ SİYAH</button>
                    <button class="action-btn" onclick="playRulet('even')">⚪ ÇİFT</button>
                    <button class="action-btn" onclick="playRulet('odd')">⚪ TEK</button>
                </div>
                <div id="rulet-result" class="result-display">Bahis seçin ve şansınızı deneyin!</div>
            </div>
        `;
    }

    function playRulet(bet) {
        const betAmount = parseInt(document.getElementById('rulet-bet').value);
        if (betAmount > dumCoins || betAmount < 10) return;

        dumCoins -= betAmount;
        updateCoinDisplay();

        // Rastgele sonuç ve fiziksel hesaplama
        const result = Math.floor(Math.random() * 37); // 0-36

        // Gerçek rulet düzeni - sırayla yerleştirilmiş sayılar
        const wheelOrder = [0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29, 7, 28, 12, 35, 3, 26];
        const redNumbers = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36];

        // Sonucun wheel'daki pozisyonunu bul
        const resultIndex = wheelOrder.indexOf(result);
        const sectorAngle = 360 / 37; // Her sektör için açı
        const resultAngle = resultIndex * sectorAngle;

        // Renk belirleme
        let isRed = redNumbers.includes(result);
        let isBlack = result > 0 && !isRed;
        let isEven = result > 0 && result % 2 === 0;
        let isOdd = result > 0 && result % 2 === 1;

        const wheel = document.getElementById('roulette-wheel');
        if (wheel) {
            // Wheel'i döndür - sonuç üstteki çubuk altına gelecek şekilde
            const spins = Math.floor(Math.random() * 5) + 4; // 4-8 tur
            const finalAngle = (spins * 360) + (360 - resultAngle); // Çubuk altına gelecek açı
            wheel.style.transform = `rotate(${finalAngle}deg)`;
        }

        // Sonucu bekle ve göster
        setTimeout(() => {
            let resultColor = result === 0 ? '#00FF00' : (isRed ? '#FF0000' : '#FFFFFF');
            let categoryText = result === 0 ? '(YEŞİL-0)' : (isRed ? '(KIRMIZI)' : '(SİYAH)');

            document.getElementById('roulette-result-display').innerHTML =
                `<span style="color: ${resultColor}; font-weight: bold; background: rgba(${result === 0 ? '0,255,0' : isRed ? '255,0,0' : '255,255,255'},0.2); padding: 5px 10px; border-radius: 15px;">${result} ${categoryText}</span>`;

            let won = (bet === 'red' && isRed) || (bet === 'black' && isBlack) || (bet === 'even' && isEven) || (bet === 'odd' && isOdd);

            if (won) {
                const winAmount = betAmount * 2;
                dumCoins += winAmount;
                updateBetStats(betAmount, winAmount, 'rulet');
                document.getElementById('rulet-result').innerHTML =
                    `<span style="color: #00FF00;">🎉 KAZANDINIZ!</span><br>Çıkan: ${result} ${categoryText}<br><span style="color: #FFD700;">+${winAmount} DumCoin</span>`;
            } else {
                updateBetStats(betAmount, 0, 'rulet');
                document.getElementById('rulet-result').innerHTML =
                    `<span style="color: #FF6B6B;">😢 KAYBETTİNİZ!</span><br>Çıkan: ${result} ${categoryText}<br><span style="color: #FF6B6B;">-${betAmount} DumCoin</span>`;
            }
            updateCoinDisplay();
        }, 3200);
    }

    function createAviatorGame() {
        return `
            <div style="text-align: center;">
                <h3 style="color: #FFD700; margin-bottom: 15px;">✈️ AVIATOR UÇAĞI</h3>
                <div style="margin: 20px 0;">
                    <div style="width: 280px; height: 150px; background: linear-gradient(to bottom, #87CEEB, #98FB98); border: 3px solid #FFD700; border-radius: 15px; margin: 0 auto; position: relative;">
                        <div id="aviator-plane" style="position: absolute; bottom: 20px; left: 20px; font-size: 30px;">✈️</div>
                        <div id="aviator-multiplier" style="position: absolute; top: 15px; right: 15px; font-size: 24px; font-weight: bold; color: #333; background: rgba(255,255,255,0.8); padding: 8px 15px; border-radius: 10px;">1.00x</div>
                    </div>
                </div>
                <div style="margin: 20px 0;">
                    <label style="color: #FFD700; font-weight: bold;">💰 Bahis Miktarı: </label>
                    <input type="number" id="aviator-bet" class="bet-input" value="100" min="10" max="${dumCoins}">
                </div>
                <div style="display: flex; justify-content: center; gap: 15px;">
                    <button id="aviator-start-btn" class="action-btn" onclick="startAviator()" style="background: linear-gradient(135deg, #00D2FF 0%, #3A7BD5 100%);">🚀 UÇUŞU BAŞLAT</button>
                    <button id="aviator-cashout-btn" class="action-btn success-btn" onclick="cashoutAviator()" disabled>💰 PARA ÇEK</button>
                </div>
                <div id="aviator-result" class="result-display">Uçağın düşmeden önce para çekin!</div>
            </div>
        `;
    }

    function startAviator() {
        const betAmount = parseInt(document.getElementById('aviator-bet').value);
        if (betAmount > dumCoins || betAmount < 10) return;

        dumCoins -= betAmount;
        updateCoinDisplay();

        aviatorActive = true;
        aviatorMultiplier = 1.00;

        document.getElementById('aviator-start-btn').disabled = true;
        document.getElementById('aviator-cashout-btn').disabled = false;
        document.getElementById('aviator-result').innerHTML = '<span style="color: #00FF00;">✈️ Uçak havalandı!</span>';

        const crashPoint = 1.0 + Math.random() * 8;

        aviatorInterval = setInterval(() => {
            if (!aviatorActive) return;

            aviatorMultiplier += 0.01;
            document.getElementById('aviator-multiplier').textContent = aviatorMultiplier.toFixed(2) + 'x';

            const plane = document.getElementById('aviator-plane');
            const progress = Math.min((aviatorMultiplier - 1) * 40, 200);
            plane.style.left = (20 + progress) + 'px';
            plane.style.bottom = (20 + progress/4) + 'px';
            plane.style.transform = `rotate(${progress/15}deg)`;

            if (aviatorMultiplier >= crashPoint) {
                aviatorActive = false;
                clearInterval(aviatorInterval);
                updateBetStats(betAmount, 0, 'aviator');
                document.getElementById('aviator-result').innerHTML = `<span style="color: #FF6B6B;">💥 Uçak düştü! ${aviatorMultiplier.toFixed(2)}x'de</span>`;
                document.getElementById('aviator-start-btn').disabled = false;
                document.getElementById('aviator-cashout-btn').disabled = true;

                setTimeout(() => {
                    plane.style.left = '20px';
                    plane.style.bottom = '20px';
                    plane.style.transform = 'rotate(0deg)';
                    document.getElementById('aviator-multiplier').textContent = '1.00x';
                }, 1500);
            }
        }, 100);
    }

    function cashoutAviator() {
        if (!aviatorActive) return;

        aviatorActive = false;
        clearInterval(aviatorInterval);

        const betAmount = parseInt(document.getElementById('aviator-bet').value);
        const winAmount = Math.floor(betAmount * aviatorMultiplier);

        dumCoins += winAmount;
        updateBetStats(betAmount, winAmount, 'aviator');
        updateCoinDisplay();

        document.getElementById('aviator-result').innerHTML = `<span style="color: #00FF00;">🎉 Başarılı çıkış! ${aviatorMultiplier.toFixed(2)}x</span><br>+${winAmount} DumCoin`;
        document.getElementById('aviator-start-btn').disabled = false;
        document.getElementById('aviator-cashout-btn').disabled = true;
    }

    function createMinesGame() {
        return `
            <div style="text-align: center;">
                <h3 style="color: #FFD700; margin-bottom: 15px;">💣 MAYIN TARLASI</h3>
                <div style="margin: 15px 0;">
                    <label style="color: #FFD700; font-weight: bold;">💰 Bahis Miktarı: </label>
                    <input type="number" id="mines-bet" class="bet-input" value="100" min="10" max="${dumCoins}">
                </div>
                <div style="display: flex; justify-content: center; gap: 15px; margin: 15px 0;">
                    <button class="action-btn" onclick="startMines()" id="mines-start-btn">🎮 OYUNU BAŞLAT</button>
                    <button class="action-btn success-btn" onclick="cashoutMines()" id="mines-cashout-btn" disabled>💰 PARA ÇEK</button>
                </div>
                <div id="mines-board" style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 20px auto; width: 200px; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px;"></div>
                <div id="mines-result" class="result-display">4 mayın var! Elmasları bulun!</div>
            </div>
        `;
    }

    function initMinesBoard() {
        minesBoard = Array(16).fill(false);
        minesRevealed = Array(16).fill(false);
        updateMinesBoard();
    }

    function updateMinesBoard() {
        const board = document.getElementById('mines-board');
        if (!board) return;

        board.innerHTML = '';
        for (let i = 0; i < 16; i++) {
            const cell = document.createElement('div');
            cell.style.cssText = `
                width: 40px; height: 40px; background: linear-gradient(135deg, #666 0%, #444 100%);
                border: 2px solid #999; border-radius: 8px; display: flex; align-items: center;
                justify-content: center; cursor: pointer; font-size: 20px; transition: all 0.3s ease;
            `;

            if (minesRevealed[i]) {
                if (minesBoard[i]) {
                    cell.textContent = '💣';
                    cell.style.background = 'linear-gradient(135deg, #FF4757 0%, #CC2E3F 100%)';
                } else {
                    cell.textContent = '💎';
                    cell.style.background = 'linear-gradient(135deg, #00D2FF 0%, #3A7BD5 100%)';
                }
                cell.style.cursor = 'default';
            } else {
                if (gameActive) {
                    cell.addEventListener('click', () => revealMine(i));
                    cell.addEventListener('mouseenter', () => {
                        cell.style.background = 'linear-gradient(135deg, #888 0%, #666 100%)';
                    });
                    cell.addEventListener('mouseleave', () => {
                        cell.style.background = 'linear-gradient(135deg, #666 0%, #444 100%)';
                    });
                }
            }
            board.appendChild(cell);
        }
    }

    function startMines() {
        const betAmount = parseInt(document.getElementById('mines-bet').value);
        if (betAmount > dumCoins || betAmount < 10) return;

        dumCoins -= betAmount;
        updateCoinDisplay();
        gameActive = true;

        minesBoard = Array(16).fill(false);
        minesRevealed = Array(16).fill(false);

        let minesPlaced = 0;
        while (minesPlaced < 4) {
            const pos = Math.floor(Math.random() * 16);
            if (!minesBoard[pos]) {
                minesBoard[pos] = true;
                minesPlaced++;
            }
        }

        updateMinesBoard();
        document.getElementById('mines-result').innerHTML = '<span style="color: #FFD700;">💎 Elmasları bulun!</span>';
        document.getElementById('mines-start-btn').disabled = true;
        document.getElementById('mines-cashout-btn').disabled = false;
    }

    function revealMine(index) {
        if (minesRevealed[index] || !gameActive) return;

        minesRevealed[index] = true;
        updateMinesBoard();

        const betAmount = parseInt(document.getElementById('mines-bet').value);

        if (minesBoard[index]) {
            gameActive = false;
            updateBetStats(betAmount, 0, 'mines');
            document.getElementById('mines-result').innerHTML = `<span style="color: #FF6B6B;">💣 Mayına bastınız!</span><br>-${betAmount} DumCoin`;
            document.getElementById('mines-start-btn').disabled = false;
            document.getElementById('mines-cashout-btn').disabled = true;

            setTimeout(() => {
                for (let i = 0; i < 16; i++) {
                    if (minesBoard[i]) minesRevealed[i] = true;
                }
                updateMinesBoard();
            }, 500);
        } else {
            const revealedCount = minesRevealed.filter((revealed, i) => revealed && !minesBoard[i]).length;
            const multiplier = 1 + (revealedCount * 0.4);
            const currentWin = Math.floor(betAmount * multiplier);

            document.getElementById('mines-result').innerHTML = `<span style="color: #00FF00;">💎 ${revealedCount} elmas!</span><br>Kazanç: ${currentWin} DC (${multiplier.toFixed(1)}x)`;

            if (revealedCount === 12) {
                gameActive = false;
                dumCoins += currentWin;
                updateBetStats(betAmount, currentWin, 'mines');
                updateCoinDisplay();
                document.getElementById('mines-result').innerHTML = `<span style="color: #00FF00;">🎉 Tüm elmaslar!</span><br>+${currentWin} DumCoin`;
                document.getElementById('mines-start-btn').disabled = false;
                document.getElementById('mines-cashout-btn').disabled = true;
            }
        }
    }

    function cashoutMines() {
        if (!gameActive) return;

        const betAmount = parseInt(document.getElementById('mines-bet').value);
        const revealedCount = minesRevealed.filter((revealed, i) => revealed && !minesBoard[i]).length;

        if (revealedCount === 0) {
            document.getElementById('mines-result').innerHTML = '<span style="color: #FF6B6B;">❌ Önce elmas bulun!</span>';
            return;
        }

        gameActive = false;
        const multiplier = 1 + (revealedCount * 0.4);
        const winAmount = Math.floor(betAmount * multiplier);

        dumCoins += winAmount;
        updateBetStats(betAmount, winAmount, 'mines');
        updateCoinDisplay();

        document.getElementById('mines-result').innerHTML = `<span style="color: #00FF00;">💰 Para çekildi!</span><br>+${winAmount} DumCoin`;
        document.getElementById('mines-start-btn').disabled = false;
        document.getElementById('mines-cashout-btn').disabled = true;
    }

    function createSlotGame() {
        return `
            <div style="text-align: center;">
                <h3 style="color: #FFD700; margin-bottom: 15px;">🎰 SLOT MAKİNESİ</h3>
                <div style="margin: 20px 0;">
                    <div style="background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); padding: 20px; border-radius: 15px; display: inline-block;">
                        <div style="display: flex; justify-content: center; gap: 15px;">
                            <div id="reel1" style="width: 60px; height: 80px; border: 3px solid #333; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 30px; background: white; color: black;">🍒</div>
                            <div id="reel2" style="width: 60px; height: 80px; border: 3px solid #333; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 30px; background: white; color: black;">🍋</div>
                            <div id="reel3" style="width: 60px; height: 80px; border: 3px solid #333; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 30px; background: white; color: black;">🍊</div>
                        </div>
                    </div>
                </div>
                <div style="margin: 20px 0;">
                    <label style="color: #FFD700; font-weight: bold;">💰 Bahis Miktarı: </label>
                    <input type="number" id="slot-bet" class="bet-input" value="100" min="10" max="${dumCoins}">
                </div>
                <button class="action-btn" onclick="spinSlot()" id="slot-spin-btn" style="background: linear-gradient(135deg, #FF6B6B 0%, #4ECDC4 100%); font-size: 16px; padding: 15px 30px;">🎰 ÇEVİR!</button>
                <div style="background: rgba(255,215,0,0.1); padding: 15px; border-radius: 10px; margin: 20px 0;">
                    <div style="color: #FFD700; font-size: 14px; font-weight: bold;">🏆 KAZANÇ TABLOSU:</div>
                    <div style="font-size: 12px; color: #FFF;">💎💎💎 = 20x • 🍒🍒🍒 = 10x • 🍋🍋🍋 = 8x • 🍊🍊🍊 = 6x</div>
                </div>
                <div id="slot-result" class="result-display">Üç aynı sembol ile kazanın!</div>
            </div>
        `;
    }

    function spinSlot() {
        const betAmount = parseInt(document.getElementById('slot-bet').value);
        if (betAmount > dumCoins || betAmount < 10 || slotSpinning) return;

        dumCoins -= betAmount;
        updateCoinDisplay();
        slotSpinning = true;

        const spinBtn = document.getElementById('slot-spin-btn');
        if (spinBtn) spinBtn.disabled = true;

        const symbols = ['🍒', '🍋', '🍊', '💎', '⭐', '🍇'];
        const reels = ['reel1', 'reel2', 'reel3'];
        const results = [];

        document.getElementById('slot-result').innerHTML = '<span style="color: #FFD700;">🎰 Makaralar dönüyor...</span>';

        let spinCount = 0;
        const spinInterval = setInterval(() => {
            reels.forEach(reelId => {
                const reel = document.getElementById(reelId);
                if (reel) {
                    const randomSymbol = symbols[Math.floor(Math.random() * symbols.length)];
                    reel.textContent = randomSymbol;
                }
            });

            spinCount++;
            if (spinCount > 25) {
                clearInterval(spinInterval);

                results.length = 0;
                reels.forEach(reelId => {
                    const reel = document.getElementById(reelId);
                    if (reel) {
                        const finalSymbol = symbols[Math.floor(Math.random() * symbols.length)];
                        reel.textContent = finalSymbol;
                        results.push(finalSymbol);
                    }
                });

                let multiplier = 0;
                if (results.length === 3 && results[0] === results[1] && results[1] === results[2]) {
                    switch(results[0]) {
                        case '💎': multiplier = 20; break;
                        case '🍒': multiplier = 10; break;
                        case '🍋': multiplier = 8; break;
                        case '🍊': multiplier = 6; break;
                        case '⭐': multiplier = 15; break;
                        case '🍇': multiplier = 5; break;
                        default: multiplier = 4;
                    }
                }

                if (multiplier > 0) {
                    const winAmount = betAmount * multiplier;
                    dumCoins += winAmount;
                    updateBetStats(betAmount, winAmount, 'slot');
                    document.getElementById('slot-result').innerHTML = `<span style="color: #00FF00;">🎉 JACKPOT!</span><br>${results.join(' ')}<br>+${winAmount} DumCoin (${multiplier}x)`;
                } else {
                    updateBetStats(betAmount, 0, 'slot');
                    document.getElementById('slot-result').innerHTML = `<span style="color: #FF6B6B;">😢 Şanssızlık!</span><br>${results.join(' ')}<br>-${betAmount} DumCoin`;
                }

                updateCoinDisplay();
                slotSpinning = false;
                if (spinBtn) spinBtn.disabled = false;
            }
        }, 80);
    }

    function createBlackjackGame() {
        return `
            <div style="text-align: center;">
                <h3 style="color: #FFD700; margin-bottom: 15px;">🃏 BLACKJACK 21</h3>
                <div style="background: rgba(0,0,0,0.4); padding: 15px; border-radius: 10px; margin: 15px 0;">
                    <div style="margin-bottom: 15px;">
                        <div style="color: #FFD700; font-weight: bold;">🎭 KRUPYE:</div>
                        <div id="dealer-cards" style="min-height: 60px; display: flex; justify-content: center; flex-wrap: wrap;"></div>
                        <div id="dealer-total" style="color: #FFF; font-weight: bold;"></div>
                    </div>
                    <div>
                        <div style="color: #00FF00; font-weight: bold;">👤 SİZ:</div>
                        <div id="player-cards" style="min-height: 60px; display: flex; justify-content: center; flex-wrap: wrap;"></div>
                        <div id="player-total" style="color: #FFF; font-weight: bold;"></div>
                    </div>
                </div>
                <div style="margin: 20px 0;">
                    <label style="color: #FFD700; font-weight: bold;">💰 Bahis Miktarı: </label>
                    <input type="number" id="blackjack-bet" class="bet-input" value="100" min="10" max="${dumCoins}">
                </div>
                <div style="display: flex; justify-content: center; gap: 10px; flex-wrap: wrap;">
                    <button class="action-btn" onclick="startBlackjack()" id="blackjack-start-btn">🃏 BAŞLAT</button>
                    <button class="action-btn warning-btn" onclick="hitBlackjack()" id="blackjack-hit-btn" disabled>📥 KART ÇEK</button>
                    <button class="action-btn success-btn" onclick="standBlackjack()" id="blackjack-stand-btn" disabled>✋ PAS</button>
                </div>
                <div id="blackjack-result" class="result-display">21'e yaklaş ama geçme!</div>
            </div>
        `;
    }

    function createDeck() {
        const suits = ['♠', '♥', '♦', '♣'];
        const values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
        const deck = [];

        for (let suit of suits) {
            for (let value of values) {
                deck.push({
                    value: value,
                    suit: suit,
                    numValue: value === 'A' ? 11 : (value === 'J' || value === 'Q' || value === 'K') ? 10 : parseInt(value)
                });
            }
        }

        for (let i = deck.length - 1; i > 0; i--) {
            const j = Math.floor(Math.random() * (i + 1));
            [deck[i], deck[j]] = [deck[j], deck[i]];
        }
        return deck;
    }

    function calculateHandValue(cards) {
        let value = 0;
        let aces = 0;

        for (let card of cards) {
            if (card.value === 'A') {
                aces++;
                value += 11;
            } else {
                value += card.numValue;
            }
        }

        while (value > 21 && aces > 0) {
            value -= 10;
            aces--;
        }
        return value;
    }

    function renderCards(cards, containerId, hideFirst = false) {
        const container = document.getElementById(containerId);
        if (!container) return;

        container.innerHTML = '';

        for (let i = 0; i < cards.length; i++) {
            const card = cards[i];
            const cardElement = document.createElement('div');

            if (hideFirst && i === 0) {
                cardElement.className = 'card';
                cardElement.style.background = '#333';
                cardElement.style.color = '#666';
                cardElement.textContent = '?';
            } else {
                const isRed = card.suit === '♥' || card.suit === '♦';
                cardElement.className = `card ${isRed ? 'red' : ''}`;
                cardElement.textContent = card.value + card.suit;
            }

            container.appendChild(cardElement);
        }
    }

    function startBlackjack() {
        const betAmount = parseInt(document.getElementById('blackjack-bet').value);
        if (betAmount > dumCoins || betAmount < 10) return;

        dumCoins -= betAmount;
        updateCoinDisplay();

        blackjackGame.deck = createDeck();
        blackjackGame.playerCards = [];
        blackjackGame.dealerCards = [];
        blackjackGame.gameActive = true;
        blackjackGame.bet = betAmount;

        blackjackGame.playerCards.push(blackjackGame.deck.pop());
        blackjackGame.dealerCards.push(blackjackGame.deck.pop());
        blackjackGame.playerCards.push(blackjackGame.deck.pop());
        blackjackGame.dealerCards.push(blackjackGame.deck.pop());

        renderCards(blackjackGame.playerCards, 'player-cards');
        renderCards(blackjackGame.dealerCards, 'dealer-cards', true);

        const playerTotal = calculateHandValue(blackjackGame.playerCards);
        document.getElementById('player-total').textContent = `Toplam: ${playerTotal}`;
        document.getElementById('dealer-total').textContent = 'Toplam: ?';

        document.getElementById('blackjack-start-btn').disabled = true;
        document.getElementById('blackjack-hit-btn').disabled = false;
        document.getElementById('blackjack-stand-btn').disabled = false;

        if (playerTotal === 21) {
            document.getElementById('blackjack-result').innerHTML = '🎉 BLACKJACK!';
            setTimeout(() => endBlackjackGame(), 1000);
        } else {
            document.getElementById('blackjack-result').textContent = 'Kart çek veya pas geç!';
        }
    }

    function hitBlackjack() {
        if (!blackjackGame.gameActive) return;

        blackjackGame.playerCards.push(blackjackGame.deck.pop());
        renderCards(blackjackGame.playerCards, 'player-cards');

        const playerTotal = calculateHandValue(blackjackGame.playerCards);
        document.getElementById('player-total').textContent = `Toplam: ${playerTotal}`;

        if (playerTotal > 21) {
            document.getElementById('blackjack-result').innerHTML = `💥 BATTI! ${playerTotal}`;
            endBlackjackGame();
        } else if (playerTotal === 21) {
            document.getElementById('blackjack-result').textContent = '🎯 21! Krupye sırası...';
            setTimeout(() => standBlackjack(), 1000);
        } else {
            document.getElementById('blackjack-result').textContent = `Toplam: ${playerTotal} - Devam!`;
        }
    }

    function standBlackjack() {
        if (!blackjackGame.gameActive) return;

        blackjackGame.playerStand = true;
        blackjackGame.dealerHidden = false;

        renderCards(blackjackGame.dealerCards, 'dealer-cards', false);
        let dealerTotal = calculateHandValue(blackjackGame.dealerCards);
        document.getElementById('dealer-total').textContent = `Toplam: ${dealerTotal}`;

        document.getElementById('blackjack-hit-btn').disabled = true;
        document.getElementById('blackjack-stand-btn').disabled = true;

        const dealerPlay = () => {
            if (dealerTotal < 17) {
                setTimeout(() => {
                    blackjackGame.dealerCards.push(blackjackGame.deck.pop());
                    renderCards(blackjackGame.dealerCards, 'dealer-cards', false);
                    dealerTotal = calculateHandValue(blackjackGame.dealerCards);
                    document.getElementById('dealer-total').textContent = `Toplam: ${dealerTotal}`;

                    if (dealerTotal < 17) {
                        dealerPlay();
                    } else {
                        setTimeout(() => endBlackjackGame(), 1000);
                    }
                }, 1000);
            } else {
                setTimeout(() => endBlackjackGame(), 1000);
            }
        };

        dealerPlay();
    }

    function endBlackjackGame() {
        if (!blackjackGame.gameActive) return;

        blackjackGame.gameActive = false;
        const playerTotal = calculateHandValue(blackjackGame.playerCards);
        const dealerTotal = calculateHandValue(blackjackGame.dealerCards);

        renderCards(blackjackGame.dealerCards, 'dealer-cards', false);
        document.getElementById('dealer-total').textContent = `Toplam: ${dealerTotal}`;

        let result = '';
        let winAmount = 0;

        if (playerTotal > 21) {
            result = `💥 BATTI! -${blackjackGame.bet} DumCoin`;
        } else if (dealerTotal > 21) {
            result = `🎉 KRUPYE BATTI! +${blackjackGame.bet * 2} DumCoin`;
            winAmount = blackjackGame.bet * 2;
        } else if (playerTotal === 21 && blackjackGame.playerCards.length === 2) {
            result = `🃏 BLACKJACK! +${Math.floor(blackjackGame.bet * 2.5)} DumCoin`;
            winAmount = Math.floor(blackjackGame.bet * 2.5);
        } else if (playerTotal > dealerTotal) {
            result = `🎉 KAZANDINIZ! +${blackjackGame.bet * 2} DumCoin`;
            winAmount = blackjackGame.bet * 2;
        } else if (playerTotal < dealerTotal) {
            result = `😢 KAYBETTİNİZ! -${blackjackGame.bet} DumCoin`;
        } else {
            result = `🤝 BERABERE! +${blackjackGame.bet} DumCoin`;
            winAmount = blackjackGame.bet;
        }

        dumCoins += winAmount;
        updateBetStats(blackjackGame.bet, winAmount, 'blackjack');
        updateCoinDisplay();

        document.getElementById('blackjack-result').innerHTML = result;
        document.getElementById('blackjack-start-btn').disabled = false;
        document.getElementById('blackjack-hit-btn').disabled = true;
        document.getElementById('blackjack-stand-btn').disabled = true;
    }

    function createPlinkoGame() {
        return `
            <div style="text-align: center;">
                <h3 style="color: #FFD700; margin-bottom: 15px;">🎯 PLINKO</h3>
                <div style="margin: 15px 0;">
                    <label style="color: #FFD700; font-weight: bold;">💰 Bahis: </label>
                    <input type="number" id="plinko-bet" class="bet-input" value="100" min="10" max="${dumCoins}">
                </div>
                <div style="position: relative; width: 350px; height: 280px; margin: 20px auto; background: linear-gradient(135deg, #2C3E50 0%, #34495E 100%); border: 3px solid #FFD700; border-radius: 10px; overflow: hidden;" id="plinko-board"></div>
                <div style="display: flex; justify-content: center; gap: 10px;">
                    <button class="action-btn" onclick="dropPlinkoBall()">🎯 AT</button>
                    <button class="action-btn" onclick="dropMultipleBalls()">🎯 5x</button>
                    <button class="action-btn" onclick="autoDropBalls()" id="plinko-auto-btn">⚡ AUTO</button>
                </div>
                <div id="plinko-stats" style="background: rgba(0,0,0,0.4); padding: 8px; border-radius: 8px; margin: 10px 0;">
                    <div style="color: #FFD700; font-size: 12px;">📊 STATS:</div>
                    <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; font-size: 11px; color: #FFF;">
                        <div>Atış: <span id="total-drops">0</span></div>
                        <div>Net: <span id="total-winnings">0</span></div>
                    </div>
                </div>
                <div id="plinko-result" class="result-display">Top at!</div>
            </div>
        `;
    }

    function setupPlinkoBoard() {
        const board = document.getElementById('plinko-board');
        if (!board) return;

        board.innerHTML = '';

        // BÜYÜK ÇİVİLER - Daha geniş dağılım
        for (let row = 1; row < 12; row++) {
            const pegsInRow = row + 2; // Daha fazla çivi
            const startX = (350 - (pegsInRow * 30)) / 2; // Geniş spacing

            for (let col = 0; col < pegsInRow; col++) {
                const peg = document.createElement('div');
                peg.className = 'plinko-peg';
                peg.style.left = (startX + col * 30) + 'px'; // 30px spacing
                peg.style.top = (15 + row * 22) + 'px'; // Daha geniş aralık
                board.appendChild(peg);
            }
        }

        // DAHA FAZLA KOVA - 26 adet, çoğu kaybettiren
        const multipliers = [1000, 130, 26, 9, 2, 1, 0.5, 0.3, 0.2, 0.1, 0.1, 0.2, 0.3, 0.2, 0.1, 0.1, 0.2, 0.3, 0.5, 1, 2, 9, 26, 130, 1000];
        const bucketWidth = 13;
        const startX = (350 - (multipliers.length * bucketWidth)) / 2;

        multipliers.forEach((mult, index) => {
            const bucket = document.createElement('div');
            bucket.className = 'plinko-bucket';
            bucket.style.left = (startX + index * bucketWidth) + 'px';
            bucket.style.width = bucketWidth + 'px';
            bucket.style.height = '40px'; // Daha yüksek kovalar

            let bgColor = mult >= 100 ? '#FF1744' : mult >= 10 ? '#FF9800' : mult >= 2 ? '#4CAF50' : mult >= 1 ? '#2196F3' : mult >= 0.3 ? '#FF5722' : '#8B0000';

            bucket.style.background = bgColor;
            bucket.style.fontSize = '7px';
            bucket.textContent = mult + 'x';
            bucket.setAttribute('data-multiplier', mult);
            board.appendChild(bucket);
        });

        updatePlinkoStats();
    }

    function updatePlinkoStats() {
        saveGameData();
        const elements = {
            'total-drops': plinkoStats.totalDrops,
            'total-winnings': plinkoStats.totalWinnings
        };

        Object.keys(elements).forEach(id => {
            const element = document.getElementById(id);
            if (element) element.textContent = elements[id];
        });
    }

    function dropPlinkoBall() {
        const betAmount = parseInt(document.getElementById('plinko-bet').value);
        if (betAmount > dumCoins || betAmount < 10) return;

        dumCoins -= betAmount;
        updateCoinDisplay();
        createAndAnimateBall(betAmount);
    }

    function dropMultipleBalls() {
        const betAmount = parseInt(document.getElementById('plinko-bet').value);
        const totalCost = betAmount * 5;

        if (totalCost > dumCoins || betAmount < 10) return;

        dumCoins -= totalCost;
        updateCoinDisplay();

        for (let i = 0; i < 5; i++) {
            setTimeout(() => createAndAnimateBall(betAmount), i * 200);
        }
    }

    function autoDropBalls() {
        const btn = document.getElementById('plinko-auto-btn');

        if (autoDropping) {
            autoDropping = false;
            btn.textContent = '⚡ AUTO';
            return;
        }

        const betAmount = parseInt(document.getElementById('plinko-bet').value);
        if (betAmount > dumCoins || betAmount < 10) return;

        autoDropping = true;
        btn.textContent = '⏸️ DURDUR';

        const autoInterval = setInterval(() => {
            if (!autoDropping || dumCoins < betAmount) {
                autoDropping = false;
                btn.textContent = '⚡ AUTO';
                clearInterval(autoInterval);
                return;
            }

            dumCoins -= betAmount;
            updateCoinDisplay();
            createAndAnimateBall(betAmount);
        }, 500);
    }

    function createAndAnimateBall(betAmount) {
        const board = document.getElementById('plinko-board');
        const ball = document.createElement('div');
        ball.className = 'plinko-ball';

        // Başlangıç pozisyonu - orta ağırlıklı ama biraz rastgele
        let ballX = 175 + (Math.random() - 0.5) * 30; // Daha dar başlangıç
        let ballY = 5;
        ball.style.left = ballX + 'px';
        ball.style.top = ballY + 'px';

        board.appendChild(ball);
        plinkoStats.totalDrops++;
        updatePlinkoStats();

        const maxY = 240;
        const speed = 2.5;
        let lastHitRow = -1;

        const animate = () => {
            ballY += speed;

            const currentRow = Math.floor((ballY - 15) / 22);
            if (currentRow >= 1 && currentRow < 12 && currentRow !== lastHitRow) {
                const pegsInRow = currentRow + 2;
                const startX = (350 - (pegsInRow * 30)) / 2;

                // En yakın çiviyi bul - GENİŞ MENZIL
                let closestPegX = null;
                let minDistance = Infinity;

                for (let i = 0; i < pegsInRow; i++) {
                    const pegX = startX + i * 30;
                    const distance = Math.abs(ballX - pegX);
                    if (distance < minDistance && distance < 20) { // Büyük çarpma alanı
                        minDistance = distance;
                        closestPegX = pegX;
                    }
                }

                if (closestPegX !== null) {
                    lastHitRow = currentRow;

                    // ORTA AĞIRLIKLI SEKME - Kenarlara zor gider
                    const direction = Math.random();
                    if (direction < 0.25) {
                        ballX -= (6 + Math.random() * 10); // Orta sol
                    } else if (direction < 0.50) {
                        ballX += (6 + Math.random() * 10); // Orta sağ
                    } else if (direction < 0.85) {
                        // %35 şansla orta düşme
                        ballX += (Math.random() - 0.5) * 8;
                    } else {
                        // %15 şansla güçlü sekme
                        ballX += Math.random() < 0.5 ? -(12 + Math.random() * 15) : (12 + Math.random() * 15);
                    }
                    ballX = Math.max(10, Math.min(340, ballX)); // Kenarlara zor ulaşır
                }
            }

            ball.style.left = ballX + 'px';
            ball.style.top = ballY + 'px';

            if (ballY < maxY) {
                requestAnimationFrame(animate);
            } else {
                // MEGA GENİŞ KAPLAMA SİSTEMİ
                const buckets = document.querySelectorAll('.plinko-bucket');
                let hitBucket = null;
                let minDistance = Infinity;

                // En yakın kovayı bul - dar kaplama alanı
                buckets.forEach(bucket => {
                    const bucketRect = bucket.getBoundingClientRect();
                    const ballRect = ball.getBoundingClientRect();
                    const boardRect = board.getBoundingClientRect();

                    const ballCenterX = ballRect.left - boardRect.left + 4;
                    const bucketCenterX = bucketRect.left - boardRect.left + 6.5;
                    const distance = Math.abs(ballCenterX - bucketCenterX);

                    if (distance < minDistance && distance < 18) { // Dar kaplama
                        minDistance = distance;
                        hitBucket = bucket;
                    }
                });

                // Hiçbir kovaya düşmediyse ORTA kovalara yönlendir
                if (!hitBucket) {
                    const ballCenterX = ball.getBoundingClientRect().left - board.getBoundingClientRect().left + 4;

                    // %90 şansla orta kaybettiren kovalara yönlendir
                    if (Math.random() < 0.9) {
                        const middleBuckets = Array.from(buckets).slice(8, 17); // Orta kaybettiren kovalar
                        hitBucket = middleBuckets[Math.floor(Math.random() * middleBuckets.length)];
                    } else {
                        // %10 şansla kenar kovalara
                        if (ballCenterX < 175) {
                            const leftBuckets = Array.from(buckets).slice(0, 4);
                            hitBucket = leftBuckets[Math.floor(Math.random() * leftBuckets.length)];
                        } else {
                            const rightBuckets = Array.from(buckets).slice(-4);
                            hitBucket = rightBuckets[Math.floor(Math.random() * rightBuckets.length)];
                        }
                    }
                }

                // Fiziksel kovadaki çarpanı al
                let multiplier = 1;
                if (hitBucket) {
                    multiplier = parseFloat(hitBucket.getAttribute('data-multiplier'));

                    // KÜÇÜK GÖRSEL EFEKT
                    hitBucket.style.background = multiplier >= 10 ? '#FFD700' : multiplier >= 1 ? '#00FF00' : '#FF0000';
                    hitBucket.style.transform = 'scale(1.5)';
                    hitBucket.style.border = '3px solid #FFFFFF';
                    hitBucket.style.boxShadow = '0 0 15px rgba(255,215,0,0.6)';
                    hitBucket.style.zIndex = '100';

                    setTimeout(() => {
                        let bgColor = multiplier >= 100 ? '#FF1744' : multiplier >= 10 ? '#FF9800' : multiplier >= 2 ? '#4CAF50' : multiplier >= 1 ? '#2196F3' : multiplier >= 0.3 ? '#FF5722' : '#8B0000';
                        hitBucket.style.background = bgColor;
                        hitBucket.style.transform = 'scale(1)';
                        hitBucket.style.border = '2px solid #FFD700';
                        hitBucket.style.boxShadow = 'none';
                        hitBucket.style.zIndex = 'auto';
                    }, 1000);
                }

                const winAmount = Math.floor(betAmount * multiplier);
                dumCoins += winAmount;
                updateBetStats(betAmount, winAmount, 'plinko');
                updateCoinDisplay();

                plinkoStats.totalWinnings += winAmount - betAmount;
                if (multiplier > plinkoStats.bestMultiplier) {
                    plinkoStats.bestMultiplier = multiplier;
                }
                if (multiplier >= 1) {
                    plinkoStats.totalWins++;
                }
                updatePlinkoStats();

                if (!autoDropping) {
                    if (multiplier >= 100) {
                        document.getElementById('plinko-result').innerHTML = `<span style="color: #FFD700; font-size: 18px;">🚀 ${multiplier}x MEGA WIN!</span><br>Bahis: ${betAmount} → Kazanç: ${winAmount}<br><span style="color: #FFD700; font-size: 16px;">Net: +${winAmount - betAmount} DC 💰</span>`;
                    } else if (multiplier >= 1) {
                        const netProfit = winAmount - betAmount;
                        document.getElementById('plinko-result').innerHTML = `<span style="color: #00FF00;">🎉 ${multiplier}x KAZANÇ!</span><br>Bahis: ${betAmount} → Kazanç: ${winAmount}<br><span style="color: #FFD700;">Net: +${netProfit} DC</span>`;
                    } else {
                        const netLoss = betAmount - winAmount;
                        document.getElementById('plinko-result').innerHTML = `<span style="color: #FF6B6B;">😢 ${multiplier}x Kayıp</span><br>Bahis: ${betAmount} → Dönüş: ${winAmount}<br><span style="color: #FF6B6B;">Net: -${netLoss} DC</span>`;
                    }
                }

                setTimeout(() => ball.remove(), 3000);
            }
        };

        animate();
    }

    // Panel başlatma
    setTimeout(() => {
        createCasinoPanel();

        // Nick dialog'ını göster
        setTimeout(() => {
            if (document.getElementById('player-nick-display')) {
                document.getElementById('player-nick-display').textContent = playerNick || 'Çevrimdışı';
            }
        }, 100);
    }, 1000);

    // Sayfa kapatılırken temizlik
    window.addEventListener('beforeunload', () => {
        if (updateInterval) clearInterval(updateInterval);
        if (isOnline && playerId) {
            // Son güncellemeyi gönder
            const allPlayers = JSON.parse(localStorage.getItem('casino_players') || '{}');
            if (allPlayers[playerId]) {
                allPlayers[playerId].lastActive = Date.now() - 600000; // 10 dakika öncesi yap (offline göster)
                localStorage.setItem('casino_players', JSON.stringify(allPlayers));
            }
        }
    });

})();