마히커에서는 반달을 방지하기 위해 비 로그인 사용자의 편집을 제한하고 있습니다. 기여하시려면 로그인하세요.

VariableTriggers (스크립트 명령어)

마인크래프트 세계를 여행하는 히치하이커를 위한 안내서
Steve dent (토론 | 기여) 사용자의 2016년 1월 12일 (화) 06:56 판

(비교) ← 이전 판 | 최신판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 검색

스크립트 명령어는 스크립트 인터프리터가 어떤 동작을 하도록 만들기 위해 준비된 명령어 세트입니다. 스크립트의 각 행은 반드시 한 줄에 하나의 커맨드만을 담고 있어야 합니다. 대부분의 스크립트 명령어는 []로 표시된 하나 이상의 인수를 갖습니다. 또한, 스크립트 명령어 인수의 일부로 $Object.Variables, <placeholders>, <functionalplaceholders:>를 사용할 수도 있습니다. 앰퍼샌드 색상 코드 &a-&f, &1-&9 와 문자 코드 &l &n &o &m &r 역시 이 플러그인에서 사용할 수 있기 때문에, 텍스트를 표시하는데 사용할 수 있습니다.

트리거에 스크립트 라인을 추가하기 위해 게임 내에서 명령어를 입력할 때, 인수 입력은 보통 선택 사항입니다. 인수를 입력하기 위해서는 직접 입력하거나, 위치를 클릭하거나 하여 입력할 수 있습니다. 예를 들어 [Location] 인수는 다음 중 하나의 방법을 사용할 수 있습니다. 직접 X, Y, Z 좌표를 수동으로 입력하거나, 공백으로 남겨 위치를 클릭하라는 메시지가 나올 때 직접 클릭하는 것이 그것입니다. [BlockID:Data] 역시 또 다른 선택 사항입니다. 만약 공백으로 둔다면 클릭한 블록으로 인수가 채워집니다.

피드백

  • @QUIET - 대상 플레이어의 모든 채팅을 초 단위로 차단합니다.
    • @QUIET [PLAYERNAME] [SECONDS]
  • @CLEARCHAT - 대상 플레이어의 채팅 화면을 깨끗이 지웁니다.
    • @CLEARCHAT [player]
  • @BROADCAST - 메시지를 모든 서버에 방송합니다. 컬러 코드와 문자 코드를 사용할 수 있습니다.
    • @BROADCAST [TEXT MESSAGE]
  • @PLAYER - 트리거를 작동한 플레이어에게만 표시됩니다. 컬러 코드와 문자 코드를 사용할 수 있습니다.
    • @PLAYER [TEXT MESSAGE]
  • @TELL - 특정한 플레이어에게만 표시됩니다. 컬러 코드와 문자 코드를 사용할 수 있습니다.
    • @TELL [PLAYERNAME] [TEXT MESSAGE]
  • @PRINT - 콘솔에 무언가 출력하도록 합니다.
    • @PRINT [words]
  • @! - 디버그 정보를 출력합니다. 버전, vault 후크, 스크립트, 활성화 상태 등
    • 플레이어에 의해 실행될 경우, /debug 명령어로 실행되도록 하는 것이 좋습니다.

스크립트 함수

  • @CALL - 스크립트에서 다른 스크립트를 실행합니다. 스크립트 이름에 확장자를 붙이면 안됩니다.
    • @CALL [FILE:SCRIPT]
    • @CALL myscriptfile:spawnzombie
  • @EXIT - 스크립트를 종료합니다.
    • @EXIT
  • @PAUSE - 스크립트 실행을 초 단위로 중지합니다. 이것은 트리거를 중지하는 것이 아니고, 스크립트만을 중지합니다. 진수 또는 정수 값을 사용할 수 있습니다.
    • @PAUSE [SECONDS]
  • @COOLDOWN - 스크립트가 실행되는 동안, 트리거의 재사용 대기 시간을 설정합니다. 트리거가 대기 시간에 있는 동안에는 모든 플레이어가 활성화 시킬 수 없습니다. 이 함수는 스크립트 실행 시간을 멈추지 않고, 오직 트리거가 다시 시작되는 것만을 유지합니다. 만약 @COOLDOWN을 사용하고 싶다면, 가능한 스크립트의 @PAUSE 발동되기 전인 시작 부근에 넣어야 합니다.
    • @COOLDOWN [SECONDS]
    • @COOLDOWN 10.5
  • @CMD - 플레이어를 통해 콘솔 명령어를 실행합니다. 이것을 사용하는 플레이어는 반드시 해당 명령어의 권한이 있어야 합니다.
    • @CMD [COMMAND]
    • @CMD heal
  • @CMDOP - 명령어를 OP인것 처럼 사용합니다. 사용 권한을 회피하는데 유용합니다.
    • @CMDOP [COMMAND]
    • @CMDOP i dsword 1
  • @CMDCON - 명령어를 콘솔인 것 처럼 사용합니다.
    • @CMDCON [CONSOLCOMMAND]
    • @CMDCON give <playername> dsword 1
  • @CANCEL [true / false] - Place this on the FIRST LINE of most events and it will prevent or allow the event from happening

