게임/마인크래프트

VariableTriggers (트리거) 정보

미친사람 2021. 6. 23. 12:08
반응형

#인게임 명령어

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> : 온라인상태인 플레이어의 수

반응형