├── Blum Game Clicker ├── icons │ ├── icon128.png │ ├── icon16.png │ └── icon48.png ├── manifest.json ├── popup.js ├── content.js ├── popup.html └── game.js └── README.md /Blum Game Clicker/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Marcelkoo/blum-game-clicker/HEAD/Blum Game Clicker/icons/icon128.png -------------------------------------------------------------------------------- /Blum Game Clicker/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Marcelkoo/blum-game-clicker/HEAD/Blum Game Clicker/icons/icon16.png -------------------------------------------------------------------------------- /Blum Game Clicker/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Marcelkoo/blum-game-clicker/HEAD/Blum Game Clicker/icons/icon48.png -------------------------------------------------------------------------------- /Blum Game Clicker/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Blum Game Clicker", 4 | "version": "2.3", 5 | "description": "Blum Game Clicker", 6 | "icons": { 7 | "16": "icons/icon16.png", 8 | "48": "icons/icon48.png", 9 | "128": "icons/icon128.png" 10 | }, 11 | "permissions": [ 12 | "activeTab", 13 | "webNavigation", 14 | "storage", 15 | "*://telegram.blum.codes/*", 16 | "*://web.telegram.org/*" 17 | ], 18 | "content_scripts": [ 19 | { 20 | "matches": [ 21 | "https://telegram.blum.codes/*", 22 | "https://game-domain.blum.codes/*" 23 | ], 24 | "js": ["content.js"], 25 | "all_frames": true 26 | } 27 | ], 28 | "web_accessible_resources": [ 29 | "game.js" 30 | ], 31 | "browser_action": { 32 | "default_popup": "popup.html", 33 | "default_title": "Blum Game Clicker" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Blum Game Clicker/popup.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function() { 2 | const flowerInput = document.getElementById('flower-probability'); 3 | const bombInput = document.getElementById('bomb-probability'); 4 | const iceInput = document.getElementById('ice-probability'); 5 | const applyButton = document.getElementById('apply-button'); 6 | const enableScriptCheckbox = document.getElementById('enable-script'); 7 | 8 | chrome.storage.sync.get(['flowerProbability', 'bombProbability', 'iceProbability', 'isScriptEnabled'], function(settings) { 9 | flowerInput.value = settings.flowerProbability || 72; 10 | bombInput.value = settings.bombProbability || 1; 11 | iceInput.value = settings.iceProbability || 80; 12 | enableScriptCheckbox.checked = settings.isScriptEnabled !== false; 13 | }); 14 | 15 | applyButton.addEventListener('click', function() { 16 | const flowerProbability = parseFloat(flowerInput.value); 17 | const bombProbability = parseFloat(bombInput.value); 18 | const iceProbability = parseFloat(iceInput.value); 19 | const isScriptEnabled = enableScriptCheckbox.checked; 20 | 21 | chrome.storage.sync.set({ 22 | flowerProbability: flowerProbability, 23 | bombProbability: bombProbability, 24 | iceProbability: iceProbability, 25 | isScriptEnabled: isScriptEnabled 26 | }, function() { 27 | chrome.runtime.sendMessage({ 28 | flowerProbability: flowerProbability, 29 | bombProbability: bombProbability, 30 | iceProbability: iceProbability, 31 | isScriptEnabled: isScriptEnabled 32 | }); 33 | 34 | alert('Settings applied!'); 35 | }); 36 | }); 37 | }); 38 | -------------------------------------------------------------------------------- /Blum Game Clicker/content.js: -------------------------------------------------------------------------------- 1 | function injectScriptWithSettings(file, settings, node) { 2 | const th = document.getElementsByTagName(node)[0]; 3 | const s = document.createElement('script'); 4 | s.setAttribute('type', 'text/javascript'); 5 | 6 | s.innerHTML = `window.GAME_SETTINGS = ${JSON.stringify(settings)};`; 7 | th.appendChild(s); 8 | 9 | const script = document.createElement('script'); 10 | script.setAttribute('src', chrome.runtime.getURL(file)); 11 | th.appendChild(script); 12 | } 13 | 14 | chrome.storage.sync.get(['flowerProbability', 'bombProbability', 'iceProbability', 'isScriptEnabled'], function(settings) { 15 | const loadedSettings = { 16 | bombProbability: (settings.bombProbability || 1) / 100, 17 | flowerProbability: (settings.flowerProbability || 72) / 100, 18 | iceProbability: (settings.iceProbability || 80) / 100, 19 | isScriptEnabled: settings.isScriptEnabled !== false 20 | }; 21 | 22 | console.log('Настройки загружены перед запуском:', loadedSettings); 23 | 24 | injectScriptWithSettings('game.js', loadedSettings, 'body'); 25 | }); 26 | 27 | chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { 28 | const updatedSettings = { 29 | bombProbability: message.bombProbability / 100, 30 | flowerProbability: message.flowerProbability / 100, 31 | iceProbability: message.iceProbability / 100, 32 | isScriptEnabled: message.isScriptEnabled 33 | }; 34 | 35 | console.log('Настройки обновлены:', updatedSettings); 36 | 37 | if (typeof window.updateGameSettings === 'function') { 38 | window.updateGameSettings(updatedSettings); 39 | } 40 | 41 | sendResponse({ status: 'OK' }); 42 | }); 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Blum Game Clicker Extension 2 | ![image](https://github.com/user-attachments/assets/c62ecf51-deb2-4cf1-a6e7-28f562c91250) 3 | 4 | ### Subscribe to my [Telegram channel](https://t.me/marcelkow_crypto) to get access to more software tools and updates. 5 | 6 | This extension automates the Blum game by automatically playing the game on your behalf, saving you time and allowing you to use accumulated tickets without manual effort. 7 | 8 | ### Features (You should restart page to apply settings): 9 | - Auto-start: Automatically begins the game and clicks through different game objects. 10 | - Delay between clicks: Includes a customizable delay to mimic real player interaction. 11 | - Randomization: Configurable probabilities for different in-game objects to randomize interactions. 12 | - Flower Probability (%) 13 | - Bomb Probability (%) 14 | - Freeze Probability (%) 15 | 16 | 17 | ### Installation in Chrome: 18 | 1. Download the folder of the extension. 19 | 2. Open `chrome://extensions/` in your browser. 20 | 3. Enable **Developer mode** in the top-right corner. 21 | 4. Click **Load unpacked** and select the folder with the extension files. 22 | 23 | ### Installation in AdsPower: 24 | 1. Download the ZIP archive of the extension. 25 | 2. Open AdsPower. [You can use this link to download the best antidetect browser](https://share.adspower.net/marcel) and use coupon code **Marcel** for a **45% discount**. 26 | 3. Navigate to the **Extensions** section of AdsPower. 27 | 4. Click **Upload extension** and upload the ZIP archive to install the extension. 28 | 29 | 30 | ### Subscribe to my [Telegram channel](https://t.me/marcelkow_crypto) to get access to more software tools and updates. 31 | ### Subscribe to my [Telegram channel](https://t.me/marcelkow_crypto) to get access to more software tools and updates. 32 | ### Subscribe to my [Telegram channel](https://t.me/marcelkow_crypto) to get access to more software tools and updates. 33 | -------------------------------------------------------------------------------- /Blum Game Clicker/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Blum Game Clicker 5 | 45 | 46 | 47 |

