Games Companyランチャーアプリで起動するSteamのゲームを実行していますが、実際のゲームを実行するには別のボタンをクリックする必要があります。ゲームは非常に遅く開始され、不要な広告が含まれています。ゲームの費用を全額支払い、このゲームは無料のオンラインゲームではないので、この現象を強制してはいけません。広告によるお支払い、世界中のさまざまなサーバーに私のテレメトリデータを送信します!
誰かがランチャーを迂回するためにコミュニティガイドにいくつかの簡単なコードを提供しましたが、わからない理由で動作させることはできません。
彼らの簡単なコードは、このコマンドを自分と他のユーザーのゲームのSteamプロパティに入れることです。
eval $( echo “%command%” | sed -E “s#Launcher/dowser.exe#Cities2.exe#g” )
しかし、スチームでゲームを実行すると何も起こらず、30秒ほど後に終了します。だから私は追加しましたティー次のようにコマンドを使用してsedの出力を表示します。
eval $( echo “%command%” | sed -E “s#Launcher/dowser.exe#Cities2.exe#g” | tee ~/foot.txt)
foo.txtは空です。これは言葉ではありません。なぜなら、このコマンドを実行すると
eval $( echo “%command%” | foo.bash )
これは何のスクリプトですか?
#/bin/bash
echo "$*" > ~/foo.txt
foo.txtには、bashがSTDINで受信することを期待するコマンドラインがあり、sedはそれを受け取る必要があります。
次に、--debugスイッチを使用して同じsedコマンドを実行し、ログにこの出力を取得します。
SED PROGRAM:
s/Launcher\/dowser.exe/Cities2.exe/g
INPUT: 'STDIN' line 1
PATTERN: /home/user/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=949230 -- /home/user/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/user/.local/share/Steam/steamapps/common/Proton 8.0'/proton waitforexitandrun '/home/user/.local/share/Steam/steamapps/common/Cities Skylines II/Launcher/dowser.exe'
COMMAND: s/Launcher\/dowser.exe/Cities2.exe/g
MATCHED REGEX REGISTERS
regex[0] = 409-428 'Launcher/dowser.exe'
PATTERN: /home/user/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=949230 -- /home/user/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/user/.local/share/Steam/steamapps/common/Proton 8.0'/proton waitforexitandrun '/home/user/.local/share/Steam/steamapps/common/Cities Skylines II/Cities2.exe'
END-OF-CYCLE:
/home/user/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=949230 -- /home/user/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/user/.local/share/Steam/steamapps/common/Proton 8.0'/proton waitforexitandrun '/home/user/.local/share/Steam/steamapps/common/Cities Skylines II/Cities2.exe'
したがって、sedはSTDINのSteamから予想データを受け取り、sedコマンドラインスクリプトは予想結果を生成しますが、説明できないほどevalはsed出力を受け取らないか実行しません。
その後、何が起こるのかを確認するために同じコマンドを再実行しますが、sedコマンドの後にデバッグログのsed出力をリンクするので、sedの結果と出力が削除され、添付のコマンドが次のように実行されます。
eval $( echo “%command%” | sed -E “s#Launcher/dowser.exe#Cities2.exe#g” & /home/user/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=949230 -- /home/user/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/user/.local/share/Steam/steamapps/common/Proton 8.0'/proton waitforexitandrun '/home/user/.local/share/Steam/steamapps/common/Cities Skylines II/Cities2.exe')
そしてランチャーなしでゲームが正常に実行されます!
わかりません。 evalがsed出力をコマンドとして実行せず、sedコマンドの後にsedが接続されている場合、コマンドライン出力を実行するのはなぜですか?
この実装の唯一の欠点は、ゲームを終了するとSteamがゲームが終了したことを認識していませんが、それでも耐えられることです。
XでSteamを使用してUbuntu 23.10で実行しています。
答え1
答え2
私がコマンドをコピーしたWebサイトには、私が気付かなかったコードに丸い引用符があり、@Ed Mortonが問題解決を提案したように、直線引用符に置き換えました。