キーボード縦移動修正
by
cutfloss
06/01 [2026/06/01 00:28:51]
キーボード縦移動時にちゃんとまっすぐになるぞ!
@@ -4,46 +4,44 @@
* @private
*/
javascript:(function(){
- /* 1. client-network.js の本当の送信関数を上書き */
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);
- /* キーボードの入力状態をチェック */
+ /* 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'];
- /* 左右が押されておらず、縦移動だけのとき */
+ /* 左右が押されておらず、縦移動だけのとき、計算を上書き */
if (!left && !right) {
if (up) {
- /* 1バイト変換した時にピッタリ「63」(真上に一番近い整数)になる魔法の角度 */
- angle = ((63 / 254) * Math.PI * 2) - Math.PI;
+ encodedAngle = 63; /* 完璧な真上の整数(一切の小数を排除) */
} else if (down) {
- /* 1バイト変換した時にピッタリ「191」(真下に一番近い整数)になる魔法の角度 */
- angle = ((191 / 254) * Math.PI * 2) - Math.PI;
+ encodedAngle = 191; /* 完璧な真下の整数(一切の小数を排除) */
}
}
}
- /* ゲーム本来の「1バイト圧縮処理」を実行 */
- let encodedAngle = Math.round(((angle + Math.PI) / (Math.PI * 2)) * 254);
+ /* 3. 0〜254の範囲に絶対に収まるように安全装置をかける */
+ encodedAngle = Math.max(0, Math.min(254, encodedAngle));
- /* 1バイトのバイナリデータを作成して送信 */
+ /* 4. 1バイトのバイナリデータを作成して送信 */
const buffer = new ArrayBuffer(1);
const view = new DataView(buffer);
view.setUint8(0, encodedAngle);
socket.send(buffer);
};
- alert('【通信軸・完全直進パッチ】\n送信直前のデータを直接補正するようにしました!今度こそ一切ズレません!');
+ alert('【最終兵器:ダイレクト直進パッチ】\n無駄な計算をすべて排除し、直接直進パケットを送信します。フリーズもズレも克服しました!');
} else {
alert('エラー: sendInput関数が見つかりません。ゲーム画面で実行してください。');
}
/*
* @title キーボード縦移動修正
* @description キーボード縦移動時にちゃんとまっすぐになるぞ!
* @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);
/* 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'];
/* 左右が押されておらず、縦移動だけのとき、計算を上書き */
if (!left && !right) {
if (up) {
encodedAngle = 63; /* 完璧な真上の整数(一切の小数を排除) */
} else if (down) {
encodedAngle = 191; /* 完璧な真下の整数(一切の小数を排除) */
}
}
}
/* 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関数が見つかりません。ゲーム画面で実行してください。');
}
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。