このモッドについて
狙いを定めろ — 魚の釣り方
v0.1.0 — 初期版。クリーンに読み込み、パッチ適用も問題なし。アシストの 感じる まだライブプレイでの調整が行われていません。
マウス&キーボードプレイヤー向けのソフトなエイムアシスト。実際に受けた支援量に応じてダメージペナルティが適用される。さらに、他のシューティングゲームからの感度コンバーターも搭載。
その目標は、ロビーが受け入れられる真のアクセシビリティ支援であり、隠れたアドバンテージではない。
ホストかクライアントか?
完全にクライアント側で動作します。ホスト側の協力は不要で、他の誰も何かをインストールする必要はありません。
- アシストはローテーションのみ可能 あなたの カメラだ。それに関してはネットワーク接続されていない。
- ダメージペナルティは見た目だけの問題ではない。このゲームにおけるダメージは クライアントオーソリタティブ: クライアントがダメージを計算し、サーバーに適用を指示する。
PlayerVitals.LocalHit→サーバーがプレイヤーにヒット、そして投射物管理射撃手側のマシン上で各弾にダメージを刻印する)。そのため、このモッドがローカルでダメージを低下させると、 です 低くなっている — それを上書きするサーバー側の値は存在しない。
それは諸刃の剣であり、はっきり言っておく価値がある:このゲームはダメージ計算をクライアント側に委ねているため、このMODの誠実性はMOD自身の性質であり、サーバーが強制するものではない。このビルドを使用する者にとって、その代償は現実のものだ。
なぜこれはエイムボットではないのか
このゲームには既に独自のエイムアシストが搭載されています(プレイヤーエイムアシスト) — コントローラー用、照準を合わせている間。このMODはその設計を維持しつつ、コントローラー制限を解除します。具体的には:
- ゲーム自体の拡張ポイントにフックする。
PlayerCamera.ApplyAimAssist()すでに尋ねているPlayerAimAssist.GetRotationDelta(..)毎フレームの回転調整のために。その単一のメソッドがパッチ対象となり、アシストはゲームが意図した場所で実行され、その操作感を受け継ぎます。 - 決してプレイヤーをターゲットにしない。 バニラスキャンが進む
アイテムマネージャー.アイテムそして各アイテムをクリーチャーそのため、このMODも魚や動物のみを追跡します。プレイヤーを対象とするオプションは意図的に設けていません。この一点こそが「チートではない」と主張できる根拠であり、他のプレイヤーとの戦闘に影響を与えない理由でもあります。 - スナップできない。 牽引は、目標地点へ指数的に近づく動きであり、ハードクランプにより制限される。
最大回転速度(既定の90°/秒)。コード内のどこにも瞬時補正は存在しない。 - あなたはいつも勝つ。 旋回速度が速いほど、引きの強さは低下する。それ以上は
手動オーバーライド度/秒(標準: 140°/秒) 完全に停止します。フリック入力は常にアシストに勝ります。 - 狭い取得。 デフォルトの12°半角、視線を要求、60mで上限 — ゲーム自体の数値。
- 刑罰なしでは動こうとしない。 ダメージペナルティパッチの適用に失敗した場合、アシストはそのまま有利になるのではなく、自動的に無効化される。
ダメージペナルティは固定値ではなく、比例式です。 このMODは、照準の角度をどれだけ動かしたかを減衰する形で記録します。 それ 対戦履歴 あなた その比率が削減を促します:
damage x= 1 - (MaxDamagePenalty * assistShare)
手動で狙って射撃を当てた場合:ペナルティなし。アシストに標的を追跡させて射撃した場合:完全なペナルティ。これは次の時点で適用される。 添付物ダメージ、すべてのショットのダメージが通る唯一のプロパティであり、ヒットスキャンと飛翔体の両方がカバーされます。ショップのステータスパネルはプロパティではなく基盤となる配列を読み取るため、表示される武器ステータスは正確なままです。
感度コンバーター
この部分は目分量ではなく、正確に行われている。 PlayerCamera.MouseInput:
LookInput = new Vector2(-raw.y, raw.x) * _sensitivity * SensMulti * 0.025f; _rot += LookInput;
_rot 度単位で、かつ raw はい、Input Systemのマウスデルタはカウント単位です。つまり:
マウス1カウントあたりの角度 =
感度 × 0.025(ヒップファイア時、ここで)SensMulti == 1)
cm/360を共通の単位として用いると、FOVや解像度に依存しないため、次のようになります:
$$\text{游戏灵敏度} = \frac{360 \times 2.54}{\text{厘米/360度} \times \text{DPI} \times 0.025} = \frac{36576}{\text{厘米/360度} \times \text{DPI}}$$
具体示例:CS2 在 1.0 / 800 DPI は 51.95 cm/360° → このゲームは要求している 0.880ゲームのデフォルト値である0.5は、おおよそ 91 cm/360 800 DPIでは、コンピュータの基準からすると遅いです。
押す F10 パネルの場合。ゲームを選択し、感度とDPIを入力すると、使用すべき値と、変更前後のcm/360が表示されます。 適用 介して書き込む PlayerCamera.SetSensitivity.
ゲームは既にズームに応じて感度を正しく調整していることに注意してください — SensMulti = _curFov / _origFov —これにより、ADS感度は何の助けもなく比例したまま維持されます。これは360度距離一致ズームであり、一般的な競技用の選択肢です。
視野
ゲーム内で計測し、推測ではない。
| スライダー範囲 | 40–140垂直 = 66–157 横向き 16:9で |
| デフォルト | 74 縦 = 106.5 水平 16:9 で |
それらは ゲーム自体の限界,実行時にオプションスライダーからその値を読み取ります。このModはそれらを広げず、パネルのFOVボックスは入力した値を同じ範囲にクランプします。
知っておくべきことが2つある。
Unityの 視野 縦向きです、しかしすべてのシューターは水平方向の視野角を基準にするため、この二つは直接比較できません。パネルには実際の解像度のアスペクト比を用いた両方の数値が表示されます。便利なことに、デフォルトの垂直74度は水平106.5度に相当し、CS2の106.26度との差はわずか0.25度未満です。つまり、標準の視野角設定はすでにCSと同等なのです。
ベースFOVはエイム時の感度に影響します。 なぜなら SensMulti = curFov / baseFov, エイム時は感度が AdsFov / baseFovベースFOVを上げると、スコープ照準も上がる より遅く. パネルには、手に持っているものの正確な倍率が表示されます。
FOV永続化バグ
オプションメニューはFOVを PlayerPrefs.SetInt("FOV", …) しかし、それを装填する
PlayerPrefs.GetInt("Fov", 74). PlayerPrefsのキーは大文字と小文字を区別します、そのため両者は交わることはなく、起動するたびにFOVは74に戻ります——スライダーの極端な値では、照準感度が最大1.9倍も静かにずれることになります。
FixFovPersistence (デフォルトでオン)保存された値をゲームが実際に読み取るキーに反映し、メニューが既に誤った値を読み込んでいる場合は現在のセッション中にそれを強制します。レジストリで確認済み: 両方とも FOV_h193442778 そして Fov_h193443802 今は同じ価値を保持している。
注意:スライダーは有効化時に変更コールバックを発火するようです。そのため、最初の修復では、選択した値ではなくスライダーのシリアライズ済みデフォルト値が固定される可能性があります。パネルを通じてFOVを一度設定してください。 視野角を適用 ボタンを意図的にピン留めする — それで両方のキーが書き込まれる。
変換する方法は2つ
パネルはあなたに単刀直入な選択を迫る:
- 同じ旋回速度を維持する (既定) — マウスを一周回すのに移動する距離は、他のゲームと同じです。FOVを無視するため、正確です。
- FOVの差を調整する —もし2つのゲームで表示される世界の範囲が異なる場合、これは照準に影響する 感じる 画面上で同じように見えるが、回転速度は同じではない。そのゲームの視野角(FOV)が必要だ。
ほとんどの人は最初の方を好みます。2つ目は、103°のゲームから116°のゲームに移行した場合、数値が合っていても、生の旋回速度を合わせると速すぎると感じることがあるためです。
あります 視野調整強度 セカンドモードの設定で、調整を中心ではなく画面端に寄せたいと既に分かっている場合の話だ。その文の意味が分からなければ、気にする必要はない。
プリセット
カウンターストライク2 / CS:GO・ Valorant(ヴァロラント)・ Apex Legends(エーペックスレジェンズ)・ Overwatch 2(オーバーウォッチ2)・ Team Fortress 2(チームフォートレス2)・ Quake(クエイク)
FOVスライダーに依存して感度が変化するゲーム(『レインボーシックス シージ』)や、非線形のパーセンテージスケールを採用しているゲーム(『フォートナイト』)は、意図的に 欠席 近似値ではなく、正確な値を使用してください。 cm/360 この部分 — オンライン計算機で数値を読み取れば、あらゆるゲームで正確に当てはまる。
注意事項
この変換は、Input Systemのデルタ1単位がマウスカウント1つ分に相当することを前提としています。これは、Windowsのポインター速度がデフォルトの6/11で、「ポインターの精度を高める」がオフの場合に当てはまります。ポインター加速を有効にしている場合、どの変換ツールを使っても安定した答えは得られません。
設定
BepInEx/config/howtofish.aimurway.cfg. ホットキー: F9 アシスト オン/オフ F10 コンバーターパネル。
支援
| 設定 | デフォルト | |
|---|---|---|
腕力 |
0.55 |
Fraction of the pull to apply. 1 matches the game's controller assist |
鋭さ |
8 |
なんと熱心に距離を詰めてくることか。数字が高いほどくっつきやすい |
最大回転速度 |
90 |
°/sでのハード上限。これによりスナップが防止される。 |
手動オーバーライド(度/秒) |
140 |
これを素早く回せば、アシストは完全に脇へ退く |
角度取得 |
12 |
半角でターゲットを選択。小さく保つ |
ブレイク角度 |
35 |
ロックしたターゲットが外れる角度 |
最大距離 |
60 |
メートル。ゲームの標準設定。 |
ヒップからのアシスト |
偽 |
バニラはADS専用です。これをオフにすると、本来の意図に近くなります |
AssistControllerも |
偽 |
オフなので、内蔵のコントローラーアシストとは重複しません |
公正性
| 設定 | デフォルト | |
|---|---|---|
ダメージペナルティ |
true |
照準を犠牲にダメージを強化 |
最大ダメージペナルティ |
0.3 |
最大減少、完全支援シェア時。 0.3 = −30% |
ペナルティ時間(秒) |
1.5 |
アシスト使用がどのくらいの間、あなたへのカウント対象として残るか |
セット ShowDebugText = true 下 [診断] ターゲットロック、ライブアシスト共有、現在のダメージ倍率を確認するには — 最も速い調整方法 筋力 そして、その罰が効いているのを見てください。
ステータスと残り状況
確認済み:プラグインはロードされ、ゲームにバインドされ、両方のHarmonyパッチが適用されています。PlayerAimAssist.GetRotationDelta, 添付ファイルのダメージ) エラーなしで。
未完了:
- 感覚が狂っている。 デフォルト値は理論上の推測であり、実際のプレイテストによる調整は行われていません。
筋力と切れ味まず調整すべきなのはこの2つだ、そしてデバッグテキストを表示オン。 - 近接攻撃が解放された。
近接攻撃独自のダメージ経路を持つため、ペナルティは適用されません。今日はアシストが遠距離の照準を助けるだけなので問題ありません。 - ロビー側での開示はありません。 チャットでの告知や主催者側の制限はありません。気にする人と遊ぶなら、その人たちに伝えてください。
設計メモ
クロスヘアMODとは違い、こちらは 変更点 動作のため、Harmonyパッチは避けられません。これらは安定した拡張ポイントの2箇所に限定されており、コンパイル時の参照は依然として存在しません。
Assembly-CSharp — すべては実行時に名前で解決されるため、ゲームアップデートはクラッシュではなく、ログに記録された警告と無効化された機能に留まる。
