非公開 キーボード縦移動修正

    @@ -4,45 +4,34 @@ * @private */ javascript:(function(){ - if (typeof sendInput === 'function') { - - window.sendInput = function() { - if (!socket || socket.readyState !== WebSocket.OPEN) return; - if (!isGameReady || myId === null) return; - - /* 1. まずは基本の角度(マウスなど)から、普通に1バイトの整数を作る */ - let angle = inputAngle; - let encodedAngle = Math.round(((angle + Math.PI) / (Math.PI * 2)) * 254); + /* 二重適用防止 */ + if (window._stealthStraightPatch) { + alert('パッチはすでに適用されています。'); + return; + } - /* 2. キーボードが押されているかチェック */ - if (typeof keys !== 'undefined') { - const up = keys['ArrowUp'] || keys['KeyW']; - const down = keys['ArrowDown'] || keys['KeyS']; - const left = keys['ArrowLeft'] || keys['KeyA']; - const right = keys['ArrowRight'] || keys['KeyD']; + /* ゲームのメインループ(または定期的なタイマー)に割り込んで、角度だけをステルス補正する */ + setInterval(function() { + /* キーボードとゲームの変数が存在するか安全確認 */ + if (typeof keys !== 'undefined' && typeof inputAngle !== 'undefined') { + const up = keys['ArrowUp'] || keys['KeyW']; + const down = keys['ArrowDown'] || keys['KeyS']; + const left = keys['ArrowLeft'] || keys['KeyA']; + const right = keys['ArrowRight'] || keys['KeyD']; - /* 左右が押されておらず、縦移動だけのとき、計算を上書き */ - if (!left && !right) { - if (up) { - encodedAngle = 63; /* 完璧な真上の整数(一切の小数を排除) */ - } else if (down) { - encodedAngle = 191; /* 完璧な真下の整数(一切の小数を排除) */ - } + /* 左右が押されておらず、縦移動だけのとき */ + if (!left && !right) { + if (up) { + /* サーバーで1バイトに変換された時にピッタリ「63」(真上)になる魔法のラジアン */ + window.inputAngle = ((63 / 254) * Math.PI * 2) - Math.PI; + } else if (down) { + /* サーバーで1バイトに変換された時にピッタリ「191」(真下)になる魔法のラジアン */ + window.inputAngle = ((191 / 254) * Math.PI * 2) - Math.PI; } } + } + }, 1000 / 60); /* 60FPS(16ミリ秒ごと)の超高速で監視・補正 */ - /* 3. 0〜254の範囲に絶対に収まるように安全装置をかける */ - encodedAngle = Math.max(0, Math.min(254, encodedAngle)); - - /* 4. 1バイトのバイナリデータを作成して送信 */ - const buffer = new ArrayBuffer(1); - const view = new DataView(buffer); - view.setUint8(0, encodedAngle); - socket.send(buffer); - }; - - alert('【最終兵器:ダイレクト直進パッチ】\n無駄な計算をすべて排除し、直接直進パケットを送信します。フリーズもズレも克服しました!'); - } else { - alert('エラー: sendInput関数が見つかりません。ゲーム画面で実行してください。'); - } + window._stealthStraightPatch = true; + alert('【ステルス直進パッチ】\n通信関数には一切触れず、角度のデータだけを安全に補正します。フリーズなしで完全直進します!'); })();
  • /*
     * @title キーボード縦移動修正
     * @description キーボード縦移動時にちゃんとまっすぐになるぞ!
     * @private
     */
    javascript:(function(){
        /* 二重適用防止 */
        if (window._stealthStraightPatch) {
            alert('パッチはすでに適用されています。');
            return;
        }
    
        /* ゲームのメインループ(または定期的なタイマー)に割り込んで、角度だけをステルス補正する */
        setInterval(function() {
            /* キーボードとゲームの変数が存在するか安全確認 */
            if (typeof keys !== 'undefined' && typeof inputAngle !== 'undefined') {
                const up = keys['ArrowUp'] || keys['KeyW'];
                const down = keys['ArrowDown'] || keys['KeyS'];
                const left = keys['ArrowLeft'] || keys['KeyA'];
                const right = keys['ArrowRight'] || keys['KeyD'];
    
                /* 左右が押されておらず、縦移動だけのとき */
                if (!left && !right) {
                    if (up) {
                        /* サーバーで1バイトに変換された時にピッタリ「63」(真上)になる魔法のラジアン */
                        window.inputAngle = ((63 / 254) * Math.PI * 2) - Math.PI;
                    } else if (down) {
                        /* サーバーで1バイトに変換された時にピッタリ「191」(真下)になる魔法のラジアン */
                        window.inputAngle = ((191 / 254) * Math.PI * 2) - Math.PI;
                    }
                }
            }
        }, 1000 / 60); /* 60FPS(16ミリ秒ごと)の超高速で監視・補正 */
    
        window._stealthStraightPatch = true;
        alert('【ステルス直進パッチ】\n通信関数には一切触れず、角度のデータだけを安全に補正します。フリーズなしで完全直進します!');
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。