# JavaScriptによるゲームキューブ自動化 「Sunameri」公開しました。 ## はじめに [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=mukai1011&repo=Sunameri)](https://github.com/mukai1011/Sunameri) 以前[WHALE](https://github.com/mizuyoukanao/WHALE)の.NET向け制御ライブラリとして公開していたSunameriを、この度大幅にリニューアルし、**GC自動化用JavaScriptエンジン**として公開しました。 基本操作はもちろん、.NETとの連携、外部ライブラリの利用、画像認識などなんでもできる、強力なマクロ実行環境です。 宣伝と簡単な使い方の解説です。 ## 使い方 `Sunameri.exe`にJavaScriptファイル`*.js`を読み込ませると、実行されます。 ``` .\Sunameri.exe scriptfile.js ``` 0.1.0公開時点でデバッグ機能は未搭載です。そのうち載せます。 ## どんなことができるの? GitHubにも上げているサンプルいくつか ### ボタン押下 既存の言語に乗せているので、簡単に部分ループや条件分岐を書けます。 ```javascript= const controller = new Controller({ portName: 'COM3', baudRate: 4800 }); // 3回Aボタン for (let i = 0; i < 3; i++) { controller.execute([ { type: 'KeyDown', key: 'A', wait: 200 }, // Aボタン押して200ms待機 { type: 'KeyUp', key: 'A', wait: 200 } // Aボタン離して200ms待機 ]); } // Bボタン const hitB = [ { type: 'KeyDown', key: 'B', wait: 200 }, { type: 'KeyUp', key: 'B', wait: 200 } ]; // 5回入力 for (let i = 0; i < 5; i++) { controller.execute(hitB); } ``` ### 画面を表示 5秒間表示する例です。 ```javascript= const capture = new VideoCapture({ index: 1, width: 1600, height: 1200, visible: true }); new Timer().sleep(5000); ``` 表示はここで宣言する取得サイズとは別です。必要であれば`setSizeToShow`で決めてください。 ### 待機など 上の例で`sleep`を使っていますが、終了時間を後から決めて待機することもできます。 ```javascript= timer = new Timer(); timer.start(); // ~~~ なんかの処理 ~~~ timer.submit(5000); // startから5000ms経ったらタイマー終了するように指示 // ~~~ なんかの処理 ~~~ timer.wait(); // タイマー終了を待機 ``` ### めっちゃ頑張ればこんなことができるよ! [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=mukai1011&repo=xd-adjust-seed)](https://github.com/mukai1011/xd-adjust-seed) XD自動初期seed厳選とseed調整です。なんでもできると言った通りのフル活用です。ここまでくるとC#で書いたほうが楽なんですが ... 型定義など気になる場合もこちらを見てください。 ## 技術面 [ClearScript](https://github.com/microsoft/ClearScript)を利用しています。 癖が強めのコーディングをしています ... 参考資料が少なくて大変です。 ## おわりに 現状動けばよかろうなのでIssue/PR、ご意見は歓迎です。 後発品ですが、強力なマクロ実行環境であるSunameriをよろしくお願いします。