개인 자료란 (JE)

  서버 커뮤니티

Profile 느으너앍 대표칭호 없음

Soul_MC 394e8b058b494a24be42a0a304207c31

Profile

이해도 중급자(필요한 애드온을 찾아서 만들 수 있어요) 
게임버전 (JE) 1.18.2 
게임버전 (BE) 관련없음 
스크립트 버전 2.6.1 

command 투명액자 [<text>]:
    permission: admin
    trigger:
        if arg 1 is not set:
            set insertion format of {_temp} to "minecraft:give @p item_frame{EntityTag:{Invisible:1b},display:{Name:'[{"text":"투명 액자","italic":false,"color":"gold","bold":true}]',Lore:['[{"text":"투명한 액자를 설치할 수 있다.","italic":false,"color":"#ff9999"}]','[{"text":"부수면 일반 액자가 되니 주의하자.","italic":false,"color":"#ff9999"}]']},Enchantments:[{id:power,lvl:1}],HideFlags:33} 64"
            send "%{_temp}%" to player
            #execute player command "%{_temp}%"
            stop
        if arg 1 is "빛" or "glow":
            set insertion format of {_temp} to "minecraft:give @p glow_item_frame{EntityTag:{Invisible:1b},display:{Name:'[{"text":"빛나는","italic":false,"color":"light_purple","bold":true},{"text":" 투명 액자","color":"gold"}]',Lore:['[{"text":"빛나는","italic":false,"color":"light_purple"},{"text":" 투명한 액자를 설치할 수 있다.","italic":false,"color":"#ff9999"}]','[{"text":"부수면 일반 액자가 되니 주의하자.","italic":false,"color":"#ff9999"}]']},Enchantments:[{id:power,lvl:1}],HideFlags:33} 64"
            send "%{_temp}%" to player
            #execute player command "%{_temp}%"
            stop
        else:
            send "&b/투명액자 &f: &b투명액자를 64개 지급받는다." to player
            send "&b/투명액자 &6빛(또는 glow) &f: &b빛나는 투명액자를 64개 지급받는다." to player
            stop

위 코드를 작성하니 

해당 오류가 발생하여 중괄호와 따옴표가 문제가 생각되어

options:
    aa : minecraft:give @p item_frame{EntityTag:{Invisible:1b},display:{Name:'[{"text":"투명 액자","italic":false,"color":"gold","bold":true}]',Lore:['[{"text":"투명한 액자를 설치할 수 있다.","italic":false,"color":"#ff9999"}]','[{"text":"부수면 일반 액자가 되니 주의하자.","italic":false,"color":"#ff9999"}]']},Enchantments:[{id:power,lvl:1}],HideFlags:33} 64
    bb : minecraft:give @p glow_item_frame{EntityTag:{Invisible:1b},display:{Name:'[{"text":"빛나는","italic":false,"color":"light_purple","bold":true},{"text":" 투명 액자","color":"gold"}]',Lore:['[{"text":"빛나는","italic":false,"color":"light_purple"},{"text":" 투명한 액자를 설치할 수 있다.","italic":false,"color":"#ff9999"}]','[{"text":"부수면 일반 액자가 되니 주의하자.","italic":false,"color":"#ff9999"}]']},Enchantments:[{id:power,lvl:1}],HideFlags:33} 64


command 투명액자 [<text>]:
    permission: admin
    trigger:
        if arg 1 is not set:
            set {_temp} to "{@a}"
            send "%{_temp}%" to player
            #execute player command "%{_temp}%"
            stop
        if arg 1 is "빛" or "glow":
            set {_temp} to "{@b}"
            send "%{_temp}%" to player
            #execute player command "%{_temp}%"
            stop
        else:
            send "&b/투명액자 &f: &b투명액자를 64개 지급받는다." to player
            send "&b/투명액자 &6빛(또는 glow) &f: &b빛나는 투명액자를 64개 지급받는다." to player
            stop

해당 구문 처럼 options 처리를 하여 작동해봤지만 

위와 같은 오류가 나왔습니다.

명령어 부분을 TEXT 처리하는 방법은 없을까요?

아니면 복잡한 명령어를 유저 또는 콘솔 차원에서 실행 가능하도록 할 순 없을까요?

10개의 댓글

코코냐
2022.09.07

길어서가 아니라 이스케이핑 처리가 안된겁니다.

느으너앍
2022.09.07
@코코냐

제 질문은 긴 명령어 구문 부분을 어떻게 텍스트 처리 할 수 있을까 였습니다

이스케이핑 처리라는건 어떤건지 잘 모르겠습니다.

혹시 설명 가능하실까요?

@느으너앍

저 구문 안에서는 "를 ""로 '를 ''로 쓰셔야 합니다

느으너앍
2022.09.08
@감자의여유로운한마포

그럼 명령어가 제대로 작동하지 않겠군녀..

@느으너앍

"를 ""로 쓰면 실행 과정에서 제대로 인식합니다

@느으너앍

명령어 전체를 "로 감쌌기 때문에, 명령어의 내용 중에 있는 "와 이어져 버려 혼란이 생기는 원리입니다.

그래서 스크립트에서 커맨드 명령어를 작성할 때는 내용 안의 모든 "(큰 따옴표)를 ""(두개)로 , '를 ''(작은 따옴표 두 개)로 치환해야 스크립트가 정상으로 인식합니다.

코코냐
2022.09.07
@느으너앍

텍스트 처리는 제대로 되긴 한겁니다만, 스크립트가 이를 인식하지 못하는 형태로 처리가 된 상태입니다. 이스케이핑 자체에 대해서는 직접 검색해보십시오.

느으너앍
2022.09.08
@코코냐

이스케이핑에 대해서 검색했더니 자바 스크립트나 HTML쪽 문서가 나오는데 요것도 참고가 되는걸까요...?

코코냐
2022.09.08
@느으너앍

방식은 다르지만, 기본적인 개념 자체는 동일합니다.

xAQu
2022.09.08

스크립트에서 " , % , # 은 두번씩 입력해야 문자로 입력됩니다.