Tank-Randomizer

Bring an element of surprise to your tank customization experience with the Tank Randomizer,

目前為 2024-11-27 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Tank-Randomizer
// @author      kamarov
// @description Bring an element of surprise to your tank customization experience with the Tank Randomizer,
// @version     3.0.0
// @namespace   https://github.com/kamarov-therussiantank
// @license     GPL-3.0
// @match       https://*.tanktrouble.com/*
// @desc        Randomizes your tank in just one click of a button.
// @run-at      document-end
// @grant       GM_addStyle
// @require     https://update.gf.qytechs.cn/scripts/482092/1297984/TankTrouble%20Development%20Library.js
// @noframes
// ==/UserScript==

GM_addStyle(`
.randomize-button {
  margin-bottom: 10px;
  height: 20px;
  width: 100px;
}
`);

whenContentInitialized().then(() => {
    var id = Users.getAllPlayerIds()[0];
    var turret = [];
    var back = [];
    var barrel = [];
    var front = [];
    var colours = [];
    var baseColor = '';


// List of LockedAccessories
const backAccessories = ['27', '28', '29', '30', '31', '32'];
const frontAccessories = ['27', '28', '29', '30'];
const turretAccessories = ['27'];
const barrelAccessories = ['27', '28', '29', '30', '31', '32'];

// Store objects
var lockedAccessories = {
    back: backAccessories,
    front: frontAccessories,
    turret: turretAccessories,
    barrel: barrelAccessories
};

function randomizeTankcessoriesA() {
    // Function to apply a random accessory while considering locked accessories
    function applyRandomAccessory(part, availableAccessories) {
        let currentAccessory = getCurrentAccessory(part);
        const lockedForPart = lockedAccessories[part] || [];
        if (lockedForPart.includes(currentAccessory)) {
            console.log(`The ${part} accessory (ID: ${currentAccessory}) is locked, no randomization will occur.`);
            return;
        }


        // Filter out the locked accessories from the available ones for randomization
        const available = availableAccessories.filter(accessory => !lockedForPart.includes(accessory));
        if (available.length > 0) {
            const randomAccessory = available[Math.floor(Math.random() * available.length)];
            Backend.getInstance().setAccessory(
                function (result) {
                    Users.updateUser(id, true, false);
                },
                null,
                null,
                id,
                part,
                randomAccessory,
                Caches.getPlayerDetailsCache()
            );
        }
    }

    // Get the currently equipped accessory for a given part
    function getCurrentAccessory(part) {
        switch (part) {
            case 'back':
                return ['27', '28', '29', '30', '31', '32'];
            case 'front':
                return ['27', '28', '29', '30'];
            case 'turret':
                return ['27'];
            case 'barrel':
                return ['27', '28', '29', '30', '31', '32'];
            default:
                return null;
        }
    }

    // Apply accessories, avoiding locked ones for each part
    applyRandomAccessory('back', back);
    applyRandomAccessory('turret', turret);
    applyRandomAccessory('front', front);
    applyRandomAccessory('barrel', barrel);
}

    function randomizePaint() {
        randomizePaintC();
    }

    function randomizePaintC() {
        var selectedBaseColor = getRandomColorFromGarage();
        var selectedTurretColor = getRandomColorFromGarage();
        var selectedTreadColor = getRandomColorFromGarage();

        function setColorForPart(part, color) {
            Backend.getInstance().setColour(
                function (result) {
                    Users.updateUser(id, true, false);
                },
                function (result) { },
                function (result) { },
                id,
                part,
                color,
                Caches.getPlayerDetailsCache()
            );
        }

        setColorForPart('base', selectedBaseColor);
        setColorForPart('turret', selectedTurretColor);
        setColorForPart('tread', selectedTreadColor);
    }

    Backend.getInstance().getGarageContent(
        function (result) {
            boxes = result['boxes'];
            for (box in boxes) {
                accessories = boxes[box]['accessories'];
                sprays = boxes[box]['sprayCans'];
                for (accessory in accessories) {
                    thing = accessories[accessory];
                    if (thing['type'] == 'front') {
                        front.push(thing['value']);
                    }
                    if (thing['type'] == 'back') {
                        back.push(thing['value']);
                    }
                    if (thing['type'] == 'barrel') {
                        barrel.push(thing['value']);
                    }
                    if (thing['type'] == 'turret') {
                        turret.push(thing['value']);
                    }
                }
                for (spray in sprays) {
                    thing = sprays[spray]['colour'];
                    if (thing['type']) {
                        colours.push(thing['rawValue']);
                    }
                }
            }

            // Randomly select the base color
            baseColor = colours[Math.floor(Math.random() * colours.length)];
        },
        function (res) { },
        function (res) { },
        id,
        Caches.getGarageContentCache()
    );

    var snippet = $(`
        <div id="randomizerSnippet" class="snippet">
            <div class="header">Tank Randomizer</div>
            <hr>
            <div class="header" style="color: #e7c811; text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;">Randomize</div>
        </div>
    `);
    var content = $('<div></div>');
    var accessoriesButton = $('<button class="randomize-button button" type="button" tabindex="-1">Accessories</button>');
    var paintsButton = $('<button class="randomize-button button" type="button" tabindex="-1">Paints</button>');

    accessoriesButton.on('mouseup', () => randomizeTankcessoriesA());
    paintsButton.on('mouseup', () => randomizePaintC());

    content.append([accessoriesButton, paintsButton]);
    snippet.append(content);
    $('#secondaryContent').append(snippet);

    function getRandomColorFromGarage() {
        return colours[Math.floor(Math.random() * colours.length)];
    }
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址