특정한 사건(이벤트)이 일어났을 때, 무조건 어떤 일을 수행하는 것이 아니라 특정한 조건에 의하여 수행된다.
이는 스크립트에서 if(만약 ~ 이라면) 문법을 통해 구현할 수 있고, 이러한 조건을 판단하는 코드를 조건문이라고 한다.
좀 더 복잡한 스크립트를 제작하려면 조건문은 필수적으로 사용해야 한다.
command /givetest:
trigger:
if player is online:
give 1 diamond to player
위 조건문에서는 if player is online, 즉 "플레이어가 온라인이면" 이라는 조건을 걸고 있다.
그리고 만약 그 조건이 충족된다면 그 밑에 들여쓰기된 코드를 실행한다.
플레이어가 직접 위 명령어를 실행하면 플레이어는 온라인이어야 하기 때문에 항상 다이아몬드를 지급한다.
command /givetest2:
trigger:
if player has 1 diamond:
send "1+1 행사 상품입니다!"
give 1 diamond to player
send "명령어 종료"
두 번째 예제에서는 A is B 형식이 아닌, A has B 형식을 갖추고 있다.
player has 1 diamond는 플레이어가 1개 이상의 다이아몬드가 인벤토리에 있어야지만 조건이 충족된다.
즉, 이미 다이아몬드가 1개 있는 경우엔 "1+1 행사 상품입니다!" 라는 메시지와 함께 다이아몬드를 1개 더 준다.
그 뒤에 "명령어 종료"라는 텍스트 출력 코드는 조건문 안에 들여쓰기가 되어있지 않으므로,
조건을 만족시키는 것과 상관없이 항상 실행된다.
command /givetest3:
trigger:
set {diamonds} to 3
if {diamonds} is 1:
send "Yes"
else:
send "No"
만약 if문 아래에 else(그렇지 않으면~)문을 추가하면, if의 조건을 충족시키지 못했을 때 else문의 코드가 실행된다.
위 코드에서는 {diamonds}라는 변수의 값이 1이 아니기 때문에 else로 넘어가서 "No"라는 텍스트가 출력된다.
command /myhand:
trigger:
if player's tool is diamond sword:
send "그 검이 날카로워보이네요"
else if player's tool is diamond pickaxe:
send "오늘도 많은 수확이 있길 바래요"
else if player's tool is diamond axe:
send "묘목을 다시 심어두는 것도 잊어버리지 마세요"
else:
send "보낼 메시지가 없습니다."
만약 여러 개의 조건이 있고, 그것을 하나씩 걸러내야 된다면?
그렇다면 else if를 사용해야 한다. 위 코드에서는 플레이어가 들고 있는 도구가 무엇인지 판단한다.
만약 도구가 다이아몬드 검, 다이아몬드 곡괭이, 다이아몬드 도끼라면 해당 도구에 알맞은 문구를 출력해준다.
물론 if를 세 번 사용하더라도 각 도구에 알맞은 메시지를 출력시킬 수는 있다.
하지만 세 가지 경우가 모두 아니였을 때 메시지를 출력하려면 else if를 사용해야만 한다.
if부터는 활용할 수 있는 방법이 여러 가지라서 프로그래밍과 알고리즘에 대한 어느 정도 지식이 필요하다.
스크립트는 문법이 영어와 가까워 쉽지만, 여전히 프로그래밍 언어이기 때문에 상당한 활용 능력이 필요하다.
이후 올라오는 글의 예제에 사용되는 조건문은 그 조건문이 어떤 의미인지 간략한 설명을 해놓을 예정이다.