procon_bypass_man 0.3.1 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +1 -1
- data/README.md +4 -4
- data/docs/getting_started.md +4 -4
- data/docs/run_pbm_on_my_branch.md +13 -0
- data/docs/setting/splatoon2_macro_dasei_cancel.md +77 -0
- data/docs/setting/splatoon2_macro_forward_ikarole.md +2 -33
- data/docs/setting/splatoon3_macro_dasei_cancel.md +77 -0
- data/docs/setting/splatoon3_macro_forward_ikarole.md +34 -0
- data/docs/setting/splatoon3_recommended_setting.md +133 -0
- data/docs/upgrade_pbm.md +1 -1
- data/lib/procon_bypass_man/background/jobs/base_job.rb +3 -2
- data/lib/procon_bypass_man/background/jobs/post_completed_remote_macro_job.rb +4 -0
- data/lib/procon_bypass_man/background.rb +0 -1
- data/lib/procon_bypass_man/buttons_setting_configuration/layer.rb +1 -1
- data/lib/procon_bypass_man/bypass/bypass_command.rb +1 -1
- data/lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/charge_tansan_bomb.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/dasei_cancel.rb +22 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/fast_return.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/forward_ikarole.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_left_key.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_right_key.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_up_key.rb +21 -0
- data/lib/procon_bypass_man/plugin/splatoon3/macro/sokuwari_for_splash_bomb.rb +27 -0
- data/lib/procon_bypass_man/plugin/splatoon3/mode/guruguru.rb +63 -0
- data/lib/procon_bypass_man/plugin/splatoon3/version.rb +9 -0
- data/lib/procon_bypass_man/plugins.rb +12 -0
- data/lib/procon_bypass_man/procon/value_objects/analog_stick.rb +1 -0
- data/lib/procon_bypass_man/procon.rb +28 -0
- data/lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb +31 -0
- data/lib/procon_bypass_man/support/http_client.rb +3 -2
- data/lib/procon_bypass_man/support/remote_macro_http_client.rb +4 -0
- data/lib/procon_bypass_man/version.rb +1 -1
- data/lib/procon_bypass_man/worker.rb +16 -8
- data/lib/procon_bypass_man.rb +2 -1
- data/project_template/app.rb +2 -2
- data/project_template/app.rb.erb +2 -2
- data/project_template/lib/app_generator.rb +5 -1
- metadata +19 -3
- data/lib/procon_bypass_man/background/job_performer.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b58b7076f8ae670534f5de02a4d4f08ce85b0e8f32942146c156cbd86e0f6c9f
|
4
|
+
data.tar.gz: 47a0d06e49d43c5d9add37212b63a14dcf28016738a34219b6b33534e71bb0af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7007fe181dffb3d6357d73e1b5f8880647d92e54216ca65d24573c9cadde2bd40bfed977ec5cff8344570d468298b196becd8d7ed36d1ecac9fa54d8250817a4
|
7
|
+
data.tar.gz: 490791b8522adc71b10354dc4628bc8e51988ef04e11e82dd9b5ed2a40112dc71e6bc93f9fb9116efd03a3ba1dbb16a67b05ce6e466ef8be26ae27021cd51eba
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## [0.3.3] - 2022-11-13
|
2
|
+
* 以前に削除した「スプラ用マクロ、惰性キャンセル」を使えるようにしました
|
3
|
+
* docs/setting/splatoon2_macro_dasei_cancel.md, docs/setting/splatoon3_macro_dasei_cancel.md を参照してください
|
4
|
+
|
5
|
+
## [0.3.2] - 2022-10-13
|
6
|
+
* スプラトゥーン3に対応したプラグインを追加しました
|
7
|
+
* 詳しい設定方法については docs/setting/splatoon3_recommended_setting.md を参照してください
|
8
|
+
* 自動ドット打ちが稀に途中で止まってしまうのを修正しました
|
9
|
+
|
1
10
|
## [0.3.1] - 2022-10-07
|
2
11
|
* レイヤーを変更しているときにコントローラーを振動できるようになりました
|
3
12
|
* setting.yml で `enable(:rumble_on_layer_change)` と記述してください
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -5,8 +5,7 @@
|
|
5
5
|
|
6
6
|
* Nintendo Switch Proコントローラーを連射機などにするRaspberry Pi上で動かすコンバータです
|
7
7
|
* ドキュメントは [getting_started.md](docs/getting_started.md) にまとめています
|
8
|
-
* https://pbm-cloud.
|
9
|
-
|
8
|
+
* https://pbm-cloud.jiikko.com を使うと、webだけで運用が可能です
|
10
9
|
|
11
10
|
<img width="880" alt="スクリーンショット 2022-04-02 9 10 38" src="https://user-images.githubusercontent.com/1664497/161356057-71e4bc2a-0217-4434-9bf1-0002b9fb261a.png">
|
12
11
|
|
@@ -24,6 +23,7 @@ https://user-images.githubusercontent.com/1664497/171327108-f12f56a5-fc36-48da-9
|
|
24
23
|
|
25
24
|
## プラグイン
|
26
25
|
* https://github.com/splaplapla/procon_bypass_man-splatoon2
|
26
|
+
* [スプラトゥーン3](docs/setting/splatoon3_recommended_setting.md)
|
27
27
|
|
28
28
|
## FAQ
|
29
29
|
* どうやって動かすの?
|
@@ -46,7 +46,7 @@ https://user-images.githubusercontent.com/1664497/171327108-f12f56a5-fc36-48da-9
|
|
46
46
|
* 市販されているサードパーティ製連射機との違いは?
|
47
47
|
* サードパーティ製のコントローラーは、設定方法や形状が特殊で買い換えるたびに学習・設定コストが発生します。本ツールを使えば、設定内容はテキストで管理することができ、使い慣れたプロコンで同等のことができます
|
48
48
|
* sshなしで運用は可能ですか?
|
49
|
-
* https://pbm-cloud.
|
49
|
+
* https://pbm-cloud.jiikko.com を使えば、sshを使わずに運用が可能です
|
50
50
|
|
51
51
|
## 仕様・制約
|
52
52
|
* 日を跨ぐ24時ちょうどになった瞬間はLinuxのcronが起動などがするようで、この時間は数秒間バイパスが激しく遅延します
|
@@ -82,7 +82,7 @@ sudo kill -USR2 `cat ./pbm_pid`
|
|
82
82
|
|
83
83
|
## Raspberry Pi4のセットアップを代行します
|
84
84
|
* Raspberry Pi4を開発者である私の家に配送してくれれば、セットアップを代行します。セットアップが終わり次第送り返します
|
85
|
-
* 使い方に関しては、https://pbm-cloud.
|
85
|
+
* 使い方に関しては、https://pbm-cloud.jiikko.com ですべて完結するので、Linuxの知識は不要です
|
86
86
|
* 何か問題が起きた時はリモートログインでサポート可能です
|
87
87
|
* 希望者はDiscordの `kawagu#7684` にDMを送ってください
|
88
88
|
* お金はかかりません
|
data/docs/getting_started.md
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
## セットアップを代行できます
|
50
50
|
* Raspberry Pi4を開発者である私の家に配送してくれれば、セットアップを代行します。セットアップが終わり次第送り返します
|
51
|
-
* 使い方に関しては、https://pbm-cloud.
|
51
|
+
* 使い方に関しては、https://pbm-cloud.jiikko.com ですべて完結するので、Linuxの知識は不要です
|
52
52
|
* 何か問題が起きた時はリモートログインでサポート可能です
|
53
53
|
* 希望者はDiscordの `kawagu#7684` にDMを送ってください
|
54
54
|
* お金はかかりません
|
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
### procon_bypass_manのインストール
|
62
62
|
|
63
|
-
pbmenvを使うと https://pbm-cloud.
|
63
|
+
pbmenvを使うと https://pbm-cloud.jiikko.com と連携ができるのでおすすめですが、pbmenvを使わなくてもprocon_bypass_manをインストールすることは可能です。
|
64
64
|
次の4つからインストール方法を1つ選んでください。
|
65
65
|
|
66
66
|
* pbmenvを使う方法
|
@@ -239,13 +239,13 @@ discordで質問してみてください。
|
|
239
239
|
[procon_bypass_manのアップグレード方法](/docs/upgrade_pbm.md)
|
240
240
|
|
241
241
|
## procon_bypass_man_cloudについて
|
242
|
-
https://pbm-cloud.
|
242
|
+
https://pbm-cloud.jiikko.com/
|
243
243
|
procon_bypass_man_cloudの運用をWEBで完結できるようになる無料のWEBサービスです。
|
244
244
|
|
245
245
|
procon_bypass_man_cloudとの接続が完了後、Raspberry Piを起動時にprocon_bypass_manが自動で立ち上がるように設定すれば、Raspberry Piへのログインが不要で設定ファイルの変更やprocon_bypass_man自体のアップグレードができます。
|
246
246
|
セットアップ方法などでわからないことがあればdiscordで質問してみてください。
|
247
247
|
|
248
|
-
セットアップ方法は https://pbm-cloud.
|
248
|
+
セットアップ方法は https://pbm-cloud.jiikko.com/faq に書いています。
|
249
249
|
|
250
250
|
## 最適化について
|
251
251
|
本稿では、Rubyの最適化について書きます。上級者向けです。適用しなくても普通に動きますが、逆に適用したことで何らかのケースで遅くなる場合があるかもしれません。
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# forkしたリポジトリのPBMを動かす方法
|
2
|
+
|
3
|
+
forkしたリポジトリのPBMを動かす場合には、`app.rb` にある `gem 'procon_bypass_man'` を次のように変更する必要があります。
|
4
|
+
|
5
|
+
```diff
|
6
|
+
- gem 'procon_bypass_man', '0.3.2'
|
7
|
+
+ gem 'procon_bypass_man', github: 'splaplapla/procon_bypass_man', branch: "dev"
|
8
|
+
```
|
9
|
+
|
10
|
+
`github: xxx/procon_bypass_man', branch: "xxx"` の部分にあなたのリポジトリとブランチ名を入力してください。
|
11
|
+
変更する行はここだけです。
|
12
|
+
|
13
|
+
あとは通常通りに起動してください。
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# スプラトゥーン2: 惰性キャンセル マクロの設定方法
|
2
|
+
|
3
|
+
* 本マクロは実験段階で、オプション名などの仕様が変更される可能性が高いです
|
4
|
+
* procon_bypass_man: 0.3.3以上が必要です
|
5
|
+
|
6
|
+
## 1. install_macro_pluginでマクロを有効化します
|
7
|
+
* `setting.yml` に`install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel` と書きます
|
8
|
+
* これを記述することで、layer内でmacroを呼び出せるようになります
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel
|
12
|
+
```
|
13
|
+
|
14
|
+
## 2. どのlayerで発動するかを宣言します
|
15
|
+
* `setting.yml` のlayer内に`macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_pressed: [:zl]` と書きます
|
16
|
+
* `if_pressed` がどのボタンを押したときにこのマクロが発動するかの設定です
|
17
|
+
* 惰性キャンセルなのでイカ状態になるためにzlを押します
|
18
|
+
* `if_tilted_left_stick` がスティックを倒した時に発動するオプションで、trueを渡すと有効になります
|
19
|
+
* また、傾けた時の閾値を変更することができて、trueの代わりに `{ threshold: 500 }` と書くことができます
|
20
|
+
* デフォルトが500で、ここの数値を上げると、スティックを倒した判定がより厳しくなります。最大1400くらいです。
|
21
|
+
* 連打中に、マクロの発動を無効にしたい場合は `disable_macro` で無効にできます
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
layer :up do
|
25
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
26
|
+
end
|
27
|
+
```
|
28
|
+
```ruby
|
29
|
+
layer :up do
|
30
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: { threshold: 500 }, if_pressed: [:zl]
|
31
|
+
end
|
32
|
+
```
|
33
|
+
```ruby
|
34
|
+
layer :up do
|
35
|
+
disable_macro :all, if_pressed: :a
|
36
|
+
disable_macro :all, if_pressed: :zr
|
37
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## 3. 設定を反映させる
|
42
|
+
* 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
|
43
|
+
* ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
|
44
|
+
* 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
|
45
|
+
* setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
|
46
|
+
|
47
|
+
```shell
|
48
|
+
sudo kill -USR2 `cat ./pbm_pid`
|
49
|
+
```
|
50
|
+
|
51
|
+
## 設定例1
|
52
|
+
```yaml
|
53
|
+
version: 1.0
|
54
|
+
setting: |-
|
55
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
56
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel
|
57
|
+
|
58
|
+
layer :up do
|
59
|
+
disable_macro :all, if_pressed: :a
|
60
|
+
disable_macro :all, if_pressed: :zr
|
61
|
+
macro ProconBypassMan::Plugin::Splatoon2::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
## 設定例2
|
66
|
+
* `open_macro` キーワードを使っても同じことが実行可能です。
|
67
|
+
* この場合は、 `install_macro_plugin` が不要です。
|
68
|
+
|
69
|
+
```yaml
|
70
|
+
version: 1.0
|
71
|
+
setting: |-
|
72
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
73
|
+
|
74
|
+
layer :up do
|
75
|
+
open_macro :dacan, steps: [:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec], if_tilted_left_stick: true, if_pressed: [:zl]
|
76
|
+
end
|
77
|
+
```
|
@@ -1,34 +1,3 @@
|
|
1
|
-
# スプラトゥーン
|
1
|
+
# スプラトゥーン3: イカロール マクロの設定方法
|
2
2
|
|
3
|
-
|
4
|
-
* このマクロは、右から上へ高速にスティックを入れることでイカロールを行います
|
5
|
-
* 後述する設定例では、左スティックを押し込むことでイカロールを発動してます
|
6
|
-
|
7
|
-
https://user-images.githubusercontent.com/1664497/193837089-1c56af8d-2c1b-436a-b2a7-89c083a408d7.mov
|
8
|
-
|
9
|
-
|
10
|
-
## 設定例1
|
11
|
-
```yaml
|
12
|
-
version: 1.0
|
13
|
-
setting: |-
|
14
|
-
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
15
|
-
|
16
|
-
layer :up do
|
17
|
-
open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
|
18
|
-
end
|
19
|
-
```
|
20
|
-
|
21
|
-
## 設定例2
|
22
|
-
pluginとして登録してあるので、 `macro` を使っても同じことができます。
|
23
|
-
|
24
|
-
```yaml
|
25
|
-
version: 1.0
|
26
|
-
setting: |-
|
27
|
-
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
28
|
-
|
29
|
-
install_macro_plugin(ProconBypassMan::Plugin::Splatoon2::Macro::ForwardIkarole)
|
30
|
-
|
31
|
-
layer :up do
|
32
|
-
macro ProconBypassMan::Plugin::Splatoon2::Macro::ForwardIkarole, if_pressed: [:thumbl], force_neutral: []
|
33
|
-
end
|
34
|
-
```
|
3
|
+
[スプラトゥーン3: イカロール マクロの設定方法](splatoon3_macro_forward_ikarole.md)
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# スプラトゥーン3: 惰性キャンセル マクロの設定方法
|
2
|
+
|
3
|
+
* 本マクロは実験段階で、オプション名などの仕様が変更される可能性が高いです
|
4
|
+
* procon_bypass_man: 0.3.3以上が必要です
|
5
|
+
|
6
|
+
## 1. install_macro_pluginでマクロを有効化します
|
7
|
+
* `setting.yml` に`install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel` と書きます
|
8
|
+
* これを記述することで、layer内でmacroを呼び出せるようになります
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel
|
12
|
+
```
|
13
|
+
|
14
|
+
## 2. どのlayerで発動するかを宣言します
|
15
|
+
* `setting.yml` のlayer内に`macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_pressed: [:zl]` と書きます
|
16
|
+
* `if_pressed` がどのボタンを押したときにこのマクロが発動するかの設定です
|
17
|
+
* 惰性キャンセルなのでイカ状態になるためにzlを押します
|
18
|
+
* `if_tilted_left_stick` がスティックを倒した時に発動するオプションで、trueを渡すと有効になります
|
19
|
+
* また、傾けた時の閾値を変更することができて、trueの代わりに `{ threshold: 500 }` と書くことができます
|
20
|
+
* デフォルトが500で、ここの数値を上げると、スティックを倒した判定がより厳しくなります。最大1400くらいです。
|
21
|
+
* 連打中に、マクロの発動を無効にしたい場合は `disable_macro` で無効にできます
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
layer :up do
|
25
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
26
|
+
end
|
27
|
+
```
|
28
|
+
```ruby
|
29
|
+
layer :up do
|
30
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: { threshold: 500 }, if_pressed: [:zl]
|
31
|
+
end
|
32
|
+
```
|
33
|
+
```ruby
|
34
|
+
layer :up do
|
35
|
+
disable_macro :all, if_pressed: :a
|
36
|
+
disable_macro :all, if_pressed: :zr
|
37
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## 3. 設定を反映させる
|
42
|
+
* 上記の記述を加えたsetting.ymlを起動中のprocon_bypass_manプロセスで読み込むには、プロセスにその旨を伝える必要があります
|
43
|
+
* ラズベリーパイを再起動して、プロセスを立ち上げ直す、でも目的は達成できますが、もっと簡単にsetting.ymlを再読み込みする必要があります
|
44
|
+
* 書き換えたsetting.ymlを、起動中のprocon_bypass_manプロセスへ即時反映するには、procon_bypass_manプロセスを動かしたまま、別のshellから 以下をを実行してください
|
45
|
+
* setting.ymlのシンタックスが正しければ、switchとの接続が継続したままsetting.ymlの内容を読み込んでいるはずです
|
46
|
+
|
47
|
+
```shell
|
48
|
+
sudo kill -USR2 `cat ./pbm_pid`
|
49
|
+
```
|
50
|
+
|
51
|
+
## 設定例1
|
52
|
+
```yaml
|
53
|
+
version: 1.0
|
54
|
+
setting: |-
|
55
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
56
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel
|
57
|
+
|
58
|
+
layer :up do
|
59
|
+
disable_macro :all, if_pressed: :a
|
60
|
+
disable_macro :all, if_pressed: :zr
|
61
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::DaseiCancel, if_tilted_left_stick: true, if_pressed: [:zl]
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
## 設定例2
|
66
|
+
* `open_macro` キーワードを使っても同じことが実行可能です。
|
67
|
+
* この場合は、 `install_macro_plugin` が不要です。
|
68
|
+
|
69
|
+
```yaml
|
70
|
+
version: 1.0
|
71
|
+
setting: |-
|
72
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
73
|
+
|
74
|
+
layer :up do
|
75
|
+
open_macro :dacan, steps: [:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec], if_tilted_left_stick: true, if_pressed: [:zl]
|
76
|
+
end
|
77
|
+
```
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# スプラトゥーン3: イカロール マクロの設定方法
|
2
|
+
|
3
|
+
* procon_bypass_man: 0.3.1以上が必要です
|
4
|
+
* このマクロは、右から上へ高速にスティックを入れることでイカロールを行います
|
5
|
+
* 後述する設定例では、左スティックを押し込むことでイカロールを発動してます
|
6
|
+
|
7
|
+
https://user-images.githubusercontent.com/1664497/193837089-1c56af8d-2c1b-436a-b2a7-89c083a408d7.mov
|
8
|
+
|
9
|
+
|
10
|
+
## 設定例1
|
11
|
+
```yaml
|
12
|
+
version: 1.0
|
13
|
+
setting: |-
|
14
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
15
|
+
|
16
|
+
layer :up do
|
17
|
+
open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
|
18
|
+
end
|
19
|
+
```
|
20
|
+
|
21
|
+
## 設定例2
|
22
|
+
pluginとして登録してあるので、 `macro` を使っても同じことができます。
|
23
|
+
|
24
|
+
```yaml
|
25
|
+
version: 1.0
|
26
|
+
setting: |-
|
27
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
28
|
+
|
29
|
+
install_macro_plugin(ProconBypassMan::Plugin::Splatoon2::Macro::ForwardIkarole)
|
30
|
+
|
31
|
+
layer :up do
|
32
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::ForwardIkarole, if_pressed: [:thumbl], force_neutral: []
|
33
|
+
end
|
34
|
+
```
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# スプラトゥーン3: おすすめの設定
|
2
|
+
## 1 全般
|
3
|
+
### 1.1 デスしてから最速スパジャンのためのAボタン連打
|
4
|
+
|
5
|
+
`flip :a, if_pressed: [:a]`
|
6
|
+
Aボタンを連打にします。復帰してから最速で前線復帰ができます
|
7
|
+
|
8
|
+
### 1.2 簡単スニーキング
|
9
|
+
|
10
|
+
ボタンを押している間は、水飛沫のたたないスニーキングの感度まで調整することができます。
|
11
|
+
[設定方法](/docs/setting/left-analogstick-cap.md)
|
12
|
+
|
13
|
+
### 1.3 ナイス玉連打
|
14
|
+
|
15
|
+
`flip :down, if_pressed: :down`
|
16
|
+
十字キーの下ボタンは常に連打にしておくとナイス玉が来たときに楽です。
|
17
|
+
|
18
|
+
### 1.4 最速スーパージャンプ
|
19
|
+
マップを開かずにジャンプができます。トリガーは自由に設定できます。
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn
|
23
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey
|
24
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey
|
25
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey
|
26
|
+
|
27
|
+
layer :up do
|
28
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn, if_pressed: [:y, :b, :down]
|
29
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
|
30
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
|
31
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
|
32
|
+
end
|
33
|
+
```
|
34
|
+
|
35
|
+
### 1.5 イカロール
|
36
|
+
* このマクロは、右から上へ高速にスティックを入れることでイカロールを行います
|
37
|
+
* 後述の設定例では、左スティックを押し込むことでイカロールを発動してます
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
layer :up do
|
41
|
+
open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
## 2 武器に特化した設定
|
46
|
+
### 2.1 パブロ、ボトルガイザー向け
|
47
|
+
|
48
|
+
`flip :zr, if_pressed: :zr, force_neutral: :zl`
|
49
|
+
zrを連打にします。`force_neutral: :zl` というオプションをつけることで、ZRを押している間はZLを押しても無視されるようになります。パブロでは意味がありませんが、シューターだと煽りのような動作を抑制することができます。
|
50
|
+
|
51
|
+
## 3 設定例
|
52
|
+
### 3.1 シンプルなパブロ向け
|
53
|
+
|
54
|
+
* ZRボタン, ZLボタン, Lボタンを同時押しながら十字キーを押すとレイヤーを切り替える
|
55
|
+
* ナイス玉が来たときにゲージを貯めるために十字キーの下を連打
|
56
|
+
* 復帰から最速ジャンプのためにAボタンを連打
|
57
|
+
* 筆を振るためにZRボタンを連打
|
58
|
+
* 筆ダッシュをするためにLボタンをZRボタンに変更
|
59
|
+
* イカロール
|
60
|
+
|
61
|
+
```yaml
|
62
|
+
version: 1.0
|
63
|
+
setting: |-
|
64
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
65
|
+
|
66
|
+
layer :up do
|
67
|
+
flip :zr, if_pressed: :zr, force_neutral: :zl
|
68
|
+
flip :a, if_pressed: [:a]
|
69
|
+
flip :down, if_pressed: :down
|
70
|
+
remap :l, to: :zr
|
71
|
+
open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
|
72
|
+
end
|
73
|
+
|
74
|
+
layer :right do
|
75
|
+
end
|
76
|
+
|
77
|
+
layer :left do
|
78
|
+
end
|
79
|
+
|
80
|
+
layer :down do
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
84
|
+
### 3.2 全部盛り
|
85
|
+
|
86
|
+
* ZRボタン, ZLボタン, Lボタンを同時押しながら十字キーを押すとレイヤーを切り替える
|
87
|
+
* ナイス玉が来たときにゲージを貯めるために十字キーの下を連打
|
88
|
+
* 筆を振るためにZRボタンを連打
|
89
|
+
* 復帰から最速ジャンプのためにAボタンを連打
|
90
|
+
* YボタンとBボタンと十字キーの上を同時に押したときに、マップ開いた時の↑に設定されている味方にスーパージャンプ
|
91
|
+
* YボタンとBボタンと十字キーの左を同時に押したときに、マップ開いた時の←に設定されている味方にスーパージャンプ
|
92
|
+
* YボタンとBボタンと十字キーの右を同時に押したときに、マップ開いた時の→に設定されている味方にスーパージャンプ
|
93
|
+
* YボタンとBボタンと十字キーの下を同時に押したときに、リスポーンにスーパージャンプ
|
94
|
+
* 筆ダッシュをするためにLボタンをZRボタンに変更
|
95
|
+
* ZLボタンとAボタンを同時に押したときに移動するとスニーキング
|
96
|
+
* イカロール
|
97
|
+
|
98
|
+
```yaml
|
99
|
+
version: 1.0
|
100
|
+
setting: |-
|
101
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn
|
102
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey
|
103
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey
|
104
|
+
install_macro_plugin ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey
|
105
|
+
|
106
|
+
prefix_keys_for_changing_layer [:zr, :zl, :l]
|
107
|
+
set_neutral_position 2100, 2000
|
108
|
+
|
109
|
+
layer :up do
|
110
|
+
flip :zr, if_pressed: :zr, force_neutral: :zl
|
111
|
+
flip :a, if_pressed: [:a]
|
112
|
+
flip :down, if_pressed: :down
|
113
|
+
|
114
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::FastReturn, if_pressed: [:y, :b, :down]
|
115
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToUpKey, if_pressed: [:y, :b, :up]
|
116
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToRightKey, if_pressed: [:y, :b, :right]
|
117
|
+
macro ProconBypassMan::Plugin::Splatoon3::Macro::JumpToLeftKey, if_pressed: [:y, :b, :left]
|
118
|
+
|
119
|
+
remap :l, to: :zr
|
120
|
+
left_analog_stick_cap cap: 1100, if_pressed: [:zl, :a], force_neutral: :a
|
121
|
+
|
122
|
+
open_macro :forward_ikarole, steps: [:forward_ikarole1], if_pressed: [:thumbl], force_neutral: []
|
123
|
+
end
|
124
|
+
|
125
|
+
layer :right do
|
126
|
+
end
|
127
|
+
|
128
|
+
layer :left do
|
129
|
+
end
|
130
|
+
|
131
|
+
layer :down do
|
132
|
+
end
|
133
|
+
```
|
data/docs/upgrade_pbm.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* pbm-cloudを使う方法、pbmenvを使う方法、pbmenvを使わない方法があります
|
3
3
|
|
4
4
|
## pbm-cloudを使う方法
|
5
|
-
* https://pbm-cloud.
|
5
|
+
* https://pbm-cloud.jiikko.com からデバイス詳細画面を開いてください
|
6
6
|
* `デバイスの設定` => `PBMのバージョンアップ`を選択して、表示されるモーダルからインストールしたいバージョンを選択し、 `このバージョンでバージョンアップする` をクリックしてください
|
7
7
|
* クリックするとRaspberry Piが再起動するのでしばらく待ってください
|
8
8
|
* 設定ファイルが初期状態に戻っているので適宜復元してください
|
@@ -13,5 +13,9 @@ class ProconBypassMan::PostCompletedRemoteMacroJob < ProconBypassMan::BaseJob
|
|
13
13
|
device_id = ProconBypassMan.device_id
|
14
14
|
"/api/devices/#{ProconBypassMan.device_id}/completed_pbm_remote_macro_jobs"
|
15
15
|
end
|
16
|
+
|
17
|
+
def self.re_enqueue_if_failed
|
18
|
+
true
|
19
|
+
end
|
16
20
|
end
|
17
21
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require "procon_bypass_man/background/jobs/concerns/has_external_api_setting"
|
2
2
|
require "procon_bypass_man/background/jobs/concerns/job_performable"
|
3
3
|
require "procon_bypass_man/background/job_queue"
|
4
|
-
require "procon_bypass_man/background/job_performer"
|
5
4
|
require "procon_bypass_man/background/jobs/base_job"
|
6
5
|
require "procon_bypass_man/background/jobs/report_event_base_job"
|
7
6
|
require "procon_bypass_man/background/jobs/report_boot_job"
|
@@ -53,7 +53,7 @@ module ProconBypassMan
|
|
53
53
|
end
|
54
54
|
|
55
55
|
# @param [String, Class] プラグインのclass
|
56
|
-
# @param [Hash, NilClass] if_tilted_left_stick
|
56
|
+
# @param [Hash, NilClass] if_tilted_left_stick
|
57
57
|
def macro(name, if_pressed: nil, if_tilted_left_stick: nil, force_neutral: nil)
|
58
58
|
case if_tilted_left_stick
|
59
59
|
when Integer, String, Symbol, Array
|
@@ -53,7 +53,7 @@ class ProconBypassMan::BypassCommand
|
|
53
53
|
# シビア
|
54
54
|
t2 = Thread.new do
|
55
55
|
bypass = ProconBypassMan::Bypass::ProconToSwitch.new(gadget: @gadget, procon: @procon)
|
56
|
-
process = BlueGreenProcess.new(worker_instance: bypass, max_work:
|
56
|
+
process = BlueGreenProcess.new(worker_instance: bypass, max_work: 550)
|
57
57
|
loop do
|
58
58
|
if $will_terminate_token
|
59
59
|
if $will_terminate_token == WILL_TERMINATE_TOKEN::TERMINATE
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon2
|
4
|
+
module Macro
|
5
|
+
module DaseiCancel
|
6
|
+
def self.display_name
|
7
|
+
:dasei_cancel
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec].freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'惰性キャンセル'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module ChargeTansanBomb
|
6
|
+
def self.display_name
|
7
|
+
:charge_tansan_bomb
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:shake_left_stick_and_toggle_b_for_0_1sec].freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'タンサンボムのチャージ'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module DaseiCancel
|
6
|
+
def self.display_name
|
7
|
+
:dasei_cancel
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:pressing_r_for_0_03sec, :pressing_r_and_pressing_zl_for_0_2sec].freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.descrition
|
15
|
+
'惰性キャンセル'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module FastReturn
|
6
|
+
def self.display_name
|
7
|
+
:fast_return
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:x, :x, :x, :down, :down, :down, :down, :down, :toggle_a_for_0_1sec, :wait_for_0_5sec]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'試合中にリスポーンにスーパージャンプ'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module ForwardIkarole
|
6
|
+
def self.display_name
|
7
|
+
:forward_ikarole
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:forward_ikarole1].freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'前方にイカロールをします'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module JumpToLeftKey
|
6
|
+
def self.display_name
|
7
|
+
:jump_to_left_key
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:x, :x, :x, :left, :left, :left, :left, :left, :toggle_a_for_0_1sec, :wait_for_0_5sec]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'試合中に左キーに割り当てられている味方へのスーパージャンプ'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module JumpToRightKey
|
6
|
+
def self.display_name
|
7
|
+
:jump_to_right_key
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:x, :x, :x, :right, :right, :right, :right, :right, :toggle_a_for_0_1sec, :wait_for_0_5sec]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'試合中に右キーに割り当てられている味方へのスーパージャンプ'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Macro
|
5
|
+
module JumpToUpKey
|
6
|
+
def self.display_name
|
7
|
+
:jump_to_up_key
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.steps
|
11
|
+
[:x, :x, :x, :up, :up, :up, :up, :up, :toggle_a_for_0_1sec, :wait_for_0_5sec]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
'試合中に上キーに割り当てられている味方へのスーパージャンプ'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# 3にはないので削除予定
|
2
|
+
module ProconBypassMan
|
3
|
+
module Plugin
|
4
|
+
module Splatoon3
|
5
|
+
module Macro
|
6
|
+
module SokuwariForSplashBomb
|
7
|
+
def self.display_name
|
8
|
+
:sokuwari_for_splash_bomb
|
9
|
+
end
|
10
|
+
|
11
|
+
# procon_bypass_man: 0.1.18以上が必要
|
12
|
+
def self.steps
|
13
|
+
[ :toggle_r_for_0_2sec,
|
14
|
+
:toggle_thumbr_for_0_14sec,
|
15
|
+
:toggle_thumbr_and_toggle_zr_for_0_34sec,
|
16
|
+
:toggle_r_for_1sec,
|
17
|
+
].freeze
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.description
|
21
|
+
'バブル即割'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module ProconBypassMan
|
2
|
+
module Plugin
|
3
|
+
module Splatoon3
|
4
|
+
module Mode
|
5
|
+
module Guruguru
|
6
|
+
def self.description
|
7
|
+
'適当に動きます'
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.binaries
|
11
|
+
[ "309481408000362d684658750968f71cfe2c0e51000001480053f71ffedf0d4b000a013d00caf6ecfd4c0d480003011c00000000000000000000000000000000",
|
12
|
+
"30978140800037dd6748687509fdf6adfded0d6d0081005d00eef68dfdef0d6d00830059001bf791fd140e720090005400000000000000000000000000000000",
|
13
|
+
"309a8140800038cd67495875099af821fe120e40006400880042f8fcfdfd0d470067008900d4f7e0fdf20d4e006a008c00000000000000000000000000000000",
|
14
|
+
"309c8140800036ed67466875099bf878fe4a0e35005b004c00c1f875fe400e35005d004c00c4f856fe2d0e390063006c00000000000000000000000000000000",
|
15
|
+
"30a081408000371d6847587509b9f71bfee70d22002c002300e3f73afe150e2b003500280014f854fe300e2d0038002900000000000000000000000000000000",
|
16
|
+
"30a38140800039fd6743587509def70ffea10d1a0031001f00d1f70ffeb10d19002c002200c5f711feb80d18002c002500000000000000000000000000000000",
|
17
|
+
"30a58140800037dd6746687509d8f70bfe980d270035001200ddf70dfe980d240038001900dff70ffe9b0d1f0035001a00000000000000000000000000000000",
|
18
|
+
"30a98140800037ed67484875099cf7edfdb00d310020000d009ef7eefda30d310022000c00adf7f2fd980d300028000a00000000000000000000000000000000",
|
19
|
+
"30ac8140800036ed67484875099cf709fed40d3a002400160097f7fafdd30d39002200150096f7f0fdc80d380022001400000000000000000000000000000000",
|
20
|
+
"30ae8140800038fd674558750987f72efed40d360021001c0089f729fed50d39002400180092f715fed10d390022001800000000000000000000000000000000",
|
21
|
+
"30b18140800037dd6747487509b8f705fea90d19001d002000c5f70dfeb00d210019002200bff71efec20d280018002400000000000000000000000000000000",
|
22
|
+
"30b48140800038fd684868750980f7e9fdd40d0200080024007df7f1fdba0d060011001e0084f7f8fdaa0d12001a001a00000000000000000000000000000000",
|
23
|
+
"30b7814080003fdd694958750918f6a9fd510f0d00d1ff370024f7b0fda90e0100ecff30006cf7d1fd210efffff5ff2c00000000000000000000000000000000",
|
24
|
+
"30ba81408080482d744768750963f71ffe190f5e00d9fea100ccf62dfe650f510009ff980015f702fe580f4b002eff8400000000000000000000000000000000",
|
25
|
+
"30bd814080802f7d864758750974f70efe4c0f5e00c0fea000d1f726fe1c0f5d00c5fea30028f859fe0e0f5c00cafea800000000000000000000000000000000",
|
26
|
+
"30bf8140808057cc984758750961f73afe630f99009dfeae0050f738fe710f7500adfea40050f721fe720f6e00b2fea300000000000000000000000000000000",
|
27
|
+
"30c281408080f479bd483875092ef8b6feab0f0a0180feba00f1f798fe900f000181febd00c2f77dfe7c0fdb008efebd00000000000000000000000000000000",
|
28
|
+
"30c581408080ad87d846487509e1f80000a6107e0178fea2004ef88dff54106c0185fea70063f826ffe60f520182feae00000000000000000000000000000000",
|
29
|
+
"30c8810080800797d84868750995f8e1fe4b0f7a0161fe88000df96dffd00f700149fe990035f9cdff361088016afea000000000000000000000000000000000",
|
30
|
+
"30cb810080804586d848487509cef672fe8a0f6d0217ff42002df63cfe280f1d0219ff410059f61cfe070fed01f5fe4a00000000000000000000000000000000",
|
31
|
+
"30d08100808002c5d745687509d8f5aaff830f5e03e6fe3e01fbf55bffc30f3f03e4fe100158f600ff3e102903e5fee700000000000000000000000000000000",
|
32
|
+
"30d3810080807b94d14838750991f6cd00690f9903f0fff10147f6e200560f7e038fffc60101f6c900560f71033bffa901000000000000000000000000000000",
|
33
|
+
"30d681008080b743ca475875095af7f2009c0fca03a400320242f7ca00950fb503820028020af7b000820fa4034e001a02000000000000000000000000000000",
|
34
|
+
"30d9810080805be3c047587509e7f77a03c70f0e04bb00410258f79801940f0004b800410251f74401910fd803b3003602000000000000000000000000000000",
|
35
|
+
"30dc810080808a02b245587509c0fbd5086a10710475020a03b0fb8d085d106c042102e8027efb660876106a04bc01af02000000000000000000000000000000",
|
36
|
+
"30de8100808036d2a14568750970fbbf09ad103704af038003a9fb600989105c0459036103c2fb2a097210690412034603000000000000000000000000000000",
|
37
|
+
"30e281008000cbb18d4738750989f8b40b2812380341044c0429f99e0bef11510340043704f2f93c0b7911b0033704f003000000000000000000000000000000",
|
38
|
+
"30e581008000c9c18945587509a5f7ca0a2e13e400c6024c0547f7fd0a941264011703270578f74a0b6012e40168030205000000000000000000000000000000",
|
39
|
+
"30e781008000c6618948687509acf86909e813d0fe2801a1057cf8cf09ed130fff6301990516f8710aaa13ccff13028205000000000000000000000000000000",
|
40
|
+
"30ea81008000c77189475875093af93b0762136efbaeff19060cf90107b113a9fb99ff0906e1f85b07b113bafc9fffcd05000000000000000000000000000000",
|
41
|
+
"30ed81008000c791894568750950f9ce047c1432f900026007a5f9a6051f146ef9bb013707bff99206a813fef9ce00c606000000000000000000000000000000",
|
42
|
+
"30ef81008000c6d1894558750944f8ad0358143ef81c02f10780f8b403841484f84102d107ccf801049314bcf84202ad07000000000000000000000000000000",
|
43
|
+
"30f381008000c761884868750914f72105e4134cf6d001c00743f71a05f11391f6bf01e407a0f7c904fa13faf6b3011008000000000000000000000000000000",
|
44
|
+
"30f681008000c7718344587509eaf54a04c812a6f40002500627f66d041313f2f40d02940682f6a60468133ef51a02d806000000000000000000000000000000",
|
45
|
+
"30f881008000c4e1814668750b5cf5f803b51125f3b5000d0560f50f04e8118cf33c015d057df525042c1210f4b101cc05000000000000000000000000000000",
|
46
|
+
"30fb81008000c5e1814458750b19f65a02a410acf29effb804e2f5db02df10b7f2c0ffbf04a9f55c032011dcf22400d804000000000000000000000000000000",
|
47
|
+
"30fe8100800035e2814858750b81f65c00f80f8df231fe940471f6e6001f1088f2a6fe92044ef6b1015a1092f21fffa004000000000000000000000000000000",
|
48
|
+
"3001810080004b03814868750b69f6e6fdad0ffef20efdd40479f678feb40fd9f249fdc40484f6f4fec00fb0f29ffdad04000000000000000000000000000000",
|
49
|
+
"30048100800079e47d4858750b17f64cfb5f0f46f46afb430529f6c4fb710ff1f3d4fb300538f64bfc830fbbf315fc1d05000000000000000000000000000000",
|
50
|
+
"300781008000a7057e4668750bb1f5d3f9fb0e8ef5ccf96405cdf5fcf90c0f44f52dfa6505e1f52dfa210f29f550fa6305000000000000000000000000000000",
|
51
|
+
"30098100800041f67d4668750bcdf4b0f9ab0e21f602f955057ef5adf9d00ee1f559f95f05b1f5d3f9fb0e8ef5ccf96405000000000000000000000000000000",
|
52
|
+
"300d810080003d877c4838750b84f458f7dd0c89f6d0f8fc0436f4e2f7620d83f614f8430526f4c0f8a00e71f666f85c05000000000000000000000000000000",
|
53
|
+
"30108100800058e77a4668750bf7f2c3f57c0c9cf6abfa0a0470f30ef6790c89f65dfa420414f476f67e0c80f6d0f98a04000000000000000000000000000000",
|
54
|
+
"30128100800059f77a4658750b7ef249f5580cd9f69bfaa40389f269f56c0cd1f6a9fab503a3f286f5760cacf6c9faeb03000000000000000000000000000000",
|
55
|
+
"3016810080005b177b4868750ba9f298f4450b2cf774fa3102b8f2a5f47a0b24f765fa6e02b8f2b8f4b10b1df755faac02000000000000000000000000000000",
|
56
|
+
"30198100800057777a4558750b39f258f4480a80f73efaf40016f26af4940a5ef76bfa37014ef275f4d40a46f780fa8401000000000000000000000000000000",
|
57
|
+
].map(&:freeze).freeze
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -6,8 +6,20 @@ require_relative "plugin/splatoon2/macro/jump_to_left_key"
|
|
6
6
|
require_relative "plugin/splatoon2/macro/sokuwari_for_splash_bomb"
|
7
7
|
require_relative "plugin/splatoon2/macro/forward_ikarole"
|
8
8
|
require_relative "plugin/splatoon2/macro/charge_tansan_bomb"
|
9
|
+
require_relative "plugin/splatoon2/macro/dasei_cancel"
|
9
10
|
require_relative "plugin/splatoon2/mode/guruguru"
|
10
11
|
|
12
|
+
require_relative "plugin/splatoon3/version"
|
13
|
+
require_relative "plugin/splatoon3/macro/fast_return"
|
14
|
+
require_relative "plugin/splatoon3/macro/jump_to_right_key"
|
15
|
+
require_relative "plugin/splatoon3/macro/jump_to_up_key"
|
16
|
+
require_relative "plugin/splatoon3/macro/jump_to_left_key"
|
17
|
+
require_relative "plugin/splatoon3/macro/sokuwari_for_splash_bomb"
|
18
|
+
require_relative "plugin/splatoon3/macro/forward_ikarole"
|
19
|
+
require_relative "plugin/splatoon3/macro/charge_tansan_bomb"
|
20
|
+
require_relative "plugin/splatoon3/macro/dasei_cancel"
|
21
|
+
require_relative "plugin/splatoon3/mode/guruguru"
|
22
|
+
|
11
23
|
module ProconBypassMan
|
12
24
|
module Plugin
|
13
25
|
end
|
@@ -33,6 +33,7 @@ class ProconBypassMan::Procon
|
|
33
33
|
}
|
34
34
|
BlueGreenProcess::SharedVariable.instance.data["buttons"] = {}
|
35
35
|
BlueGreenProcess::SharedVariable.instance.data["current_layer_key"] = :up
|
36
|
+
BlueGreenProcess::SharedVariable.instance.data["recent_left_stick_hypotenuses"] = []
|
36
37
|
end
|
37
38
|
reset!
|
38
39
|
|
@@ -41,6 +42,7 @@ class ProconBypassMan::Procon
|
|
41
42
|
self.user_operation = ProconBypassMan::Procon::UserOperation.new(
|
42
43
|
binary.dup
|
43
44
|
)
|
45
|
+
@left_stick_tilting_power_scaler = ProconBypassMan::AnalogStickTiltingPowerScaler.new
|
44
46
|
end
|
45
47
|
|
46
48
|
def status
|
@@ -55,6 +57,20 @@ class ProconBypassMan::Procon
|
|
55
57
|
BlueGreenProcess::SharedVariable.instance.data["current_layer_key"] = layer
|
56
58
|
end
|
57
59
|
|
60
|
+
RECENT_LEFT_STICK_POSITIONS_LIMIT = 5
|
61
|
+
# @param [Float] left_stick_hypotenuses
|
62
|
+
# @return [void]
|
63
|
+
def add_recent_left_stick_hypotenuses(left_stick_hypotenuses)
|
64
|
+
if (overflowed_size = recent_left_stick_hypotenuses.size - RECENT_LEFT_STICK_POSITIONS_LIMIT)
|
65
|
+
overflowed_size.times { recent_left_stick_hypotenuses.shift }
|
66
|
+
end
|
67
|
+
recent_left_stick_hypotenuses << left_stick_hypotenuses
|
68
|
+
end
|
69
|
+
|
70
|
+
def recent_left_stick_hypotenuses
|
71
|
+
BlueGreenProcess::SharedVariable.instance.data["recent_left_stick_hypotenuses"]
|
72
|
+
end
|
73
|
+
|
58
74
|
def ongoing_macro; @@status[:ongoing_macro]; end
|
59
75
|
def ongoing_mode; @@status[:ongoing_mode]; end
|
60
76
|
|
@@ -75,6 +91,8 @@ class ProconBypassMan::Procon
|
|
75
91
|
end
|
76
92
|
|
77
93
|
analog_stick = ProconBypassMan::Procon::AnalogStick.new(binary: user_operation.binary.raw)
|
94
|
+
add_recent_left_stick_hypotenuses(analog_stick.relative_hypotenuse)
|
95
|
+
dumped_tilting_power = @left_stick_tilting_power_scaler.calculate(recent_left_stick_hypotenuses)
|
78
96
|
|
79
97
|
enable_all_macro = true
|
80
98
|
enable_macro_map = Hash.new {|h,k| h[k] = true }
|
@@ -92,6 +110,16 @@ class ProconBypassMan::Procon
|
|
92
110
|
current_layer.macros.each do |macro_name, options|
|
93
111
|
next unless enable_macro_map[macro_name]
|
94
112
|
|
113
|
+
if(if_tilted_left_stick_value = options[:if_tilted_left_stick])
|
114
|
+
threshold = (if_tilted_left_stick_value.is_a?(Hash) && if_tilted_left_stick_value[:threshold]) || ProconBypassMan::AnalogStickTiltingPowerScaler::DEFAULT_THRESHOLD
|
115
|
+
if dumped_tilting_power.tilting?(threshold: threshold, current_position_x: analog_stick.relative_x, current_position_y: analog_stick.relative_y) && user_operation.pressing_all_buttons?(options[:if_pressed])
|
116
|
+
@@status[:ongoing_macro] = MacroRegistry.load(macro_name)
|
117
|
+
break
|
118
|
+
end
|
119
|
+
|
120
|
+
next
|
121
|
+
end
|
122
|
+
|
95
123
|
if user_operation.pressing_all_buttons?(options[:if_pressed])
|
96
124
|
@@status[:ongoing_macro] = MacroRegistry.load(macro_name, force_neutral_buttons: options[:force_neutral])
|
97
125
|
break
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class ProconBypassMan::AnalogStickTiltingPowerScaler
|
2
|
+
DEFAULT_THRESHOLD = 500
|
3
|
+
|
4
|
+
class PowerChunk
|
5
|
+
def initialize(hypotenuses)
|
6
|
+
@hypotenuses = hypotenuses
|
7
|
+
end
|
8
|
+
|
9
|
+
def moving_power
|
10
|
+
max = @hypotenuses.max
|
11
|
+
min = @hypotenuses.min
|
12
|
+
moving_power = (max - min).abs
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Boolean]
|
16
|
+
def tilting?(threshold: DEFAULT_THRESHOLD, current_position_x: , current_position_y: )
|
17
|
+
# スティックがニュートラルな時
|
18
|
+
if (-200..200).include?(current_position_x) && (-200..200).include?(current_position_y)
|
19
|
+
return false
|
20
|
+
end
|
21
|
+
|
22
|
+
moving_power >= threshold
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param [Array<Float>] hypotenuses
|
27
|
+
# @return [PowerChunk]
|
28
|
+
def calculate(hypotenuses)
|
29
|
+
PowerChunk.new(hypotenuses)
|
30
|
+
end
|
31
|
+
end
|
@@ -96,13 +96,14 @@ module ProconBypassMan
|
|
96
96
|
sleep(10)
|
97
97
|
retry
|
98
98
|
end
|
99
|
+
raise if respond_to?(:raise_if_failed) && raise_if_failed
|
99
100
|
rescue Timeout::Error
|
100
101
|
ProconBypassMan.logger.error(e)
|
101
102
|
sleep(10)
|
102
|
-
|
103
|
+
raise if respond_to?(:raise_if_failed) && raise_if_failed
|
103
104
|
rescue => e
|
104
|
-
puts e
|
105
105
|
ProconBypassMan.logger.error(e)
|
106
|
+
raise if respond_to?(:raise_if_failed) && raise_if_failed
|
106
107
|
end
|
107
108
|
end
|
108
109
|
end
|
@@ -6,24 +6,32 @@ module ProconBypassMan
|
|
6
6
|
new.run
|
7
7
|
end
|
8
8
|
|
9
|
-
# @
|
9
|
+
# @return [Worker]
|
10
10
|
def run
|
11
11
|
return self if @thread
|
12
12
|
@thread = Thread.new do
|
13
13
|
while(item = ProconBypassMan::Background::JobQueue.pop)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
rescue => e
|
18
|
-
ProconBypassMan.logger.error(e)
|
19
|
-
sleep(0.2) # busy loopしないように
|
20
|
-
end
|
14
|
+
# プロセスを越えるので文字列になっている. evalしてクラスにする
|
15
|
+
work(job_class: eval(item[:job_class]), args: item[:args])
|
16
|
+
sleep(0.2) # busy loopしないように
|
21
17
|
end
|
22
18
|
end
|
23
19
|
|
24
20
|
return self
|
25
21
|
end
|
26
22
|
|
23
|
+
def work(job_class: , args: )
|
24
|
+
begin
|
25
|
+
job_class.perform(*args)
|
26
|
+
rescue => e
|
27
|
+
ProconBypassMan.logger.error(e)
|
28
|
+
if job_class.respond_to?(:re_enqueue_if_failed) && job_class.re_enqueue_if_failed
|
29
|
+
job_class.perform_async(args)
|
30
|
+
ProconBypassMan.logger.error("エラーが起きたので#{job_class}を積み直しました。")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
27
35
|
# 重要な非同期ジョブは存在しないのでqueueが捌けるのを待たずにkill
|
28
36
|
def shutdown
|
29
37
|
@thread&.kill
|
data/lib/procon_bypass_man.rb
CHANGED
@@ -35,6 +35,7 @@ require_relative "procon_bypass_man/support/remote_macro_http_client"
|
|
35
35
|
require_relative "procon_bypass_man/support/update_remote_pbm_action_status_http_client"
|
36
36
|
require_relative "procon_bypass_man/support/send_device_stats_http_client"
|
37
37
|
require_relative "procon_bypass_man/support/procon_performance_http_client"
|
38
|
+
require_relative "procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler"
|
38
39
|
require_relative "procon_bypass_man/support/never_exit_accidentally"
|
39
40
|
require_relative "procon_bypass_man/support/cycle_sleep"
|
40
41
|
require_relative "procon_bypass_man/support/can_over_process"
|
@@ -195,7 +196,7 @@ module ProconBypassMan
|
|
195
196
|
ProconBypassMan::RemoteMacroReceiver.start!
|
196
197
|
BlueGreenProcess.config.logger = ProconBypassMan.logger
|
197
198
|
}
|
198
|
-
config.shared_variables = [:buttons, :current_layer_key]
|
199
|
+
config.shared_variables = [:buttons, :current_layer_key, :recent_left_stick_hypotenuses]
|
199
200
|
end
|
200
201
|
end
|
201
202
|
|
data/project_template/app.rb
CHANGED
@@ -12,7 +12,7 @@ begin
|
|
12
12
|
gemfile do
|
13
13
|
source 'https://rubygems.org'
|
14
14
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
15
|
-
gem 'procon_bypass_man', '0.3.
|
15
|
+
gem 'procon_bypass_man', '0.3.3'
|
16
16
|
end
|
17
17
|
rescue Bundler::Source::Git::GitCommandError => e
|
18
18
|
retry_count_on_git_command_error = retry_count_on_git_command_error + 1
|
@@ -39,7 +39,7 @@ ProconBypassMan.configure do |config|
|
|
39
39
|
|
40
40
|
# webからProconBypassManを操作できるwebサービスと連携します
|
41
41
|
# 連携中はエラーログ、パフォーマンスに関するメトリクスを送信します
|
42
|
-
# config.api_servers = 'https://pbm-cloud.
|
42
|
+
# config.api_servers = 'https://pbm-cloud.jiikko.com'
|
43
43
|
|
44
44
|
# エラーが起きたらerror.logに書き込みます
|
45
45
|
config.enable_critical_error_logging = true
|
data/project_template/app.rb.erb
CHANGED
@@ -12,7 +12,7 @@ begin
|
|
12
12
|
gemfile do
|
13
13
|
source 'https://rubygems.org'
|
14
14
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
15
|
-
gem 'procon_bypass_man', '0.3.
|
15
|
+
gem 'procon_bypass_man', '0.3.3'
|
16
16
|
end
|
17
17
|
rescue Bundler::Source::Git::GitCommandError => e
|
18
18
|
retry_count_on_git_command_error = retry_count_on_git_command_error + 1
|
@@ -39,7 +39,7 @@ ProconBypassMan.configure do |config|
|
|
39
39
|
|
40
40
|
# webからProconBypassManを操作できるwebサービスと連携します
|
41
41
|
# 連携中はエラーログ、パフォーマンスに関するメトリクスを送信します
|
42
|
-
<%- api_server_config = "config.api_servers = 'https://pbm-cloud.
|
42
|
+
<%- api_server_config = "config.api_servers = 'https://pbm-cloud.jiikko.com'" -%>
|
43
43
|
<%- if enable_integration_with_pbm_cloud -%>
|
44
44
|
<%= api_server_config %>
|
45
45
|
<%- else -%>
|
@@ -15,7 +15,11 @@ class AppGenerator
|
|
15
15
|
def generate
|
16
16
|
erb = File.read(template_path)
|
17
17
|
enable_integration_with_pbm_cloud = @enable_integration_with_pbm_cloud
|
18
|
-
|
18
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.6.0")
|
19
|
+
app_rb = ERB.new(erb, trim_mode: '-').result(binding)
|
20
|
+
else
|
21
|
+
app_rb = ERB.new(erb, nil, '-').result(binding)
|
22
|
+
end
|
19
23
|
File.write(output_path, app_rb)
|
20
24
|
end
|
21
25
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: procon_bypass_man
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jiikko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pbmenv
|
@@ -94,11 +94,16 @@ files:
|
|
94
94
|
- bin/setup
|
95
95
|
- docs/getting_started.md
|
96
96
|
- docs/how_to_connect_procon.md
|
97
|
+
- docs/run_pbm_on_my_branch.md
|
97
98
|
- docs/setting/left-analogstick-cap.md
|
99
|
+
- docs/setting/splatoon2_macro_dasei_cancel.md
|
98
100
|
- docs/setting/splatoon2_macro_forward_ikarole.md
|
99
101
|
- docs/setting/splatoon2_macro_sokuwari_bubble.md
|
100
102
|
- docs/setting/splatoon2_recommended_setting.md
|
101
103
|
- docs/setting/splatoon2_shake_tansan.md
|
104
|
+
- docs/setting/splatoon3_macro_dasei_cancel.md
|
105
|
+
- docs/setting/splatoon3_macro_forward_ikarole.md
|
106
|
+
- docs/setting/splatoon3_recommended_setting.md
|
102
107
|
- docs/setup_raspi.md
|
103
108
|
- docs/setup_raspi.mitamae.rb
|
104
109
|
- docs/setup_raspi_by_mitamae.md
|
@@ -107,7 +112,6 @@ files:
|
|
107
112
|
- lib/ext/module.rb
|
108
113
|
- lib/procon_bypass_man.rb
|
109
114
|
- lib/procon_bypass_man/background.rb
|
110
|
-
- lib/procon_bypass_man/background/job_performer.rb
|
111
115
|
- lib/procon_bypass_man/background/job_queue.rb
|
112
116
|
- lib/procon_bypass_man/background/jobs/base_job.rb
|
113
117
|
- lib/procon_bypass_man/background/jobs/concerns/has_external_api_setting.rb
|
@@ -163,6 +167,7 @@ files:
|
|
163
167
|
- lib/procon_bypass_man/device_status.rb
|
164
168
|
- lib/procon_bypass_man/ephemeral_configuration.rb
|
165
169
|
- lib/procon_bypass_man/plugin/splatoon2/macro/charge_tansan_bomb.rb
|
170
|
+
- lib/procon_bypass_man/plugin/splatoon2/macro/dasei_cancel.rb
|
166
171
|
- lib/procon_bypass_man/plugin/splatoon2/macro/fast_return.rb
|
167
172
|
- lib/procon_bypass_man/plugin/splatoon2/macro/forward_ikarole.rb
|
168
173
|
- lib/procon_bypass_man/plugin/splatoon2/macro/jump_to_left_key.rb
|
@@ -171,6 +176,16 @@ files:
|
|
171
176
|
- lib/procon_bypass_man/plugin/splatoon2/macro/sokuwari_for_splash_bomb.rb
|
172
177
|
- lib/procon_bypass_man/plugin/splatoon2/mode/guruguru.rb
|
173
178
|
- lib/procon_bypass_man/plugin/splatoon2/version.rb
|
179
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/charge_tansan_bomb.rb
|
180
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/dasei_cancel.rb
|
181
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/fast_return.rb
|
182
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/forward_ikarole.rb
|
183
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_left_key.rb
|
184
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_right_key.rb
|
185
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/jump_to_up_key.rb
|
186
|
+
- lib/procon_bypass_man/plugin/splatoon3/macro/sokuwari_for_splash_bomb.rb
|
187
|
+
- lib/procon_bypass_man/plugin/splatoon3/mode/guruguru.rb
|
188
|
+
- lib/procon_bypass_man/plugin/splatoon3/version.rb
|
174
189
|
- lib/procon_bypass_man/plugins.rb
|
175
190
|
- lib/procon_bypass_man/processor.rb
|
176
191
|
- lib/procon_bypass_man/procon.rb
|
@@ -234,6 +249,7 @@ files:
|
|
234
249
|
- lib/procon_bypass_man/remote_pbm_action/value_objects/remote_pbm_action_object.rb
|
235
250
|
- lib/procon_bypass_man/runner.rb
|
236
251
|
- lib/procon_bypass_man/scheduler.rb
|
252
|
+
- lib/procon_bypass_man/support/analog_stick_hypotenuse_tilting_power_scaler.rb
|
237
253
|
- lib/procon_bypass_man/support/callbacks.rb
|
238
254
|
- lib/procon_bypass_man/support/can_over_process.rb
|
239
255
|
- lib/procon_bypass_man/support/compress_array.rb
|