스크립트(Skript)가 무엇인가요? -https://mon0rail.tistory.com/2

 

 

 

 

오늘은 채팅 포맷(chat format)에 대하여 알아볼 예정이다.

 

 

Skript에서는 채팅을 자유자래로 꾸밀 수 있도록 on chat 이벤트와 chat format을 바꿀 수 있도록 한다.

 

아래 예제를 통하여 살펴보자.

 

on chat:
    set chat format to "&6%player%&7: &f%message%"

예제 1 - chat format

 

(색깔 코드는 이 사이트 참고)

 

채팅을 쳤을 때 원래대로라면 <player> message의 형식대로 보였겠지만, 스크립트가 이를 지정한 양식으로 바꾸어 출력해주게 된다.

 

 

 

 

 

그러면 채팅을 쳤을 때 이렇게 채팅 양식이 바뀐 것을 확인할 수도 있다.

 

여기서 만족하고 끝낼 수 있지만, 만약 특정 플레이어의 채팅을 부각시키는 방법은 없을까?

 

예를 들면 OP의 채팅은 좀 더 화려하고 눈에 띄는 색으로 보이게 하려면 어떻게 해야 할까?

 

 

 

 

on chat:
    if player is op:
        set chat format to "&c[Admin]&d%player%&7: &e%message%"
    else:
        set chat format to "&7[User]&6%player%&7: &f%message%"

예제 2 - OP와 일반 플레이어의 채팅 차별화

 

 

이는 조건문으로 간단히 해결할 수 있다.

 

위 스크립트는 OP 권한을 가진 플레이어는 앞에 [Admin]칭호가 따로 붙고 채팅 색도 노란색이 된다.

 

만약 if player is op 조건문을 if player has permission "group.vip" 등으로 바꾸면 특정 권한을 가짐으로써 채팅 양식도 알아서 바뀌도록 할 수 있다.

 

 

아직 스크립트를 모른다면? -https://mon0rail.tistory.com/2

 

 

 

하이픽셀의 MOTD

MOTD란, 서버 추가를 하면 뜨게 되는 일종의 서버 소개 문구이다.

 

보통은 서버 폴더의 server.properties 파일의 motd=A Minecraft Server 에서 수정하거나 플러그인을 사용한다.

 

하지만 스크립트를 사용하면 재부팅을 하거나 별도의 플러그인 없이 간단하게 MOTD를 수정할 수 있다.

 

 

on server list ping:
	set motd to "&bMOTD &6테스트 서버"

 

on server list ping이라는 이벤트와 set motd를 통해서 MOTD를 설정한 모습니다.

 

한글과 특수문자, 색깔 코드를 사용할 수 있고, %nl%을 중간에 넣어 2줄까지 적을 수 있다.

 

 

MOTD를 커스텀한 모습

 

 

on server list ping:
	set {helloworld} to "Hello world!"
	set motd to "&f%{helloworld}% %nl% &eYour IP: %ip%"

 

MOTD 설정 역시 텍스트를 사용하기 때문에, 변수를 사용할 수도 있다.

 

아직 스크립트를 모른다면? -https://mon0rail.tistory.com/2?category=909444

 

/plugins같은 명령어는 기본적으로 오피(OP)가 없어도 사용할 수 있다.

 

그렇기 때문에 특정 명령어의 사용을 제한하기 위하여 on command 이벤트를 사용해줄 것이다.

 

options:
	contains-ban: ":"
	is-ban: "pl" or "plugins"

on command:
	player is set
	player isn't op
	if command contains {@contains-ban}:
		cancel event
	else if command is {@is-ban}:
		cancel event
	else:
		stop
	send "Unknown command. Type ""/help"" for help."

 

/spigot:tps같은 명령어처럼 콜론(:)이 포함된 명령어와 /pl같은 서버 보안을 위한 명령어를 감지할 시,

 

이벤트를 캔슬하여 사용하지 못하게 막는 스크립트이다.

 

추후에 수정이 간편하도록 options에 제한하는 명령어를 따로 적어두었다.

 

오피가 없는 플레이어는 /pl 명령어를 입력하면 플러그인 목록 대신 존재하지 않는 명령어라는 메시지만 출력된다.

아직 스크립트를 모른다면? - mon0rail.tistory.com/2?category=909444

 

 

오늘은 간단하면서도 응용하기 좋은 이벤트 캔슬을 이용하여 블럭의 설치와 파괴를 제한하려고 한다.

 

on block break:
	cancel event

 

 

두 줄 짜리 짧은 코드이지만, 이 스크립트를 적용하면 플레이어들은 어떤 블럭도 파괴하지 못한다.

 

왜냐하면 cancel event를 사용함으로써 블럭 파괴(block break)라는 행동을 취소(캔슬)했기 때문이다.

 

아주 간단하지만 유용하게 쓰이는 부분이 많이 때문에 꼭 알아둬야 하는 구문 중 하나이다.

 

블럭의 설치를 막는 것도 간단하다.

 

 

on block break:
	cancel event

on block place:
	cancel event

 

 

 