월드 편집

  • @SETBLOCK - 지정한 위치의 블록을 ID:DATA 로 설정합니다.
  • @SETBLOCKSAFE - Spigot을 사용하는 서버를 위한 안전하게 설정하는 방식입니다.
    • @SETBLOCK [BLOCKID:DATA] [LOCATION]
  • @TOGGLEBLOCK - 블록 선택을 on/off로 토글합니다.
    • @TOGGLEBLOCK [BLOCKID:DATA] [LOCATION]
    • @TOGGLEBLOCK 35:4 231,69,177
  • @DROPITEM - 어딘가로 아이템을 드랍합니다. 인챈트 추가도 가능합니다.
    • @DROPITEM [ITEMNAME] [QUANTITY] [ENCHANTMENTS] [LOCATION]
    • 인챈트는 반드시 NONE 또는 Enchantment:Level,Enchantment:Level 식으로 작성되어야 합니다.
    • @DROPITEM Iron_Sword 1 Sharpness:2,BaneOfArthropods:1 <triggerloc>
    • @DROPITEM Dirt 1 NONE 231,65,-122
    • 사용 가능한 아이템 이름의 예: Dirt, Raw_Beef, Wood_Stairs, Chest, Redstone_Wire,Chainmail_Chestplate, Diamond_Helmet
    • 사용 가능한 인챈트 이름의 예: AquaAffinity, FeatherFalling, Protection, ProjectileProtection
    • 전체 인챈트 목록 http:www.minecraftwiki.net/wiki/Enchanting
  • @SIGNTEXT - 표지판의 문구를 바꿉니다. 컬러 코드와 문자 코드를 사용할 수 있습니다.
    • @SIGNTEXT [LOCATION] [LINE] [TEXT]
    • 위치 지정은 선택 사항입니다. 위치가 제시되지 않을 경우, 표지판을 클릭하라는 문구가 나타납니다.
    • %C로 라인을 비울 수 있습니다.
  • @FALLINGBLOCK - 마치 모래처럼 블록이 떨어지게 합니다.
    • @FALLINGBLOCK [material] [location]
    • @FALLINGBLOCK cobblestone 40,40,40
  • @ENTITY - 앤티티를 생성합니다. QUANTITY는 생성될 엔티티의 수입니다.
    • @ENTITY [ENTITY] [QUANTITY] [LOCATION]
    • 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
    • @ENTITY PRIEST 1 <triggerloc>

플레이어 편집

  • @TP - 트리거를 발동한 플레이어를 지정한 위치로 이동시킵니다. 이것을 최상의 방법으로 사용하기 위해서는, /vt setloc OBJ VAR 으로 장소를 사전에 지정하고, 위치 인수를 $Obj.Var 로 사용하는 것이 좋습니다.
    • @TP [LOCATION]
    • @TP $loc.farm
  • @WORLDTP - 현재 좌표 그대로 다른 월드로 이동합니다.
    • @WORLDTP [player] [world]
  • @OPENINV - InventoryTriggers.yml 에서 지정된 인벤토리를 엽니다.
    • @OPENINV [name]
    • @OPENINV teleportInventory
  • @CLOSEINV - 누군가의 인벤토리를 강제로 닫습니다.
    • @CLOSEINV [player]
  • @MODIFYPLAYER
    • @MODIFYPLAYER [player] [modification] [value]
    • @MODIFYPLAYER <playername> HEALTH 20
      • HEALTH number
      • FOOD number
      • SATURATION number
      • EXP and XP number
      • WALKSPEED number - 1 이상은 미친듯이 빠릅니다. 0.2를 사용해주세요.
      • FLYSPEED number - 1 이상은 미친듯이 빠릅니다. 0.2를 사용해주세요.
      • DISPLAYNAME string - 컬러 코드를 사용할 수 있습니다.
      • LISTNAME string - 컬러 코드를 사용할 수 있습니다.
      • FLYING boolean
      • GAMEMODE string, use creative, survival, or adventure
      • MAXHEALTH number
      • HELDITEM string, use a valid material, like cobblestone
      • HELDITEM:MATERIAL string, this keeps the item data and just swaps the material type
      • HELDITEM:ID string, same as above but in ID form
      • HELDITEM:META number, used to change the type of something such as white wool to pink wool
      • HELDITEM:AMOUNT number up to 64
      • HELDITEM:ENCHANT string, use a valid enchant like damage_all. This will always be a level 1 enchant
      • HELDITEM:DISPLAYNAME string, keeps data but changes the item name. Color codes work.
      • HELDITEM:LORE:SET string, sets the lore to that exactly.
      • HELDITEM:LORE:ADD string, must already have lore to add to
      • HELDITEM:LORE:REMOVE string, kills all lore
      • HIDDEN boolean, hides (or unhides) the player from the server (invisible and in tab)
      • BANNED boolean, this requires advanced mode, and won't kick the player from the server
      • OPERATOR boolean, this required advanced mode and puts a message in console

