Jeraden_n 4c8ff9825f8342f2bb0fd7c96f78d7e6
강좌 자바 에디션(JE) 플러그인 개발
[제라든의 매직스펠 강좌] [기본] 4강. 기본 구문 목록 (Spell Configuration)
분야 | 매직스펠 |
---|---|
장르 | 재미, RPG |
게임버전 | 모든버전 |
API | 페이퍼 |
자료글 | https://github.com/TheComputerGeek2/MagicSpells |
강의 소개
안녕하세요, 제라든입니다. 오랜만입니다. 오늘은 매직스펠 공통 구문에 대해서 다루겠습니다. 스펠 클래스별 공통 구문과 스펠 전체 공통 구문에 대해서 나열했습니다. 참고로 1.14 버전 매직스펠 위키를 기준으로 작성하여 작동되지 않는 구문이 있을 수도 있습니다. 주의하시길 바랍니다. |
1. 구문 값 유형
구문 옆 괄호 란 < >은 구문 값입니다. 구문에 알맞는 유형의 값을 넣어야 구문이 제대로 작동합니다. < number > 숫자 값입니다. ex) cooldown: 10 < text > 문자 값입니다. ex) name: Jeraden_spell < boolean > 참/거짓 값입니다. true나 false를 넣으시면 됩니다. ex) target-self: true < sound > 소리 값입니다. 마인크래프트 sound 파일 이름을 적으시면 됩니다. ex) entity.generic.explode < item > 아이템 값입니다. 매직 아이템의 이름이나 기본 아이템의 영문 이름을 적으시면 됩니다. < spell > 스펠 값입니다. 스펠 이름을 적으시면 됩니다. ex) spell: damage_spell < ~s > 지정한 형식의 값을 복수로 넣을 수 있습니다. ex) aliases: - potion - effect - buff spells: - rush_spell - damage_spell - jump_spell |
2. 공통 구문
name 스펠의 이름을 설정합니다. aliases 스펠의 이름으로 대체할 수 있는 이름 목록을 설정합니다. 서브 스펠로 사용할 때는 작동하지 않습니다. always-granted 모든 플레이어들이 해당 스펠을 배운 상태로 설정합니다. permission-name 해당 스펠에 대한 펄미션 이름을 설정합니다. incantations 해당 스펠을 발동시키는 명령어 목록을 설정합니다. ex) incantations: - "/스펠 사용하기" description 스펠의 설명을 설정합니다. Help Spell을 사용할 때 설정한 내용을 보여줍니다. cast-item / right-click-cast-item 설정한 아이템을 클릭 또는 우클릭하여 스펠을 발동시킬 수 있습니다. cast-items / right-click-cast-items cast-item 구문을 목록화시켜 복수의 아이템을 설정할 수 있습니다. require-cast-item-on-command 해당 구문이 true일 경우 명령어로 해당 스펠을 사용할 때, 'cast-item' 구문으로 설정된 아이템을 들고 있어야만 사용할 수 있습니다. broadcast-range 해당 스펠에 설정된 메세지 관련 구문의 영향 범위를 설정합니다. min-range 스펠의 최소 사정거리를 설정합니다. Tageted 스펠에 주로 사용됩니다. range 스펠의 최대 사정거리를 설정합니다. Tageted 스펠에 주로 사용됩니다. spell-power-affects-range 스펠 효과가 강화되었을 때, 사정거리도 영향을 받는지 설정합니다. can-target 대상으로 지정할 수 있는 범위를 설정합니다. 범위에는 self or caster, players, invisibles, nonplayers, monsters, animals가 있습니다. cost 스펠을 사용할 때 아이템 혹은 특정 능력치를 소모해야 스펠을 발동할 수 있습니다. 능력치 소모는 health, hunger, experience, levels, durability, money 가 있습니다. cooldown 쿨타임을 설정합니다. server-cooldown 모든 플레이어에게 적용되는 쿨타임을 설정합니다. shared-cooldowns 목록에 있는 스펠에 쿨타임을 적용합니다. ignore-global-cooldown 글로벌 쿨타임을 무시할지 설정합니다. charges 해당 스펠의 최대 충전량을 설정할 수 있습니다. 해당 기술의 쿨타임이 끝날 때까지 지정한 횟수만큼 사용할 수 있습니다. effects 이펙트 효과를 설정합니다. 이 부분은 기초 강좌에서 따로 다루겠습니다. [modifiers]modifiers 스펠 사용자에 대한 조건부 설정을 할 수 있습니다. target-modifiers 스펠 대상 엔티티에 대한 조건부 설정을 할 수 있습니다. Targeted 종류의 스펠만 사용할 수 있습니다. location-modifiers 스펠 대상 위치에 대한 조건부 설정을 할 수 있습니다. Targeted Location 클래스의 스펠만 사용할 수 있습니다. restrict-to-worlds 지정한 월드에서만 스펠을 사용할 수 있습니다. [sound]recharge-sound charges 구문이 활성화되었을 때, 재충전 시 들리는 소리를 설정합니다. sound-on-cooldown cooldown 구문이 활성화되었을 때, 재충전 시 들리는 소리를 설정합니다. sound-missing-reagents 소모할 재료가 부족할 때 들리는 소리를 설정합니다. [string]str-cost cost 구문 사용 시 작동합니다. 재료 소모 시 텍스트를 띄웁니다. str-cast-self 스펠 사용 시, 시전자에게만 텍스트를 띄웁니다. str-cast-others 스펠 사용 시, 시전자 외의 유저에게 텍스트를 띄웁니다. str-on-cooldown 스펠이 아직 쿨타임 상태일 경우, 텍스트를 띄웁니다. 텍스트에 %c를 넣으시면 남은 쿨타임 시간으로 바뀝니다. str-missing-reagents cost 구문 사용 시 작동합니다. 재료가 부족할 시 텍스트를 띄웁니다. str-cant-cast 스펠을 사용할 수 없을 시 텍스트를 띄웁니다. str-wrong-world 해당 월드에서 스펠을 사용할 수 없으면, 텍스트를 띄웁니다. str-wrong-item 잘못된 아이템을 들고 스펠을 사용하려 할 시 텍스트를 띄웁니다. str-modifier-failed 해당 스펠의 조건부를 총족하지 못할 시 텍스트를 띄웁니다. tags 해당 스펠에 태그를 설정합니다. silence 스펠이나 cleanse 스펠 등에 활용됩니다. |
2. 클래스별 공통 구문
[Targeted Spell]always-activate 대상을 지정하지 못해도 스펠을 사용합니다. 이 경우, 대상 지정을 못하면 스펠 효과가 무효화되어 실패 판정이 됩니다. play-fizzle-sound 스펠이 대상을 지정하지 못할 시 block.fire.extinguish 소리가 발생합니다. target-self 스펠이 자기자신을 대상으로 지정하도록 설정합니다. spell-on-fail 대상을 지정하지 못하면, 설정한 스펠을 발동시킵니다. str-cast-target 스펠 사용 시, 대상에게 텍스트를 띄웁니다. str-no-target 대상을 지정하지 못할 시, 시전자에게 텍스트를 띄웁니다. [Buff Spell]can-cast-with-item 해당 스펠을 아이템을 사용하여 발동할 수 있는지 설정합니다. can-cast-by-command 해당 스펠을 명령어로 입력하여 발동할 수 있는지 설정합니다. targeted 해당 스펠이 대상을 지정하여 그 대상에게 스펠 효과를 걸 수 있습니다. 즉, Targeted 클래스처럼 작동합니다. toggle 스펠을 사용했을 때 이미 같은 스펠에 걸린 상태면, 스펠을 해제시킬지 설정합니다. false일 경우, 같은 스펠이 또 걸렸을 때 지속시간이 초기화됩니다. duration 스펠의 지속시간을 설정합니다. power-affects-duration 스펠 효과 강화 시, 지속시간도 영향을 받는지 설정합니다. cancel-on-give-damage 피해를 주면 버프 스펠이 해제됩니다. cancel-on-take-damage 피해를 받으면 버프 스펠이 해제됩니다. cancel-on-death 사망 시 버프 스펠이 해제됩니다. cancel-on-teleport 순간이동 시 버프 스펠이 해제됩니다. cancel-on-change-world 월드를 옮길 시 버프 스펠이 해제됩니다. cancel-on-spell-cast 스펠 사용 시 버프 스펠이 해제됩니다. cancel-on-logout 서버에서 나가면 버프 스펠이 해제됩니다. |
강의 후기
도움이 되셨길 바라며, 다음 강의는 작성되는 대로 올리도록 하겠습니다. 아마 다음 강의에서는 조건부 Modifiers에 대해서 다룰 생각입니다. 추천과 댓글 꼭 부탁드립니다. |
ASSERVER
2020.07.08Shared-cooldown으로 다른 스펠에 쿨타임 적용이 가능한데
혹시 지정한 스펠의 쿨타임을 초기화 하거나 줄이는것도 가능할까요?
제라든
2020.07.09그건 매직스펠 상에서는 불가능한 것으로 알고 있습니다.
jh22486
2020.07.18매직스펠 도약 하는 명령어 아시나요
Big_Bang
2020.07.28"Leap" 스펠 말씀이신가요?
theofofthe
2020.09.10매직스펠 플러그인을 다운받으면 저절로 생성되는 spells-regular.yml 파일에있는 leap스펠 구문을 그대로 복사 붙여넣기를 했는데 신기하게 제가 만들기만 하면 매직스펠이 사용이 되지 안씁니다. spells-regular.yml 파일을 사용하면 잘되는데 제가 따로 메모장이나 노트페드 에 구문을 그대로 붙여넣어 만들기만 하며는 아됩니다(.yml 파일로 저장했고 구문에 한글도 없습니다).(다운밭거나,spells-regular.yml 파일을 사용하면 잘되는데 제가 만들기만하며는 스펠사용이 안됨니다.. 혹시 해결방법이 있나요?
ASSERVER
2020.09.11가끔 아무것도 적용 안한 막대기로 스펠이 사용되는데 이거는 어떻게 해결하나요?
제라든
2020.10.04spells-regular 파일을 삭제하시면 됩니다.
Reas
2020.10.18강의 잘 보고 있습니다.
매직스펠에서 변수로 조건을 걸어서 사용할 수 있는데,
그 변수를 skript 플러그인 변수와 연동할 수 있나요?
예를 들어 매직스펠 변수에 elemental에 fire를 부여하고,
스크립트 플러그인에서 대미지를 받았을때,
매직스펠 변수 elemental이 fire이면,
메세지가 출력되는 방식으로요
api를 이용하는 방법밖에 없는지, api를 이용하는 방법도 되긴하는지 궁금하네요!
제라든
2020.10.18일단 연동 자체는 불가능합니다.
skript에서 변수를 만들고, CommandSpell을 이용해서 조정하는 방법이 있습니다.
Reas
2020.10.18그럼 skript에서 magic spell로만 일방향으로만 대입가능한건가요?
진짜 어려운 부탁인데 간단하게라도 알려주시먄 안될까요..?
on walk on stone:
set {status} to "fire"
음... 이 이후로 감이 안잡히네요..ㅠㅠ
제라든
2020.10.18'/command var [] []' 로 명령어 만드시고
ExternalCommandSpell 스펠로 "var add 1" 이런 식으로 하시면 됩니다.
Reas
2020.10.18아 무슨 말인지 이해했어요!
그러면 스펠을 맞은 상대방한테 변수를 추가하는건 안되나요?
설명해주신 방법은 제가 cast item 사용하면 ExternalCommandSpell 실행해서 제 변수를 설정해주는 방법인데,
이제 제가 스킬을 써서 맞은 플레이어의 변수를 설정하는방법이 있나요?
ExternalCommandSpell 에 맞은 상대의 권한으로 명령어를 실행하는 옵션이 있나요?
제라든
2020.10.18제라든#6509로 연락주시길 바랍니다.
Reas
2020.10.18오늘 너무 늦기도 했구 괜히 귀찮게 해드리는거 같아서 내일 연락 드릴게요!
오늘은 저혼자 이것저것 해보곘습니다
GEEKSCI
2020.12.30제라든님 매직스펠 영상들을 보면 reddust파티클에 색을 입힐수 있는거 같은데 어떻게 하는것인가요 아니면 reddust가 아니라면 무엇인가요