강좌 자바 에디션(JE) 플러그인 개발
[ 부록 ] 너도하고 나도하는 Skript : 변수를 MariaDB에 저장하자! ( #2 ) ( 데이터 주의 )
분야 | 스크립트 |
---|---|
게임버전 | 1.12.x |
데이터베이스 같은 경우는 필자가 정확한 지식으로 배우지 않고, 몸으로 부딪히며 얻은 지식입니다.
틀린 내용이 존재할 수 있으니 유의하고 봐주시길 바랍니다.
( 피드백 및 오타 지적은 환영입니다. )
1. 준비물
SQLibrary 플러그인 : set {TEST} to "TEST"
와 같은 구문을 쿼리 없이 DB에 저장시키실려면 사용하시면 됩니다.
Skellett 플러그인 : 쿼리문을 사용하실려면 사용하시면됩니다.
1.9.6B 버전으로 다운하셔야합니다.
SQLibrary 를 사용하실분은 2번을 보시면됩니다.
Skellett를 사용하실분은 3번을 보시면됩니다.
2. SQLibrary 사용
Skript 폴더의 Config.sk 파일을 수정하겠습니다.
스크롤을 내리시다보면 Variables 구역이 나오게됩니다. 못찾으시겠으면 ( database: ) 검색하시면 됩니다.
빨간 줄로 하이라이트된 부분만 수정하겠습니다.
먼저 Skript에 MySQL을 쓸거라고 말해주어야하기에 type: MySQL을 써주겠습니다.
두번째인 pattern 옵션은 저장할 변수를 정의(?) 한다고 보시면 됩니다.
만약 .*
을 사용할시 모든 변수를 데이터베이스에 저장하는것이고, db_.*
을 사용할시 db_. 으로 시작하는 모든 변수를 데이터 베이스에 저장하는것이지요.
저는 기본값으로 놓겠습니다.
설치 과정에서 아무것도 건들이지 않으셨다면 password 만 설치할때 쓴 암호로 입력해주시면됩니다.
데이터 베이스와 테이블의 이름을 변경하실분은 변경하시면됩니다.
저는 기본값으로 두겠습니다.
이제 HeidiSQL로 들어와서 데이터베이스를 생성해주겠습니다.
데이터베이스들이 모여있는 공간을 우클릭 한뒤, 새로 생성 > 데이터베이스를 클릭해줍니다.
아래와 같은 화면이 뜨면 이름을 Skript로 변경해줍니다. (Config에서 database를 변경한 경우 그 이름을 써주시면 됩니다.)
이렇게 설정을 맞추신뒤 서버를 실행시키시면 자동으로 테이블이 생성되면서 연동이 완료되었습니다.
구문을 제작하겠습니다.
on load: set {TEST} to "테스트입니다" broadcast {TEST} command /TEST: trigger: broadcast {TEST}
위와 같은 구문을 실행해보겠습니다.
위와 같이 CSV에 저장되지 않고 MySQL에 저장되는것을 확인 하실 수 있습니다.
3. Skellett 사용
Skellett 폴더의 MySQL.YML 파일입니다.
아래와 같이 변경하면됩니다.
MySQL: true
PASSWORD 에는 자신의 비밀번호를 입력해주세요
DATABASE 에는 skript를 입력해주세요.
데이터 베이스를 생성하겠습니다.
데이터 베이스의 이름은 Skript로 지정해주겠습니다.
스크립트 구문을 작성하겠습니다.
on load: set mysql host to "localhost" set mysql port to 3306 set mysql username to "root" set mysql database to "skript" connect to mysql mysql update "CREATE TABLE IF NOT EXISTS skript_1 (TEXT varchar(10))" mysql update "UPDATE skript_1 SET TEXT = 'te1st'" command /TEST: trigger: set {_result} to mysql result of query "SELECT * FROM skript_1" set {_am::*} to mysql object "TEXT" in {_result} broadcast "%{_am::*}%"
위 구문을 실행해보겠습니다.
정상작동하는것을 확인할 수 있습니다!
이번 강좌글이 가장 어려웠습니다.
쿼리문 중 간단한건 제가 설명하겠지만, 대부분은 인터넷 참고하셔야 좋을꺼같습니다.
JSD-ITHAN
2020.01.22강좌 잘 보고 갑니다!
MinsooM2
2020.02.23감사합니다.
아이스틴
2020.01.22좋은 강좌 감사합니다~
MinsooM2
2020.02.23읽어주셔서 감사합니다 :)
HELLO!
2020.02.03강좌 앞으로 기대되네요
MinsooM2
2020.02.23기대하지마십쇼.. 들쑥날쑥입니다..
윈초
2020.02.07감사해용~
MinsooM2
2020.02.23봐주셔서 감사합니다.
윈초
2020.02.23어렵네여.. 저는
시듀아
2020.02.19이 방법을 이용해서 마크 서버 전적 사이트를 만들겠습니당..
MinsooM2
2020.02.23기대하겠습니다!
qsef1256
2020.05.17HeidiSQL에서 value를 안 깨지게 하는 방법이 있나요? 직접 값을 봐야 하는데 다 깨져서 볼 수가 없네요..
MinsooM2
2020.06.19직접 값을 보실려면 쿼리문으로 저장하시고 가져오셔야합니다.
스크립트는 데이터를 저장할때 난독화 비스무리 하게 해서 저장하더군요.
ASSERVER
2020.12.04따로 저장할 변수를 추가하려면 database: 밑에 있는 것들을 하나 더 만들어줘야 하나요?
리곤(Lee_gon)
2021.05.13위와 관련된거에 관련해서 질문이 있는데 혹시 개인 디스코드 가능하실까요..?
MinsooM2
2021.06.07민수#5264 입니다
굿럭
2021.07.06변수는 저장이 되는데 서버를 끄고 다시 켰을때 서버접속이 안돼요.... ㅠ