[] : 반드시 써야 하는 것
<> : 써도 되고, 안 써도 되는 것
클릭/바닥/에리어 위치 설정 : 뼈다귀
-일반 명령어-
/VT : 일반 명령어에 대한 헬프 창을 연다.
/VT SETLOC [오브젝트명] [변수명] : 현재의 위치와 방향의 값을 가진 변수를 생성한다.
/VT DELOBJ [오브젝트명] : 오브젝트를 지운다.
/VT RUN [파일명]:[스크립트명] <플레이어명> : 플러그인 폴더에 저장된 스크립트를 작동시킨다.
플레이어명 생략시, 자기 자신이 타겟으로 결정된다.
(스크립트가 적용되는 위치 : 플레이어가 서 있는 위치)
/VT SAVETRIGGERS : 현재까지 지정했던 모든 트리거들의 정보를 저장한다.
/VT RELOADTRIGGERS :트리거 플러그인을 재시작 시킨다.
/VT AUTOSAVE : 트리거 플러그인의 정보가 매 시간마다 저장되도록 한다.
시간 설정은 따로 YML파일 수정을 통해 할 수 있다.
/VT DELVAR [i/s/b] [오브젝트명] [변수명] : 변수를 지운다.
앞에 위치한 i, s, b는 각각 integer[정수], string[문자열], boolean[이진수]를 나타낸다.
-클릭/바닥 명령어-
* 우클릭을 한 번만 할 경우 : 트리거 생성 위치
* 우클릭을 두 번 할 겅우 : 첫 번째 우 클릭 : 스크립트 작동 위치 두 번째 우클릭 : 트리거 생성 위치
[클릭 명령어]
/VTC [스크립트] : 해당 위치를 건드릴 때 작동되는 트리거의 스크립트를 추가한다.
/VTCV <페이지> : 해당 위치의 트리거가 어떤 것인지 확인한다.
/VTCR : 해당 위치의 트리거를 제거한다.
/VTCE [수정할 스크립트 번호] [스크립트] : 해당 위치의 트리거가 가진 스크립트를 수정한다.
[바닥 명령어]
/VTW [스크립트] : 해당 위치를 밟았을 때 작동하는 트리거의 스크립트를 추가한다.
/VTWV <페이지> : 해당 위치의 트리거가 어떤 것인지 확인한다.
/VTWR : 해당 위치의 워크트리거를 제거한다.
/VTWE [수정할 스크립트 번호] [스크립트] : 해당 위치의 트리거가 가진 스크립트를 수정한다.
-에리어 명령어-
/VT SETAREA : 에리어의 범위를 지정한다.
/VT DEFINEAREA [에리어명] : 뼈다귀로 지정한 공간을 에리어 이름을 가진 트리거로 설정한다.
/VT GETAREA : 현재 자신이 있는 지역에 어떤 트리거가 있는지 확인한다.
/VTA[에리어명] [ENTER/EXIT] [스크립트] : 에리어에 들어오고 나갈 때 작동하는 트리거의 스크립트를 추가한다.
/VTAV [에리어명] [ENTER/EXIT] <페이지> : 에리어 트리거의 정보를 확인한다.
/VTAE [에리어명] [ENTER/EXIT] [수정할 스크립트 번호] [스크립트] : 해당 에리어 트리거의 스크립트를 수정한다.
/VTAR [에리어명] [ENTER/EXIT] : 에리어 트리거를 제거한다.
단, enter과 exit 모두 제거해야만 에리어가 완전히 제거된다.
/VT AREALIST <월드명> <에리어명> : 에리어 트리거 목록을 본다.
-이벤트 명령어-
/VTE [이벤트명] [스크립트] : 이벤트가 발생할 경우에 작동하는 트리거의 스크립트를 추가한다.
/VTEV [이벤트명] <페이지> : 설정한 이벤트 트리거의 정보를 확인한다.
/VTEE [이벤트명] [수정할 스크립트 번호] [스크립트] : 해당 이벤트의 스크립트를 수정한다.
/VTER [이벤트명] : 해당 이벤트 트리거를 제거한다.
/VTCLEAR : 모든 이벤트 트리거를 제거한다.
PlayerDeath : 플레이어가 죽었을때 스크립트를 실행합니다.
EntityDeath : 엔티티가 죽었을때 스크립트를 실행합니다.
BlockBreak : 블록이 부서졌을때 스크립트를 실행합니다.
BlockPlaced : 블록이 설치되었을때 스크립트를 실행합니다.
Respawn : 플레이어가 리스폰 하였을때 스크립트를 실행합니다.
Join : 플레이어가 로그인 하였을때 스크립트를 실행합니다.
Quit : 플레이어가 로그아웃 하였을때 스크립트를 실행합니다.
Interact : 플레이어나, 몬스터, 심지어 Citizen 플러그인으로 생성한 NPC를 우클릭하였을때, 스크립트를 실행합니다.
EntitySpawn : 엔티티가 스폰되었을때 스크립트를 실행합니다.
Chat : 채팅을 할 때 스크립트를 실행합니다.
Timer : 지정된 타이머가 돌아가면, 스크립트가 작동이 됩니다.
-커맨드 명령어-
/VTCMD [커맨드명] [스크립트] : 커맨드 트리거의 스크립트를 추가한다.
/VTCMDO [커맨드명] [TRUE/FALSE] : 기존에 있던 명령어를 대체할 지 말 지 설정한다.
대체(TRUE)하게 되면, Unknown Command 라고 뜨지 않게 된다.
ture : 기존에 있던 커맨드를 커맨드 트리거로 대체한다.
false : 커맨드 트리거로 대체하지 않는다.
/VTCMDP [커맨드명] [펄미션.노드/REMOVE] : 펄미션 노드가 있어야 커맨드를 칠 수 있다.
(펄미션 노드를 공백으로 입력하면 아무나 사용할 수 있다.)
예) /VTCMDP TEST Tigger.cmd
=> Tigger.cmd노드가 있는 사람만 TEST 커맨드를 칠 수 있다.
/VTCMDR [커맨드명] : 커맨드 트리거를 제거한다.
/VTMDV [커맨드명] <페이지> : 커맨드 트리거의 정보를 본다.
/VTCMDE [커맨드명] [수정할 스크립트 번호] [스크립트] : 커맨드 트리거를 수정한다.
/VTCMDLIST <필터링 할 단어> : 커맨드 트리거의 리스트를 본다.
-플러그인 노드-
vtriggers.admin : 이 플러그인의 모든 것을 창작, 이용할 수 있는 권한
vtriggers.player : 이 플러그인의 모든것을 이용할 수 있는 권한
-Config 설명-
AutoSaveInterval : 18
자동 플러그인 세이브가 되는 시간 (초 단위)
AutoSaveDisplay : true
자동 플러그인 세이브를 할 때 세이브 메시지 표시 여부(true/false)
MaxBackups : 30
백업의 최대 수 (최대 수를 넘어가면 이전 백업은 사라짐)
OnlyUseBukkitSuperPerms : false
버킷 슈퍼 펄미션을 가진 사람만 사용 가능 여부 (true/false)
TeleportOp : true
텔레포트를 사용할 때 OP권한으로 사용 여부 (true/false)
-스크립트 커맨드-
@QUITE [플레이어명] [시간초]
플레이어를 해당 시간동안 아무런 채팅도 보이지 않게 한다.
지속시간은 소수 첫 번째 단위까지 가능하다.
@BROADCAST [메시지]
서버 전체에 메시지를 보낸다.
@PLAYER [메시지]
트리거를 작동시킨 사람에게만 메시지를 보낸다.
@TELL [플레이어명] [메시지]
[플레이어명]에게 메시지를 보낸다.
@EXIT
진행중인 트리거를 종료하여 다음 구문으로 넘어가지 않게 한다.
@PAUSE [시간초]
다음 스크립트로 가기까지의 시간을 설정한다.
@CALL [파일명]:[스크립트명]
플러그인 폴더에 저장한 스크립트를 불러온다.
@COOLDOWN [시간초]
트리거가 끝난 후, 한번 더 실행 시키는데 걸리는 시간을 설정한다.
@CMD [커맨드]
현재 플레이어의 등급으로 사용할 수 있는 커맨드를 작동시킨다.(커맨드에 /는 붙이지 않는다.)
@CMDOP[커맨드]
사용자의 권한이 OP로 승격된 후 커맨드를 작동 시킨다.
작동 후 다시 원래 등급으로 돌아온다.
@CMDCON [커맨드]
해당 커맨드를 사용하는 사람이 콘솔로 바뀐다.
@TOGGLEBLOCK [블럭ID] <장소>
블럭을 나타나게 하거나, 없어지게 한다.
@SETBLOCK [블럭ID] <장소>
블럭을 나타나게 하고, 없어지지는 않는다.
@GETBLOCK [변수명] <장소>
해당 장소에 위치한 블록 ID를 변수에 담는다.
@SMOKE [사이즈] <장소>
입력한 사이즈의 연기를 피운다.
@FLAMES [사이즈] <장소>
불을 피운다.
@POOF [사이즈] [장소]
연기를 퍼지게 한다.
@TP <장소>
해당 장소로 텔레포트 시킨다.
@LIGHTNING [데미지여부 TRUE/FALSE] <장소>
번개를 내린다.
@ENTITY [ENTITY이름] [수] <장소>
ENTITY를 정해진 수만큼 소환한다.
@DROPITEM [아이템이름] [갯수] <인첸트> <장소>
아이템을 출현시킨다.
EX) @DROPITEM Iron_Sword 1 Sharpness:2,BaneOfArthropods:1 <triggerloc>
아이템 출현 철검 한개 날카로움2, 살충1 트리거위치
@DROPITEM Dirt 1 NONE 231,65,-122
아이템 출현 흙 한개 인챈없이 231,65,-122 장소에 출현
@GETENTITYCOUNT [변수명] [ENTITY이름] [범위]
변수에 범위 내에 있는 ENTITY들의 수를 기록한다.
@GETLIGHT [변수명] <장소>
변수에 밝기를 기록한다.
@SIGNTEXT <장소> [수정할 라인의 숫자] [메시지]
표지판의 내용을 수정한다.
@LOOP
반복 시작
@ENDLOOP
반복의 끝점. (끝나면 다시 처음으로)
@BREAKLOOP
반복 종료
@SOUND [소리] <장소>
소리를 출력시킨다.
@SOUNDEX [소리] [소리크기] [소리빠르기] <장소>
옵션 설정을 가능한 소리를 낸다. 소리크기는 0.0 ~ 1.0 소리빠르기는 0.5 ~ 2.0
(소리가 너무 많아서, SOUND와 SOUNDEX 소리는, 따로 부록에 소리 목록이 나와있습니다.)
@WHILE [i, b, s, si] [변수] [=, !=, >, <, >=, <=] [변수]
만일 ~ 할때 란 뜻을 나타냅니다.
@ENDWHILE
WHILE구문을 종료합니다.
@TELL [플레이어 이름] [할말]
플레이어에게 귓속말을 합니다. [1.7.2]
@FIREWORK [색깔] [타입] <장소>
폭죽을 터뜨립니다. [1.7.2]
색 : red, blue, aqua, black, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, silver, teal, white, yellow, random
타입 : ball(구형) ball_large(큰 구형) burst(반짝이) creeper(크리퍼) star(별모양) random(랜덤)
EX) @FIREWORK red burst <playerloc>
폭죽발사 빨강 폭발형 플레이어의 위치
@PARTICLE [물질] <장소>
파티클 이펙트를 나타냅니다. [1.7.4]
EX) @PARTICLE cobblestone <playerloc>
파티클형성 코블스톤 플레이어의 위치
@FALLINGBLOCK [블록] <장소>
모래처럼 중력을 가진 블록을 지정 장소에 만들어 냅니다. [1.7.4]
EX) @FALLINGBLOCK cobblestone <relativeloc:<playerloc>:0,5,0>
블록 강하 조약돌 플레이어의 위치로부터 5높이 위에
@SETBLOCKSAFE [블록] <장소>
이것은 단순히 Spigot유저(공기 유저(블럭을 통과하는 유저))들에게의 SETBLOCK이라고 보면 됩니다.. [1.7.4]
@WORLDTP [플레이어이름] [월드이름]
해당 플레이어를 다른 월드로 이동 시킵니다. [1.7.4]
@CLEARCHAT [플레이어이름]
해당 플레이어의 대화창만 지워버립니다. [1.7.4]
@PRINT [단어]
콘솔에게 해당 명령을 내립니다. [1.7.4]
@PARTICLE [물질] <장소>
파티클 이펙트를 나타냅니다. [1.7.4]
@SWITCH [i/s/b] [변수]
IF와 비슷하지만,
해당 변수 속에 @CASE안의 것이 있는가 확인합니다.
IF문처럼, 끝에는 @ENDSWITCH가 반드시 써 져야 합니다. [1.7.4]
@CASE [바꿀 단어]
@SWITCH의 표적이 된 변수 속에 @CASE안에 있는 단어가 들어 있다면, 아래 구문으로 넘어갑니다. [1.7.4]
EX)
@SWITCH s $TEST.test
만일 $TEST.test라는 문자열 변수안에
@CASE 떡볶이
떡볶이라는 값이 저장되어 있을 때,
@PLAYER 변수값은 떡볶이 입니다!
떡볶이라고 말해 줍시다.
@CASE 만두 순대 호빵 떡
만두 혹은 순대 혹은 호빵 혹은 떡 중 하나가 저장되어 있다면,
@PLAYER 변수값은 만두/순대/호빵/떡 중 하나입니다!
4가지 경우라고 말해 줍시다.
@ENDSWITCH
SWITCH구문을 종료합니다.
@MODIFYPLAYER [플레이어이름] [권한 종류] [값]
이번 패치의 꽃! 모디피 플레이어! 플레이어에게 많은 제한을 겁니다! [1.7.4]
[권한 종류]
HEALTH : 플레이어의 생명력. (정수값 표현)
FOOD : 플레이어의 배고픔. (정수값 표현)
SATURATION number
EXP and XP : 플레이어의 XP(인챈트 경험치) (정수값 표현)
WALKSPEED : 플레이어의 이동 속도. (1을 넘어가면 무지무지 단무지 빨라짐. 고로 약간 빠르게 걷게 하려면 0.2의 값이 적당하다.) (정수값 표현)
FLYSPEED : 플레이어의 나는 속도. (1을 넘어가면 무우구웅화 사암처언리이 빨라짐. 고로 약간 빠르게 날게 하려면 0.2의 값이 적당하다.) (정수값 표현)
DISPLAYNAME : 플레이어의 보여지는(채팅창)이름을 수정 가능하며, 칼라코드를 사용할 수 있다. (문자열 표현)
LISTNAME : 플레이어의 보여지는(TAB눌렸을 때 뜨는 리스트창)이름을 수정 가능하며, 칼라코드를 사용할 수 있다. (문자열 표현)
FLYING : 날기 여부 (이진수 표현)
GAMEMODE : 게임모드를 변경한다. (문자열 표현) (creative, survival, adventure)
MAXHEALTH : 플레이어의 최대 체력 (정수값 표현)
HELDITEM : 플레이어가 잡고있는 아이템 이름. (문자열 표현)
HELDITEM:MATERIAL : 플레이어가 잡고있는 아이템의 타입 (문자열 표현) (ID와 DATA값이 뜬다.)
HELDITEM:ID : 플레이어가 잡고있는 아이템의 ID값 (문자열 표현)
HELDITEM:META : 플레이어가 잡고있는 아이템의 DATA값 (정수값 표현)
HELDITEM:AMOUNT : 플레이어가 잡고있는 아이템의 개수값 (정수값 표현)
HELDITEM:ENCHANT : 플레이어가 잡고있는 아이템에 발린 인챈트 이름 (문자열 표현) (이것은 항상 레벨 1 인챈트로 인식 될것입니다.)
HELDITEM:DISPLAYNAME : 플레이어가 잡고있는 아이템의 보여지는 이름 (문자열 표현) (NBTE로 바꾼 이름 같은것)
HELDITEM:LORE:SET : 플레이어가 잡고있는 아이템의 설명을 수정합니다. (문자열 표현)
HELDITEM:LORE:ADD : 플레이어가 잡고있는 아이템의 설명을 추가합니다. (문자열 표현)
HELDITEM:LORE:REMOVE : 플레이어가 잡고있는 아이템의 설명을 모두 지웁니다. (문자열 표현)
HIDDEN : 플레이어가 투명포션을 먹었거나, TAB키를 눌려도 안나오는 숨은 상태 여부를 따집니다. (이진수 표현)
BANNED : 밴처리 여부를 따지며, 어드밴스드 모드가 필요합니다. (이진수 표현)
OPERATOR : 콘솔에 메시지를 넣었는지 여부를 따지며, 어드밴스드 모드가 필요합니다. (이진수 표현)
@FORK
Lex에게 이 스크립트가 있다는 사실을 알리지 마! [1.7.4]
@SETVELOCITY [플레이어 이름] [X값] [Y값] [Z값]
플레이어를 공중이 띄워버립니다. [1.7.4]
EX) @SETVELOCITY <playername> 0 2 0
트리거를 작동시킨 플레이어를 띄운다.
@OPENINV [InventoryTriggers.yml파일 속의 스크립트 이름]
플레이어에게 해당 인벤토리창을 열어줍니다.(ChestCommandsGUI같은 것 일겁니다.) [1.7.4]
@CLOSEINV [플레이어 이름]
플레이어의 인벤토리를 강제로 닫습니다. [1.7.4]
-플레이스 홀더-
일반 플레이스 홀더
<this>
: [문자열] 트리거의 이름이다.
<playername>
: [문자열] 트리거를 작동하는 사람의 이름
<itemid>
: [정수] 손에 들고있는 아이템 ID값
아이템 ID의 Data는 제외된다.
<playerloc>
: [장소] 트리거를 작동하는 사람의 위치
<triggerloc>
: [장소] 트리거의 위치
단, 타이머 이벤트 트리거의 경우 위치값이 없기 때문에 사용하면 위험하다.
<issneaking>
: [이진수] 트리거를 작동하는 사람이 Shift 키를 누르고 있는 경우 true, 아닐 경우 false
<issprinting>
: [이진수] 트리거를 작동하는 사람이 달리는 중일 경우 true, 아닐경우 false
<health>
: [정수] 트리거를 작동하는 사람의 체력
<worldname>
: [문자열] 트리거를 작동하는 사람이 있는 월드
<biome>
: [문자열] 트리거를 작동하는 사람이 있는 바이옴
<gamemode>
: [정수] 트리거를 작동하는 사람의 게임 모드
0-서바이벌 1-크리에이티브 3-어드벤쳐
커맨드 트리거 전용 플레이스 홀더
<cmdname>
: [문자열] 커맨드 트리거의 이름
<cmdargcount>
: [정수] 커맨드 뒤에 입력하는 정수나 문자열의 갯수
스페이스 바로 띄어쓰기를 할 때마다 하나씩 늘어난다.
<cmdline>
: [문자열] 텍스트 라인을 대체
<cmdarg:[숫자]>
: /도움말 마인크래프트 철광석
이라고 쳤을시, <cmdarg:1>은 마인크래프트 가 될 것이며, <cmdarg:2>는 철광석 이 될 것이다. 즉, 커맨드 이후, 스페이스바 친 후 오는 단어라고 보면 된다.
Player Death / Entity Death 이벤트 트리거 전용 플레이스 홀더
<whodied>
: [문자열] 죽은 사람의 이름
<killedbyplayer>
: [이진수] 죽은사람이 플레이어에게 죽은거라면 true, 아니면 false
<killername>
: [문자열] 죽인 사람이나 entity의 이름이다.
Block Break / Block Placed 이벤트 트리거 전용 플레이스 홀더
<blockid>
: [정수] 설치, 파괴한 블럭의 ID값
파란 양모가 35:11이라는 ID, Data값을 가지고 잇다면, 35를 나타낸다.
<blockdata>
: [정수] 설치, 파괴한 블럭의 데이터 값.
파란 양모가 35:11이라는 ID, Data값을 가지고 있다면, 11을 나타낸다.
<blocktype>
: [문자열] 설치, 파괴한 블록의 타입 값.
파란 양모가 35:11이라는 ID, Data값을 가지고 잇다면, 35:11을 전부 나타낸다.
Interact / Entity Spawn 이벤트 트리거 전용 플레이스 홀더
<entitytype>
: [문자열] 상호작용 하거나, 스폰한 entity의 이름을 뜻한다.
<entityname>
: [문자열] 상호작용한 entity의 직업이나 이름을 뜻한다.
플레이어의 경우 아이디가, 주민들의 경우 FARMER같은 직업이 뜬다.
Chat 이벤트 트리거 전용 플레이스 홀더
<chatline>
: [문자열] 채팅을 쳤을 때 모든 줄을 반영한다.
<chatwordcount>
: [정수] 채팅을 쳤을 때 단어들의 수를 반영한다.
예) 나는 지금 컴퓨터를 하고 있다. => <chatwordcount> = 5
에리어 트리거 전용 플레이스 홀더
<areaentered>
: [문자열] 에리어 트리거의 이름을 뜻한다.
단, 에리어로 들어갈 때만 이름값이 지정된다.
<areaexited>
: [문자열] 에리어에서 나갈 때만 이름값이 지정된다.
일반기능 플레이스 홀더
<haspermission:펼미션노드>
: [이진수] 해당 노드를 가지고 있는 지의 여부
있으면 true, 없으면 false
<haspotioneffect:포션이펙트>
: [이진수] 해당 포션 이펙트를 가지고 있는 지의 여부
있으면 true, 없으면 faslse
<currentloc:플레이어이름>
: [좌표 or 문자열] 해당 플레이어의 좌표를 조사한다.
플레이어가 오프라인이면 null
<random0to:정수>
: 0부터 정수까지의 수 중 임의의 하나를 지정한다.
<random1to:정수>
: 1부터 정수까지의 수 중 임의의 하나를 지정한다.
<health:>
: [정수] 플레이어의 현재 체력을 나타낸다.
<issneaking:>
: [이진수] 트리거를 작동하는 사람이 Shift 키를 누르는 중일경우 true, 아닐경우 false
<issprinting:>
: [이진수] 트리거를 작동하는 사람이 달리는 중일 경우 true, 아닐 경우 false
<totalexp:플레이어명>
: [정수] 플레이어의 경험치를 나타낸다.
이름을 안 쓰면 트리거를 작동한 사람을 대상으로 지정된다.
<relativeloc:좌표1:좌표2>
: [좌표] 좌표1과 좌표2의 사잇값을 나타낸다.
<distance:좌표1:좌표2>
: [정수] 좌표1과 좌표2의 거리를 나타낸다.
<direction:방향>
: [정수 or 문자열] 방향 값을 나타낸다.
방향 값에 정수를 쓰면 정수로 입력되고, 문자열을 쓰면 문자열로 입력된다.
방향은 0~15가지의 수 중 하나를 선택 할 수 있다.
<secondticks:시간초>
: [정수] 1970년 1월 1일부터 현재까지 얼마만큼의 시간초가 흘렀는지 나타낸다.
시간초에는 음수나 양수, 0을 적을 수 있는데 그만큼 시간초가 감산되어 적용된다.
<getarea:좌표>
: [문자열] 좌표에 있는 에리어 커맨드의 이름을 알아낸다.
<hour:>
: [정수] 마인크래프트 시간
<min:>
: [정수] 마인크래프트 분
<var:변수명>
: [정수 or 이진수 or 문자열] 변수명을 나타낸다.
<hasitem:플레이어명:아이템ID>
: 플레이어의 인벤토리 안에 있는 아이템 ID를 찾는다. (총 수량까지)
만약 아이템이 없다면 return 0.
(예 : @IF i <hasitem:<playername>:1> >= 5)
<takeitem:플레이어명:아이템ID:수량>
: 플레이어의 인벤토리 안에 있는 아이템에 수량이 있다면, 수량만큼 제거한다.
만약, 플레이어가 충분히 가지고 있지 않다면, false로 적용된다.
<giveitem:플레이어명:아이템ID:수량>
: 플레이어에게 아이템을 수량만큼 준다.
<getblocklos:[기능]:[최대거리]>
: 해당 기능을 가지고, 제한된 거리 내에 마우스가 가르키는 블록을 조사한다.
[기능]
LOC : 해당 블록의 좌표값을 출력합니다.
NAME : 해당 블록의 이름을 출력합니다.
TYPE : 해당 블록의 타입을 출력합니다. (ID:DATA)
ID : 해당 블록의 ID값만 출력합니다.
DATA : 해당 블록의 DATA값만 출력합니다.
<helditemname>
: 들고있는 아이템의 기본이름 (CobbleStone/Iron Sword) [1.7.2]
<helditemdisplayname>
: 들고있는 아이템의 보여지는 이름(NBT로 수정한 이름) [1.7.2]
<playersuffix>
: 플레이어의 접미사 [1.7.2]
<playerlistname>
: TAB키를 눌렸을 때 나타나는 플레이어의 이름 [1.7.2]
<playerdisplayname>
: 채팅창에 나타나는 플레이어의 이름 [1.7.2]
<holdingitem:[플레이어이름]:[물건이름]>
: 플레이어가 잡고있는 물건을 판단합니다. [1.7.4]
EX) @IF b <holdingitem:<playername>:cobblestone> = true
만일 플레이어가 조약돌을 들고 있다면
플레이스 홀더 볼트와 이코노미 플러그인 연동
<hasmoney:플레이어명:돈>
: 플레이어가 가지고 있는 돈을 확인한다.
<givemoney:플레이어명:돈>
: 플레이어에게 돈을 준다.
<takemoney:플레이어명:돈>
: 플레이어에게 돈을 뺏는다. 뺏을 만큼 충분한 돈이 있다면 TRUE, 아니라면 FALSE가 된다.
-변수-
변수는 '언제든지 변할 수 있는 수' 이다.
하지만 숫자가 스스로 바뀌면 곤란하기 때문에
$<오브젝트명>.<변수명>
이라는 틀을 정해 주었다.
오브젝트면 : 전체적인 틀
변수 명 : 틀 안의 부가적인 것
이라고 생각하면 쉬울 것 같다.
i = Integer = 정수변수 (기본 값은 0)
b = Boolean = 이진수 변수 (변수값이 True, False 두 개 밖에 없다.)
s = String = 문자열 변수 (문자열 변수는 안에 텍스트 값을 저장한다.)
변수전용 커맨드
@SETINT [변수명] [상수] : 해당 변수명에 상수값을 적용시킨다.
다른수가 있었다면 삭제된다.
@ADDINT [변수명] [상수] : 해당 변수명에 상수값을 더한다.
@SUBINT [변수명] [상수] : 해당 변수명에 상수값을 뺀다.
@MULINT [변수명] [상수] : 해당 변수명에 상수값을 곱한다.
@DIVINT [변수명] [상수] : 해당 변수명에 상수값을 나눈다.
@SETBOOL [변수명] [이진수] : 해당 변수명에 이진수 값을 적용시킨다.
True와 False가 있다.
@SETSTR [변수명] [문자열] : 해당 변수명에 문자열을 적용한다.
@ADDSTR [변수명] [문자열] 해당 변수명에 문자열을 추가한다.
@GETSTRLEN [변수명] [문자열] : 변수명이 가진 문자열의 길이를 숫자로 변환시켜 저장한다.
@DELVAR [i/s/b] [변수명] : 해당 변수를 제거한다.
명령어 EX)
/VTC @SETINT $integer.i 500
/VTC @SETSTR $string.s 독드립
/VTC @PLAYER '<var:$integer.i>명의 <var:$string.s>'
'500명의 독드립'이라고 자신에게만 보이는 메시지가 출력되면 제대로 입력한 것이다.
-조건문-
조건문이란 말 그대로 '조건'을 거는 것이다.
대표적으로 IF가 있으며, 이것을 중심으로 네 개의 스크립트 커맨드가 더 있다.
IF는 '만약'이라는 뜻을 가지고 있고, 스크립트 커맨드의 사용법은 아래와 같다.
@IF [i/s/b] [변수명/문자열/정수/True/False] [=/!=/</>/<=/>=] [변수명/문자열/정수/True/False]
'만약 [i/s/b]의 직업을 가진 [변수값(좌)]가 [변수값(우)]와의 [부등호]가 일치할 때, 밑에잇는 스크립트를 실행한다.'
[i/s/b] : 변수의 직업
[변수명/문자열/정수/True/False] : 변수값
변수의 직업에 따라 입력하는 게 다름.
i : 정수 or 변수
s : 문자열 or 변수
b : True or False or 변수
[=,!=,<,>,<=,>=,?] : 부등호
= : 같음
!= : 다름
< : 오른쪽 큼
> : 왼쪽 큼
<= : 오른쪽이 왼쪽보다 크거나 같음
>= : 왼쪽이 오른쪽보다 크거나 같음
? : 무엇을 담고있는가 체크합니다. [1.7.4]
EX) @IF s $TEST.test ?= 고춧가루
만일 이 변수값에 고춧가루 라는 단어가 들어있다면
IF조건문이 일치한다면 다음 스크립트로 진행하고,
일치하지 않는다면 @ELSE나 @ENDIF 뒤의 스크립트로 넘어간다.
-적용예시-
@SETINT $Dogdripz.var 10
@IF i $Dogdirpz.var = 10
@PLAYER 독드립!!!
@ELSE 캣드립!!!
@ENDIF
이걸 실행해보면 '독드립!!!'가 뜬다.
하지만 여기서 두 번째 줄의 IF조건문을
@IF s $Dogdripz var = 10
으로 바꾼다면 IF 조건문 아래의 스크립트를 실행하지 않고
@ELSE 스크립트를 실행하여 '캣드립!!!'가 뜬다.
이유는,
두 번째 줄의 IF조건문에서는 '문자열'값을 10으로 조건이 걸린 것인데,
첫 번째 줄은 $Dogdripz.var 변수의 '정수'값을 10으로 설정한 것이기 때문이다.
(변수의 정수 값이 10인거지, 문자열 값은 10이 아님)
조건식 추가 커맨드
@IF [i/s/b] [변수명/문자열/정수/True/False] [=/!=/</>/<=/>=] [변수명/문자열/정수/True/False]: 만약
@OR [i/s/b] [변수명/문자열/정수/True/False] [=/!=/</>/<=/>=] [변수명/문자열/정수/True/False]: 또는
IF, OR은 둘 중 하나의 조건만 해당되면 통과
@AND [i/s/b] [변수명/문자열/정수/True/False] [=/!=/</>/<=/>=] [변수명/문자열/정수/True/False]: 그리고
IF, AND는 두 조건이 모두 해당되어야 통과
@ELSE : 나머지
IF, OR, AND 조건에 해당되지 않아서 통과하지 못 할 경우 ELSE 아래의 스크립트를 돌림
@ENDIF : 조건식을 끝냄
주의! @OR과 @AND는 @IF와 사용법이 똑같지만, IF없이는 쓸 수 없다.
적용예시
1.@SETINT $Dogdirpz.A 10
정수 변수의 설정
2.@SETINT $Dogdripz.B 20
정수 변수의 설정
3.@IF i $Dogdripz.A = $Dogdripz.B
첫번째 조건식. A와 B가 같아야 다음 스크립트로 넘어간다.
4.@OR i $Dogdripz.A =5
두번째 조건식. '또는'이란 의미로, A의 변수가 5일 경우에도 다음으로 넘어간다.
5.@PLAYER 카드뮴 짱
조건이 맞을경우 실행한다.
6.@ELSE
조건이 맞지 않을 경우, 아래 스크립트를 실행한다.
7.@PLAYER 독드립 짱
조건이 맞지 않을 경우 실행한다.
8.@ENDIF
조건식을 끝낸다. 아래 부터는 조건식에 구애받지 않고, 무조건 순차적으로 실행된다.
9.@PLAYER 좋다!
조건식의 영향을 받지 않았으므로 무조건 실행한다.
INVENTORY EVENT
인벤토리 이벤트 트리거 추가 설명
인벤토리 클릭 이벤트 트리거는 첫 번째로, 당신이 기본적인 인벤토리 창이 아닌, 다른 인벤토리 창 안에서, 무언가를 클릭하였을 때, 월드 내에 해당 스크립트가 실행되는 것으로 보면 된다.
(ChestCommandGUI와 기능이 같다고 생각하면 된다.)
해당 내용은 EventTriggers콘피그 파일 속에 저장된다.
world:
Inventory:
CoolDown: 0
Script:
- '@IF s <inventorytitle> ?= TELEPORTS'
만일 인벤토리 타이틀 안에 TELEPORTS라는 단어가 포함 되어 있다면
- '@SWITCH i <clickedslot>'
클릭한 슬롯 넘버를 체크합니다.
- '@CASE 0'
0일 경우
- '@CMDOP spawn'
스폰으로 갑니다.
- '@CASE 1'
1일 경우
- '@CMDOP warp <playername> pvp'
해당 플레이어를 PVP장으로 워프 합니다.
- '@CASE 2'
2일 경우
- '@CMDOP warp <playername> minigames'
미니게임장으로 워프 시킵니다.
- '@ENDSWITCH'
SWITCH구문을 종료합니다.
- '@ENDIF'
IF구문을 종료합니다.
인벤토리 만드는 방법 (InventroyTriggers콘피그 내에서)
teleportInventory:
인벤토리 그룹 이름
- 'cancelled: true'
닫기 가능 여부(true/false)
- 'title: TELEPORTS'
해당 인벤토리의 제목(인벤토리 GUI 왼편 위에 뜹니다.)
- 'slots: 9'
인벤토리 칸 수
- 'item: wool, meta: 1, amount: 1, name: 스폰, lore: &a&o스폰으로 갑니다., enchant:
durability, slot: 0'
0번 슬롯에 주황색 양모가 1개 들어 있으며, 아이템의 이름은 ‘스폰’이고, 설명은 스폰으로 갑니다. 라고 적혀 잇으며, 인챈트는 되어있지 않는 슬롯이 생성 된다.
- 'item: wool, meta: 0, amount: 1, name: PVP, lore: &4&oPVP장으로!, enchant: durability,
slot: 1'
1번 슬롯에 흰색 양모가 1개 들어 있으며, 아이템의 이름은 ‘PVP’이고, 설명은 PVP장으로! 라고 적혀 잇으며, 인챈트는 되어있지 않는 슬롯이 생성 된다.
- 'item: wool, meta: 7, amount: 1, name: 미니게임장, &3&o게임 한판 하실래예?
enchant: durability, slot: 2'
2번 슬롯에 회색 양모가 1개 들어 있으며, 아이템의 이름은 ‘미니게임장’이고, 설명은 게임 한판 하실래예? 라고 적혀 잇으며, 인챈트는 되어있지 않는 슬롯이 생성 된다.
[추가 설명]
cancelled : (true/false) - 슬롯 클릭 시, 자동으로 꺼질지 여부를 선택합니다. (FALSE일시, ESC나 E키를 눌려 끔)
title : (문자열) - 인벤토리의 타이틀을 정합니다.(색 코드 적용 가능!)
slots : (정수) - 얼마나 많은 슬롯을 열지 정합니다.(1줄당 9칸이므로 9의 배수로만 써야 합니다. 7, 15치면 에러!)
item : [물건이름], meta: [DATA값], name: [보여질 이름], lore: [보여질 설명(%는 한줄 띄우기)], enchant: [인챈트 이름], slot: [슬롯 번호]
<name, enchant, 그리고 lore 는 옵션이기 때문에 안쳐도 됩니다.>
@SWITCH [i/s/b] [변수]
IF와 비슷하지만,
해당 변수 속에 @CASE안의 것이 있는가 확인합니다.
IF문처럼, 끝에는 @ENDSWITCH가 반드시 써 져야 합니다. [1.7.4]
@CASE [바꿀 단어]
@SWITCH의 표적이 된 변수 속에 @CASE안에 있는 단어가 들어 있다면, 아래 구문으로 넘어갑니다. [1.7.4]
EX)
@SWITCH s $TEST.test
만일 $TEST.test라는 문자열 변수안에
@CASE 떡볶이
떡볶이라는 값이 저장되어 있을 때,
@PLAYER 변수값은 떡볶이 입니다!
떡볶이라고 말해 줍시다.
@CASE 만두 순대 호빵 떡
만두 혹은 순대 혹은 호빵 혹은 떡 중 하나가 저장되어 있다면,
@PLAYER 변수값은 만두/순대/호빵/떡 중 하나입니다!
4가지 경우라고 말해 줍시다.
@ENDSWITCH
SWITCH구문을 종료합니다.
@OPENINV [InventoryTriggers.yml파일 속의 스크립트 이름]
플레이어에게 해당 인벤토리창을 열어줍니다.(ChestCommandsGUI같은 것 일겁니다.) [1.7.4]
Inventory 이벤트 트리거 전용 플레이스 홀더[1.7.4]
<clickedslot>
: 인벤토리 이벤트 발생 시, 클릭한 슬롯의 번호를 나타냅니다.
<clickeditem>
: 인벤토리 이벤트 발생시, 클릭한 슬롯의 아이템 절대이름(영어이름)을 나타냅니다.
<clickeditemname>
: 인벤토리 이벤트 발생시, 클릭한 슬롯의 보여지는 아이템의 이름을 나타냅니다.
<inventorytitle>
: 인벤토리 이벤트 발생시, 해당 인벤토리의 제목을 나타냅니다. (스페이스바는 _를 사용하세요.)
<clickeditemlore:줄 번호>
: 인벤토리 이벤트 발생시, 클릭한 아이템의 설명을 나타냅니다.
EX) <clickeditemlore:0>는 아이템에 달린 첫 번째 줄의 설명을 나타냅니다.