Tribal IO Mod Menu

Mod menu for Tribal IO browser game with item spawning functionality and enhanced UI

// ==UserScript==
// @name         Tribal IO Mod Menu
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Mod menu for Tribal IO browser game with item spawning functionality and enhanced UI
// @author       Lilbubblegum
// @match        https://tribals.io/#3TTV*
// @license MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    /**
     * Class representing the mod menu.
     */
    class ModMenu {
        /**
         * Constructor for the ModMenu class.
         */
        constructor() {
            // Create a box element for the menu
            this.box = document.createElement('div');
            this.box.style.position = 'fixed';
            this.box.style.top = '50%';
            this.box.style.left = '50%';
            this.box.style.transform = 'translate(-50%, -50%)';
            this.box.style.width = '250px';
            this.box.style.padding = '20px';
            this.box.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
            this.box.style.borderRadius = '10px';
            this.box.style.color = 'white';
            this.box.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.5)';
            this.box.style.display = 'none'; // Initially hidden
            this.box.style.zIndex = '9999';

            // Create and style buttons
            this.createButton('Spawn Stone', 'stone');
            this.createButton('Spawn Wood', 'wood');
            this.createButton('Spawn Metal', 'metal');

            // Append the menu to the body
            document.body.appendChild(this.box);

            // Add keyboard listener for toggling the menu and unlocking mouse
            document.addEventListener('keydown', (event) => {
                if (event.key === '/') {
                    this.toggleMenu();
                    this.unlockMouse();
                }
            });
        }

        /**
         * Toggles the visibility of the mod menu.
         */
        toggleMenu() {
            if (this.box.style.display === 'none') {
                this.box.style.display = 'block';
            } else {
                this.box.style.display = 'none';
            }
        }

        /**
         * Spawns an item in the player's inventory.
         *
         * @param {string} item - The item to spawn (e.g., "stone", "wood", "metal").
         */
        spawnItem(item) {
            console.log(`Spawned ${item} in the inventory.`);
        }

        /**
         * Creates a button for spawning an item.
         * @param {string} text - The text of the button.
         * @param {string} item - The item to spawn when clicked.
         */
        createButton(text, item) {
            const button = document.createElement('button');
            button.textContent = text;
            button.style.margin = '10px 0';
            button.style.padding = '10px';
            button.style.backgroundColor = '#4CAF50';
            button.style.border = 'none';
            button.style.color = 'white';
            button.style.fontSize = '16px';
            button.style.cursor = 'pointer';
            button.style.borderRadius = '5px';
            button.style.transition = 'background-color 0.3s';

            // Change color on hover
            button.addEventListener('mouseenter', () => {
                button.style.backgroundColor = '#45a049';
            });
            button.addEventListener('mouseleave', () => {
                button.style.backgroundColor = '#4CAF50';
            });

            // Button click action
            button.addEventListener('click', () => {
                this.spawnItem(item);
            });

            this.box.appendChild(button);
        }

        /**
         * Unlocks the mouse for clicking buttons.
         * This could be browser-dependent and may not always be effective on all games.
         */
        unlockMouse() {
            if (document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement) {
                document.exitPointerLock(); // Unlock mouse
            }
        }
    }

    // Create an instance of the ModMenu class
    const modMenu = new ModMenu();
})();