Hamster Kombat Key Generator Script Free

Rayan
By -
0

 

FEATURES

  • Free to use
  • No need to play games
  • Generate Unlimited Keys
  • Easy to use
  • Responsible

How to Add This Script in Your Site?

  • Step 1: Go to Your Blogger Dashboard
  • Step 2: Create a New Page/Post
  • Step 3: Click ✎ & Switch to HTML View
  • Step 4: Copy HTML Code From Below This Page & Paste It
  • Step 5: Copy CSS & Paste Your Page, Must Add Like This <style> Css Code</style> 
  • Step 6: Copy JS & Paste, Must Add Like This <script> JS Code </script>
  • Now Publish Your Post

Demo
Key Generator Script

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hamster Key Generator</title>
    <link rel="stylesheet" href="styles.css">
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
</head>
<body>
    <div class="container">
        <h1>Hamster Key Generator</h1>
        <div id="gameSelectContainer" class="grid-container">
            <div class="game-option" data-game="12">
            <img src="https://cdn.hamsterkombat.io/fluff/image.webp" alt="Fluff"">
            <p>Fluff Crusade</p>
            </div>
            <div class="game-option" data-game="11">
            <img src="https://cdn.hamsterkombat.io/zoopolis/image.webp" alt="Zoopolis"">
            <p>Zoopolis</p>
            </div>
            <div class="game-option" data-game="10">
            <img src="https://cdn.hamsterkombat.io/tile_trio/image.webp" alt="CafeDash"">
            <p>Tile Trio</p>
            </div>
            <div class="game-option" data-game="8">
            <img src="https://cdn.hamsterkombat.io/mow_trim/image.webp" alt="Polysphere">
            <p>Mow and Trim</p>
            </div>
            <div class="game-option" data-game="7">
            <img src="https://cdn.hamsterkombat.io/polysphere/image.webp" alt="Polysphere">
            <p>Polysphere</p>
            </div>
            <div class="game-option" data-game="6">
                <img src="https://cdn.hamsterkombat.io/twerk/image.webp" alt="Twerk Race 3D">
                <p>Twerk Race 3D</p>
            </div>
            <div class="game-option" data-game="5">
                <img src="https://cdn.hamsterkombat.io/merge_away/image.webp" alt="Merge Away">
                <p>Merge Away</p>
            </div>
            <div class="game-option" data-game="2">
                <img src="https://cdn.hamsterkombat.io/chain_cube/image.webp" alt="Chain Cube 2048">
                <p>Chain Cube 2048</p>
            </div>
            <div class="game-option" data-game="4">
                <img src="https://cdn.hamsterkombat.io/train_miner/image.webp" alt="Train Miner">
                <p>Train Miner</p>
            </div>
        </div>

        <div class="form-group hidden" id="keyCountGroup">
            <label for="keyCountSelect">Select Number of Keys:</label>
            <div id="keyCountSelect" class="key-slider">
                <input type="range" min="1" max="4" value="1" id="keyRange">
                <span id="keyValue">1</span>
            </div>
        </div>
        <button id="startBtn" class="hidden">Generate Keys</button>

        <div id="progressContainer" class="hidden">
            <div class="progress-bar">
                <div id="progressBar"></div>
            </div>
            <p id="progressText">0%</p>
            <p id="progressLog">Starting...</p>
        </div>

        <div id="keyContainer" class="hidden">
            <h2 id="generatedKeysTitle" class="hidden">Generated Keys</h2>
            <div id="keysList"></div>
            <button id="copyAllBtn" class="hidden">Copy All Keys</button>
        </div>

        <p id="keyCountLabel">Number of keys:</p>

        <button id="generateMoreBtn" class="hidden">Generate More Keys</button>
        <p id="copyStatus" class="hidden">Keys copied to clipboard!</p>
        
        <div class="footer">
            <p>Disclaimer: This tool is for educational purposes only. Use responsibly.</p>
            <button id="sourceCode">Contact Admin</button>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>
