Script Blum
Script Blum
let GAME_SETTINGS = {
minBombHits: Math.floor(Math.random() * 2),
minIceHits: Math.floor(Math.random() * 2) + 2,
flowerSkipPercentage: Math.floor(Math.random() * 11) + 15,
minDelayMs: 500,
maxDelayMs: 999,
autoClickPlay: false,
dogsProbability: (98 + Math.random()) / 100,
checkForUpdates: true,
autoVideoTask: true,
autoVerifyCode: false,
autoClaimTask: true,
};
const answers = {
"How to Analyze Crypto": "VALUE",
"What’s DAO?": "N/A",
"Ton voices live": "I LOVE BLUM",
"Forks Explained": "GO GET",
"Secure your Crypto!": "BEST PROJECT EVER",
"Navigating Crypto": "HEYBLUM",
"What are Telegram Mini Apps?": "CRYPTOBLUM",
"Say No to Rug Pull!": "SUPERBLUM",
"Liquidity Pools Guide": "BLUMERSSS",
"$2.5M+ DOGS Airdrop": "HAPPYDOGS",
"Doxxing? What's that?": "NODOXXING",
"Pre-Market Trading?": "WOWBLUM",
"Play Track and Type Track Name": "BLUM – BIG CITY LIFE",
"How to Memecoin?": "MEMEBLUM",
"Token Burning: How & Why?": "ONFIRE",
"Bitcoin Rainbow Chart": "SOBLUM",
"Crypto Terms. Part 1": "BLUMEXPLORER",
"How to Trade Perps?": "CRYPTOFAN",
"Sharding Explained": "BLUMTASTIC",
"DeFi Explained": "BLUMFORCE",
"How To Find Altcoins?": "ULTRABLUM",
"Crypto Slang. Part 1": "BLUMSTORM",
"What is On-chain Analysis?": "BLUMEXTRA",
"Pumptober Special": "PUMPIT",
"DeFi Risks: Key Insights": "BLUMHELPS",
"Crypto Slang. Part 2": "FOMOOO",
"What’s Crypto DEX?": "DEXXX",
"Choosing a Crypto Exchange": "CRYPTOZONE",
"Node Sales in Crypto": "BLUMIFY",
"Understanding Gas Fees": "CRYPTOGAS",
"What is Slippage?": "CRYPTOBUZZ",
"What’s Next for DeFi?": "BLUMNOW",
"Smart Contracts 101": "SMARTBLUM",
"Crypto Slang. Part 3": "BOOBLUM",
"Regulation: Yay or Nay?": "BLUMSSS",
"DEX History": "GODEX",
"Crypto Regulations #2": "BLUMRULES",
"P2P Trading Safety Tips": "BLUMTIPS",
"Crypto Communities": "BLUMMUNITY",
"Dec 6 Crypto News": "HUNDRED",
"Dex Evolution": "BLUMSPARK",
"Crypto Slang. Part 4": "LAMBOBLUM",
"What Are AMMs?": "CRYPTOSMART",
"Memepad Tutorial": "MEMEPAD",
"DEX History #3": "LOVEBLUM",
"Blum CMO @ Blockchain Life": "BLUMISLIFE",
"Is Binance a DEX?": "BLUMIES"
};
"https://raw.githubusercontent.com/mudachyo/Blum/refs/heads/main/answers/
codes.json"
).then(res => {
if (!res.ok)
return {};
try {
return res.json();
} catch {
return {};
}
});
function claimDailyReward() {
const widget = document.querySelector('.widget.has-radius');
if (widget) {
const claimButton = widget.querySelector('.kit-pill-claim.is-state-claim');
if (claimButton) {
claimButton.click();
console.log('Ежедневная награда забрана!');
} else {
}
} else {
}
}
try {
let gameStats = {
score: 0,
bombHits: 0,
iceHits: 0,
dogsHits: 0,
flowersSkipped: 0,
isGameOver: false,
};
function handleGameElement(item) {
if (!item || !item.asset) return;
const {
assetType
} = item.asset;
switch (assetType) {
case "CLOVER":
processFlower(item);
break;
case "BOMB":
processBomb(item);
break;
case "FREEZE":
processIce(item);
break;
case "DOGS":
processDogs(item);
break;
}
}
function processFlower(item) {
const shouldSkip = Math.random() <
(GAME_SETTINGS.flowerSkipPercentage / 100);
if (shouldSkip) {
gameStats.flowersSkipped++;
} else {
gameStats.score++;
clickElement(item);
}
}
function processBomb(item) {
if (gameStats.bombHits < GAME_SETTINGS.minBombHits) {
gameStats.score = 0;
clickElement(item);
gameStats.bombHits++;
}
}
function processIce(item) {
if (gameStats.iceHits < GAME_SETTINGS.minIceHits) {
clickElement(item);
gameStats.iceHits++;
}
}
function processDogs(item) {
if (Math.random() < GAME_SETTINGS.dogsProbability) {
clickElement(item);
gameStats.dogsHits++;
}
}
function clickElement(item) {
if (isGameToolPaused) return;
const createEvent = (type, EventClass) => new EventClass(type, {
bubbles: true,
cancelable: true,
pointerId: 1,
isPrimary: true,
pressure: type === 'pointerdown' ? 0.5 : 0
});
setTimeout(() => {
if (typeof item.onClick === 'function') {
if (item.element) {
['pointerdown', 'mousedown', 'pointerup', 'mouseup',
'click'].forEach(type => {
item.element.dispatchEvent(createEvent(type,
type.startsWith('pointer') ? PointerEvent : MouseEvent));
});
}
item.onClick(item);
}
item.isExplosion = true;
item.addedAt = performance.now();
}, getClickDelay());
}
try {
const response = await fetch(SCRIPT_URL);
if (!response.ok) {
console.warn('Failed to get the script file to check for
updates.');
return;
}
// Сравнение версий
function compareVersions(v1, v2) {
const v1Parts = v1.split('.').map(Number);
const v2Parts = v2.split('.').map(Number);
checkForUpdates();
function getNewGameDelay() {
return Math.floor(Math.random() * (GAME_SETTINGS.maxDelayMs -
GAME_SETTINGS.minDelayMs + 1) + GAME_SETTINGS.minDelayMs);
}
// Функция AutoPlay
function checkAndClickPlayButton() {
const playButtons = document.querySelectorAll('button.kit-button.is-
large.is-primary, button.kit-pill.reset.is-type-white.pill');
playButtons.forEach(button => {
if (!isGameToolPaused && GAME_SETTINGS.autoClickPlay &&
button.textContent.trim().length > 0) {
setTimeout(() => {
gameStats.isGameOver = true;
resetGameStats();
button.click();
}, getNewGameDelay());
}
});
}
function continuousErrorCheck() {
checkAndClickResetButton();
const delay = Math.floor(Math.random() * 3000) + 5000;
setTimeout(continuousErrorCheck, delay);
}
continuousErrorCheck();
function continuousPlayButtonCheck() {
checkAndClickPlayButton();
setTimeout(continuousPlayButtonCheck, 1000);
}
continuousPlayButtonCheck();
menuTitle.appendChild(closeButton);
settingsMenu.appendChild(menuTitle);
function answerQuestion() {
try {
const questionElement = document.querySelector("div.kit-overlay >
div > div > div.heading > div.title");
if (!questionElement) {
return;
}
const question = questionElement.innerText.trim().toLowerCase();
if (!inputElement) {
console.warn("The field for entering an answer was not
found!");
return;
}
inputElement.value = answer;
if (!submitButton) {
console.warn("The button to send was not found!");
return;
}
submitButton.click();
console.log("Button pressed.");
} catch (error) {
console.error("There's been a mistake:", error);
}
}
function videoTaskCompletion() {
if (isGameToolPaused) return;
if (GAME_SETTINGS.autoVideoTask) {
Array
.from(
document.querySelectorAll(".pages-tasks-
item:has(>*>*>button.is-status-ready-for-verify) .details"))
.filter(
verifyBtn => verifyBtn.childNodes[0].textContent in
answers
)[0]
?.parentElement?.lastChild?.click();
}
if (GAME_SETTINGS.autoVerifyCode) {
document.querySelectorAll(".tasks-list button[class*=not-
started]").forEach(e => { e.click() });
}
if (GAME_SETTINGS.autoClaimTask) {
document.querySelectorAll("button.is-status-ready-for-
claim").forEach(e => { e.click() });
}
}
const setting_inputs = [
// label, id, type, min, max, step, tooltipText
['Flower Skip (%)', 'flowerSkipPercentage', 'range', 0, 100, 1,
'EN: Percentage probability of skipping a flower.<br>RU:
Вероятность пропуска цветка в процентах.'],
['Min Freeze Hits', 'minIceHits', 'range', 1, 10, 1,
'EN: Minimum number of clicks per freeze.<br>RU: Минимальное
количество кликов на заморозку.'],
['Min Bomb Hits', 'minBombHits', 'range', 0, 10, 1,
'EN: Minimum number of clicks per bomb.<br>RU: Минимальное
количество кликов на бомбу.'],
['Min Delay (ms)', 'minDelayMs', 'range', 10, 10000, 10,
'EN: Minimum delay between clicks.<br>RU: Минимальная задержка
между кликами.'],
['Max Delay (ms)', 'maxDelayMs', 'range', 10, 10000, 10,
'EN: Maximum delay between clicks.<br>RU: Максимальная задержка
между кликами.'],
['Auto Click Play', 'autoClickPlay', 'checkbox', null, null, null,
'EN: Automatically start the next game at the end of.<br>RU:
Автоматически начинать следующую игру по окончании.'],
['Auto Claim Task', 'autoClaimTask', 'checkbox', null, null, null,
'EN: Automatically claim completed tasks.<br>RU: Автоматически
принимать выполненные задачи.'],
['Auto Video Task', 'autoVideoTask', 'checkbox', null, null, null,
'EN: Automatically start the next youtube video then
verify.<br>RU: Автоматически запускать следующее видео на YouTube, а затем
проверять.'],
['Auto Verify Code', 'autoVerifyCode', 'checkbox', null, null, null,
'EN: Automatically verify started youtube task and. (If key is
present)<br>RU: Автоматически проверять запущенную задачу на YouTube. (Если есть
ответ)'],
]
function updateSettingsMenu() {
const setting_params = setting_inputs.map(params => params[1]);
setting_params.forEach(function (id) {
const elem = document.getElementById(id)
elem.type != 'checkbox' ? elem.value = GAME_SETTINGS[id] :
elem.checked = GAME_SETTINGS[id];
});
}
setting_inputs.forEach(function (setting_input_params) {
settingsMenu.appendChild(createSettingElement(...setting_input_params));
});
const pauseResumeButton = document.createElement('button');
pauseResumeButton.textContent = 'Pause';
pauseResumeButton.className = 'pause-resume-btn';
pauseResumeButton.onclick = toggleGamePause;
settingsMenu.appendChild(pauseResumeButton);
settingsMenu.appendChild(socialButtons);
document.body.appendChild(settingsMenu);
const settingsButton = document.createElement('button');
settingsButton.className = 'settings-button';
settingsButton.textContent = '⚙️';
settingsButton.onclick = () => {
settingsMenu.style.display = settingsMenu.style.display === 'block' ?
'none' : 'block';
};
document.body.appendChild(settingsButton);
.settings-title {
color: #ffffff;
font-size: 16px;
font-weight: 600;
margin-bottom: 12px;
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.settings-close-button {
background: rgba(255, 255, 255, 0.1);
border: none;
color: #ffffff;
font-size: 16px;
cursor: pointer;
padding: 4px 8px;
border-radius: 8px;
transition: all 0.2s;
}
.setting-item {
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 12px;
margin-bottom: 6px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.setting-label {
display: flex;
align-items: center;
width: 110px;
}
.setting-label-text {
color: #ffffff;
font-size: 12px;
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.help-icon {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.1);
padding: 2px 6px;
border-radius: 6px;
margin-left: auto;
font-size: 10px;
cursor: help;
z-index: 1;
width: 14px;
height: 14px;
flex-shrink: 0;
}
.help-icon .tooltiptext {
visibility: hidden;
width: 200px;
background-color: #000000;
color: #ffffff;
text-align: left;
border-radius: 8px;
padding: 8px;
position: absolute;
z-index: 99999;
left: 24px;
top: 50%;
transform: translateY(-50%);
opacity: 0;
transition: opacity 0.3s;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
border: 1px solid rgba(255, 255, 255, 0.2);
font-size: 11px;
line-height: 1.4;
white-space: normal;
pointer-events: none;
}
.help-icon .tooltiptext::after {
content: "";
position: absolute;
top: 50%;
left: -10px;
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent #000000 transparent transparent;
}
.help-icon:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
.setting-input {
display: flex;
align-items: center;
gap: 8px;
width: 166px;
flex-shrink: 0;
justify-content: flex-end;
}
.setting-slider {
-webkit-appearance: none;
width: 100%;
height: 4px;
background: rgba(255, 255, 255, 0.1);
border-radius: 2px;
outline: none;
}
.setting-slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 14px;
height: 14px;
background: #ffffff;
border-radius: 50%;
cursor: pointer;
transition: all 0.2s;
}
.setting-value {
min-width: 30px;
text-align: right;
font-size: 12px;
}
.pause-resume-btn {
width: 100%;
padding: 8px;
background: rgba(255, 255, 255, 0.1);
border: none;
border-radius: 12px;
color: #ffffff;
font-weight: 600;
font-size: 12px;
cursor: pointer;
transition: all 0.2s;
margin-top: 12px;
}
.social-buttons {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
margin-top: 12px;
}
.social-button {
background: rgba(255, 255, 255, 0.05);
padding: 8px;
border-radius: 12px;
color: #ffffff;
text-decoration: none;
font-size: 10px;
transition: all 0.2s;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.social-button img {
width: 23px;
height: 23px;
}
.settings-button {
position: fixed;
bottom: 150px; /* for little higher so app navigarion don't get
disturbed*/
right: 30px;
background: #227725e6;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 16px;
width: 50px;
height: 50px;
font-size: 24px;
cursor: pointer;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
transition: all 0.3s;
z-index: 999999;
}
.settings-button:hover {
transform: translateY(-2px);
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.3);
}
.switch {
position: relative;
display: inline-block;
width: 50px;
height: 24px;
margin-left: auto;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(255, 255, 255, 0.1);
transition: .4s;
border-radius: 24px;
}
.slider:before {
position: absolute;
content: "";
height: 20px;
width: 20px;
left: 2px;
bottom: 2px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
input:checked + .slider {
background-color: #227725;
}
input:checked + .slider:before {
transform: translateX(26px);
}
`;
document.head.appendChild(style);
labelContainer.appendChild(labelElement);
labelContainer.appendChild(helpIcon);
function AutoClaimAndStart() {
setInterval(() => {
const claimButton = document.querySelector('#app >
div.index-page.page > div.pages-index-points > div > div:nth-child(2) > div.right-
slot > div > button');
const startFarmingButton =
document.querySelector('button.kit-button.is-large.is-primary.is-fill.button');
const continueButton = document.querySelector('button.kit-
button.is-large.is-primary.is-fill.btn');
if (claimButton) {
claimButton.click();
} else if (startFarmingButton) {
startFarmingButton.click();
} else if (continueButton) {
continueButton.click();
}
}, Math.floor(Math.random() * 5000) + 5000);
}
AutoClaimAndStart();
let input;
if (type === 'checkbox') {
const switchLabel = document.createElement('label');
switchLabel.className = 'switch';
input = document.createElement('input');
input.type = 'checkbox';
input.id = id;
input.checked = GAME_SETTINGS[id];
input.addEventListener('change', (e) => {
GAME_SETTINGS[id] = e.target.checked;
saveSettings();
});
switchLabel.appendChild(input);
switchLabel.appendChild(slider);
inputContainer.appendChild(switchLabel);
} else {
input = document.createElement('input');
input.type = type;
input.id = id;
input.min = min;
input.max = max;
input.step = step;
input.value = GAME_SETTINGS[id];
input.className = 'setting-slider';
container.appendChild(labelContainer);
container.appendChild(inputContainer);
return container;
}
function saveSettings() {
localStorage.setItem('BlumAutoclickerSettings',
JSON.stringify(GAME_SETTINGS));
}
function loadSettings() {
const savedSettings = localStorage.getItem('BlumAutoclickerSettings');
if (savedSettings) {
const parsedSettings = JSON.parse(savedSettings);
GAME_SETTINGS = {
...GAME_SETTINGS,
...parsedSettings
};
}
}
loadSettings();
updateSettingsMenu();
function toggleGamePause() {
isGameToolPaused = !isGameToolPaused;
pauseResumeButton.textContent = isGameToolPaused ? 'Resume' : 'Pause';
}
} catch (e) {
console.error("Blum Autoclicker error:", e);
}