개인 자료란 (JE)

  서버 커뮤니티

Profile 명이나물 대표칭호 없음
Profile

스크립트 개발 팁

변수를 줄여보자! ( skript-yaml 애드온 )

2020.09.23 조회 수 2323 추천 수 3

안녕하세요!

앞으로 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로 지정됩니다.

6305b7e90a0b438051eec7a468e7f3d8.JPG

저장 경로에 들어가보면, 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이었습니다.

미숙한 강좌 읽어주셔서 감사합니다!

Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!

뉴스 및 창작물
/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1

/files/thumbnails/932/765/003/262x150.crop.jpg?20240410124459

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

노트블럭전문가

2024-04-10

0

/files/thumbnails/403/765/003/262x150.crop.jpg?20240409190538

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

Sonttukk

2024-04-09

4