/* Add a max height and enable scrolling for the game options */ .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-bottom: 20px; max-height: 300px; /* Adjust this height based on your layout needs */ overflow-y: auto; padding-right: 10px; } .game-option { border: 1px solid #ddd; border-radius: 10px; padding: 10px; text-align: center; cursor: pointer; transition: transform 0.3s, border-color 0.3s; } /* Ensure the selected game stands out */ .game-option.selected { transform: scale(1.05); border-color: #007bff; background-color: #f0f8ff; /* Optional: Slight background color change */ } .container { background: #ffffff; border-radius: 10px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); padding: 30px; max-width: 400px; width: 100%; text-align: center; } h1 { margin-bottom: 25px; font-size: 24px; color: #007bff; } .game-option img { width: 100%; border-radius: 8px; margin-bottom: 10px; } .game-option p { font-weight: 500; color: #555; } .game-option:hover, .game-option.selected { transform: scale(1.05); border-color: #007bff; } .form-group { margin-bottom: 20px; text-align: left; } label { display: block; margin-bottom: 8px; font-weight: 500; color: #555; } .key-slider { display: flex; align-items: center; gap: 10px; } .key-slider input[type="range"] { -webkit-appearance: none; width: 100%; height: 8px; border-radius: 5px; background: #ddd; outline: none; transition: background 0.3s; } .key-slider input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; border-radius: 50%; background: #007bff; cursor: pointer; transition: background 0.3s; } .key-slider input[type="range"]:hover::-webkit-slider-thumb { background: #0056b3; } #keyValue { font-size: 18px; font-weight: bold; color: #007bff; } button { background-color: #007bff; color: white; border: none; padding: 12px 20px; font-size: 16px; border-radius: 8px; cursor: pointer; transition: background-color 0.3s; margin-top: 20px; } button:hover { background-color: #0056b3; } .hidden { display: none; } .progress-bar { background-color: #f5f7fa; border-radius: 8px; overflow: hidden; margin-top: 25px; height: 35px; position: relative; } .progress-bar div { height: 100%; background-color: #007bff; width: 0; transition: width 0.5s; } #progressText { margin-top: 15px; font-weight: 600; } .key-item { display: flex; align-items: center; margin-top: 15px; } .key-item input { flex: 1; padding: 12px; font-size: 16px; border: 1px solid #ccc; border-radius: 8px; margin-right: 12px; } .copyKeyBtn { background-color: #28a745; border: none; padding: 12px 20px; color: white; font-size: 16px; border-radius: 8px; cursor: pointer; transition: background-color 0.3s; } .copyKeyBtn:hover { background-color: #218838; } .footer { margin-top: 25px; font-size: 14px; color: #777; } #copyStatus { margin-top: 15px; color: green; }
    <script src="script.js"></script>
</body>
</html>
                           <script>
                           document.addEventListener('DOMContentLoaded', () => {
    const games = {
        1: {
            name: 'Riding Extreme 3D',
            appToken: 'd28721be-fd2d-4b45-869e-9f253b554e50',
            promoId: '43e35910-c168-4634-ad4f-52fd764a843f',
            timing: 30000, // 30 seconds
            attempts: 25,
        },
        2: {
            name: 'Chain Cube 2048',
            appToken: 'd1690a07-3780-4068-810f-9b5bbf2931b2',
            promoId: 'b4170868-cef0-424f-8eb9-be0622e8e8e3',
            timing: 30000, // 30 seconds
            attempts: 20,
        },
        3: {
            name: 'My Clone Army',
            appToken: '74ee0b5b-775e-4bee-974f-63e7f4d5bacb',
            promoId: 'fe693b26-b342-4159-8808-15e3ff7f8767',
            timing: 180000, // 180 seconds
            attempts: 30,
        },
        4: {
            name: 'Train Miner',
            appToken: '82647f43-3f87-402d-88dd-09a90025313f',
            promoId: 'c4480ac7-e178-4973-8061-9ed5b2e17954',
            timing: 30000, // 30 seconds
            attempts: 15,
        },
        5: {
            name: 'Merge Away',
            appToken: '8d1cc2ad-e097-4b86-90ef-7a27e19fb833',
            promoId: 'dc128d28-c45b-411c-98ff-ac7726fbaea4',
            timing: 30000, // 30 seconds
            attempts: 25,
        },
        6: {
            name: 'Twerk Race 3D',
            appToken: '61308365-9d16-4040-8bb0-2f4a4c69074c',
            promoId: '61308365-9d16-4040-8bb0-2f4a4c69074c',
            timing: 30000, // 30 seconds
            attempts: 20,
        },
        7: {
            name: 'Polysphere',
            appToken: '2aaf5aee-2cbc-47ec-8a3f-0962cc14bc71',
            promoId: '2aaf5aee-2cbc-47ec-8a3f-0962cc14bc71',
            timing: 20000, // 20 seconds
            attempts: 20,
        },
        8: {
            name: 'Mow and Trim',
            appToken: 'ef319a80-949a-492e-8ee0-424fb5fc20a6',
            promoId: 'ef319a80-949a-492e-8ee0-424fb5fc20a6',
            timing: 20000, // 20 seconds
            attempts: 20,
        },
        9: {
            name: 'Mud Racing',
            appToken: '8814a785-97fb-4177-9193-ca4180ff9da8',
            promoId: '8814a785-97fb-4177-9193-ca4180ff9da8',
            timing: 20000, // 20 seconds
            attempts: 20,
        },
        10: {
            name: 'Tile Trio',
            appToken: 'e68b39d2-4880-4a31-b3aa-0393e7df10c7',
            promoId: 'e68b39d2-4880-4a31-b3aa-0393e7df10c7',
            timing: 20000, // 20 seconds
            attempts: 20,
        },
        11: {
            name: 'Zoopolis',
            appToken: 'b2436c89-e0aa-4aed-8046-9b0515e1c46b',
            promoId: 'b2436c89-e0aa-4aed-8046-9b0515e1c46b',
            timing: 20000, // 20 seconds
            attempts: 20,
        },
        12: {
            name: 'Fluff Crusade',
            appToken: '112887b0-a8af-4eb2-ac63-d82df78283d9',
            promoId: '112887b0-a8af-4eb2-ac63-d82df78283d9',
            timing: 20000, // 40 seconds
            attempts: 30,
        }
    };

    const gameOptions = document.querySelectorAll('.game-option');
    const keyCountGroup = document.getElementById('keyCountGroup');
    const keyRange = document.getElementById('keyRange');
    const keyValue = document.getElementById('keyValue');
    const startBtn = document.getElementById('startBtn');
    const keyCountLabel = document.getElementById('keyCountLabel');
    const progressContainer = document.getElementById('progressContainer');
    const progressBar = document.getElementById('progressBar');
    const progressText = document.getElementById('progressText');
    const progressLog = document.getElementById('progressLog');
    const keyContainer = document.getElementById('keyContainer');
    const keysList = document.getElementById('keysList');
    const copyAllBtn = document.getElementById('copyAllBtn');
    const generatedKeysTitle = document.getElementById('generatedKeysTitle');
    const copyStatus = document.getElementById('copyStatus');
    const generateMoreBtn = document.getElementById('generateMoreBtn');
    const sourceCode = document.getElementById('sourceCode');

    let selectedGame = null;

    sourceCode.addEventListener('click', () => {
        window.open('https://t.me/hamsterkombat_daily_key', '_blank');
    });
    
gameOptions.forEach(option => {
    option.addEventListener('click', () => {
        gameOptions.forEach(opt => opt.classList.remove('selected'));
        option.classList.add('selected');
        selectedGame = option.dataset.game;

        keyCountGroup.classList.remove('hidden');
        startBtn.classList.remove('hidden');
        
        // Smooth scroll to the key count group
        keyCountGroup.scrollIntoView({ behavior: 'smooth', block: 'center' });
    });
});

    keyRange.addEventListener('input', () => {
        keyValue.innerText = keyRange.value;
    });

    startBtn.addEventListener('click', async () => {
        const keyCount = parseInt(keyRange.value);
        if (!selectedGame) {
            alert('Please select a game first.');
            return;
        }

        const gameChoice = parseInt(selectedGame);
        const game = games[gameChoice];

        // Hide the form sections
        document.querySelector('.grid-container').style.display = 'none';
        keyCountGroup.style.display = 'none';

        keyCountLabel.innerText = `Number of keys: ${keyCount}`;

        progressBar.style.width = '0%';
        progressText.innerText = '0%';
        progressLog.innerText = 'Starting...';
        progressContainer.classList.remove('hidden');
        keyContainer.classList.add('hidden');
        generatedKeysTitle.classList.add('hidden');
        keysList.innerHTML = '';
        copyAllBtn.classList.add('hidden');
        startBtn.classList.add('hidden');
        startBtn.disabled = true;

        let progress = 0;
        const updateProgress = (increment, message) => {
            progress += increment;
            progressBar.style.width = `${progress}%`;
            progressText.innerText = `${progress}%`;
            progressLog.innerText = message;
        };

        const generateKeyProcess = async () => {
            const clientId = generateClientId();
            let clientToken;
            try {
                clientToken = await login(clientId, game.appToken);
            } catch (error) {
                alert(`Failed to login: ${error.message}`);
                startBtn.disabled = false;
                return null;
            }

            for (let i = 0; i < game.attempts; i++) {
                const hasCode = await emulateProgress(clientToken, game.promoId);
                updateProgress((100 / game.attempts) / keyCount, `Emulating progress ${i + 1}/${game.attempts}...`);
                if (hasCode) {
                    break;
                }
                await sleep(game.timing);  // Sleep after each attempt to wait before the next event registration
            }

            try {
                const key = await generateKey(clientToken, game.promoId);
                updateProgress(100 / keyCount, 'Generating key...');
                return key;
            } catch (error) {
                alert(`Failed to generate key: ${error.message}`);
                return null;
            }
        };

        const keys = await Promise.all(Array.from({ length: keyCount }, generateKeyProcess));

        if (keys.length > 1) {
            keysList.innerHTML = keys.filter(key => key).map(key =>
                `<div class="key-item">
                    <input type="text" value="${key}" readonly>
                    <button class="copyKeyBtn" data-key="${key}">Copy Key</button>
                </div>`
            ).join('');
            copyAllBtn.classList.remove('hidden');
        } else if (keys.length === 1) {
            keysList.innerHTML =
                `<div class="key-item">
                    <input type="text" value="${keys[0]}" readonly>
                    <button class="copyKeyBtn" data-key="${keys[0]}">Copy Key</button>
                </div>`;
        }

        keyContainer.classList.remove('hidden');
        generatedKeysTitle.classList.remove('hidden');

        document.querySelectorAll('.copyKeyBtn').forEach(button => {
            button.addEventListener('click', (event) => {
                const key = event.target.getAttribute('data-key');
                copyToClipboard(key);
            });
        });

        copyAllBtn.addEventListener('click', () => {
            const keysText = keys.filter(key => key).join('\n');
            copyToClipboard(keysText);
        });

        progressBar.style.width = '100%';
        progressText.innerText = '100%';
        progressLog.innerText = 'Complete';

        startBtn.classList.remove('hidden');
        keyCountGroup.classList.remove('hidden');
        document.querySelector('.grid-container').style.display = 'grid';
        startBtn.disabled = false;
    });

    const generateClientId = () => {
        const timestamp = Date.now();
        const randomNumbers = Array.from({ length: 19 }, () => Math.floor(Math.random() * 10)).join('');
        return `${timestamp}-${randomNumbers}`;
    };

    const login = async (clientId, appToken) => {
        const response = await fetch('https://api.gamepromo.io/promo/login-client', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                appToken,
                clientId,
                clientOrigin: 'deviceid'
            })
        });

        if (!response.ok) {
            throw new Error('Failed to login');
        }

        const data = await response.json();
        return data.clientToken;
    };

    const emulateProgress = async (clientToken, promoId) => {
        const response = await fetch('https://api.gamepromo.io/promo/register-event', {
            method: 'POST',
            headers: {
                'Authorization': `Bearer ${clientToken}`,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                promoId,
                eventId: generateUUID(),
                eventOrigin: 'undefined'
            })
        });

        if (!response.ok) {
            return false;
        }

        const data = await response.json();
        return data.hasCode;
    };

    const generateKey = async (clientToken, promoId) => {
        const response = await fetch('https://api.gamepromo.io/promo/create-code', {
            method: 'POST',
            headers: {
                'Authorization': `Bearer ${clientToken}`,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                promoId
            })
        });

        if (!response.ok) {
            throw new Error('Failed to generate key');
        }

        const data = await response.json();
        return data.promoCode;
    };

    const generateUUID = () => {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
            const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
            return v.toString(16);
        });
    };

    const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

    const copyToClipboard = (text) => {
        if (navigator.clipboard && navigator.clipboard.writeText) {
            navigator.clipboard.writeText(text).then(() => {
                copyStatus.classList.remove('hidden');
                setTimeout(() => copyStatus.classList.add('hidden'), 2000);
            }).catch(err => {
                console.error('Failed to copy text: ', err);
            });
        } else {
            const textArea = document.createElement('textarea');
            textArea.value = text;
            textArea.style.position = 'fixed';
            textArea.style.top = '0';
            textArea.style.left = '0';
            document.body.appendChild(textArea);
            textArea.focus();
            textArea.select();

            try {
                const successful = document.execCommand('copy');
                if (successful) {
                    copyStatus.classList.remove('hidden');
                    setTimeout(() => copyStatus.classList.add('hidden'), 2000);
                }
            } catch (err) {
                console.error('Fallback: Oops, unable to copy', err);
            }

            document.body.removeChild(textArea);
        }
    };
});
                                                                    </script>

Post a Comment

0Comments

Post a Comment (0)