이펙트

  • @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
    • @FIREWORK [COLOR] [TYPE] [LOCATION]
    • @FIREWORK red burst <playerloc>
  • @SMOKE - 연기 이펙트를 발생시킵니다. VOLUME은 연기의 양을 정수로 나타냅니다. 5가 최대입니다.
    • @SMOKE [VOLUME] [LOCATION]
  • @PARTICLE - 아무 머티리얼을 입자 이펙트로 바꿔줍니다.
    • @PARTICLE [material] [location]
    • @PARTICLE cobblestone <playerloc>
  • @SOUND - 지정된 위치에서 사운드 이펙트를 실행합니다.
    • @SOUND [SOUNDEFFECT] [LOCATION]
    • BLAZE_SHOOT, BOW_FIRE, CLICK1, CLICK2, DOOR_TOGGLE, EXTINGUISH, GHAST_SHOOT, GHAST_SHRIEK, STEP_SOUND, ZOMBIE_CHEW_IRON_DOOR, ZOMBIE_CHEW_WOODEN_DOOR, ZOMBIE_DESTROY_DOOR
    • @SOUND ZOMBIE_DESTROY_DOOR <triggerloc>
  • @SOUNDEX - 추가 사운드를 재생하고 볼륨과 피치를 변경합니다.
  • @SETVELOCITY - 특정 방향으로 플레이어를 밀어냅니다.
    • @SETVELOCITY [player] [x] [y] [z]
    • X, Y, Z는 그 방향으로 얼마나 강하게 밀어낼지를 결정합니다.
    • @SETVELOCITY <playername> 0 2 0 - 이것은 플레이어를 20블록 밀어냅니다.
  • @FLAMES - 불꽃 이펙트를 발생시킵니다. VOLUME은 불꽃의 양을 정수로 나타냅니다. 5가 최대입니다.
    • @FLAMES [VOLUME] [LOCATION]
    • @FLAMES 3 <playerloc>
  • @POOF - 연기를 바깥으로 발산합니다. VOLUME은 연기의 양을 정수로 나타냅니다. 5가 최대입니다.
    • @POOF [VOLUME] [LOCATION]
  • @LIGHTNING - 지정한 위치에 벼락을 발생시킵니다. CauseDamage = true | false
    • @LIGHTNING [CAUSEDAMAGE] [LOCATION]
    • @LIGHTNING true <triggerloc>
  • @EXPLOSION - 지정한 위치에 폭발을 발생시킵니다. POWER는 폭발의 대미지를 정수로 나타냅니다. 0.0 에서 4.0 사이를 입력받습니다. POWER가 0.0이라면 아무런 대미지가 없습니다.
    • @EXPLOSION [POWER] [LOCATION]
    • @EXPLOSION 2.5 89,78,211
  • Fork

