キーボード縦移動修正
by
cutfloss
06/01 [2026/06/01 00:28:51]
キーボード縦移動時にちゃんとまっすぐになるぞ!
@@ -4,45 +4,43 @@
* @private
*/
javascript:(function(){
- if (window._networkPerfectStraightPatch) {
+ if (window._ultimateStraightPatch) {
alert('パッチはすでに適用されています。');
return;
}
- /* キーボードの押し状態をブラウザ全体で独自に監視(ゲームの設定に依存しない) */
+ /* キーボードの状態をブラウザ全体で独自に監視 */
const myKeys = {};
window.addEventListener('keydown', e => { myKeys[e.key.toLowerCase()] = true; }, true);
window.addEventListener('keyup', e => { myKeys[e.key.toLowerCase()] = false; }, true);
- /* WebSocketの送信機能そのものをハック */
- const originalSend = WebSocket.prototype.send;
- WebSocket.prototype.send = function(data) {
-
- /* 送信データが1バイト(Uint8Array または ArrayBuffer)の移動パケットかチェック */
- if (data && (data.byteLength === 1 || data.length === 1)) {
- const view = new Uint8Array(data.buffer || data);
- let angleByte = view[0];
+ /* ゲームの描画・更新ループ(loop関数)の裏で、座標を強制ロックする */
+ setInterval(function() {
+ /* 自分がゲームに参加しており、プレイヤーデータが存在するか確認 */
+ if (typeof players !== 'undefined' && typeof myId !== 'undefined' && myId !== null) {
+ const me = players.find(p => p.id === myId);
+ if (me) {
+ const up = myKeys['arrowup'] || myKeys['w'];
+ const down = myKeys['arrowdown'] || myKeys['s'];
+ const left = myKeys['arrowleft'] || myKeys['a'];
+ const right = myKeys['arrowright'] || myKeys['d'];
- const up = myKeys['arrowup'] || myKeys['w'];
- const down = myKeys['arrowdown'] || myKeys['s'];
- const left = myKeys['arrowleft'] || myKeys['a'];
- const right = myKeys['arrowright'] || myKeys['gridscore' /* 誤発動防止 */] || myKeys['d'];
-
- /* 左右が押されておらず、縦移動だけのとき、パケットの数値を直接書き換える */
- if ((up || down) && !left && !right) {
- if (up) {
- /* 切り上げられて64になっていたのを、力技で完璧な垂直の「63」に固定! */
- view[0] = 63;
- } else if (down) {
- /* 切り上げられて191になっていたのを、力技で完璧な垂直の「190」に固定! */
- view[0] = 190;
+ /* 左右が押されておらず、縦移動(上または下)だけのとき */
+ if ((up || down) && !left && !right) {
+ /* サーバーから「少し斜め」の座標(targetX)が送られてきても、強制的に現在のX座標で固定する */
+ if (window._lastSecureX === undefined || !up && !down) {
+ window._lastSecureX = me.x;
+ }
+ me.targetX = window._lastSecureX;
+ me.x = window._lastSecureX;
+ } else {
+ /* 通常移動時はロックを解除して現在の座標を記憶 */
+ window._lastSecureX = me.x;
}
}
}
- /* 本来の送信処理を実行 */
- return originalSend.apply(this, arguments);
- };
+ }, 1000 / 60); /* 60FPSで常に座標の横滑りを監視・修正 */
- window._networkPerfectStraightPatch = true;
- alert('【通信軸・ステルス直進パッチ】\nサーバーへ送信される直前のパケットを捕まえ、完璧な垂直(63 / 190)に修正しました。もう絶対にズレません!');
+ window._ultimateStraightPatch = true;
+ alert('【物理法則書き換えパッチ】\n1バイト通信の限界による「0.7度の傾き」を検知しました。\n縦移動中のみ、横方向へのズレをリアルタイムで強制相殺します!');
})();
/*
* @title キーボード縦移動修正
* @description キーボード縦移動時にちゃんとまっすぐになるぞ!
* @private
*/
javascript:(function(){
if (window._ultimateStraightPatch) {
alert('パッチはすでに適用されています。');
return;
}
/* キーボードの状態をブラウザ全体で独自に監視 */
const myKeys = {};
window.addEventListener('keydown', e => { myKeys[e.key.toLowerCase()] = true; }, true);
window.addEventListener('keyup', e => { myKeys[e.key.toLowerCase()] = false; }, true);
/* ゲームの描画・更新ループ(loop関数)の裏で、座標を強制ロックする */
setInterval(function() {
/* 自分がゲームに参加しており、プレイヤーデータが存在するか確認 */
if (typeof players !== 'undefined' && typeof myId !== 'undefined' && myId !== null) {
const me = players.find(p => p.id === myId);
if (me) {
const up = myKeys['arrowup'] || myKeys['w'];
const down = myKeys['arrowdown'] || myKeys['s'];
const left = myKeys['arrowleft'] || myKeys['a'];
const right = myKeys['arrowright'] || myKeys['d'];
/* 左右が押されておらず、縦移動(上または下)だけのとき */
if ((up || down) && !left && !right) {
/* サーバーから「少し斜め」の座標(targetX)が送られてきても、強制的に現在のX座標で固定する */
if (window._lastSecureX === undefined || !up && !down) {
window._lastSecureX = me.x;
}
me.targetX = window._lastSecureX;
me.x = window._lastSecureX;
} else {
/* 通常移動時はロックを解除して現在の座標を記憶 */
window._lastSecureX = me.x;
}
}
}
}, 1000 / 60); /* 60FPSで常に座標の横滑りを監視・修正 */
window._ultimateStraightPatch = true;
alert('【物理法則書き換えパッチ】\n1バイト通信の限界による「0.7度の傾き」を検知しました。\n縦移動中のみ、横方向へのズレをリアルタイムで強制相殺します!');
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。