이렇게 block place 이벤트도 취소시키면, 플레이어들은 블럭의 설치나 파괴가 불가능하다.

 

하지만 이정도의 코드만으로는 서버에 실제로 적용하여 사용하기엔 무리가 있다.

왜냐하면 언제 어디서나, 오피(OP)까지이벤트 캔슬의 영향을 받아 블럭을 설치할 수 없기 때문이다.

 

그렇기 때문에 좀 더 실용적인 스크립트로 만드려면 코드를 더 추가해야된다.

 

 

on block place:
	player is in world "spawn"
	player isn't op
	cancel event
	send "&7이 월드에서는 블럭을 설치할 수 없습니다."

 

 

위 테스트에서는 월드명을 "world"으로 바꾸어 테스트하였다.

 

이렇게 만들면 별도의 설정이나 플러그인이 없이 간단하게 월드 전체를 보호할 수 있다.

 

블럭의 파괴 방지 역시 같은 코드를 작성해주면 블럭의 설치 및 파괴를 제한할 수 있다.

 

 

 

 

보통 서버에서 아이템을 그대로 사용하기만 하는 일은 드물다.

 

보통은 이름 및 설명을 붙이고 경우에 따라 마법을 부여하여 특별한 용도로 사용한다.

 

보통 아이템의 이름과 설명을 붙이기 위해 플러그인을 사용하지만, 스크립트 코드 내에서 이를 자체적으로 지원해준다.

 

command /givetest:
	trigger:
		give a diamond named "&b가공된 다이아몬드" to player

 

아이템 이름 뒤에 named "text" 을 붙이면 이름을 가진 아이템을 만들 수 있다.

 

command /givetest:
	trigger:
		give a diamond named "&b가공된 다이아몬드" with lore "&7오랜 시간에 거쳐 완성된 다이아몬드이다." and "&7매우 비싼 가격에 판매되고 있다." to player

 

아이템 설명을 붙이려면 with lore "text" 을 붙이면 가능하며, and로 여러 줄의 설명을 붙일 수 있다.

 

 

스크립트를 리로드하고 명령어를 입력하면 이름과 설명이 붙은 아이템을 받을 수 있다.

 

 

 

마법이 부여된 아이템 역시 스크립트로 제작할 수 있다.

 

command /givetest:
	trigger:
		give a diamond of unbreaking 1 named "&d마법의 다이아몬드" to player

 

<아이템> of <마법 이름> <레벨> 의 형식으로 붙일 수 없는 마법이나 비정상적인 레벨의 마법도 부여할 수 있다.

 

이 역시 리로드 후 명령어를 입력하면 내구성 I이 부여된 다이아몬드를 받을 수 있다.

 

마법을 여러 개 붙이려면 unbreaking 1, fortune 3, infinity 1과 같이 콤마(,)를 사용하면 된다.

 

 

일부 서버의 경우, 최초 접속 시 기본템을 주는 경우가 있다.

 

오늘은 기본템 스크립트를 만들어볼 것이다.

 

 

command /firstkit:
	cooldown: 12 hours
	cooldown message: &c기본템을 다시 받으려면 &7%remaining time%&c만큼 기다려야 합니다.
	cooldown bypass: firstkit.bypass
	aliases: /기본템
	trigger:
		give stone sword to player
		give stone pickaxe to player
		give stone axe to player
		give stone shovel to player
		give 32 apple to player
		send "&a기본템을 받았습니다. 즐거운 플레이 되세요!"

 

먼저 기본템을 지급하는 명령어를 만들어준다.

 

여기서 cooldown이 새롭게 추가되는데, 이는 명령어의 쿨타임이라고 보면 된다.

 

cooldown: 명령어의 쿨타임

 

cooldown message: 쿨다운이 진행중일 때 명령어를 입력하면 출력하는 메시지

 

cooldown bypass: 명령어의 쿨타임을 무시할 수 있는 권한(퍼미션 노드)

 

기본템을 계속하여 받을 수 있다면 아이템에 순식간에 쌓이기 때문에 적어도 1시간 이상의 쿨다운을 거는 것이 좋다.

 

 

 

 

스크립트를 리로드한 뒤, /기본템을 입력하면 메시지와 함께 기본템이 주어진다.

 

기본템의 구성은 서버의 성격에 따라 give 부분을 수정하여 자유롭게 정할 수 있다. (예를 들면 2 diamonds)

 

 

 

 

명령어 쿨다운도 정상적으로 작동되어, 오피 또는 firstkit.bypass 퍼미션이 없는 유저는 명령어 사용이 제한된다.

 

이제 기본템을 지급하는 명령어를 만들었으니 서버에 처음으로 접속 시 기본템을 줄 수 있도록 만들어보자.

 

아래에 이어서 코드를 추가해준다.

 

 

on first join:
	player command "/기본템"

 

player command는 플레이어가 특정 명령어를 실행하도록 하는 명령문이다.

 

위 코드를 넣고 리로드하면, 최초 접속 시 자동으로 /기본템 명령어를 사용하여 기본템을 받아간다.

+ Recent posts