변수 콜렉팅

  • @GETBLOCK - 지정한 위치의 블록을 $Object.Var에 저장합니다.
    • @GETBLOCK [OBJ.VAR] [LOCATION]
    • 지정한 위치의 블록을 변경하기 이전에 사용하면 현재 상태를 저장하고 돌려놓을 수 있습니다.
    • @GETBLOCK $<this>.block <triggerloc>
  • @GETENTITYCOUNT - 근처에 있는 엔티티의 수를 가져옵니다.
    • @GETENTITYCOUNT [OBJECTVARIABLE] [ENTITY] [RADIUS]
    • OBJECTVARIABLE - $object.variable에 저장하고 나중에 사용할 수 있습니다.
    • ENTITY - 수를 가져올 엔티티의 종류를 정합니다. ZOMBIE, CREEPER, COW, PLAYER 등이 있습니다.
    • RADIUS - 트리거를 발동한 플레이어를 기점으로 하여, 지정한 블록 반경 안에 있는 엔티티의 수를 셉니다.
    • @GETENTITYCOUNT $<playername>.zombieCount ZOMBIE 8
  • @GETLIGHT - 현재 위치의 조도 레벨을 $Obj.Var에 저장합니다.
    • @GETLIGHT [OBJ.VAR] [LOCATION]
    • 태양, 달, 램프 등의 빛에서 조도 레벨을 가져옵니다(0 에서 15). 가져오는 위치가 고체 블록이라면 0을 반환합니다.
    • @GETLIGHT $<this>.light <playerloc>

동적 변수 명령어

이 섹션은 동적 Object.Variables를 조작하는 명령어를 설명합니다.

  • @SETINT - 정수 변수를 설정합니다.
    • @SETINT [$OBJECT.VARIABLE] [INTEGERVALUE]
  • @ADDINT - 정수 변수에 값을 추가합니다.
    • @ADDINT [$OBJECT.VARIABLE] [INTEGERVALUE]
  • @SUBINT - 정수 변수에서 값을 뺍니다.
    • @SUBINT [$OBJECT.VARIABLE] [INTEGERVALUE]
  • @MULINT - $Obj.Var에 정수로 곱합니다.
    • @MULINT [$OBJECT.VAR] [INTVALUE]
  • @DIVINT - $Obj.Var에 정수로 나눕니다.
    • @DIVINT [$OBJECT.VAR] [INTVALUE]
  • @SETBOOL - 변수에 논리값을 설정합니다.
    • @SETBOOL [$OBJECT.VARIABLE] [true|false]
  • @SETSTR - 문자열 변수를 설정합니다.
    • @SETSTR [$OBJECT.VARIABLE] [TEXT]
  • @ADDSTR - $Obj.Var 문자열의 끝에 글자를 추가합니다.
    • @ADDSTR [$OBJECT.VAR] [TEXT]
    • 글자는 String 형으로 기존 $Obj.Var 끝에 추가할 문자열입니다.
  • @GETSTRLEN - $Obj.Var에 저장된 문자열의 길이를 구합니다.
    • @GETSTRLEN [$OBJ.VAR] [STRINGTOTEST]
  • @DELVAR - 메모리에서 $Object.Variable을 삭제합니다. 임시 변수와 같이 계속 유지될 필요가 없는 것을 삭제해 사용 가능한 메모리 양을 늘입니다.
    • @DELVAR [i|s|b] [$OBJECT.VARIABLE] - i=int s=str b=bool
  • @DELOBJ - 메모리에서 $Object를 삭제합니다. 임시 객체와 같이 계속 유지될 필요가 없는 것을 삭제해 사용 가능한 메모리 양을 늘입니다.
    • @DELOBJ $object
  • @STRBUILD
    • @STRBUILD $obj.var <line> <message>
    • @STRBUILD $obj.var 2 Hello there how are you doing would say how are you doing

MySQL

  • @MYSQL - MYSQL.yml 파일에 제시된 데이터베이스 정보로 Java MySQL 명령어를 사용할 수 있습니다.
    • @MYSQL @obj.var <statement>
    • 결과는 @obj.var에 저장됩니다.
    • @MYSQL select * from users;
    • 이 섹션은 Java MySQL 명령어를 사용하기 때문에, 개발자는 MySQL 사용 문법을 설명할 책임을 지지 않습니다. 또한 새 데이터베이스를 만들어 테스트 하지도 않았습니다. 최악의 경우, 수동으로 데이터베이스를 만들어야 합니다.

