Dr_Romantic 47b10a506ea44415a8bd3b4fb28197d6
자료 자바 에디션(JE) 플러그인 트리거
[Trigger Reactor] :: 오프라인 상태인 플레이어의 인벤토리를 열어보자! - OfflineInv System
장르 | 서버 관리자 툴, 그 외에 장르 |
---|---|
게임버전 | 모든버전 |
원산지 | 국산 |
개발자 | Pro_Snape |
저작권 | <Copyright 2019. Pro_Snape. All Rights Reserved.> |
자료 출처 | http://현재 글 |
오프라인 인벤토리 시스템
Simple Broadcasting System
ㆍ Trigger Reactor v2.1.8 이상
ㆍ MySQL 데이터베이스 솔루션
저는 기존 Essentials 플러그인의 /invsee 명령어를 사용하면서 꽤나 불편함을 느꼈습니다.
플레이어가 접속 중일 때만 해당 명령어를 사용할 수 있었기 때문이죠.
이 시스템은 /invsee, 즉 타 플레이어의 인벤토리를 보고, 수정할 수 있는 기능을
해당 플레이어가 오프라인일 경우에도 사용할 수 있도록 보완합니다.
다만, 이 시스템은 플레이어의 인벤토리를 저장하여 보여주는 방식이기 때문에,
플레이어의 인벤토리를 저장할 수 있는 저장소, 즉 데이터베이스가 필요합니다.
저는 이를 위해 TR에서 기본적으로 지원하는 MySQL 데이터베이스를 사용하도록 구문을 제작했으며,
이에 따라 사용자분은 MySQL의 기초적인 기능을 다루실 수 있어야 합니다.
[다만, 필요하신 경우, 저에게 개인적으로 연락하시면 전역변수를 기반으로 하도록 시스템을 변경해드릴 수 있습니다]
[Discord: professer_snape#8640
Gmail: [email protected] ]
ㆍ/inv <닉네임> - 해당 플레이어의 인벤토리를 열람하고 수정합니다. [ 펄미션 노드: inv.command ]
[ CraftBukkit, Spigot, PaperSpigot ]
① ../plugins/TriggerReactor/ 폴더로 이동합니다.
② 다운로드한 파일의 압축을 풉니다.
③ 다운로드한 파일 내부의 폴더와 동일한 이름을 가진 폴더에 맞게 .trg 파일을 넣습니다.
④ MySQL 데이터베이스를 설치하고 세팅을 완료합니다.
[ APMSETUP 프로그램을 함께 첨부하도록 하겠습니다 ]
⑤ MySQL 데이터베이스에 triggerreactor 이라는 이름의 데이터베이스를 생성합니다.
⑥ config.yml 파일에서 MySQL 설정을 완료합니다.
⑦ 서버를 리로드하거나, /trg reload 커맨드를 통해 트리거를 로드합니다.
[ Sponge ]
이 트리거는 스폰지 버킷을 지원하지 않습니다.
특정 플레이어의 인벤토리를 열었을 때
특정 플레이어의 인벤토리를 열었다가 닫았을 때
명령어의 사용법이 잘못되었을 때
입력한 닉네임의 플레이어가 아직 접속한 이력이 없을 때,
입력한 닉네임의 플레이어가 온라인일 때,
오프라인 인벤토리 시스템 다운로드
OfflineInv System.zip |
APMSETUP 다운로드
APMSETUP.zip https://nittaku.tistory.com/375 관련 강좌글입니다. 설치 후, phpmyadmin을 통한 수정이 간편하며 좋습니다. |
[ 중요 ] Trigger Reactor 다운로드
https://github.com/wysohn/TriggerReactor/releases
다운로드 시에 1.5.2 ~ 1.12.2 버전은 legacy 버전을, 1.13 이상의 버전은 latest 버전을 사용해 주시기 바랍니다. |
Dr_Romantic
2019.12.26[ 오류 발견 - 인벤토리 수정 중 플레이어가 접속한 경우의 예외처리 불완전 - 구문 추가할 것]
mySQL_inv_load.trg
//ERROR FIX2 - Player can join while someone is editin'.
FOR p = getPlayers()
n = {p.getName() +".openingInv"}
IF n = event.getPlayer().getName().toLowerCase()
{p.getName() +".openingInv"} = null
{p.getName() +".invCloseForced"} = true
p.closeInventory()
#CONTINUE
ENDIF
ENDFOR
Dr_Romantic
2019.12.27수정 완료.
Dr_Romantic
2019.12.26[ 상기한 예외 처리를 위한 오류메시지 출력 - 구문 추가할 것 ]
inv.trg
//RELATED TO ERROR FIX2 OF load clsss.
IF {event.getPlayer().getName()+".invCloseForced"}
event.getPlayer().sendMessage(color("&c오류: 인벤토리 수정사항을 데이터베이스에 저장하지 못했습니다:"))
event.getPlayer().sendMessage(color("&인벤토리 수정 도중, 플레이어가 접속하였습니다."))
#STOP
ENDIF
Dr_Romantic
2019.12.27수정 완료.
DDang_
2020.01.12openinv 플러그인이 있죠
Dr_Romantic
2020.01.14이건 플러그인이 아닌, 트리거 리엑터의 시스템으로 만든 구문입니다. 해당 내용을 언급하신 이유가 뭔가요?
DDang_
2020.01.20아 앞에 비슷한 기능으로 가 생략되었네요; 죄송합니다
467
2020.01.20오.. 좋은 시스템이네요! 잘쓰겠습니다!
징크
2020.03.25잘쓰겠습니다!