단계 엔진
엔진이 단계인 작업은 텍스트 대신 [[steps]] 테이블의 TOML 목록입니다. 같은 기본 제공 함수를
호출하며 같은 값 규칙과 참/거짓 판정 규칙을 따릅니다. 차이점은 다음과 같습니다.
-
각 단계에는 고유한 정수
id와op가 있습니다:call(fn,args),set(local과value또는call = { fn, args }),if,goto,end,repeat/end_repeat,exit_repeat,else/end_if. -
if는 id로 이동하거나(then_goto/else_goto), 이 둘이 없으면end_if로 닫는 블록을 엽니다. -
repeat는times,while,until중 정확히 하나를 받습니다. -
조건은 다음 중 정확히 하나입니다: 기본 제공 함수 호출(
fn/args),value(참/거짓 판정), 또는left/right와 함께 쓰는compare("==","!=","<","<=",">",">="). 조건을 반전하려면not = true를 추가합니다. -
$로 시작하는 문자열 인수는 변수를 읽습니다("$target"). 그 밖의 모든 값은 TOML 형식이 곧 값의 형식인 리터럴이며, 스크립트에서와 마찬가지로 그 형식이 매개 변수와 정확히 일치해야 합니다. -
{ const = "VirtualKey.MediaPlayPause" }는 명명된 상수이며, 스크립트에서와 마찬가지로 단계를 컴파일할 때 해당 숫자로 바뀝니다."VirtualKey.F5"처럼 같은 철자의 일반 문자열은 텍스트로 남습니다. -
{ fn = "MouseGetCursorX" }처럼fn만 있는 테이블은 인수를 받지 않는 기본 제공 함수의 결과입니다. 값이 들어갈 수 있는 곳이면 어디서나 쓸 수 있습니다.- 호출의
args:args = [{ fn = "WindowGetActive" }] - 조건의
left/right:left = { fn = "ContextGetPointCount" }, right = 20 - 조건의
value:value = { fn = "EngineIsSafeMode" } repeat의times:times = { fn = "FolderWatchGetCount" }set단계의value:value = { fn = "UtilityGetTickCount" }
args는 받지 않습니다. 인수가 필요한 기본 제공 함수는 먼저set으로 결과를 변수에 저장한 뒤"$name"을 전달합니다. - 호출의
-
연산자 식은 없습니다. 산술과 문자열 조합에는 스크립트 작업이 필요합니다.
[[steps]]
id = 1
op = "set"
local = "target"
call = { fn = "WindowGetActive", args = [] }
[[steps]]
id = 2
op = "if"
condition = { fn = "WindowContainsTitle", args = ["$target", "Notepad"] }
[[steps]]
id = 3
op = "call"
fn = "WindowMaximize"
args = ["$target"]
[[steps]]
id = 4
op = "end_if"