AssaultBots Hack

Assault Bots hack script [unchain, no overheat, infinite ammo, rapid fire, free fly[incomplete]]

// ==UserScript==
// @name         AssaultBots Hack
// @version      0.00000000001
// @description  Assault Bots hack script [unchain, no overheat, infinite ammo, rapid fire, free fly[incomplete]]
// @author       nekocell
// @namespace    https://greasyfork.org/ja/users/762895-nekocell
// @match        https://games.crazygames.com/en_US/bot-machines/index.html
// @icon         https://www.google.com/s2/favicons?domain=crazygames.com
// @require      https://greasyfork.org/scripts/436749-wasm-patcher/code/wasm_patcher.js?version=1011582
// ==/UserScript==

!function(wasm) {
    const successLog = function(patchName) {
        alert(`${patchName}`);
    };

    wasm.instantiateStreaming = async function (source, importObject) {
        let bufferSource = null;

        if (source instanceof Promise) {
            const response = await source;
            bufferSource = await response.arrayBuffer();
        }
        else if (source instanceof Response) {
            bufferSource = await source.arrayBuffer();
        }

        const patcher = new WasmPatcher(bufferSource);

        patcher.aobPatchEntry({
            scan: '21 1 23 E C 2 B 20 0 [ 41 1 ] 3A ? ? ? 41 0 24 9',
            code: [
                OP.i32.const, VAR.s32(0)
            ],
            onsuccess: () => successLog('unchain')
        });

        patcher.aobPatchEntry({
            scan: '2 0 20 0 [ 41 1 ]',
            code: [
                OP.i32.const, VAR.s32(0)
            ],
            onsuccess: () => successLog('unchain')
        });

        patcher.aobPatchEntry({
            scan: '2A 2 EC 1 [ 43 0 0 80 3F ] 92 38 2 EC 1',
            code: [ OP.f32.const, VAR.f32(0) ],
            onsuccess: () => successLog('no overheat')
        });

        patcher.aobPatchEntry({
            scan: '2C ? ? ? D 1 20 0 20 0 28 ? ? ? [ 41 1 ] 6B 36 ? ? ?',
            code: [
                OP.i32.const, VAR.u32(0)
            ],
            onsuccess: () => successLog('infinite ammo')
        });

        patcher.aobPatchEntry({
            scan: 'B 20 0 41 0 10 ? ? ? | 38 ? ? ? 40',
            code: [
                OP.drop,
                OP.f32.const, VAR.f32(0)
            ],
            onsuccess: () => successLog('rapid fire')
        });


        const xValueIndex = patcher.addGlobalVariableEntry({
            type: 'f32',
            value: 5,
            mutability: true,
            exportName: 'xValue'
        });

        const yValueIndex = patcher.addGlobalVariableEntry({
            type: 'f32',
            value: 5,
            mutability: true,
            exportName: 'yValue'
        });

        const zValueIndex = patcher.addGlobalVariableEntry({
            type: 'f32',
            value: 5,
            mutability: true,
            exportName: 'zValue'
        });

        patcher.aobPatchEntry({
            scan: '20 10 20 2 28 2 10 | 36 2 0 20 14 20 2 28 2 14 | 36 2 0 20 C 20 2 28 2 18 | 36 2 0',
            codes: [
                [
                    OP.drop,
                    OP.global.get, xValueIndex,
                    0xbc
                ],
                [
                    OP.drop,
                    OP.global.get, yValueIndex,
                    0xbc
                ],
                [
                    OP.drop,
                    OP.global.get, zValueIndex,
                    0xbc
                ],
            ],
            onsuccess: () => successLog('FreeFly?')
        });


        const newBuffer = patcher.patch();

        const result = await wasm.instantiate(newBuffer, importObject);

        const exports = result.instance.exports;

        const xValue = exports.xValue;
        const yValue = exports.yValue;
        const zValue = exports.zValue;

        let pressW = false;
        let pressS = false;
        let pressA = false;
        let pressD = false;
        let pressE = false;
        let pressQ = false;

        const speed = 2;

        window.addEventListener("keydown", evt => {
            switch(evt.code) {
                case 'KeyW':
                    pressW = true;
                    break;
                case 'KeyS':
                    pressS = true;
                    break;
                case 'KeyA':
                    pressA = true;
                    break;
                case 'KeyD':
                    pressD = true;
                    break;
                case 'KeyE':
                    pressE = true;
                    break;
                case 'KeyQ':
                    pressQ = true;
                    break;
                case 'KeyG':
                    xValue.value = 0;
                    yValue.value = 0;
                    zValue.value = 0;
                    break;
            }
        }, false);

        window.addEventListener("keyup", evt => {
            switch(evt.code) {
                case 'KeyW':
                    pressW = false;
                    break;
                case 'KeyS':
                    pressS = false;
                    break;
                case 'KeyA':
                    pressA = false;
                    break;
                case 'KeyD':
                    pressD = false;
                    break;
                case 'KeyE':
                    pressE = false;
                    break;
                case 'KeyQ':
                    pressQ = false;
                    break;
            }
        }, false);

        const frame = function() {
            if(pressW) xValue.value += speed;
            if(pressS) xValue.value -= speed;
            if(pressA) zValue.value += speed;
            if(pressD) zValue.value -= speed;
            if(pressE) yValue.value += speed;
            if(pressQ) yValue.value -= speed;

            requestAnimationFrame(frame);
        };

        requestAnimationFrame(frame);

        return result;
    };
}(WebAssembly);