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

    @@ -5,33 +5,43 @@ */ javascript:(function(){ /* 二重適用防止 */ - if (window._stealthStraightPatch) { + if (window._keyboardPerfectStraightPatch) { 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 (typeof updateArrowInput === 'function') { + const originalUpdateArrowInput = window.updateArrowInput; - /* 左右が押されておらず、縦移動だけのとき */ - 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; + window.updateArrowInput = function() { + /* 1. まずゲーム本来のキーボード判定を行わせる(inputStateに値が入る) */ + originalUpdateArrowInput(); + + /* 2. その直後、sendInputが実行される前に、縦移動のズレを「魔法の比率」で上書きする */ + if (typeof inputState !== 'undefined') { + const dx = inputState.dx; + const dy = inputState.dy; + + /* 左右が押されておらず、縦移動だけのとき */ + if (dx === 0 && dy !== 0) { + if (dy < 0) { + /* 【真上移動の補正】 */ + /* atan2(dy, dx) が、1バイト変換時にピッタリ「63」になる魔法の比率 */ + inputState.dy = -1; + inputState.dx = 0.01238; /* あえてごくわずかに右に傾けることで、四捨五入を63にハメ込む */ + } else if (dy > 0) { + /* 【真下移動の補正】 */ + /* atan2(dy, dx) が、1バイト変換時にピッタリ「191」になる魔法の比率 */ + inputState.dy = 1; + inputState.dx = -0.01238; /* あえてごくわずかに左に傾けることで、四捨五入を191にハメ込む */ + } } } - } - }, 1000 / 60); /* 60FPS(16ミリ秒ごと)の超高速で監視・補正 */ + }; - window._stealthStraightPatch = true; - alert('【ステルス直進パッチ】\n通信関数には一切触れず、角度のデータだけを安全に補正します。フリーズなしで完全直進します!'); + window._keyboardPerfectStraightPatch = true; + alert('【入力軸・直進補正パッチ】\nキーボードの縦入力を検知し、サーバーの四捨五入バグを相殺する魔法の数値を注入しました!'); + } else { + alert('エラー: updateArrowInput 関数が見つかりません。ゲーム画面で実行してください。'); + } })();
  • /*
     * @title キーボード縦移動修正
     * @description キーボード縦移動時にちゃんとまっすぐになるぞ!
     * @private
     */
    javascript:(function(){
        /* 二重適用防止 */
        if (window._keyboardPerfectStraightPatch) {
            alert('パッチはすでに適用されています。');
            return;
        }
    
        if (typeof updateArrowInput === 'function') {
            const originalUpdateArrowInput = window.updateArrowInput;
    
            window.updateArrowInput = function() {
                /* 1. まずゲーム本来のキーボード判定を行わせる(inputStateに値が入る) */
                originalUpdateArrowInput();
    
                /* 2. その直後、sendInputが実行される前に、縦移動のズレを「魔法の比率」で上書きする */
                if (typeof inputState !== 'undefined') {
                    const dx = inputState.dx;
                    const dy = inputState.dy;
    
                    /* 左右が押されておらず、縦移動だけのとき */
                    if (dx === 0 && dy !== 0) {
                        if (dy < 0) {
                            /* 【真上移動の補正】 */
                            /* atan2(dy, dx) が、1バイト変換時にピッタリ「63」になる魔法の比率 */
                            inputState.dy = -1;
                            inputState.dx = 0.01238; /* あえてごくわずかに右に傾けることで、四捨五入を63にハメ込む */
                        } else if (dy > 0) {
                            /* 【真下移動の補正】 */
                            /* atan2(dy, dx) が、1バイト変換時にピッタリ「191」になる魔法の比率 */
                            inputState.dy = 1;
                            inputState.dx = -0.01238; /* あえてごくわずかに左に傾けることで、四捨五入を191にハメ込む */
                        }
                    }
                }
            };
    
            window._keyboardPerfectStraightPatch = true;
            alert('【入力軸・直進補正パッチ】\nキーボードの縦入力を検知し、サーバーの四捨五入バグを相殺する魔法の数値を注入しました!');
        } else {
            alert('エラー: updateArrowInput 関数が見つかりません。ゲーム画面で実行してください。');
        }
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。