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

스크립트 기초 활용 4편(금지명령어)

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

마인크래프트에서 서버를 운영하다보면, 여러가지 명령어들 중에서 특정 명령어들을 사용 금지시키고 싶을 때가 있습니다. 예를 들어보자면, /stop 이나 /deop 같은 원래는 오피만 있다면 사용할 수 있었던 명령어들을, 테러를 방지하기 위해서 콘솔에서만 사용할 수 있도록 설정하고 싶을 수 있습니다. 또는, /msg 와 같은 원래라면 일반 유저들도 사용할 수 있는 명령어를 콘솔 또는 오피만 사용하도록 설정하고 싶을 수 있습니다. 그럴 때를 위해서, 이번 시간에는 금지 명령어를 지정해서, 원래 기본 권한대로 사용할 수 있게 설정하거나, 콘솔만 사용할 수 있게하거나, 오피가 있다면 사용할 수 있도록 설정하는 스크립트를 가져왔습니다.

 

 

 

 

 

사용방법은 /금지명령어 [초기화/콘솔/오피] [명령어] 입니다.

ex) /금지명령어 콘솔 /stop

ex) /금지명령어 오피 /msg

 

초기화는 기존에 콘솔 또는 오피로 금지명령어를 설정해두었던 명령어를 기본 상태로 초기화시킬 수 있습니다.

 

자 그럼 이제 구문을 전체적으로 분석해보는 시간을 가져보도록 하겠습니다.

 

 

command /금지명령어 [<text>] [<text>]:
	permission: *
	trigger:
		if "%the 2nd argument%" is "<none>":
			send "&c[ &r사용방법 &c]"
			send "&c[ &r/금지명령어 [콘솔/오피/초기화] [금지할 명령어] &c]"
			exit
		if arg 1 is "콘솔":
			set {금지명령어::%arg 2%} to "console"
			send "명령어 %arg 2%(이)가 콘솔만 사용할 수 있도록 설정되었습니다"
		else if arg 1 is "오피":
			set {금지명령어::%arg 2%} to "op"
			send "명령어 %arg 2%(이)가 오피만 사용할 수 있도록 설정되었습니다"
		else if arg 1 is "초기화":
			clear {금지명령어::%arg 2%}
			send "명령어 %arg 2%(이)가 초기화되었습니다"
		else:
			send "&c[ &r사용방법 &c]"
			send "&c[ &r/금지명령어 [콘솔/오피/초기화] [금지할 명령어] &c]"



on command:
	set {_c} to "/%command%"
	if {금지명령어::%{_c}%} is set:
		if {금지명령어::%{_c}%} is "console":
			if sender is not console:
				cancel event
				send "&c콘솔만 사용이 가능한 명령어입니다"
		if {금지명령어::%{_c}%} is "op":
			if sender is not op:
				cancel event
				send "&c오피만 사용이 가능한 명령어입니다"

이번 스크립트에는 커멘드 구문과 이벤트 구문이 둘 다 들어갔습니다.

 

 

우선 커멘드 구문만 분리해서 분석해보도록 하겠습니다. 기본적인 원리는, arg 1이 콘솔, 오피, 초기화 중 하나가 아니거나 arg 2의 값을 입력하지 않았을 시에 도움말 메시지를 출력하고, 그렇지 않을 경우에는 {금지명령어::[명령어]}에 콘솔이면 "console", 오피일 시 "op"로 설정하고, 초기화 일 시에는 그 값을 삭제합니다.

 

이제 이벤트 구문을 보도록 하겠습니다. 기본적인 원리는 우선 on command 이벤트문에서는 명령어를 쳤을 때 발동하는 이벤트문이고, %command%로 입력한 커멘드를 받아 올 수 있습니다. 다만 친 명령어에서 /는 빠진 값이 리턴됩니다. 예를 들어 /stop을 쳤다고 가정해보면, stop 이라는 값을 command로 받아올 수 있습니다. 따라서 {_c} 라는 임시변수에 /를 더한 명령어를 설정해줍니다. 그 뒤, 금지명령어 배열변수에서 해당하는 명령어의 값을 가져와서 만약 그 값이 "console" 이라면 콘솔만 사용이 가능하도록 cancel event 구문으로 금지하고, "op"라면 오피만 사용이 가능하도록 합니다.

 

 

4번째 줄에 있는 %the 2nd argument%는 %arg 2%와 동일합니다. 그냥 이렇게도 사용이 가능하다는것을 알려드리고 싶었습니다. 이번 시간의 스크립트에는 특별히 어려운 구문이나 모를만한 구문은 없었습니다. 

 

다음 시간에는 어떻게 보면 금지명령어도 그 일부라고 할 수 있는 테러방지 스크립트에 대해서 배워보도록 하겠습니다.

 

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

 

아래는 스크립트 파일들입니다

 

주석 미포함

금지명령어.sk
0.00MB

주석 포함

금지명령어(주석 포함).sk
0.00MB

 

댓글