안녕하세요!
앞으로 Skript 개발에 있어서 유용한 애드온이나 개발 팁들을 소개해드릴 Myeongyevillain입니다!
부르실 땐 명이나물이라고 불러주시면 됩니다
제 첫 강좌이자 카테고리 첫 글로, skript-yaml 애드온을 소개하려 합니다
개요 및 기능
skript-yaml 애드온은 스크립트에서 무언가 저장하려 할 때, 변수 이외에도 YML 파일로 저장할 수 있게 해주는 애드온입니다.
YML에 대해 마인크래프트 플러그인과 같은 개발을 해 보셨다면 뭔 지 아실 겁니다
대표적으로, Essentials 플러그인의 Userdata 파일이 YML을 사용하죠.
이 애드온을 사용하면 YML 파일을 스크립트에서 로드할 수 있고
이러한 YML 파일을 로드하여 (로컬)변수에 저장하므로써, 스크립트에서 사용하는 변수의 갯수를 획기적으로 줄일 수 있습니다.
예제
variables: name: "test" command ymltest: permission: op trigger: load yaml "plugins/Skript/SKdatabase/%{name}%.yml" as "test" # plugins/Skript/SKdatabase/%{name}%.yml에 저장된 yml 파일을 ID "test"로 불러옵니다 set yaml value "ymltest" from "test" to 1 # "test" ID로 저장된 yml 파일의 ymltest의 값을 1로 지정합니다 save yaml "test" # "test" ID로 저장된 yml 파일의 변경 사항을 저장합니다 if yaml value "ymltest" from "test" is set: # 만약 "test" ID로 저장된 yml에서 ymltest의 값이 존재한다면 send "성공" set {_test} to yaml value "ymltest" from "test" # {_test} 변수를 "test" ID를 가진 yml의 "ymltest"의 값으로 설정합니다 unload yaml "plugins/Skript/SKdatabase/%{name}%.yml" # plugins/Skript/SKdatabase/%{name}%.yml에 저장된 yml 파일을 ID 언로드합니다
이 코드를 실행시키면, "성공" 메시지가 출력되고, "plugins/Skript/SKdatabase/test.yml" 파일 ymltest의 값이 1로 지정됩니다.
저장 경로에 들어가보면, test.yml 파일이 이렇게 저장된 것을 확인할 수 있습니다.
이 예제에 skript-yaml으로 자주 사용하게 될 코드들을 모두 담았습니다.
장단점
이 애드온을 사용했을 때, 개발과 서버 환경에 미치는 영향에 대한 장단점을 열거해드리겠습니다
장점
1. csv 파일 형식으로 저장되는 변수를 한꺼번에 로드할 때 서버에 가해지는 부담을 줄일 수 있습니다.
2. 서버 전체 개발 시 사용되는 변수의 갯수를 줄일 수 있습니다.
3. 파일 저장 경로에서 mySQL이나 쿼리 구문 없이도 각 값을 열람 가능합니다. (Skript 변수는 직접 값 확인이 불가합니다)
단점
1. 비주류의 애드온이기에, 분업 등을 할 때, 코드를 숙지해야 합니다.
2. 스크립트 리로드 시 서버에 주는 부담이 많습니다 (구동되는 중인 서버에서 리로드 시 랙 유발)
3. 잘못 사용할 시, 서버의 아까운 메모리를 낭비할 수 있습니다. (따라서, 사용법을 충분히 숙지 후 사용하는 것이 좋습니다)
자신의 서버에 적절할 지 잘 생각해보면서 넣는 것도 중요하겠죠.
구문 설명
그럼 이제, 이 애드온 구문들의 사용 방법을 알아봅시다
이곳에서는 자주 사용하는, 개발에 필요한 구문들에 대해서만 설명합니다.
이외의 구문들은 skUnity Docs 등을 참고하시기 바랍니다. (검색 시 addon:skript-yaml 입력)
yaml 로드하기
[re]load [(1?non[(-| )]relative)] [y[a]ml] %string% [as %-string%]
ex) load yaml "plugins/Skript/SKdatabase/test.yml" as "test"
저장된 (저장되지 않았더라도) yaml 파일을 메모리에 등록합니다.
load yaml 으로 사용하시면 됩니다 (yaml을 생략 가능하지만, 비추천)
as %string% 으로 이 yaml의 ID를 지정할 수 있습니다.
지정된 ID는 이후 코드를 작성할 때 파일 경로 대신 삽입하여 코드를 가볍게 만들 수 있습니다.
yaml 언로드하기
unload [y[a]ml] %string%
ex) unload yaml "plugins/Skript/SKdatabase/test.yml"
ex) unload yaml
메모리에 로드된 yaml 파일을 언로드합니다.
로드된 yaml은 계속해서 메모리를 잡아먹기에, 다 쓰고 필요 없을 때 언로드시켜주시면 됩니다.
로드된 모든 yaml을 언로드할 땐, unload yaml 만 써 주시면 됩니다
yaml 저장하기
save [y[a]ml] %string% [(1?without extra lines between nodes)]
ex) save yaml "test"
로드된 yaml 파일의 변경 사항을 파일로 저장합니다.
이 때, 파일이 존재하지 않을 경우 파일을 새로 만듭니다.
로드 후 언로드만으로는 변경사항이 저장되지 않습니다.
파일에 변경 사항이 생겼다면 이 코드로 저장하면 됩니다.
%string%에 로드 시 지정한 yaml의 ID를 삽입해도 됩니다.
중요 yaml 의 값을 변수로 저장하기
set %objects% to [y[a]ml] value %string% from %string%
ex) set {_test} to yaml value "ymltest" from "test"
yaml에서의 값을 %object%에 저장합니다.
yaml value는 파일 내에서 ymltest: 1 중 앞, "ymltest"를 의미합니다 (어떻게 설명해야 할 지 모르겠네요...)
from 뒤 %string%에 로드 시 지정한 yaml의 ID를 삽입해도 됩니다.
위의 예제 구문을 보시면 이해되실 겁니다.
이 구문이 skript-yaml 애드온 사용의 핵심이라고 보시면 됩니다.
yaml 의 로드 여부 확인하기
y[a]ml[s] %strings% (is|are) loaded
y[a]ml[s] %strings% ((are|is) not|(is|are)n[']t) loaded
ex) if yaml "test" is loaded:
yaml 파일이 로드되었는지 확인합니다.
로드가 안 되었을 때 에러를 일으킬 것에 대비할 수 있습니다.
마치며
이제 우리는 skript-yaml 애드온의 기능과 장단점, 개발에 쓰이는 구문들에 대해 알게 되었습니다.
skript-yaml 을 이용하여 서버 제작에 도움이 되었으면 합니다!
지금까지 Myeongyevillain이었습니다.
미숙한 강좌 읽어주셔서 감사합니다!
댓글이 없습니다.
새로운 댓글을 등록해 주세요!