p_dh Robux Spoofer

Combines fake Robux transactions with spoofed Robux display and formatting

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         p_dh Robux Spoofer
// @namespace    http://tampermonkey.net/
// @version      1.22
// @description  Combines fake Robux transactions with spoofed Robux display and formatting
// @author       p_dh
// @match        *://*.roblox.com/*
// @grant        GM.setValue
// @grant        GM.getValue
// @icon         https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Robux_2019_Logo_gold.svg/1883px-Robux_2019_Logo_gold.svg.png
// @license      MIT
// ==/UserScript==

// esc to access the menu

(function() {
    'use strict';

    var amount = 12820;
    var salesOfGoodsExtra = 460325; // Amount to add to "Sales of Goods"
    var purchasesBaseAmount = 460325; // Base amount for Purchases

    document.addEventListener('keydown', function(event){
        if(event.key === "Escape"){
            var UsernameDoc = document.querySelector(".age-bracket-label-username");
            if (UsernameDoc) {
                var newAmount = prompt("Choose the Number to set " + UsernameDoc.innerHTML + "'s Robux to:                                MINIMUM OF 1,100,000");
                if (!isNaN(newAmount)) {
                    setValue(Number(newAmount) + salesOfGoodsExtra);
                } else {
                    console.log("Invalid amount entered");
                }
            } else {
                console.log("Username element not found");
            }
        }
    });

    function setValue(amount) {
        GM.setValue("RobuxSaved", amount).then(function() {
            updateAmounts();
        }).catch(function(error) {
            console.error("Error setting RobuxSaved:", error);
        });
    }

    function getValue(key, defaultValue) {
        return GM.getValue(key, defaultValue);
    }

    function updateAmounts() {
        getValue("RobuxSaved", salesOfGoodsExtra).then(function(savedAmount) {
            amount = savedAmount;
            updateRobuxDisplay();
            replaceTransactionAmounts();
        }).catch(function(error) {
            console.error("Error getting RobuxSaved:", error);
        });
    }

    function format(num) {
        if (num < 1000) { return num.toString(); }
        if (num >= 1000 && num < 1000000) { return (num / 1000).toFixed(1) + "K+"; }
        if (num >= 1000000 && num < 1000000000) { return (num / 1000000).toFixed(1) + "M+"; }
        if (num >= 1000000000 && num < 1000000000000) { return (num / 1000000000).toFixed(1) + "B+"; }
        if (num >= 1000000000000 && num < 1000000000000000) { return (num / 1000000000000).toFixed(1) + "T+"; }
        if (num >= 1000000000000000) { return (num / 1000000000000000).toFixed(1) + "Q+"; }
    }

    function addCommas(num) {
        return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }

    function updateRobuxDisplay() {
        var robux = document.getElementById("nav-robux-amount");
        if (robux && robux.innerHTML !== format(amount)) {
            robux.innerHTML = format(amount);
        }
        var robux2 = document.getElementById("nav-robux-balance");
        if (robux2 && robux2.innerHTML && robux2.innerHTML !== amount.toLocaleString()) {
            robux2.innerHTML = amount.toLocaleString() + ' Robux';
        }
    }

    function replaceTransactionAmounts() {
        var categories = ['premium stipends', 'currency purchases', 'sales of goods', 'group payouts', 'purchases'];
        var transactionRows = document.querySelectorAll('tr');

        // Allocate a higher percentage to "Sales of Goods" and "Group Payouts"
        var salesOfGoodsPercentage = 0.5; // 50%
        var groupPayoutsPercentage = 0.2; // 20%

        var salesOfGoodsAmount = (amount * salesOfGoodsPercentage).toFixed(0);
        var groupPayoutsAmount = (amount * groupPayoutsPercentage).toFixed(0);

        salesOfGoodsAmount = Number(salesOfGoodsAmount) + salesOfGoodsExtra;

        var premiumStipendsAmount = 4400;
        var purchasesAmount = purchasesBaseAmount + amount - salesOfGoodsAmount - groupPayoutsAmount - premiumStipendsAmount;

        var replacedTotal = false;

        transactionRows.forEach(function(row) {
            var transactionLabel = row.querySelector('.summary-transaction-label');
            if (transactionLabel) {
                var label = transactionLabel.textContent.trim().toLowerCase();
                var tdBalanceElement = row.querySelector('.amount.icon-robux-container span:last-child');
                if (tdBalanceElement) {
                    if (label === 'premium stipends') {
                        tdBalanceElement.textContent = addCommas(premiumStipendsAmount);
                    } else if (label === 'sales of goods') {
                        tdBalanceElement.textContent = addCommas(salesOfGoodsAmount);
                    } else if (label === 'group payouts') {
                        tdBalanceElement.textContent = addCommas(groupPayoutsAmount);
                    } else if (label === 'purchases') {
                        tdBalanceElement.textContent = addCommas(purchasesAmount);
                    } else if (label === 'total') {
                        tdBalanceElement.textContent = addCommas(amount);
                        replacedTotal = true;
                    } else if (categories.includes(label)) {
                        var otherCategoriesAmount = (amount - premiumStipendsAmount - salesOfGoodsAmount - groupPayoutsAmount).toFixed(0);
                        tdBalanceElement.textContent = addCommas(otherCategoriesAmount);
                    }
                }
            }
        });

        var balanceElement = document.querySelector('.balance-label.icon-robux-container span');
        if (balanceElement) {
            balanceElement.innerHTML = 'My Balance: <span class="icon-robux-16x16"></span>' + addCommas(amount);
        }
    }

    function start() {
        updateRobuxDisplay();
        updateAmounts();
        setInterval(function() {
            updateAmounts();
        }, 1000);
    }

    window.onload = function() {
        start();
    };
})();