문법 강좌
요새들어 문법을 이해하지 않은 상태에서 스크립팅을 시도하시는 분들이 몇 분 보이셔서 안타까운 마음에 글을 몇 자 적어봅니다. 문법은 외울것도 없고, 그냥 개념만 이해하시면 충분하니까요.
좀 더 원론적으로는 aliases/remote/popup/variables를 구분해서 문법을 설명해야겠지만, remote만 알아도 충분히 응용하거나 사용할 수 있으니, remote만 설명하겠습니다.
각각의 예제는 별다른 설명이 없는 한 이전의 예제에 몇 가지 내용이 추가된 형태입니다.
- ON 1:TEXT:*가나다:#test:{
}
가장 기본적인 형태입니다. on event라고도 합니다. 어떠한 조건이 발생하였을 때 그에 따른 주어진 명령을 실행한다는 의미입니다. 위의 예제에서는 #test라는 채널에 "가나다"라는 말로 끝나는 문구가 타인에 의해 입력되었을 때(채널에 보여졌을 때) 반응하게 되고, 주어진 명령어(위의 예제에서는 아무 명령도 없습니다)가 작동됩니다. 이벤트 하나의 구분은 중괄호({, })로 묶어주는 것이 좋습니다.
- ON 1:TEXT:*가나다:#test:{
- echo -a 메세지 확인됨. $left($nick,2)
}
특정한 이벤트가 발생하면 {와 }로 묶인 부분으로 처리가 진행됩니다. 첫번째 줄에 있는 /echo라는 명령어(command)를 실행하게 됩니다. 명령어의 문법은 다음과 같습니다.
-
/명령어 -옵션 내용
좀 더 복잡한 구조도 있을 수 있으나, 대부분은 위의 개념입니다. 슬래쉬(/)는 스크립트 내에서 생략하여도 무방합니다.
다시 위의 예제로 돌아가서, $left라고 적은 부분이 있습니다. 인수(Identifiers)의 사용은 대략 다음과 같은 형태를 따릅니다.
-
$인수(내용1,내용2)
앞의 $는 반드시 필요하고, 내용과 내용의 구분은 컴마(,)로 구분됩니다.
- ON 1:TEXT:*가나다:#test:{
echo -a 메세지 확인됨. $left($nick,2) - if ($nick == 가나다) {
- echo -a 가나다의 메세지
- }
}
자주 사용되는 if구문(조건문)입니다. 형태는,
- /if (조건) { 실행명령 }
형태입니다. 비슷한 문법(형태상으로)으로 while 구문이 있습니다.
- /while (조건) { 실행명령 }
그 외에 자주 사용되지만 조금 다른 형태로는 /var와 /set이 있습니다.
- /var %i = test
- /set %i test
형태로 사용되고, %가 붙어있는 부분은 변수(variables)입니다. 위에 나타낸 /var와 /set의 문법은 mIRC.hlp 도움말 파일의 예제와 같은 형태입니다만, /var의 경우 =의 표시를 생략해도 됩니다(단, /set은 =를 넣으면 =라는 문자도 변수값에 들어가게 됩니다).
event의 문법 외에 alias와 menu라는 문법이 있습니다. alias와 menu는 구조가 비슷하고, menu를 사용할 정도의 스크립팅 능력이라면 이미 문법에 대한 내용은 공부하셨을것이라 생각되니 생략하겠습니다. 아래는 alias의 일반적인 예제입니다.
- alias syntest {
- echo -a 줄임글 호출 $1-
- }
위의 예제는 syntest라는 명령어를 생성한 것이라고 이해하시면 됩니다.
- ON 1:TEXT:*가나다:#test:{
syntest $left($nick,2) - if ($nick == 가나다) {
- echo -a 가나다의 메세지
- }
} - alias syntest {
echo -a 줄임글 호출 $1-
}
라는 형태로 사용되는 방식입니다. 결과는 이전의 예제와 동일합니다. 구문 중에 /syntest라는 명령어 형태를 만나면 서버의 기본 명령어인지, mIRC의 기본 명령어인지 확인한 후 alias에 등록된 명령어인지 확인하게 됩니다. 이때 alias에 등록된 명령어라면 해당 명령을 수행하게 됩니다. 위의 예에서 syntest라는 alias가 받아들인 $1-에 해당하는 내용은 $left($nick,2)가 들어가게 됩니다.
alias에는 명령어 형태의 alias 외에 인수(identifiers) 형태의 alias로도 사용할 수 있습니다.
- ON 1:TEXT:*가나다:#test:{
echo -a $syntest($left($nick,2))
if ($nick == 가나다) {
echo -a 가나다의 메세지
}
} - alias syntest {
return 줄임글 호출 $1- - }
위의 예에서는 $syntest 형태로 alias가 호출되었습니다. command 형태의 alias와 마찬가지로 identifier 형태의 alias도 mIRC 기본 identifier 중에 있는지 확인하고, 없으면 alias를 확인하게 됩니다. 이러한 형태의 alias에서는 반드시 /return 이라는 command가 필요합니다. 여기서 /return의 의미는 "반환"으로 이해하시면 됩니다. alias에 존재하는 것이면 identifier와 같은 형태로 해석하게 됩니다. 위의 예에서 syntest라는 alias가 받아들인 $1-에 해당하는 내용은 $left($nick,2)가 들어가게 됩니다.
그 외에도 group으로 묶어주는 설정이 있습니다.
- #syntestg off
- ON 1:TEXT:*가나다:#test:{
echo -a $syntest($left($nick,2))
if ($nick == 가나다) {
echo -a 가나다의 메세지
}
}
alias syntest {
return 줄임글 호출 $1-
} - #syntestg end
위의 이벤트는 발생하지 않습니다. #syntestg라는 그룹으로 묶여있는데, 이 그룹은 지금 off된 상태이기 때문입니다. "#syntestg on"이라고 바꾼다면 이벤트가 발생하게 할 수 있습니다.
문법에는 어디까지나 주어진 틀이 있습니다. 그 주어진 틀을 무시하지 않는 범위 안에서는 자신의 코딩 스타일에 맞게 모양을 달리하여 사용할 수 있습니다. 다만, 누가 보아도 알아볼 수 있는 형태이고, 일관성이 있게 스크립팅된 소스라면 스크립트를 공부하려는 다른 분들이 구문을 이해하는데 도움이 될테니 신경쓰시는것이 좋습니다.
History
Last edited on 03/05/2008 02:18 by Ra
Comments (0)