본문 바로가기
마인크래프트/Skript 기초 이론편

스크립트 기초 이론 2편(커스텀 명령어)

by 스터디립트 2022. 2. 18.

스터디립트의 마인크래프트 스크립트 기초 이론편의 두 번째 시간입니다.

두 번째 시간에서는 커스텀 명령어에 대해 알아보도록 하겠습니다.

 

우선 커스텀 명령어란, 스크립트를 이용해서 자신의 마음대로 명령어를 만드는 것 입니다.

 

우선 기본적인 커스텀 명령어의 틀은 이렇게 만들어집니다.

 

 

 


 

command /[명령어이름] [arg]:
    trigger:
        [구문]
 

 

처음 보시는 분들은 이해가 잘 가시지 않을겁니다. 하나씩 알아보도록 합시다.

 

먼저, [명령어이름] 부분을 알아보도록 하겠습니다.

명령어 이름이란 말 그대로 명령어의 이름입니다.

예를 들어서 마인크래프트에는 서버를 닫는 명령어인 /stop 이 있습니다.

이 명령어에서 [명령어이름] 은 "stop" 이 되는겁니다.

 

두 번째로, [arg] 부분에 대해서 알아보도록 하겠습니다.

arg 부분은 코딩을 처음 접해보시는 분들이 햇갈려하기 쉬운 부분입니다.

arg 은 argument 의 약자로, 마인크래프트의 /give 명령어를 예로 들어서 설명드리겠습니다.

/give 명령어의 형식을 보시면, /give [플레이어] [아이템] [수랑] [데이터태그] 로 구성되어있습니다.

이 명령어에서, [플레이어], [아이템], [수량], [데이터태그] 부분들이 다 arg들입니다.

 

 

쉽게 생각해서 명령어이름 다음으로 오는 것들은 다 arg라고 생각하시면 됩니다.

이 arg들은 각자 몇번째 arg인지 숫자를 붙여 나타내는데요,

명령어이름으로부터 몇번째 arg인지에 따라서, arg (숫자) 의 형식으로 나타냅니다.

전에 들었던 예시인 /give 명령어를 다시 예시로 들어보자면,

명령어 이름으로부터 차례대로 [플레이어], [아이템], [수량], [데이터태그] 가 각각 차례대로 arg 1, arg 2, arg 3, arg 4가 되는것입니다.

그럼 한번 /give 명령어를 스크립트에서 커스텀 명령어를 만드는 형태로 나타내어 보겠습니다.

 

많은 분들은 지금까지의 설명을 보고

command /give [arg 1] [arg 2] [arg 3] [arg 4]:
    trigger:
        [구문]
 

의 형식으로 나타낸다고 생각하실건데요, 그건 아닙니다.

정답부터 말씀드리자면,

command /give [<player>] [<itemtype>] [<integer>] [<integer>]:
    trigger:
        [구문]
 

입니다. 우선 설명 드리겠습니다.

arg 들은 각각 커스텀 명령어를 쓸때는, [<arg 형식>] 의 꼴로 사용됩니다. arg 형식에는, offlineplayer, player, integer ,number, text, string, item, itemtype 등 여러가지가 있습니다. /give 명령어의 [플레이어] 부분은 플레이어이기에 [<player>] 로 나타낸것이고, [아이템] 부분은 stone, log 등 아이템의 타입이기에 [<itemtype>] 으로 나타낸것, [수량] 과 [데이터태그] 는 정수로 구성되어있기에 정수를 뜻하는 [<integer>] 로 나타낸것입니다. 만약 이렇게 구문을 만들어서 /give culcuri stone 1 0 이라고 명령어를 치면, arg 1는 culcuri, arg 2는 stone, arg 3은 1, arg 4는 0이 되는것입니다.

 

자 그러면 이제 [구문] 부분에 대해서 알아보도록 하겠습니다. 구문에는 정말 수많은 종류들이 있습니다.

구문은 쉽게 말해서 명령어 라고 생각하시면 되겠습니다.

커스텀 명령어를 마인크래프트 1.12 버전 이후로 생긴 function 명령어라고 생각하시면 조금 더 쉬우실 수도 있겠습니다.

그런데 이 구문 부분에선, 마인크래프트 명령어들의 규칙이 아니라, skript 자체의 언어 규칙을 따라 작성하셔야 합니다.

작성 규칙은 구문마다 다르며, 수많은 종류들이 있기에 각각 다 알아보는 방법밖에는 없습니다.

앞으로 스크립트 기초 이론 강좌에서 여러 구문들을 다룰 것이니 걱정하시지는 않으셔도 됩니다.

 

우선 직접 커스텀 명령어의 예를 들기 위해 구문 하나만 알려드리겠습니다.

send "[할말]" to [상대]
 

이 구문은, 큰따옴표 안에 있는 말, 즉 [할말] 부분을 [상대] 에게 채팅으로 전송시킨다는 내용의 구문입니다.

만일 구문에서 [상대] 를 쓰지 않는다면, 대부분 그 명령어를 사용한 대상에게 메세지가 가지만, 만약 이 구문이 사용되는 곳에서 명령어를 사용하는 대상이 명확하지 않다면, 오류가 날 수도 있습니다.

자 그러면 이 구문을 이용해서 한번 원하는 상대에게 할말을 보내는 명령어를 만들어볼까요?

 

command /메시지 [<player>] [<text>]:
    trigger:
        send "%arg 2%" to arg 1
 

위와 같은 형식으로 만들 수 있을것입니다.

여기서 의문점이 드시는 분들이 계실것입니다.

어? 왜 큰따옴표 안에 %arg 2% 라고 앞뒤에 % 표시를 붙이지?

라는 의문점이 드실 수 있습니다.

만약 앞뒤에 %를 붙이지 않았다고 가정해봅시다.

그렇다면 arg 2에 어떤 말을 적던지간에 "arg 2" 라는 글자밖에 arg 1에게 보내지지 않을것입니다.

앞뒤에 %를 붙인다는 것은, % 안에 있는 것의 값을 의미하는 겁니다. %arg 2% = arg 2의 값. arg 2의 값은 arg 1에게 보내질 메시지 내용이 될 것이고, 예를 들어 "/메시지 studyript 안녕" 이라고 명령어를 사용했을 때, studyript 라는 플레이어에게 "안녕" 이라는 채팅이 전송되었을겁니다.

 

스터디립트의 마인크래프트 스크립트 기초 이론 강좌 2편은 여기서 끝났습니다.

다음 시간에는 변수에 대해서 알아보도록 하겠습니다.

 

질문이 있으시다면 이 게시글의 댓글에 적어주시면 답변해드리겠습니다

댓글