개인 자료란 (JE)

  서버 커뮤니티

Profile NBSuL 대표칭호 없음
Profile

강좌 자바 에디션(JE) 플러그인 개발

불가능을 뚫고 Skript에서 DB를 사용하는 법 [1]

2020.09.21 조회 수 2289 추천 수 1
분야 스크립트 
게임버전 모든버전 

저는 스크립트를 사용하면서 모든 데이터를 콘피그를 이용해서 한개 또는 여러개의 csv 파일에 모두 저장하고 불러오는 것을 굉장히 좋지 않다고 생각합니다.


또한 실제로 상당 부분의 은 그로 인해서 발생하죠. (-> 주기를 가지는 렉)


만약 스크립트로 인해 발생하는 렉을 최소화하고 싶으신 분들께 저는 DB를 사용해 보는 것을 추천드립니다.




아무튼 위의 이유로 저는 스크립트로 DB를 사용하는 것이 좋은 선택이라고 생각합니다. (config 제외)


그럼 여러분들은 스크립트로 DB를 사용해보려고 시도해보신 적이 있으신가요? 



만약 그렇다면 Skript로 DB를 사용하려면 Skellett / skript-db 애드온 밖에는 선택지가 없단 사실을 알 것입니다.


하지만 안타깝게도 Skript에서 DB를 쓸 수 있는 희망이란 남아있지 않는 것인지, 저희에게 돌아오는 것은 굉장히 처참한 사실뿐입니다.



(Skellett 업데이트 내역 중 )


Skellett은 코드가 너무 낡아서 개발자가 지원 중단을 선언하였습니다.


(skript-db 리뷰 중)


skript-db는 최근의 평가들을 보면 알듯이 버그가 존재하는 상황입니다.





이런.. 안타깝게도 저희에게 있던 두개의 희망은 정말로 모두 날아가버렸군요..


그럼 Skript에서 DB를 쓰는 것은 불가능한 염원인걸까요?






아닙니다.


위와같은 이유로, 대부분이 스크립트에서 DB를 쓰는 것은 힘들다고 생각들을 합니다.  (물론 엄청나게 번거로운 방법을 이용해서 사용을 할 수는 있습니다.)


하지만 이에 대한 해결책이 있습니다.


그것은 고장나버린 skript-db에 skript-mirror을 활용해 고장난 부분을 고쳐주는 것입니다.


현재 skript-db에서 문제가 되는 부분은 Skript가 업데이트 되면서, 쿼리를 async로 처리하는 과정에 모든 임시변수의 값을 초기화시켜버리는 아주 심각한 문제입니다.



문제가 되는 코드 예제:

set {_testVar} to "String for test"

execute "SELECT 'money' FROM 'vault' WHERE 'uuid' = %player's uuid% LIMIT 1" in {db} and store result in {_result::*}

broadcast "%{_testVar}%"    // <none>   

broadcast "%{_result::money::1}%"    // <none>





하지만 우리는 해당 문제를 skript-mirror를 활용해서 고쳐줄 수 있습니다.


아래와 같이 하면 해결가능합니다.



CODE:

effect get %player%['s] money:

  trigger:

    await 0.toString()

    execute "SELECT 'money' FROM 'vault' WHERE 'uuid' = %expr-1's uuid% LIMIT 1" in {db} and store result in {_result::*}

    broadcast "%{_result::money::1}%"




혹시나 skript-db의 사용법을 모르신다면, 아래 링크를 참조하세요. 

(+skript-db는 기본적으로 SQL Injection공격을 막아줍니다.)

https://github.com/btk5h/skript-db



Warning
댓글이 없습니다.

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

뉴스 및 창작물
/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1

/files/thumbnails/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240428135129

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0