#인게임 명령어
1) 일반 명령어
/vtrigger : 트리거의 기본 명령어입니다. /vt로 줄여서 사용할 수 있습니다.
└ /vtrigger ? 또는 /vtrigger help 로 도움말을 볼 수 있습니다.
/vtrigger setint [Object] [Var] [값] : 지정한 오브젝트의 변수에 정수값을 저장합니다.
└ ex) /vtrigger setint Notch money 10000 //'Notch'라는 오브젝트의 'money'라는 변수에 10000을 저장합니다.
/vtrigger setbool [Object.Var] [true/false] : 지정한 오브젝트의 변수의 참/거짓을 정합니다.
└ ex) /vtrigger setbool Notch.dev true //'Notch'라는 오브젝트의 'dev'라는 변수를 '참'으로 설정합니다.
/vtrigger delobj [ObjectName] : 지정한 오브젝트와 하위의 모든 변수를 삭제합니다.
└ /ex) /vtrigger delobj Notch //'Notch'라는 오브젝트와 하위의 모든 변수ex) money, dev를 삭제합니다.
/vtrigger run [FILE:SCRIPT] <PLAYERNAME> : 지정한 FILE:SCRIPT를 실행합니다.
* <PLAYERNAME>은 선택입니다. 아무 플레이어도 지정돼있지 않다면, 이 명령어를 사용한 플레이어게 발현됩니다.
/vtrigger savetriggers : 트리거 데이터를 YML파일로 저장합니다./vt st
/vtrigger reloadtriggers : 트리거 데이터를 YML파일에서 다시 불러옵니다. 서버가 열려있는 상태에서 트리거파일을
수정했을 경우, 이 명령어의 실행이 필요합니다./vt rt
└ /vtrigger reloadscripts : 트리거의 스크립트 데이터를 YML파일에서 다시 불러옵니다.
/vtrigger autosave : YML 파일에 데이터가 자동으로 저장되는 것을 정지하거나 재개합니다.
/vtrigger savevars : 모든 변수를 저장합니다.
/vtrigger delvar : 지정한 변수를 제거합니다.
└ ex) /vtrigger delvar i Notch money //'Notch'라는 오브젝트의 'money'라는 정수형변수를 제거합니다.
2) 클릭트리거 명령어
/vtclick : 새 클릭 트리거를 생성하거나 기존 트리거에 스크립트를 추가합니다./vtc
└ /vtclick [스크립트]
└ ex) /vtc @PLAYER Hello, World //지정한 블럭을 클릭하면 플레이어의 채팅창에 'Hello, World'라는 문구를 출력하게 함
* 클릭트리거는 명령어를 타이핑 후 뼈 아이템으로 지정할 블럭을 우클릭해주셔야 합니다.
/vtclickview : 클릭 트리거의 스크립트를 봅니다./vtcv
└ /vtcv [페이지]
/vtclickreset : 클릭 트리거를 리셋합니다./vtcrest
└ /vtclickreset [스크립트]
/vtclickremove : 클릭 트리거를 제거합니다./vtcr
/vtclickedit : 클릭트리거의 스크립트를 수정합니다./vtce
└ /vtce [줄번호] [스크립트]
└ ex) /vtce 5 @BROADCAST Hello, World //지정한 클릭트리거의 5번째 줄을 '@BROADCAST Hello, World'라는 스크립트로 수정합니다.
3) 워크트리거 명령어
/vtwalk : 워크트리거를 새로 생성하거나 기존 트리거에 스크립트를 추가합니다./vtw
└ /vtw [스크립트]
└ ex) /vtw @CMD spawn //지정한 블럭을 밟으면 명령어 'spawn'을 사용하게 됩니다.
* 워크트리거는 명령어를 타이핑 후 뼈 아이템으로 지정할 블럭을 우클릭해주셔야 합니다.
/vtwalkview : 워크 트리거의 스크립트를 봅니다./vtwv
└ /vtwv [페이지]
/vtwalkreset : 워크 트리거를 리셋합니다./vtwrest
└ /vtwrest [스크립트]
/vtwalkremove : 워크 트리거를 제거합니다./vtwr
/vtclickedit : 워크 트리거의 스크립트를 수정합니다./vtwe
└ /vtwe [줄번호] [스크립트]
└ ex) /vtwe 5 @BROADCAST Welcome. //지정한 워크트리거의 5번째 줄을 '@BROADCAST Welcome'라는 스크립트로 수정합니다.
4) 이벤트트리거 명령어
/vtevent : 이벤트 트리거를 생성하거나 기존트리거에 스크립트를 추가합니다./vte
└ /vtevent [이벤트] [스크립트]
└ 이벤트 종류
- Join : 유저가 접속했을 때
- Quit : 유저가 접속을 종료했을 때
- PlayerDeath : 유저가 죽었을 때
- EntityDeath : 엔티티가 죽었을 때
- Respawn : 리스폰했을 때
- EntitySpawn : 엔티티가 스폰됐을 때
- BlockBreak : 블럭을 파괴했을 때
- BlockPlaced : 블럭을 설치했을 때
- Interact : 상호작용(우클릭)했을 때
└ ex) /vte Join @BROADCAST <playername>님이 접속했습니다. //유저가 접속했을 때 '<유저이름>님이 접속했습니다.' 출력
/vteventview : 이벤트 트리거의 스크립트를 확인합니다./vtev
└ /vtev [이벤트] [페이지]
/vteventedit : 이벤트 트리거의 스크립트를 수정합니다./vtee
└ /vtee [이벤트] [스크립트]
/vteventremove : 이벤트 트리거를 삭제합니다./vter
└ /vter [이벤트]
/vtclear : 보류중인 트리거 생성 명령어를 모두 지웁니다.
5) 에이리어트리거 명령어
/vt setarea : 두 지점을 선택하여 지역을 설정합니다.
└ 월드에딧처럼 뼈아이템을 이용해 지역을 설정합니다.
/vt definearea : /vt setarea 로 설정된 지역을 정의합니다.
└ /vt definearea [에이리어이름]
└ ex) /vt definearea spawn //'spawn'이라는 이름의 에이리어를 만듭니다.
/vt getarea : 지역에 설정된 에이리어가 있다면 이름을 출력하고, 없다면 null을 반환합니다.
/vtarea : 에이리어트리거를 생성하거나 기존트리거에 스크립트를 추가합니다./vta
└ /vta [에이리어이름] [ENTER/EXIT] [스크립트]
└ ex) /vta spawn ENTER @PLAYER 스폰입니다. //'spawn' 에이리어에 입장했을 때 '스폰입니다'를 채팅창에 출력합니다
/vtareaview : 에이리어트리거의 스크립트를 확인합니다. /vtav
└ /vtav [에이리어이름] [ENTER/EXIT] [페이지]
/vtareaedit : 에이리어트리거의 스크립트를 수정합니다. /vtae
└ /vtae [에이리어이름] [ENTER/EXIT] [줄번호] [스크립트]
└ /ex) /vtae spawn EXIT 1 @PLAYER Good Bye.
/vtarearemove : 에이리어트리거를 제거합니다. /vtar
└ /vtar [에이리어이름] [ENTER/EXIT]
/vt arealist : 에이리어 목록을 출력합니다.
└ /vt arealist [월드] [에이리어]
* [월드], [에이리어] 부분은 생략해도 됩니다. [월드]가 제시된 경우 해당 월드의 에이리어만 표시되고, [에이리어]까지 제시된 경우 그 에이리어에 대한 자세한 내용이 표시됩니다.
6) 커맨드트리거 명령어
* 사용하기 전에 앞서 'Override'에 대하여
'Override'는 명령어 덮어쓰기같은 개념입니다. 예시로 자세히 설명해드리겠습니다.
만약 /spawn 이라는 커맨드트리거를 생성한다면 기존에 있는 명령어와 겹치게 됩니다. 아래와 같은 커맨드트리거를 만들었을 때,
'Override'의 true, false값에 따른 결과가 달라집니다.
' @PLAYER Welcome, User. '
/spawn 커맨드트리거가 위와 같이 작성되었을 때 'Override'가 true라면 스폰으로 이동하지 않고 'Welcome, User'이라는 문구만 출력되며, 'Override'가 false일 시 스폰으로 이동함과 동시에 'Welcome, User'라는 문구가 출력됩니다. 때에 따라서 적절히 설정해주시기 바랍니다.
단, 기존 명령어와 겹치지 않을 시ex) /스폰, 넴주, ... 'Override'를 true로 설정해주셔야 오류문구가 나타나지 않습니다.
/vtcommand : 커맨드트리거를 생성하거나 기존 트리거에 스크립트를 추가합니다./vtcmd
└ /vtcmd [명령어이름] [스크립트]
└ ex) /vtcmd 스폰 @CMD spawn // '스폰'이라는 명령어를 사용하면 'spawn'명령어를 사용하게 됩니다.
/vtcommandoverride : 자세한 내용은 상술했습니다./vtcmdo
└ /vtcmdo [명령어이름] [true/false]
└ ex) /vtcmdo 스폰 true // 명령어 '스폰'의 Override를 true로 설정
/vtcommandpermission : 커맨드트리거를 사용할 권한을 설정합니다./vtcmdp
└ /vtcmdp [명령어이름] [펄미션.노드 / REMOVE]
└ 기본 펄미션 설정은 따로 되어있지 않습니다. 설정하지 않으면 모든 명령어가 해당 커맨드트리거를 쓸 수 있습니다.
└ ex) /vtcmdp 킥 essentials.kick //명령어 '킥'을 'essentials.kick' 권한을 가진 유저만이 사용할 수 있게 합니다.
└ ex) /vtcmdp 스폰 remove // 명령어 '스폰'에 설정된 펄미션을 삭제합니다.
/vtcommandview : 커맨드트리거의 스크립트를 확인합니다./vtcmdv
└ /vtcmdv [명령어이름] [페이지]
/vtcommandedit : 커맨드트리거의 스크립트를 수정합니다./vtcmde
└ /vtcmde [명령어이름] [줄번호] [스크립트]
/vt cmdlist : 커맨드트리거의 목록을 출력합니다.
# 스크립트 명령어
1) 피드백
@QUIET : 대상 플레이어의 모든 채팅을 초 단위로 차단합니다.
└ @QUIET [플레이어] [시간(초)]
@CLEARCHAT : 대상 플레이어의 채팅창을 청소합니다.
└ @CLEARCHAT [플레이어]
@BROADCAST : 메시지를 서버 채팅창에 출력합니다.
└ @BRADCAST [문구]
@TELL : 문구를 특정 플레이어에게만 출력합니다.
└ @TELL [닉네임] [문구]
@PRINT : 콘솔에 단어를 출력합니다.
└ @PRINT [단어]
@! : 디버그 정보를 출력합니다.버전, vault, 후크, 스크립트, 활성화 상태 등
└ 가능한 경우 /debug 명령어로 실행하는 것을 권장합니다.
2) 스크립트 함수
@CALL : 스크립트에서 다른 스크립트를 실행합니다.
└ @CALL [FILE:SCRIPT]
└ ex) @CALL myscriptfile:spawnmob //myscriptfile:spawnmob이라는 스크립트를 불러옵니다.
@EXIT : 스크립트를 종료합니다.
@PAUSE : 스크립트를 초 단위로 중지합니다.
└ @PAUSE [시간(초)]
@COOLDOWN : 트리거의 재사용 대기시간을 설정합니다. 이 시간동안에는 트리거를 활성화시킬 수 없습니다.
└ 만약 @COOLDOWN을 사용하고 싶다면, @PAUSE가 발동되기 직전에 넣어야 합니다.
└ @COOLDOWN [시간(초)]
@CMD : 사용하는 플레이어의 권한으로 명령어를 실행합니다.
└ @CMD [명령어]
└ ex) @CMD heal // 플레이어가 heal명령어를 사용할 수 있다면 heal 명령어를 실행하고, 아니라면 실행하지 않습니다.
@CMDOP : 오피의 권한으로 명령어를 실행합니다.
└ @CMDOP [명령어]
└ ex) @CMDOP help // OP가 아니더라도 /help 명령어를 사용하게 합니다.
@CMDCON : 콘솔 권한으로 명령어를 실행합니다.
└ @CMDCON [명령어]
└ ex) @CMDCON setrank <cmdarg:1> <cmdarg:2> //콘솔 권한으로 setrank 명령어를 사용합니다.
3) 월드 편집
@SETBLOCK : 지정한 위치에 블럭을 설정합니다.
└ @SETBLOCK [블럭ID(아이템코드)] [좌표]
└ ex) @SETBLOCK 1 100,64,100 //좌표 x 100, y 64, z 100 에 돌블럭을 만듭니다.
@SETBLOCKSAFE : 위와 같되, Spigot서버에서 안전하게 설정할 수 있습니다.
└ @SETBLOCKSAFE [블럭ID(아이템코드)] [좌표]
@TOGGLEBLOCK : 지정한 위치의 블럭을 토글(on/off)할 수 있습니다.
└ @TOGGLEBLOCK [블럭ID(아이템코드)] [좌표]
└ ex) @TOGGLEBLOCK 20 120,70,10 //트리거를 실행할때마다 좌표 x 120, y 70, z 100 에 유리블럭이 사라지거나 생성됩니다
@DROPITEM : 지정한 위치에 아이템을 떨어뜨립니다.
└ @DROPITEM [아이템이름] [개수] [인챈트] [위치]
└ 인챈트는 반드시 NONE 또는 인챈트이름:레벨,인챈트이름:레벨,... 식으로 작성돼야 합니다.
└ ex) @DROPITEM Diamond_Helmet 1 Unbreaking:3,BlastProtection:2 150,30,180 //좌표 x 150, y 30, z 180에 내구성 3레벨, 폭발보호2레벨 인챈트된 다이아몬드 헬멧을 1개 떨어뜨립니다.
@SIGNTEXT : 표지판의 문구를 변경합니다.
└ @SIGNTEXT [위치] [줄1~4] [문구]
└ [위치]는 작성하지 않아도 됩니다. 명령어를 작성하고 나서 해당 표지판을 뼈로 우클릭해주시면 됩니다.
└ %C로 그 줄을 비울 수 있습니다.
└ ex) @SIGNTEXT 100,60,120 3 &e안녕하세요 //좌표 x 100, y 60, z 120에 위치한 표지판의 3번째 줄 내용을 '안녕하세요'로 변경합니다.
@FALLINGBLOCK : 모래 또는 자갈처럼 블럭이 떨어지게합니다.
└ @FALLINGBLOCK [블럭이름] [좌표]
└ ex) @FALLINGBLOCK cobblestone 100,40,200 //좌표 x 100, y 40, z 200에 위치한 조약돌을 떨어지게 합니다.
@ENTITY : 엔티티를 생성합니다.
└ @ENTITY [엔티티이름] [수(마리)] [좌표]
└ 엔티티종류
-BLAZE : 블레이즈
-CAVE_SPIDER : 동굴거미
-CHICKEN : 닭
-COW : 소
-CREEPER : 크리퍼
-ENDER_DRAGON : 엔더드래곤
-ENDERMAN : 엔더맨
-EXPERIENCE_ORB : 경험치
-GHAST : 가스트
-GIANT : 자이언트 좀비
-IRON_GOLEM : 철 골렘
-MAGMA_CUBE : 마그마 슬라임
-MUSHROOM_COW : 버섯소
-PIG : 돼지
-PIG_ZOMBIE : 좀비피그맨
-SHEEP : 양
-SILVERFISH : 좀벌레
-SKELETON : 스켈레톤
-SLIME : 슬라임
-SNOWMAN : 눈사람
-SPIDER : 거미
-SQUID : 오징어
-VILLAGER : 녹색 로브 주민
-FARMER : 갈색 로브 주민(농작물 || 물고기,낚시대 || 양모,가위 || 화살,활,부싯돌)
-BLACKSMITH : 검은색 앞치마 주민(갑옷 || 무기,도구 || 도구)
-BUTCHER : 흰색 앞치마 주민(고기 || 가죽갑옷, 안장)
-LIBRARIAN : 흰색 로브 주민(인챈트북,나침반,책장,시계,유리,이름표 || 지도)
-PRIEST : 보라색 로브 주민(광물,엔더진주,발광석,경험치병)
-WOLF : 늑대
-ZOMBIE : 좀비
└ ex) @ENTITY SQUID 5 50,50,100 //좌표 x 50, y 50, z 100에 오징어 5마리를 소환합니다.
4) 플레이어 편집
@TP : 트리거를 실행한 플레이어를 지정한 위치로 이동시킵니다.
└ 이 방법은 /vt setloc으로 장소를 사전에 지정하고, 위치 인수를 $오브젝트.변수 로 사용하는 것이 좋습니다.
└ @TP [좌표]
└ @TP $오브젝트.변수
└ ex) @TP 100,100,100 //좌표 x 100, y 100, z 100으로 이동합니다.
└ ex) @TP $server.spawn //사전에 지정한 'server' 오브젝트의 'spawn' 위치로 이동합니다.
@WORLDTP : 현재 좌표를 변경하지 않고 다른 월드로 이동합니다.
└ @WORLDTP [플레이어] [월드]
└ ex) @WORLDTP Notch world_nether //유저 'Notch'를 지옥월드로 보내버립니다.
@OPENINV : InventoryTriggers.yml에서 지정된 인벤토리를 엽니다.
└ @OPENINV [이름]
@CLOSEINV : 열고있는 중인 인벤토리를 강제로 닫습니다.
└ @CLOSEINV [플레이어]
@MODIFYPLAYER : 플레이어의 정보를 수정합니다.
└ @MODIFYPLAYER [플레이어] [정보] [값]
└ 수정할 수 있는 정보
- 정보 : 설명 : 값에 들어와야 할 것 //추가설명
- HEALTH : 체력 : 숫자
- FOOD : 허기 : 숫자
- SATURATION : 포화상태 : 숫자
- EXP : 경험치 : 숫자
- WALKSPEED : 걷기 속도 : 숫자 // 1 이상은 미친듯이 빠릅니다. 0.2를 사용해주세요.
- FLYSPEED : 비행 속도 : 숫자 // 1 이상은 미친듯이 빠릅니다. 0.2를 사용해주세요.
- DISPLAYNAME : 표시되는 닉네임 : 문자 // 색깔 코드를 사용할 수 있습니다.
- LISTNAME : 유저목록에서 표시될 닉네임 : 문자 // 색깔 코드를 사용할 수 있습니다.
- FLYING : 플라이모드 : true / false
- GAMEMODE : 게임모드 : creative / survival / adventure // 0, 1, 2를 사용하지 않는 것에 유의하세요.
- MAXHEALTH : 최대체력 : 숫자
- HELDITEM
- HELDITEM:MATERIAL
- HELDITEM:ID
- HELDITEM:META
- HELDITEM:AMOUNT
- HELDITEM:ENCHANT
- HELDITEM:DISPLAYNAME
- HELDITEM:LORE:SET
- HELDITEM:LORE:ADD
- HELDITEM:LORE:REMOVE
- HIDDEN : 하이드(투명화) : true / false
- BANNED : 밴 상태 : true / false // advanced mode를 필요로 합니다.
- OPERATOR : 오피 권한 : true / false // advanced mode를 필요로 합니다.
5) 이펙트
@FIREWORK : 불꽃놀이 이펙트를 실행합니다.
└ @FIREWORK [색] [타입] [좌표]
└ 색 종류
- 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 ball_large 100,80,50 //좌표 x 100, y 80, z 50에 빨간색 큰 구형 불꽃놀이 효과를 발생시킵니다.
@SMOKE : 연기 이펙트를 실행합니다.
└ @SMOKE [양] [좌표]
└ 양은 연기의 양을 나타냅니다. 최대값은 5 입니다.
@PARTICLE : 블럭의 입자 이펙트를 발생시킵니다.
└ @PARTICLE [블럭이름] [좌표]
└ ex) @PARTICLE cobblestone <playerloc> // 트리거를 실행한 유저의 위치에 조약돌 입자 효과를 발생시킵니다.
@SOUND : 지정한 위치에서 사운드효과를 발생시킵니다.
└ @SOUND [소리] [위치]
└ ex) @SOUND ZOMBIE_DESTROY_DOOR 50,50,50 //좌표 x 50, y 50, z 50에서 좀비가 문을 파괴하는 소리를 발생시킵니다.
@SOUNDEX : @SOUND와 같되 추가적으로 설정을 할 수 있습니다.
└ @SOUNDEX [소리] [볼륨] [소리 높낮이] [좌표]
└ 볼륨(소리크기)는 0.0과 1.0 사이여야 합니다.
└ 소리 높낮이는 0.5와 2.0 사이여야 합니다.
└ LOCATION을 작성하지 않으면 명령어 타이핑 후 뼈로 소리가 날 위치를 우클릭해 지정해야 합니다.
* @SOUND 및 @SOUNDEX에 사용되는 소리는 아래 주소에서 확인할 수 있습니다.
https://dev.bukkit.org/projects/variabletriggers/pages/sounds-for-use-with-soundex
@SETVELOCITY : 특정 방향으로 플레이어를 밀어냅니다.
└ @SETVELOCITY [플레이어] [x] [y] [z]
└ x, y, z의 값은 그 방향으로 얼마나 강하게 밀어낼 것인지를 정합니다.
└ ex) @SETVELOCITY Notch 0 5 0 //유저 Notch를 y방향으로 50블럭만큼 날려버립니다.
@FLAMES : 불꽃 이펙트를 발생시킵니다.
└ @FLAMES [양] [좌표]
└ [양]은 발생시킬 불꽃의 양을 정합니다. 최대값은 5입니다.
└ ex) @FLAMES 3 <triggerloc> //트리거가 실행된 위치에 불꽃효과를 3만큼 줍니다.
@POOF : 연기를 바깥쪽으로 발산하는 효과를 발생시킵니다.
└ @POOF [양] [좌표]
└ [양]은 발생시킬 연기의 양을 정합니다. 최대값은 5입니다.
└ ex) @POOF 1 <playerloc> //트리거를 작동시킨 플레이어의 위치에 연기효과를 줍니다.
@LIGHTNING : 지정한 위치에 번개를 치게 합니다.
└ @LIGHTNING [데미지여부] [좌표]
└ 데미지여부는 true / false로 설정해주세요. true일 시 번개에 데미지를 받고 false일 시 데미지를 받지 않습니다.
└ ex) @LIGHTNING true <playerloc> //트리거를 실행한 플레이어의 위치에 번개를 발생시킵니다.
@EXPLOSION : 지정한 위치에 폭발을 발생시킵니다.
└ @EXPLOSION [힘] [좌표]
└ [힘]엔 폭발의 데미지를 나타냅니다. 0.0에서 4.0 사이로 입력받으며, 0.0일 시 데미지가 없습니다.
└ ex) @EXPLOSION 3 80,66,123 //좌표 x 80, y 66, z 123에 데미지3의 폭발을 일으킵니다.
6) 변수 콜렉팅
@GETBLOCK : 지정한 위치의 블럭을 $오브젝트.변수 에 저장합니다.
└ @GETBLOCK [오브젝트.변수] [좌표]
└ ex) @GETBLOCK $server.obsidian 20,3,100 //좌표 x 20, y 3, z 100에 위치한 블럭을 'server'오브젝트의 'obsidian' 변수에 저장합니다.
@GETENTITY : 근처에 있는 엔티티의 수를 가져옵니다.
└ @GETENTITY [오브젝트.변수] [엔티티] [범위]
└ [오브젝트.변수] : $오브젝트.변수에 저장하고 나중에 사용할 수 있습니다.
└ [엔티티] : 수를 가져올 엔티티의 종류를 정합니다. 종류는 '3) 월드편집'의 @ENTITY를 참고해주세요.
└ [범위] : 트리거를 실행한 유저를 기점으로 지정한 범위 내의 엔티티 수를 셉니다.
└ ex) @GETENTITY $spawn.zombieCount ZOMBIE 15 //트리거를 사용한 플레이어를 기점으로 15블럭 안에 있는 좀비의 수를 오브젝트 'spawn'의 'zombieCount'라는 변수에 저장합니다.
@GETLIGHT : 현재 위치의 조도 레벨을 저장합니다.
└ @GETLIGHT [오브젝트.변수] [좌표]
└ 태양, 달, 조명 등의 빛에서 조도 레벨0~15을 가져옵니다.
└ ex) GETLIGHT $measure.lightLevel <playerloc> //현재 플레이어의 위치의 조도 레벨을 'measure'오브젝트의 'lightLevel' 변수에 저장합니다.
7) 동적 변수 명령어
@SETINT : 정수형 변수를 설정합니다.
└ @SETINT [오브젝트.변수] [값]
└ ex) @SETINT $<playername>.join 0 //트리거를 작동한 유저의 오브젝트의 'join'이라는 변수를 0으로 설정합니다.
@ADDINT : 정수형 변수에 값을 추가합니다.
└ @ADDINT [오브젝트.변수] [값]
└ ex) @ADDINT $<playername>.join 1 //트리거를 작동한 유저의 오브젝트의 'join'이라는 변수에 1을 더합니다.
@SUBINT : 정수형 변수에 값을 뺍니다.
└ @SUBINT [오브젝트.변수] [값]
@MULINT : 정수형 변수에 값을 곱합니다.
└ @MULINT [오브젝트.변수] [값]
@DIVINT : 정수형 변수에 값을 나눕니다.
└ @DIVINT [오브젝트.변수] [값]
@SETBOOL : 변수에 true, false 값을 설정합니다.
└ @SETBOOL [오브젝트.변수] [true|false]
└ ex) @SETBOOL $Notch.dev true //'Notch'라는 오브젝트의 'dev'라는 변수를 true로 설정합니다.
@SETSTR : 문자열 변수를 설정합니다.
└ @SETSTR [오브젝트.변수] [문자]
└ ex) @SETSTR $Notch.lore Developer //'Notch'라는 오브젝트의 'lore'라는 변수에 'Developer'라는 문자를 저장합니다.
@ADDSTR : 문자열 변수의 끝부분에 문자를 추가합니다.
└ @ADDSTR [오브젝트.변수] [문자]
└ ex) @ADDSTR $Notch.lore MOJANG //'Notch'라는 오브젝트의 'lore'라는 변수에 'MOJANG'이라는 문자를 추가합니다.
@GETSTRLEN : 문자열 변수의 길이를 구합니다.
└ @GETSTRLEN [오브젝트.변수]
@DELVAR : 메모리에서 오브젝트의 변수를 삭제합니다. 임시 변수같은 유지할 필요가 없는 것을 삭제해 사용가능 메모리양을 늘립니다.
└ @DELVAR [i/s/b] [오브젝트.변수] // i : INT (정수형 변수), s : STR (문자열 변수), b : BOOL(true/false)
└ ex) @DELVAR s $Notch.lore //'Notch'라는 오브젝트의 'lore'이라는 문자열 변수를 삭제합니다.
@DELOBJ : 메모리에서 오브젝트를 삭제합니다. 변수와 같이 삭제하여 사용가능 메모리양을 늘릴 수 있습니다.
└ @DELOBJ $오브젝트
└ ex) @DELOBJ $testMoney //'testMoney'라는 오브젝트를 삭제합니다.
@STRBUILD
└ @STRBUILD [오브젝트.변수] [줄] [문장]
8) 배열 나열
@ADDLIST : 리스트에 항목을 추가합니다.
└ @ADDLIST [오브젝트.변수] [값]
└ ex) @ADDLIST $weapon.Sword woodSword
└ ex) @ADDLIST $weapon.Sword stoneSword
└ 리스트는 숫자 0부터 시작해 차례대로 저장됩니다.
└ @PLAYER $weapon.Sword[1] 을 하게 되면 $weapon.Sword의 두번째 항목인 stoneSword가 출력됩니다.
@REMLIST : 리스트에서 항목을 제거합니다.
└ @REMLIST [오브젝트.변수] [값]
└ ex) @REMLIST $weapon.Sword woodSword // 리스트 weapon.Sword의 첫번째 항목인 woodSword를 삭제합니다.
@DELLIST : 리스트를 삭제합니다.
└ @DELLIST $오브젝트
└ ex) @DELLIST $weapon.Sword
@VTSystem.OnlinePlayers : 접속중인 모든 유저 닉네임 목록을 출력합니다.
@VTSystem.OnlineUUIDs : 위와 같되, 닉네임이 아닌 UUID를 출력합니다.
9) 조건문
@IF : 조건을 만족할 때 실행하게 됩니다.
└ @IF [i / b / s] [변수] [조건문연산자] [값]
└ [ i / b / s ] : i 는 INT로 정수형 변수, b는 BOOL로 true 또는 false값을 가지고, s는 STR로 문자열 변수입니다.
└ [조건문연산자] 종류
= : 같을 때
!= : 다를 때
A > B : A가 B보다 클 때
A >= B : A가 B보다 크거나 같을 때
A < B : A가 B보다 작을 때
A <= B : A가 B보다 작거나 같을 때
?= : 문자열에 지정한 문자가 포함되어있을 때
...
└ 값 : i인 경우 숫자, b인 경우 true 또는 false, s인 경우 문자를 넣어야 합니다.
└ IF문이 끝날 경우 @ENDIF를 작성해야 합니다.
ex_1)
@IF s <playername> ?= GM //만약 트리거를 실행한 유저의 닉네임에 'GM'이라는 문자가 포함되어있다면
@PLAYER &eHello, GM. //'Hello, GM'라는 문구를 출력
@EXIT // 스크립트 종료
@ENDIF // IF 조건문 종료
ex_2)
@IF b $<playername>.op = false //만약 트리거를 실행한 유저의 'op'변수 값이 false라면
@CMDOP kick <playername> You are not operator! // OP권한으로 자신을 킥함. (킥문구 : You are not operator!)
@EXIT //스크립트 종료
@ENDIF // IF 조건문 종료
ex_3)
@IF i $<playername>.join != 0 //만약 트리거를 실행한 유저의 'join'변수 값이 0이 아니라면
@PLAYER Welcome back, <playername> // 'Welcome back, <닉네임>' 을 출력
@EXIT //스크립트 종료
@ENDIF //IF 조건문 종료
@OR : IF와 함께 '또는' 이라는 의미로 사용할 수 있습니다.
└ @OR [i / b / s] [변수] [조건문연산자] [값]
ex_1)
@IF s <playername> = Steve //만약 트리거를 실행한 유저의 닉네임이 'Steve'라면
@OR s <playername> = Alex //또는 트리거를 실행한 유저의 닉네임이 'Alex'라면
@PLAYER Welcome to Minecraft World. // 'Welcome to Minecraft World'라는 문구를 출력
@EXIT //스크립트 종료
@ENDIF //IF 조건문 종료
ex_2)
@IF i $server.money < 0 //만약 'server' 오브젝트의 'money'변수가 0보다 작다면
@OR i $server.money = 0 //또는 'server' 오브젝트의 'money' 변수가 0이라면
//위 두문장은 @IF i $server.money =< 0 으로 줄일 수 있지만 이해를 돕기 위해 위와 같이 작성하였습니다.
@PLAYER &c적자입니다!!! @.@ // '적자입니다!!! @.@'를 출력
@EXIT //스크립트 종료
@ENDIF //IF 조건문 종료
@AND : IF와 함께 '그리고'라는 의미로 사용할 수 있습니다.
└ @AND [i / b / s] [변수] [조건문연산자] [값]
ex_1)
@IF i $server.money >= 10000 //만약 'server'오브젝트의 'money'변수가 10000 이상이라면
@AND b $server.opAgree = true //그리고 'server'오브젝트의 'opAgree'변수가 true라면
@SUBINT $server.money 5000 //'server'오브젝트의 'money'라는 정수형변수에서 5000만큼 뺍니다.
@PLAYER 남은 돈 : $server.money //'server'오브젝트의 'money' 변수의 값을 출력합니다.
@EXIT //스크립트 종료
@ENDIF //IF 조건문 종료
ex_2)
@IF i $<playername>.join = 0 //만약 트리거를 실행한 유저의 'join' 변수값이 0 이라면
@AND b $Steve.tuto = false //그리고 'Steve'오브젝트의 'tuto'라는 변수가 false라면
@TP 100,30,100 //좌표 x 100, y 30, z 100 으로 텔레포트
@EXIT //스크립트 종료
@ENDIF //IF 조건문 종료
@ELSE : IF에서 제시한 조건의 반대의 경우를 실행합니다.
└ @ELSE
ex_1)
@IF s <cmdarg:1> = test // 만약 명령어의 첫번째 단어가 'test'인 경우
@PLAYER test command // 'test command'라는 문장을 출력
@ELSE // 아닐 경우@IF s <cmdarg:1> != test와 같은 뜻이 됨
@PLAYER test command, else //'test command, else' 라는 문장을 출력
@EXIT // 스크립트 종료
@ENDIF // IF 조건문 종료
@SWITCH : 한 변수에 대하여 여러가지 조건을 설정하여 실행할 수 있습니다. @CASE와 함께 사용합니다.
└ @SWITCH [ i / s / b ] [변수]
└ @CASE [변수의 값]
└ SWITCH문이 끝나면 @ENDSWITCH를 작성해야 합니다.
ex_1)
@SWITCH s <cmdarg:1> // 명령어의 첫번째 단어에 대하여
@CASE null // 명령어의 첫번째 단어가 공백인 경우@IF s <cmdarg:1> = null과 같음
@PLAYER &c/명령어 1 ~ 3 // '/명령어 1 ~ 3' 이라는 문구를 출력
@CASE 1 // 명령어의 첫번째 단어가 '1'인 경우@IF s <cmdarg:1> = 1 과 같음
@PLAYER $weapon.swordList // $weapon.swordList 의 값을 출력
@CASE 2 // 명령어의 첫번째 단어가 '2'인 경우@IF s <cmdarg:1> = 2 와 같음
@PLAYER $weapon.gunList // $weapon.gunList 의 값을 출력
@CASE 3 // 명령어의 첫번째 단어가 '3'인 경우@IF s <cmdarg:1> = 3 과 같음
@PLAYER $weapon.bowList // $weapon.bowList 의 값을 출력
@ENDSWITCH // SWITCH문 종료
위 스크립트를 IF문으로 작성하면 아래와 같습니다.
@IF s <cmdarg:1> = null
@PLAYER &c/명령어 1 ~ 3
@EXIT
@ENDIF
@IF s <cmdarg:1> = 1
@PLAYER $weapon.swordList
@EXIT
@ENDIF
@IF s <cmdarg:1> = 2
@PLAYER $weapon.gunList
@EXIT
@ENDIF
@IF s <cmdarg:1> = 3
@PLAYER $weapon.bowList
@EXIT
@ENDIF
10) 반복문
@LOOP : 지정한 횟수만큼 루프블럭 안에 있는 실행문을 반복합니다.
└ @LOOP [횟수]
@BREAKLOOP : 루프블럭 안에서 IF와 함께 쓰이며 IF문의 조건이 참인 경우 루프블럭을 빠져나옵니다.
└ @BREAKLOOP
@ENDLOOP : 루프블럭을 종료합니다.
└ @ENDLOOP
ex_1)
@LOOP 600 // 루프블럭 시작 및 안의 실행문을 600번 반복
@ADDINT $loop.count 1 // 'loop'라는 오브젝트의 'count'라는 변수에 1을 더함
@PLAYER $loop.count // 플레이어의 채팅창에 $loop.count의 값을 출력
@PAUSE 1 // 1초동안 스크립트 일시정지
@IF b $<playername>.stop = true //만약 $닉네임.stop 이 true라면
@BREAKLOOP // 루프문 종료
@ENDIF // IF문 종료
@ENDLOOP //루프블럭 끝부분
// 2번째 라인@ADDINT부터 7번째 라인@ENDIF부분까지 600번 반복하는 트리거입니다. 루프블럭이 돌아가는 중에 $<playername>.stop 이 true값이 되면 루프문을 종료합니다. 중간에 $<playername>.stop이 true가 되지 않으면 600번 반복 후 루프문이 종료됩니다.
@WHILE : 지정한 조건문이 참일 경우 반복합니다.
└ @WHILE [ i / s / b ] [변수] [연산자] [값]
@ENDWHILE : WHILE문을 종료합니다.
ex_1)
@WHILE $server.count >= 0 // $server.count의 값이 0보다 크거나 같을 때 반복함
@SUBINT $server.count 1 // $server.count에서 1를 뺌
@PAUSE 1 // 1초동안 스크립트 일시정지
@BROADCAST 카운트 : $server.count // '카운트 : [$server.count의 값]' 을 출력
@ENDWHILE // WHILE문 종료
// $server.count의 값이 0이 될 때까지 1초마다 1을 빼며 카운트다운하는 스크립트입니다.
* LOOP문, WHILE문은 기본적으로 비활성화되어있습니다. 활성화에 대해선 아래 글을 참고하세요.
# 플레이스홀더
1) 일반 플레이스 홀더
<this> : 트리거 오브젝트 자체의 이름으로 변환
<playername> : 트리거를 작동시킨 플레이어 이름
<playerdisplayname> : 트리거를 작동시킨 플레이어의 표시 이름
<playerlistname> : 트리거를 작동시킨 플레이어의 접속목록 이름
<playerprefix> : 트리거를 작동시킨 플레이어의 접두사
<playersuffix> : 트리거를 작동시킨 플레이어의 접미사
<helditemname> : 트리거를 작동시킨 플레이어가 들고 있는 아이템
<helditemdisplayname> : 트리거를 작동시킨 플레이어가 들고 있는 아이템의 표시 이름
<itemid> : 트리거를 작동시킨 플레이어가 들고 있는 아이템의 코드
<playerloc> : 트리거를 작동시킨 플레이어의 위치
<triggerloc> : 트리거가 발동한 위치
<issneaking> : 트리거를 작동시킨 플레이어의 은신(SHIFT키)상태를 true/false 값으로 표시
<issprinting> : 트리거를 작동시킨 플레이어의 달리기상태를 true/false 값으로 표시
<health> : 트리거를 작동시킨 플레이어의 체력을 정수로 표시
<worldname> : 트리거가 작동된 월드의 이름
<biome> : 트리거가 작동된 위치의 바이옴 이름
<gamemod> : 트리거를 작동시킨 플레이어의 게임모드를 표시
2) 특수 플레이스홀더
<cmdname> : 명령어 이름
<cmdargcount> : 명령어 뒤에 입력된 인수의 갯수로 치환*인수는 공백으로 구분된 단어나 문자
ex) '/명령어 인수1 인수2 인수3' 일 때<cmdargcount>의 값은 3
<cmdline> : 명령어 뒤에 입력된 모든 텍스트
3) 사망 관련 플레이스홀더
* 아래 플레이스홀더들은 모두 PlayerDeath 또는 EntityDeath 이벤트트리거로 사용해야 합니다.
<whodied> : 죽은 플레이어 또는 엔티티의 이름
<killedbyplayer> : <killername> 플레이스홀더를 사용하기 전 사용되어야 합니다.
<killername> : 타살을 발생시킨 플레이어의 이름, 만약 플레이어에게 죽은 것이 아니라면 공백을 출력합니다.
4) 건설 관련 플레이스홀더
* 아래 플레이스홀더들은 모두 BlockBreak 또는 BlockPlaced 이벤트트리거로 사용해야 합니다.
<blockid> : 아이템코드
<blockdata>
<blocktype>
5) 상호작용 관련 플레이스홀더
*아래 플레이스홀더들은 모두 Interact 또는 EntitySpawn 이벤트트리거로 사용해야 합니다.
<entitytype> : 엔티티의 종류ex) ZOMBIE, SKELETON, PLAYER ...
<entityname> : 엔티티의 이름ex) Notch, FARMER, NPC이름 ...
6) 플레이어 관련 플레이스홀더
<weather> : 맑을 때 false, 비가 올 땐 true를 반환합니다. WeatherChange 이벤트로 사용합니다.
<worldto> : 플레이어가 이동하려는 월드의 이름. WorldChange 이벤트로 사용합니다.
<worldfrom> : 플레이어가 이동하기 전의 월드의 이름. WorldChange 이벤트로 사용합니다.
<sneaking> : 은신(SHIFT키)상태라면 true, 아니라면 false를 반환합니다. Sneak 이벤트로 사용합니다.
<sprinting> : 달리는 중이라면 true, 아니라면 false를 반환합니다. Sprinting 이벤트로 사용합니다.
<flying> : 플라이상태라면 true, 아니라면 false를 반환합니다. Flight 이벤트로 사용합니다.
7) 지역 관련 플레이스홀더
<areaentered> : 입장한 에이리어의 이름
<areaexited> : 퇴장한 에이리어의 이름
8) 채팅 관련 플레이스홀더
<chatline> : 플레이어가 채팅창에 입력한 텍스트
<chatwordcount> : 플레이어가 채팅창에 입력한 단어의 수
9) 서버 관련 플레이스홀더
<onlineplayeramount> : 온라인상태인 플레이어의 수