Shootem.io Bots

Bots for shootem.io that follow everything you do.

// ==UserScript==
// @name         Shootem.io Bots
// @namespace    https://leaked.wiki/
// @version      0.1
// @description  Bots for shootem.io that follow everything you do.
// @author       Sango
// @match        https://shootem.io/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const NUMBER_OF_BOTS = 19; // Number of mirrored WebSocket connections

    // Find the WebSocket object
    let originalWebSocket = window.WebSocket;
    // Override WebSocket constructor
    window.WebSocket = function(url, protocols) {
        // Create a new WebSocket instance
        let ws = new originalWebSocket(url, protocols);

        // Array to store mirrored WebSocket instances
        let mirrorWebSockets = [];

        // Create mirrored WebSocket instances
        for (let i = 0; i < NUMBER_OF_BOTS; i++) {
            mirrorWebSockets.push(new originalWebSocket(url));
        }

        // Function to log and mirror messages
        function logAndMirrorMessage(type, data) {
            mirrorWebSockets.forEach(mirrorWs => {
                mirrorWs.send(data);
            });

            // Decode if it's binary data
            if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
                let decoder = new TextDecoder('utf-8');
                //console.log('Decoded:', decoder.decode(data));
            }
        }

        // Intercept received messages
        ws.addEventListener('message', function(event) {
            logAndMirrorMessage('Received', event.data);
            // You can do further processing or logging here
        });

        // Intercept sent messages
        let originalSend = ws.send;
        ws.send = function(data) {
            logAndMirrorMessage('Sent', data);
            originalSend.apply(ws, arguments);
        };

        // Return the WebSocket instance
        return ws;
    };
})();