キーボード縦移動修正
by
cutfloss
06/01 [2026/06/01 00:28:51]
キーボード縦移動時にちゃんとまっすぐになるぞ!
@@ -4,44 +4,36 @@
* @private
*/
javascript:(function(){
- /* 二重適用防止 */
- if (window._keyboardPerfectStraightPatch) {
+ if (window._directKeyboardPatch) {
alert('パッチはすでに適用されています。');
return;
}
- if (typeof updateArrowInput === 'function') {
- const originalUpdateArrowInput = window.updateArrowInput;
+ /* ブラウザ全体のキーボード入力を監視 */
+ window.addEventListener('keydown', function(e) {
+ if (!socket || socket.readyState !== WebSocket.OPEN) return;
+
+ /* チャット入力中(もしあれば)などは誤発動を防ぐ */
+ if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') return;
- window.updateArrowInput = function() {
- /* 1. まずゲーム本来のキーボード判定を行わせる(inputStateに値が入る) */
- originalUpdateArrowInput();
+ let angleByte = null;
- /* 2. その直後、sendInputが実行される前に、縦移動のズレを「魔法の比率」で上書きする */
- if (typeof inputState !== 'undefined') {
- const dx = inputState.dx;
- const dy = inputState.dy;
+ /* 押されたキーが「上」か「下」のときだけ、完璧な整数を直接指定 */
+ if (e.key === 'ArrowUp' || e.key === 'w' || e.key === 'W') {
+ angleByte = 63; /* 完璧な真上(63.5の切り捨て) */
+ } else if (e.key === 'ArrowDown' || e.key === 's' || e.key === 'S') {
+ angleByte = 191; /* 完璧な真下(190.5の切り上げ) */
+ }
- /* 左右が押されておらず、縦移動だけのとき */
- 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にハメ込む */
- }
- }
- }
- };
+ if (angleByte !== null) {
+ /* ゲーム本来の送信処理を完全にバイパスして、直接サーバーへ1バイト送信 */
+ socket.send(new Uint8Array([angleByte]));
+
+ /* ゲーム側に「キーが押されたイベント」を伝えないようにして、元のズレる計算をストップさせる */
+ e.stopPropagation();
+ }
+ }, true); /* trueにすることで、ゲームの処理より「絶対に先」に実行させます */
- window._keyboardPerfectStraightPatch = true;
- alert('【入力軸・直進補正パッチ】\nキーボードの縦入力を検知し、サーバーの四捨五入バグを相殺する魔法の数値を注入しました!');
- } else {
- alert('エラー: updateArrowInput 関数が見つかりません。ゲーム画面で実行してください。');
- }
+ window._directKeyboardPatch = true;
+ alert('【キーボード直撃パッチ】\n隠し関数を無視し、ブラウザのキー入力を直接ハックしました!上・下移動が完全直進化します。');
})();
/*
* @title キーボード縦移動修正
* @description キーボード縦移動時にちゃんとまっすぐになるぞ!
* @private
*/
javascript:(function(){
if (window._directKeyboardPatch) {
alert('パッチはすでに適用されています。');
return;
}
/* ブラウザ全体のキーボード入力を監視 */
window.addEventListener('keydown', function(e) {
if (!socket || socket.readyState !== WebSocket.OPEN) return;
/* チャット入力中(もしあれば)などは誤発動を防ぐ */
if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') return;
let angleByte = null;
/* 押されたキーが「上」か「下」のときだけ、完璧な整数を直接指定 */
if (e.key === 'ArrowUp' || e.key === 'w' || e.key === 'W') {
angleByte = 63; /* 完璧な真上(63.5の切り捨て) */
} else if (e.key === 'ArrowDown' || e.key === 's' || e.key === 'S') {
angleByte = 191; /* 完璧な真下(190.5の切り上げ) */
}
if (angleByte !== null) {
/* ゲーム本来の送信処理を完全にバイパスして、直接サーバーへ1バイト送信 */
socket.send(new Uint8Array([angleByte]));
/* ゲーム側に「キーが押されたイベント」を伝えないようにして、元のズレる計算をストップさせる */
e.stopPropagation();
}
}, true); /* trueにすることで、ゲームの処理より「絶対に先」に実行させます */
window._directKeyboardPatch = true;
alert('【キーボード直撃パッチ】\n隠し関数を無視し、ブラウザのキー入力を直接ハックしました!上・下移動が完全直進化します。');
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。