Blum Game Clicker

48 | 49 |
50 | 51 | 52 |
53 | 54 |
55 | 56 | 57 |
58 | 59 |
60 | 61 | 62 |
63 | 64 |
65 | 66 | 67 |
68 | 69 | 70 | 71 | Subscribe: t.me/marcelkow_crypto 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /Blum Game Clicker/game.js: -------------------------------------------------------------------------------- 1 | window.SETTINGS = window.GAME_SETTINGS || { 2 | bombProbability: 0.01, 3 | flowerProbability: 0.72, 4 | iceProbability: 0.80, 5 | gameEnded: false, 6 | isScriptEnabled: true 7 | }; 8 | 9 | console.log("Текущие настройки при запуске игры:", window.SETTINGS); 10 | 11 | if (window.SETTINGS.isScriptEnabled) { 12 | try { 13 | const originalArrayPush = Array.prototype.push; 14 | Array.prototype.push = function (...items) { 15 | items.forEach(item => processGameItem(item)); 16 | return originalArrayPush.apply(this, items); 17 | }; 18 | 19 | function processGameItem(item) { 20 | if (!item || !item.asset) return; 21 | 22 | const { assetType } = item.asset; 23 | switch (assetType) { 24 | case "CLOVER": 25 | handleFlower(item); 26 | break; 27 | case "BOMB": 28 | handleBomb(item); 29 | break; 30 | case "FREEZE": 31 | handleFreeze(item); 32 | break; 33 | } 34 | } 35 | 36 | function handleFlower(item) { 37 | if (Math.random() < window.SETTINGS.flowerProbability) { 38 | triggerClick(item); 39 | } 40 | } 41 | 42 | function handleBomb(item) { 43 | if (Math.random() < window.SETTINGS.bombProbability) { 44 | triggerClick(item); 45 | } 46 | } 47 | 48 | function handleFreeze(item) { 49 | if (Math.random() < window.SETTINGS.iceProbability) { 50 | triggerClick(item); 51 | } 52 | } 53 | 54 | function triggerClick(item) { 55 | setTimeout(() => { 56 | if (typeof item.onClick === 'function') { 57 | item.onClick(item); 58 | } else { 59 | console.log("item.onClick не определен."); 60 | } 61 | item.isExplosion = true; 62 | item.addedAt = performance.now(); 63 | }, calculateDelay()); 64 | } 65 | 66 | function calculateDelay() { 67 | const min = 500; 68 | const max = 1000; 69 | return Math.random() * (max - min) + min; 70 | } 71 | 72 | function detectGameEnd() { 73 | const rewardElement = document.querySelector('#app > div > div > div.content > div.reward'); 74 | if (rewardElement && !window.SETTINGS.gameEnded) { 75 | window.SETTINGS.gameEnded = true; 76 | resetGameData(); 77 | } 78 | } 79 | 80 | function resetGameData() { 81 | window.SETTINGS.gameEnded = false; 82 | } 83 | 84 | function autoStartGame() { 85 | const buttons = document.querySelectorAll('button.kit-button.is-large.is-primary, a.play-btn[href="/game"], button.kit-button.is-large.is-primary'); 86 | buttons.forEach(btn => { 87 | if (/Play/.test(btn.textContent) || /Continue/.test(btn.textContent) || /Играть/.test(btn.textContent)) { 88 | setTimeout(() => { 89 | btn.click(); 90 | window.SETTINGS.gameEnded = false; 91 | }, calculateDelay()); 92 | } 93 | }); 94 | } 95 | 96 | function monitorPlayButton() { 97 | autoStartGame(); 98 | setTimeout(monitorPlayButton, 2500); 99 | } 100 | 101 | const mutationObserver = new MutationObserver(mutations => { 102 | mutations.forEach(mutation => { 103 | if (mutation.type === 'childList') { 104 | detectGameEnd(); 105 | } 106 | }); 107 | }); 108 | 109 | const appRoot = document.querySelector('#app'); 110 | if (appRoot) { 111 | mutationObserver.observe(appRoot, { childList: true, subtree: true }); 112 | } 113 | 114 | monitorPlayButton(); 115 | 116 | window.updateGameSettings = function(newSettings) { 117 | window.SETTINGS = newSettings; 118 | console.log("Настройки обновлены:", window.SETTINGS); 119 | }; 120 | 121 | } catch (error) { 122 | console.error("Ошибка в Blum AutoPlayer:", error); 123 | } 124 | } else { 125 | console.log("Скрипт отключен через настройки."); 126 | } 127 | --------------------------------------------------------------------------------