배열 나열

  • @ADDLIST - @obj.var something
  • @REMLIST - @obj.var something
  • @DELLIST - @obj.var
    • @ADDLIST @player.list
    • @ADDLIST @player.list WinneonSword
    • @PLAYER @player.list[1]
    • WinneonSword가 배열의 두 번째 항목에 있기 때문에, WinneonSword가 나타납니다.
    • @REMLIST @player.list WinneonSword
    • @PLAYER @player.list[0]
    • @PLAYER @player.list
    • If you do not specify an index, it will display how many items are in there. This would return 1
    • 인덱스에 대한 변수명을 사용할 수도 있습니다.
    • @PLAYER @player.list[<var:$counter.variable>]
    • This only works with <var:> surrounding the variable. Also check if something is in the list with @IF @player.list ?= WinneonSword
  • @VTSystem.OnlinePlayers - 온라인인 모든 플레이어 이름의 배열 목록을 나열합니다.
  • @VTSystem.OnlineUUIDs - 위와 동일하지만 UUID 배열 목록을 나열합니다.

시험 조건

  • @IF - IF 블록은 조건부로 시작합니다. Test two values. If the statement evaluates to true, the script enters the if block and executes each line until it reaches an @ELSE or @ENDIF. If it evaluates to false it skips each line until it reaches an @ELSE or @ENDIF.
    • @IF [i|b|s|si] [$VARIABLE|CONSTANT] [=|!=|>|<|<=|>=\?=] [$VARIABLE|CONSTANT|true|false]
    • i= Integer test
    • b= Boolean test
    • s= String test
    • si=String Case Insensative test
    • 예제
      • @IF i $<playername>.logins >= 30
      • @IF s <playername> = LexLaiden
      • ?= checks if a string contains a string
      • @IF si $object.var ?= red If this object contains the word red...
      • @IF s $obj.var = null Checks if it's empty.
  • @OR - Testing against the previous evaluation. @OR and @AND can only be placed immediately after an @IF, @OR or @AND line.
  • @AND
  • @ELSE - else 블록을 시작합니다.
    • @ELSE
  • @ENDIF - if 블록을 종료합니다.

If you want to edit the YML files by hand you may use tabs or spaces Only at the beginning of a script line to indent your @IF blocks for readability. Don't forget that each @IF block must have a matching @ENDIF

'// lines that start with // are comments.'
'// Start by setting a cooldown so no one can use trigger for 15 sec'
'@COOLDOWN 15'
'// check to see if they have completed the quest'
'@IF b $<playername>.Quest1_Complete = true'
'    @PLAYER &9<playername> You have completed the first quest.'
'    @IF i <itemid> != 368'
'        @PLAYER You should have retrieved the Ender Pearl.'
'        @PLAYER Click this block with the pearl.'
'    @ELSE'
'        @PLAYER You may proceed. Hurry!'
'        @TOGGLEBLOCK 76:1 $Hidden.RedTorchLoc'
'        // pause for 10 1/2 seconds'
'        @PAUSE 10.5'
'        @TOGGLEBLOCK 76:1 $Hidden.RedTorchLoc'
'    @ENDIF'
'@ELSE'
'    @PLAYER You should venture forth to the Barons Keep'
'    @PLAYER before you proceed down this tunnel.'
'    @SOUND GHAST_SHRIEK 231,43,-118'
'    @ENTITY GHAST 2 231,43,-120'
'@ENDIF'
  • @SWITCH, @CASE - @IF랑 같은데 더 낫습니다.
    • @SWITCH [type] [variable] You can use s, i, and b
'@SWITCH s $object.variable'
'    @CASE red'
'        @PLAYER The object is red!'
'    @CASE blue green orange purple'
'        @PLAYER The object is blue, green, orange, or purple!'
'@ENDSWITCH'
  • 모든 @SWITCH는 @ENDSWITCH로 끝나야 합니다.
  • @CASE에는 @ENDCASE가 없습니다.

루프

  • @LOOP - 루프 블록을 시작합니다. All lines after @LOOP up to the matching @ENDLOOP will be exicuted count times. Each @LOOP MUST have a matching @ENDLOOP and you cannot criss cross @IF blocks.
    • @LOOP [COUNT]
  • @BREAKLOOP
    • @BREAKLOOP - This will allow you to break from a @LOOP block. You would use it in an @IF test inside of a Loop block.
	@IF b $some.var = true
	@BREAKLOOP
	@ENDIF
  • @ENDLOOP - 루프 블록을 종료합니다.
    • @ENDLOOP
  • @WHILE
    • @WHILE [i|b|s|si] [VALUE] [=|!=|>|<|>=|<=] [VALUE]
  • @ENDWHILE - WHILE 루프 블록을 종료합니다.
    • @ENDWHILE

@LOOP와 @WHILE은 기본적으로 비활성화 되어 있습니다. http://dev.bukkit.org/server-mods/variabletriggers/pages/about-loops/ 를 참조해 루프를 켜는 방법을 알아보세요.