개인 자료란 (JE)

  서버 커뮤니티

Profile NBSuL 대표칭호 없음
Profile

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

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

2020.09.21 조회 수 2505 추천 수 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/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

1

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 5

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3

/files/thumbnails/839/895/003/262x150.crop.jpg?20241006021227

SRV레코드는 보안도메인이 아닙니다. [서버오픈시 필독]

물귀신

2024-10-05

4