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

    
      
  • /*
     * @title キーボード縦移動修正
     * @description キーボード縦移動時にちゃんとまっすぐになるぞ!
     * @private
     */
    javascript:(function(){
        /* 1. すでにパッチが適用されている場合は二重適用を防ぐ */
        if (window._keyboardStraightPatchApplied) {
            alert('パッチはすでに適用されています。');
            return;
        }
    
        /* 2. 入力送信関数をフック(上書き)する */
        if (typeof sendInput === 'function') {
            const originalSendInput = window.sendInput;
            
            window.sendInput = function(angle) {
                let fixedAngle = angle;
    
                /* キーボードが押されているかチェック(client-game.jsのkeysオブジェクトを参照) */
                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'];
    
                    /* 【ここが魔改造】 */
                    /* 左右が押されておらず、縦だけが押されている時(純粋な縦移動) */
                    if (!left && !right) {
                        if (up) {
                            /* 真上(本来は -Math.PI / 2) */
                            /* サーバーが1バイト(0〜254)に変換した時に、ピッタリ「63」または「64」になって */
                            /* 逆変換(復元)した時にも完全に真上を向く「魔法の角度」に固定します */
                            fixedAngle = -1.5587186118408203; 
                        } else if (down) {
                            /* 真下(本来は Math.PI / 2) */
                            /* 逆変換時にピッタリ真下を向く「魔法の角度」に固定します */
                            fixedAngle = 1.5587186118408203;
                        }
                    }
                }
                
                /* 補正した角度(マウス時はそのまま)で元の送信関数を呼び出す */
                originalSendInput(fixedAngle);
            };
    
            window._keyboardStraightPatchApplied = true;
            alert('【キーボード直進化パッチ】\n縦移動時の1バイト変換誤差を先読み補正し、完全直進を可能にしました!');
        } else {
            alert('エラー: sendInput 関数が見つかりませんでした。ゲーム画面で実行してください。');
        }
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。