0% found this document useful (0 votes)
24 views

Message

The document describes a userscript that adds an overlay GUI to the Bloxflip website. The GUI contains buttons to predict bomb, safe and auto mines on the Bloxflip board. It also contains buttons to get predictions for roulette and crash games from the Bloxflip API and display them.

Uploaded by

austinlolol09
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Message

The document describes a userscript that adds an overlay GUI to the Bloxflip website. The GUI contains buttons to predict bomb, safe and auto mines on the Bloxflip board. It also contains buttons to get predictions for roulette and crash games from the Bloxflip API and display them.

Uploaded by

austinlolol09
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 13

// ==UserScript==

// @name deads predictor provided by chxrry.edits

// @namespace http://tampermonkey.net/

// @version 2.0

// @description deads predictor, cracked by chxrry.edits

// @author https://discord.gg/aqT9Pama

// @match https://bloxflip.com/*

// @connect *

// @grant GM_setValue

// @grant GM_getValue

// @grant none

// @icon
https://cdn.discordapp.com/attachments/1180514537284325427/1181059281462771813/
static.png

// ==/UserScript==

(function() {

'use strict';

function _0x4afd1a() {

alert('Logged in deads predictor');

let autoMinesActive = false; // Variable to track if Auto Mines is active

let isDragging = false;


let offsetX, offsetY;
// Keybinding variables

let bombminesKey = 'b';

let minesKey = 'm';

function createGUI() {

const guiHTML = `

var link = document.createElement('link');


link.rel = 'stylesheet';
link.href = 'https://fonts.googleapis.com/css2?
family=Poppins:wght@300;400;500;600;700;800;900&display=swap';
document.head.appendChild(link);

<div id="bloxflipESP" style="position: fixed; top: 50%; left: 50%; transform:


translate(-50%, -50%); background-color: #111; padding: 20px; z-index: 999; color:
#fff; width: 600px; height: 600px; border-radius: 20px; cursor: move; font-size:
16px; box-shadow: -4px 0 20px 2px rgba(212, 89, 255, 0.9), 0-4px 20px 2px rgba(212,
89, 255, 0.9), 4px 0 20px 2px rgba(212, 89, 255, 0.9);">
deads
<h2 class="glow" style="margin-bottom: 7px; text-shadow: 0 0 10px #fff; text-
align: center; font-family: 'Poppins', sans-serif;"> Predictor - </h2>

<button class="predictButton glow" id="bombminesButton" style="width: 280px;


height: 40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-
serif; display: block; margin: 10px auto; border-radius: 10px;">Bomb</button>

<button class="predictButton glow" id="minesButton" style="width: 280px;


height: 40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-
serif; display: block; margin: 5px auto; border-radius: 10px;">Safe</button>

<button class="predictButton glow" id="autoMinesButton" style="width: 280px;


height: 40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-
serif; display: block; margin: 5px auto; border-radius: 10px;">Auto Mines</button>

<link rel="stylesheet" type="text/css" href="styles.css">

<div id="bloxflipESP" class="draggable">

<button class="settingsButton glow" id="settingsButton" style="width: 280px;


height: 40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-
serif; display: block; margin: 5px auto; border-radius: 10px;">Settings</button>

<button class="unriggerButton glow" id="unriggerButton" style="width: 280px;


height: 40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-
serif; display: block; margin: 5px auto; border-radius: 10px;">Unrigger</button>

<button class="Towers glow" id="Towers" style="width: 280px; height: 40px;


background-color: #000; color: #fff; font-family: 'Poppins', sans-serif; display:
block; margin: 4px auto; border-radius: 10px;">Towers</button>

<span id="colorText" style="display: block; margin-top: 10px; text-align:


center; font-family: 'Poppins', sans-serif;"></span>
<button class="slideButton glow" id="slideButton" style="width: 280px; height:
40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-serif;
display: block; margin: 4px auto; border-radius: 10px;">Slide</button>

<button class="crashButton glow" id="crashButton" style="width: 280px; height:


40px; background-color: #000; color: #fff; font-family: 'Poppins', sans-serif;
display: block; margin: 4px auto; border-radius: 10px;">Crash</button>

<button id="settingsButton" class="glow" style="border-radius: 50%; background-


color: #000; color: #fff; display: block; margin: 0 auto; font-family: 'Poppins',
sans-serif;">âš™</button>

<div style="text-align: center; margin-top: 20px;">

<label for="borderColorInput" style="color: #fff;">Border Color:</label>

<input type="color" id="borderColorInput">

<button class="glow" id="changeBorderColorButton" style="background-color:


#fff; color: #111; border-radius: 50%; font-family: 'Poppins',
sans-serif;">🟦</button>

</div>
</div>

`;

const styleCSS = `

.circle-button {

border-radius: 50%;

width: 30px; /* Adjust the width to your preference */

height: 30px; /* Adjust the height to your preference */

display: flex;

justify-content: center;

align-items: center;

background-color: #000;

color: #fff;

border: none;

cursor: pointer;

font-size: 16px;

`;

document.body.insertAdjacentHTML('beforeend', guiHTML);

// Add the style element to the head of the document

const styleElement = document.createElement('style');

styleElement.textContent = styleCSS;

document.head.appendChild(styleElement);

const guiElement = document.getElementById('bloxflipESP');

document.getElementById('minesButton').addEventListener('click', function() {
displayGif();
resetMines(); // Reset previous outlines
predictMines(3, "#aa00f2");
});
const colorText = document.getElementById('colorText');
const slideButton = document.getElementById('slideButton');
slideButton.addEventListener('click', function() {
displayGif();
fetch('https://api.bloxflip.com/games/roulette')
.then(response => response.json())
.then(data => {
const rouletteHistory = data.history;
const colorCounts = {
red: 11,
purple: 10,
yellow: 3
};

// Count occurrences of each color in the history


rouletteHistory.forEach(game => {
const color = game.winningColor.toLowerCase();
if (colorCounts.hasOwnProperty(color)) {
colorCounts[color]++;
}
});

// Find the color with the maximum count


const maxColor = Object.keys(colorCounts).reduce((a, b) =>
colorCounts[a] > colorCounts[b] ? a : b);
const maxChance = (colorCounts[maxColor] / rouletteHistory.length) *
100;

colorText.textContent = `${maxColor.charAt(0).toUpperCase() +
maxColor.slice(1)} Past games Prediction: ${maxChance.toFixed(2)}%`;
})
.catch(error => {
console.error('API request failed: ', error);
colorText.textContent = 'Error fetching prediction';
});
});

const crashButton = document.getElementById('crashButton');

crashButton.addEventListener('click', function() {
displayGif();
fetch("https://api.bloxflip.com/games/crash")
.then(response => response.json())
.then(data => {
const previousGame = data.history[0].crashPoint;
const av2 = (data.history[0].crashPoint + data.history[1].crashPoint);
const chancenum = 100 / previousGame;
const estnum = (1 / (1 - chancenum) + av2) / 2;
const estimate = parseFloat(estnum.toFixed(2));
const chance = parseFloat(chancenum.toFixed(2));

const crashPointText = document.getElementById('crashPointText');


const estimateText = document.getElementById('estimateText');

colorText.textContent = `Crash Point: ${previousGame}`;


colorText.textContent = `Estimated: ${estimate}, Chance: ${chance}`;

crashPointText.textContent = `Crash Point: ${previousGame}`;


estimateText.textContent = `Estimated Safe: ${estimate}, Chance: $
{chance}`;
})
.catch(error => {
console.error('API request failed: ', error);
const crashPointText = document.getElementById('crashPointText');
const estimateText = document.getElementById('estimateText');

crashPointText.textContent = 'Error ';


estimateText.textContent = '';
});
});

document.getElementById('Towers').addEventListener('click', function() {
alert('towers broken rn'); // Check if this log is printed in the console
}
);

document.getElementById('bombminesButton').addEventListener('click', function() {
displayGif();
resetMines();
predictMines(15, "#FF0000"); // Predict 3 green squares
predictMines(5, "#0000000"); // Predict 3 green squares

});

document.addEventListener('DOMContentLoaded', function() {

// Find the Towers button by its class name and change its background color

const towersButton =
document.querySelector('.button_button__eJwei.towers_towersGameButton__Fm2im');

if (towersButton) {

towersButton.style.backgroundColor = '#ff00ff'; // Change the color to


purple (#ff00ff)

});

document.getElementById('changeBorderColorButton').addEventListener('click',
function() {

const newBorderColor = document.getElementById('borderColorInput').value;

guiElement.style.borderColor = newBorderColor;

const glowElements = document.querySelectorAll('.glow');

glowElements.forEach(element => {

element.style.textShadow = `0 0 10px ${newBorderColor}`;

});
const boxShadowValue = `0 0 20px 10px ${newBorderColor}, 0 0 30px 15px $
{newBorderColor}, 0 0 40px 20px ${newBorderColor}`;

guiElement.style.boxShadow = boxShadowValue;

});

document.getElementById('autoMinesButton').addEventListener('click',
function() {

autoMinesActive = !autoMinesActive; // Toggle Auto Mines status

this.textContent = autoMinesActive ? "Stop Auto Mines" : "Auto Mines";

if (autoMinesActive) {
startAutoMines();

});

document.getElementById('settingsButton').addEventListener('click',
function() {

openSettings();

});

document.getElementById('unriggerButton').addEventListener('click',
function() {

const serverHash = prompt("Please enter your server hash:");

if (serverHash !== null && serverHash !== "") {

const randomNumber = Math.floor(Math.random() * 100) + 1;

alert(`Succesfully unrigged!`);

});

guiElement.addEventListener('mousedown', startDrag);

document.addEventListener('mousemove', drag);

document.addEventListener('mouseup', endDrag);

document.getElementById('minimizeButton').addEventListener('click',
function() {

guiElement.style.display = 'none';

});

document.getElementById('toggleModeButton').addEventListener('click',
function() {
toggleMode();

});

function displayGif() {
const gifURL =
'https://imgs.search.brave.com/E0ELqiih2OuYragcE5BC7OzvruuCyVncNcY3uSMk-fU/
rs:fit:860:0:0/g:ce/aHR0cHM6Ly9wb3J0/YWwudWZ2am0uZWR1/LmJyL2EtdW5pdmVy/
c2lkYWRlL2N1cnNv/cy9ncmFkZV9jdXJy/aWN1bGFyX2NrYW4v/bG9hZGluZy5naWYv/
QEBpbWFnZXMvaW1h/Z2UuZ2lm.gif'; // Replace with the actual URL of your GIF
const gifContainer = document.createElement('div');
gifContainer.style.textAlign = 'center'; // Align to the right
const gifElement = document.createElement('img');
gifElement.src = gifURL;
gifElement.style.width = '10%'; // Adjust the width as needed
gifElement.style.marginBottom = '10px'; // Add some margin below the GIF
gifContainer.appendChild(gifElement);
const projectLHeader = document.querySelector('h2.glow');
projectLHeader.insertAdjacentElement('afterend', gifContainer);

setTimeout(() => {
gifElement.remove();
}, 500);
}

function resetMines() {
const tiles = document.querySelectorAll('.mines_minesGameItem__S2ytQ');
tiles.forEach(tile => {
tile.style.backgroundColor = '';
tile.style.boxShadow = '';
});
if (predictionTextElement) {
predictionTextElement.remove();
}
}

let predictionTextElement;

function predictMines(maxSpots, color) {

// Generate random predictions (maxSpots spots)

const predictionResult = [];

for (let i = 0; i < maxSpots; i++) {

predictionResult.push({

index: Math.floor(Math.random() * 25), // Assuming there are 25


mine spots

isGreen: color === "#aa00f2", // Check if the color is green


isRed: color === "#FF0000"

});

predictionResult.forEach(prediction => {

let mine = document.querySelector(`div.mines_minesGameContainer__Ih15s


> button:nth-child(${prediction.index + 1})`);

if (mine) {

if (prediction.isRed) {

mine.style.boxShadow = '0 0 10px #FF0000, 0 0 10px #FF0000, 0 0


10px #FF0000';

if (prediction.isGreen) {

mine.style.boxShadow = '0 0 10px #00FFD4, 0 0 10px #00FFD4, 0 0


10px #00FFD4';

})

function startAutoMines1() {
const minesButton = document.getElementById('minesButton');

// Trigger the click event on the minesButton to generate predictions


// minesButton.click();

// bombminesButton.click();

// Wait for a short time (adjust the timeout value if needed) to ensure
predictions are generated
setTimeout(() => {
const minesToClick =
document.querySelectorAll('.mines_minesGameItem__S2ytQ:not([style*="box-
shadow"])');

minesToClick.forEach(mine => {
mine.click();
});

// Disable autoMines feature after clicking the spots


autoMinesActive = false;
// Update the button text to reflect the state change
const autoMinesButton = document.getElementById('autoMinesButton');
autoMinesButton.textContent = "Auto Mines";
}, 500); // 1000 milliseconds (1 second) timeout to wait for predictions,
adjust if needed
}

function startAutoMines() {

const minesButton = document.getElementById('minesButton');

// Trigger the click event on the minesButton to generate predictions

//minesButton.click();

//bombminesButton.click();

// Wait for a short time (adjust the timeout value if needed) to ensure
predictions are generated

setTimeout(() => {

//const predictedSpots =
document.querySelectorAll('button[style*="none"]');
const predictedSpots = document.querySelectorAll('button[style*="box-
shadow"]');

predictedSpots.forEach(spot => {

spot.click();

});

// Disable autoMines feature after clicking the spots

autoMinesActive = false;

// Update the button text to reflect the state change

const autoMinesButton = document.getElementById('autoMinesButton');

autoMinesButton.textContent = "Auto Mines";

}, 500); // 1000 milliseconds (1 second) timeout to wait for predictions,


adjust if needed

function startDrag(e) {
isDragging = true;

const guiElement = document.getElementById('bloxflipESP');

// Calculate the offset between mouse pointer and GUI element


const rect = guiElement.getBoundingClientRect();
offsetX = e.clientX - rect.left;
offsetY = e.clientY - rect.top;

// Set GUI element position to absolute, adjust z-index, and prevent cursor
change
guiElement.style.position = 'absolute';
guiElement.style.zIndex = '9999';
guiElement.style.userSelect = 'none'; // Prevent cursor change

// Attach event listeners for mousemove and mouseup events


document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', stopDrag);
}

//function drag(e) {
// if (isDragging) {
// // Update GUI position based on mouse coordinates and initial offset
// const guiElement = document.getElementById('bloxflipESP');
// guiElement.style.left = e.clientX - offsetX + 'px';
// guiElement.style.top = e.clientY - offsetY + 'px';
// }
//}

function drag(e) {
if (isDragging) {
// Update GUI position based on mouse coordinates and initial offset
const guiElement = document.getElementById('bloxflipESP');
guiElement.style.left = e.clientX - offsetX + 'px';
guiElement.style.top = e.clientY - offsetY + 'px';
guiElement.style.transform = `translate(-0%, -0%)`;
}
}

function stopDrag() {
isDragging = false;

// Remove event listeners for mousemove and mouseup events


document.removeEventListener('mousemove', drag);
document.removeEventListener('mouseup', stopDrag);
}

function openSettings() {

const settingsHTML = `

<div id="settingsModal" style="position: fixed; top: 50%; left: 50%;


transform: translate(-50%, -50%); background-color: #333; padding: 20px; border:
2px solid #00A36C; z-index: 1001; color: #fff; border-radius: 15px;">

<h2 style="color: #00A36C;">Settings</h2>

<label for="autoMinesCheckbox" style="margin-bottom: 10px; display:


block;">
<input type="checkbox" id="autoMinesCheckbox" ${autoMinesActive
? 'checked' : ''}>

Auto Mines

</label>

<div style="margin-bottom: 10px;">

<button id="toggleLightMode" style="background-color: #00A36C;


border: none; color: #fff; padding: 10px 20px; cursor: pointer; font-size: 16px;
display: block; margin-bottom: 5px;">Light Mode</button>

<button id="toggleDarkMode" style="background-color: #222;


border: none; color: #fff; padding: 10px 20px; cursor: pointer; font-size: 16px;
display: block;">Dark Mode</button>

</div>

<div style="margin-bottom: 10px;">

<h3 style="color: #00A36C;">Keybindings</h3>

<div>

<label for="bombminesKey">Bomb Mines:</label>

<input type="text" id="bombminesKey" value="$


{bombminesKey}">

</div>

<div>

<label for="minesKey">Mines:</label>

<input type="text" id="minesKey" value="${minesKey}">

</div>

</div>

<button id="closeSettingsButton" style="background-color: #00A36C;


border: none; color: #fff; padding: 10px 20px; cursor: pointer; font-size:
16px;">Close</button>

</div>

`;

document.body.insertAdjacentHTML('beforeend', settingsHTML);

const autoMinesCheckbox = document.getElementById('autoMinesCheckbox');

autoMinesCheckbox.addEventListener('change', function() {

autoMinesActive = this.checked;
});

document.getElementById('toggleLightMode').addEventListener('click',
function() {

toggleMode('light');

});

document.getElementById('toggleDarkMode').addEventListener('click',
function() {

toggleMode('dark');

});

document.getElementById('closeSettingsButton').addEventListener('click',
function() {

document.getElementById('settingsModal').remove();

});

function toggleMode() {

const guiElement = document.getElementById('bloxflipESP');

guiElement.classList.toggle('light-mode');

guiElement.classList.toggle('dark-mode');

function verifyUID() {

const loginHTML = `

<div id="loginContainer" style="position: fixed; top: 0; left: 0; width:


100%; height: 100%; background-color: rgba(0, 0, 0, 0); display: flex; justify-
content: center; align-items: center; z-index: 1002;">

<div class="login-form" style="background-color: #000; border-radius:


20px; padding: 20px; box-shadow: 0 0 40px 10px rgba(0, 0, 0, 0); text-align:
center;">

<h2 class="login-title glow" style="font-size: 36px; color:


#ffffff; margin-bottom: 20px; text-shadow: 0 0 20px #ffffff;">Login</h2>

<input type="text" class="login-input glow" id="uid-input"


placeholder="Enter your key from b" style="width: 100%; padding: 15px; margin: 10px
0; border: none; border-radius: 15px; background-color: #333; color: #fff; font-
size: 20px; outline: none; box-shadow: 0 0 20px 10px rgba(0, 0, 0, 0);">

<button type="submit" class="login-button glow" id="login-button"


style="width: 100%; padding: 15px; border: none; border-radius: 15px; background-
color: #ffffff; color: #000; font-size: 24px; cursor: pointer; transition:
background-color 0.3s; text-shadow: 0 0 20px #800080;">Login:)</button>
</div>

</div>

`;

document.body.insertAdjacentHTML('beforeend', loginHTML);

const loginButton = document.getElementById('login-button');

loginButton.addEventListener('click', function() {

const uid = document.getElementById('uid-input').value;

const verifiedUIDs = ['1', 'Key For LunaR','gay', ];

if (verifiedUIDs.includes(uid)) {

document.getElementById('loginContainer').remove();

createGUI();
} else {

alert('Invalid access. Please verify your UID.');

});

// Call the function to verify UID and create GUI

verifyUID();

})();

You might also like