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

    @@ -4,34 +4,34 @@ * @private */ javascript:(function(){ - if (window._vectorInvertPatch) { + if (window._simpleShiftPatch) { alert('パッチはすでに適用されています。'); return; } - /* 60FPSで動作し、ゲーム本来の移動ベクトルに「逆向きの力」を足し算する */ - setInterval(function() { - if (typeof inputState !== 'undefined' && inputState !== null) { - const dx = inputState.dx; - const dy = inputState.dy; + /* WebSocketの送信関数(大元)をハック */ + const originalSend = WebSocket.prototype.send; + WebSocket.prototype.send = function(data) { + + /* 送信データが1バイト(移動パケット)のときだけ中身を見る */ + if (data && (data.byteLength === 1 || data.length === 1)) { + const view = new Uint8Array(data.buffer || data); + + /* 現在ゲームが送ろうとしている数値 */ + let currentByte = view[0]; - /* 司令官がキーボードで「縦方向(上下)」に入力しているときだけ発動 */ - if (dx === 0 && dy !== 0) { - if (dy < 0) { - /* 【真上移動のとき】 */ - /* 本来は右に逸れる(angleByteが64になる)ので、 */ - /* あえて極小のマイナス(左)を足して、強制的に「左に逸れる(63)」状態にします */ - inputState.dx = -0.015; - } else if (dy > 0) { - /* 【真下移動のとき】 */ - /* 本来は左に逸れる(angleByteが191になる)ので、 */ - /* あえて極小のプラス(右)を足して、強制的に「右に逸れる(190)」状態にします */ - inputState.dx = 0.015; - } + /* 【真上移動のとき】ゲームが64(右逸れ)を送ろうとしたら、63(左)に強制書き換え */ + if (currentByte === 64) { + view[0] = 63; + } + /* 【真下移動のとき】ゲームが191(左逸れ)を送ろうとしたら、190(右)に強制書き換え */ + else if (currentByte === 191) { + view[0] = 190; } } - }, 1000 / 60); + return originalSend.apply(this, arguments); + }; - window._vectorInvertPatch = true; - alert('【挙動反転パッチ】\n上移動時は「左」へ、下移動時は「右」へ逸れるように挙動を反転させました!'); + window._simpleShiftPatch = true; + alert('【シンプル書き換えパッチ】\n・ゲームが64(上・右逸れ)を送る瞬間 ➔ 強制的に63へ変更\n・ゲームが191(下・左逸れ)を送る瞬間 ➔ 強制的に190へ変更\n\n余計な自動移動などは一切ありません。いつもの矢印キーで動かしてみてください。'); })();
  • /*
     * @title キーボード縦移動修正
     * @description キーボード縦移動時にちゃんとまっすぐになるぞ!
     * @private
     */
    javascript:(function(){
        if (window._simpleShiftPatch) {
            alert('パッチはすでに適用されています。');
            return;
        }
    
        /* WebSocketの送信関数(大元)をハック */
        const originalSend = WebSocket.prototype.send;
        WebSocket.prototype.send = function(data) {
            
            /* 送信データが1バイト(移動パケット)のときだけ中身を見る */
            if (data && (data.byteLength === 1 || data.length === 1)) {
                const view = new Uint8Array(data.buffer || data);
                
                /* 現在ゲームが送ろうとしている数値 */
                let currentByte = view[0]; 
    
                /* 【真上移動のとき】ゲームが64(右逸れ)を送ろうとしたら、63(左)に強制書き換え */
                if (currentByte === 64) {
                    view[0] = 63;
                }
                /* 【真下移動のとき】ゲームが191(左逸れ)を送ろうとしたら、190(右)に強制書き換え */
                else if (currentByte === 191) {
                    view[0] = 190;
                }
            }
            return originalSend.apply(this, arguments);
        };
    
        window._simpleShiftPatch = true;
        alert('【シンプル書き換えパッチ】\n・ゲームが64(上・右逸れ)を送る瞬間 ➔ 強制的に63へ変更\n・ゲームが191(下・左逸れ)を送る瞬間 ➔ 強制的に190へ変更\n\n余計な自動移動などは一切ありません。いつもの矢印キーで動かしてみてください。');
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。