---
# System prepended metadata

title: MacroScript文法

---

# MacroScript文法

### コマンド一覧
|コマンド名|概要|
|:-|:-|
|`Hit`|タイマーに合わせてボタンを押下する|
|`Press`|一定時間ボタンを押下する|
|`Start`|タイマーを起動する|
|`Wait`|一定時間待機する|

#### 基本文法
- 大文字と小文字は区別される.
- コマンドには, 必ず指定する必要がある<b>主要引数</b>と, 省略可能な<b>オプション引数</b>が設定されている.
  - 引数は半角スペース1個で区切って入力する(2個以上や全角スペースではエラーになる).
  - 主要引数が複数ある場合, 順序通りに入力する必要がある.
  - オプション引数は入力順序を問われないが, 重複はできない.
- オプション引数は`-i=1000`のように ハイフン+英小文字1字+イコール+実引数 で構成される. ハイフンの後やイコールの前後などにもスペースは入れられない.
- コマンドの終端には改行を入れる.
- コマンド内に改行を挟むことはできないが, スクリプト中に空行を入れても良い(空行はスキップされる).
- #から始まる行はコメントとして解釈され, スキップされる. ただしコマンド行内にコメントを入れることはできない.

#### Hitコマンド
##### 引数構成
`Hit <button> <frame> (-l) (-c) (-d) (-s)`
##### 主要引数
||引数制約|概要|
|:-|:-|:-|
|`button`|ボタンを表す文字列|押下するボタンを指定する|
|`frame`|int型に収まる非負整数|ボタンを押すタイミングを指定する|
##### オプション引数
||引数制約|省略時|概要|
|:-|:-|:-|:-|
|`-c`|int型に収まる整数|0|`Frame`の値を補正する|
|`-l`|1桁の数字|0|参照するタイマーのラベルを指定する|
|`-d`|int型に収まる非負整数|200|ボタンを押下する時間(ミリ秒)|
|`-s`|1桁の数字|(無視される)|起動するタイマーのラベル|

##### 付記
- コマンド実行時点で`frame`の値を過ぎていた場合は即時押下する.
- 指定したタイマーはあらかじめ起動されている必要がある.
- タイマーの起動は`-s`オプションが指定されている場合のみ実行される.
- 既に起動しているタイマーを重複して起動することはできない.
- `-c`には負の値を指定することもできる.
  - `Frame`+`-c`の値が負になる場合は0に切り上げられる.
- `-c`に指定した値が大きすぎてオーバーフローしても知らない. 

##### 凡例
`Hit A 1192 -l=2 -d=1000 -s=3`
タイマー2の値が1192フレームになったタイミングでタイマー3を起動しつつAボタンを1000ミリ秒押下する.
`Hit A 1800 -c=-77`
タイマー0の値が1800-77=1723フレームになったタイミングでAボタンを押下する.

#### Pressコマンド
##### 引数構成
`Press <buttons> <frame> (-i) (-d) (-s)`
##### 主要引数
||引数制約|概要|
|:-|:-|:-|
|`buttons`|ボタンを表す文字列のカンマ区切りの列|押下するボタンを指定する|
- ボタンを`+`区切りで繋げると同時押しになります。
##### オプション引数
||引数制約|省略時|概要|
|:-|:-|:-|:-|
|`-i`|int型に収まる非負整数|0|ボタン押下後の待機時間(ミリ秒)|
|`-d`|int型に収まる非負整数|200|ボタンを押下する時間(ミリ秒)|
|`-s`|1桁の数字|(無視される)|起動するタイマーのラベル|

##### 付記
- タイマーの起動は`-s`オプションが指定されている場合のみ実行される.
- 既に起動しているタイマーを重複して起動することはできない.

##### 凡例
`Press B -s=0`
Bボタンを押下すると同時にタイマー0を起動する.

`Press A,A,dU,dU -i=300`
Aボタン2回, ↑ボタン2回を300ミリ秒間隔で(200ミリ秒ずつ)押下し, 300ミリ秒待機する.

#### Startコマンド
##### 引数構成
`Start (-s)`
##### オプション引数
||引数制約|省略時|概要|
|:-|:-|:-|:-|
|`-s`|1桁の数字|0|起動するタイマーのラベル|

##### 付記
- 既に起動しているタイマーを重複して起動することはできない.


#### Waitコマンド
##### 引数構成
`Wait <duration>`
##### 主要引数
||引数制約|概要|
|:-|:-|:-|
|`duration`|int型に収まる非負整数|待機する時間(ミリ秒)|

##### 凡例
`Wait 20000`
2秒間待機する.

#### ボタン一覧
|ボタン|対応する文字|
|:-|:-|
|A|`A`|
|B|`B`|
|X|`X`|
|Y|`Y`もしくは`Sl`|
|Z|`Z`|
|Start|`St`|
|L|`L`|
|R|`R`|
|↑|`dU`|
|←|`dL`|
|↓|`dD`|
|→|`dR`|
|Start+Y同時押し|`tl`|

上記にないボタンは現在未対応.