yukieiji / ExtremeRoles

AmongUs Mod for Advanced User(+90 roles, +1300 options, and Cosmic addon)
GNU General Public License v3.0
59 stars 29 forks source link

フォトグラファーの写真が全体共有される会議が開かれたとき、ルームから追い出される場合がある #331

Closed aoirint closed 9 months ago

aoirint commented 10 months ago

期待される動作 / Your Expectation

写真が全体共有される条件を満たしたフォトグラファーが写真を撮影し、その後会議が開かれたとき、本来はチャット画面で写真が全体共有されるはずが、写真は共有されず、フォトグラファーがルームから自動的に追い出された

実際の動作 / The Reality

発生した状況

  1. 会議が終了する
  2. 「撮影」能力を1回使用する
  3. タスクを完了させる(写真が全体共有される条件を満たす)
  4. 「撮影」能力を2回使用する
  5. 会議が開かれる
  6. フォトグラファーがルームから追い出され、試合が終わっても再入室できない(写真も全体共有されない)
ルームから追い出された直後のメッセージのスクリーンショット > ルームから追い出されました。ルームが開始していなければ再入室できます。 ![ss-2023-11-13-15h37m04s504](https://github.com/yukieiji/ExtremeRoles/assets/27213639/e5521f24-7d25-4e6c-aa42-04f0d3873553)
試合が終わったあと再入室しようとしたとき表示されたメッセージのスクリーンショット > ルームからバンされました。ルームに再入室できません。 ![ss-2023-11-13-15h37m13s962](https://github.com/yukieiji/ExtremeRoles/assets/27213639/9872d9b2-787a-4951-aea3-ec979e94af39)
問題の会議前後10秒の動画 https://github.com/yukieiji/ExtremeRoles/assets/27213639/761400ac-526e-40a2-8e34-2d5e6b164b3e

さらに詳細な動き

あなたの意見 / Your Proposal

フォトグラファーがルームから追い出されず、写真が全体共有されるようにしてほしい

バグ発生時のログやエラー / log when issue occur

ExtremeRolesDumpedLogs 2023-11-12T23-16-46_Photographer_BAN.zip

Among Usバージョン/ Among Us Version

Among Us v2023.10.24s

Modバージョン / Mod Version

Extreme Roles v9.0.1.1

リージョン/Region

プレイヤー人数/Player Num

11

使用したオプション/Use Option

option.csvはありません。

問題の会議が開かれたときの役職の内訳

フォトグラファーの設定のスクリーンショット

ss-2023-11-13-15h47m10s081

yukieiji commented 10 months ago

1点確認です、これは1枚取ったときでも落ちるのでしょうか?

aoirint commented 10 months ago

1枚取ったときでも落ちるのでしょうか?

現時点では検証していないためわかりません。 エラーメッセージの内容から、公式サーバのアンチチート機能が原因ではないかと思います。 再現には公式サーバでプレイするアカウントが必要と思われるので、後日になりますが人を集めて検証できればしてみます。

aoirint commented 9 months ago

1枚の撮影で落ちることを確認しました。

再現動画 https://github.com/yukieiji/ExtremeRoles/assets/27213639/f3833b3e-1248-451e-bd2a-188fea180986
aoirint commented 9 months ago

別途、ExRのAmongUs APIのチャット機能( http://localhost:57700/au/chat/ui/ )を使ってロビーでのチャットについて検証したところ、チャットで送信された文字数が120文字を超える(121文字以上)と、同様のメッセージでルームから退出させられました。

ASCII 120文字: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 非ASCII 120文字: ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

ASCII・非ASCII、いずれも121文字で強制退出でした。

Among UsのUI上ではチャットで送信できる文字数が100文字に制限され、連続送信は3秒間制限されています。

Among UsのチャットUI ![image](https://github.com/yukieiji/ExtremeRoles/assets/27213639/7f668e90-452b-4b0d-aba8-b43e3103bbed)

このIssueの不具合は、フォトグラファーの能力によってチャットに送信される(PlayerControl.RpcSendChat)文字数が120文字を超えた際に発生すると考えています。

Impostorサーバで同様のチャット文字数に基づくキックが実装されているかは未確認ですが、設定でAntiCheatを無効化したImpostorサーバ v1.8.4では、同様の手順で120文字を超えるチャットを送信しても退出させられませんでした。

yukieiji commented 9 months ago

チャット文字列で落ちることは大体予想はしていましたが1枚でも落ちるとなるとちょっと修正自体は面倒ですね・・・ AmongUsが送受信出来るバイト数上限が1024バイトだとは聞いていましたがこんなところで引っかかるとは・・・・(C#はUTF-8で文字列を管理していて、UTF-8は確か1文字あたり8バイトつまり上限である120文字は960バイトとかなり限界に近い送信)

yukieiji commented 9 months ago

修正に時間がかかるためv9.1.0.2で一旦機能を無効化しました v9.2.0.0の修正を目指して対応します