개인 자료란 (JE)

  서버 커뮤니티

Profile 앙구 대표칭호 없음
Profile

질문하기 커맨드

커맨드 왕초보입니다!! 질문이요!

2022.07.19 조회 수 471 추천 수 0
이해도 입문자(아무것도 몰라요) 
게임버전 (JE) 1.19 
게임버전 (BE) 관련없음 

평소에 코딩도 전혀 안하고 커맨드 이제야 만져보는 사람입니다. 양해해주세요!

렐름서버에서 발판을 밟으면 tp가 되는 시스템을 만들고 있습니다. 다른 사람이 밟으면 아무 일이 일어나지 않고 제가 실행해야만 tp가 되는 이동장치를 만들고 싶은건데, 현재 제 실력으론 남이 눌렀을 때 제가 이동되게 돼서 이 문제를 고치고 싶습니다 ㅠ,ㅠ

한가지 조건이 있다면 무선 커맨드여야 합니다!

현재 제가 위의 커맨드를 만들기위해 쓴 내용은 


반복형/무조건적/항상 활성화

execute if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true]

연쇄형/조건적/항상 활성화

tp <제 닉네임> ~ ~ ~

입니다.


그리고 커맨드를 실행하는 개체에게만 작동하는 커맨드도 많이 쓰일 예정인데, 제가 알기론 @s가 실행하는 대상이라고 알고있어서 써봤지만 아무리해도 작동이 안 되더라구요. 그래서 @p를 쓰고 있지만 가까이에 사람이 많으면 엉뚱하게 작동하는 경우가 계속 생겨서 확실하게 '실행하는 개체'에게만 커맨드를 적용하는 방법을 알고 싶습니다ㅠㅠ!!


마지막으로, 스코어보드로 돈 시스템을 최근에 새로 만들었습니다만, 상점처럼 물물교환하는 시스템을 만들고 싶어서

'아이템 액자를 우클릭하면'  가격만큼 스코어보드의 점수가 빠짐과 동시에 아이템이 지급되는 커맨드는 어떻게 만들까요?

도움 주시면 감사하겠습니다! 


(+수정:액자 우클릭으로 인식시키는게 어려울듯 해서 버튼으로 대체해도 괜찮습니다!) 

7개의 댓글

코코냐
2022.07.19

1. execute의 if문을 활용해서 밟은 사람이 본인인지 검사시키세요.

2. 액자 우클 자체는 감지가 안되는 것으로 알고있고, 대신 뒤에 비교기를 달아 값이 바뀌는 것으로 보통 구현하는 편입니다. 혹은 무한히 if문을 돌려서 바뀌는걸 찾을 수도 있긴 하고요. 다만 어느쪽이든 누가 눌렀는지는 감지가 어렵습니다.

앙구
2022.07.19
@코코냐

밟은 사람이 본인인지 검사는 어떻게 시킬까요..? 문법은 거의 몰라서 혹시 적어주실 수 있으실까요?

그리고 액자 우클을 인식하기가 어렵다면 버튼으로 대체해도 괜찮습니다. 이때 점수 감산/아이템 지급을 동시에 하는 커맨드는 어떤 것인가요..?

파워코딩
2022.07.19
@앙구

execute if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true]

위 커맨드에 바로 tp 명령어를 붙이면 커맨드 하나로 간단하게 만들 수 있습니다.

 

execute as 실행대상 at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp 닉네임 x y z

 

이렇게 하면 발판을 밟은 본인만 tp 될 뿐더러 실행 대상을 @a[tag='admin'] 이런식으로 설정하면

'admin' 태그를 가지신 분만 tp되게 설정되어 어드민분만 tp 되게 만들 수 있습니다.

 

 

 

점수 감산/아이템 지급을 동시에 하며, 무선으로 작동되는 커맨드같은 경우

버튼 보다는 디자인과 기능성 면으로 효율적인 '표지판' 을 사용하는 것이 더 좋아 보입니다.

표지판은 우클인식과 대상을 인식할 수 있기 때문에 훨씬 만들기 수월할 것으로 보입니다.

표지판 관련 커맨드는 직접 찾아보시고, 잘 모르시겠다면 답글로 질문하셔도 괜찮으실 것 같습니다

앙구
2022.07.20
@파워코딩

안녕하세요!! 답변 감사히 잘 읽었습니다.

참고하면서 여러 불편사항이 개선되었습니다! 감사합니다.

다만 여전히 문제점이 있어서 질문 드리고자 합니다!

 

1. 말씀해주신 대로 태그를 정한 후

execute as @a[tag=admin] at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp 닉네임 x y z

으로 실행한 결과, 제가 tp하는건 잘 작동합니다. 하지만 제게 지금 필요한건 저 이외엔 아무것도 작동이 되지 않는것이 가장 중요한데, 현재 서버에 사람이 없어서 아이템 던지기와 동물로 테스트해본결과 똑같이 실행이 되더라구요.ㅠㅠ 이것도 있어선 안되는 일이라 이 부분은 고칠 수 있을까요?

 

2. 현재 저의 실력으론 무선커맨드를 쓸 때 무조건 [반복형/무조건적/항상 활성화]를 썼습니다. 여기서 형식이 하나라도 바뀌면 안 되더라구요.

그런데 이 설정으로 '아이템 1개 지급', '대사 한 번 띄우기' 같은 명령어를 실행하면 발판이 눌려있는 동안 연속해서 출력되는 사태가 생깁니다.

무선을 유지하면서 명령어를 한 번만 실행할 수 있는 방법은 어떤 것이 있나요?

 

3. 말씀 참고하여 표지판 우클릭 커맨드를 찾아봤는데, 여기에 활용되는 커맨드가 clickEvent 이게 맞다면 혹시 아이템 '종'에도 똑같이 응용될 수 있을까요?

파워코딩
2022.07.20
@앙구

1 . execute as @a[tag=admin] at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp 닉네임 x y z

윗 커맨드는 제가 윗글에서 말씀드린대로 'admin' 태그를 가지신 분만 tp되는 커맨드 입니다.

해석이 어려워 2가지로 해석하여 각각의 커맨드를 알려드리겠습니다.

 

첫째, 어드민만 밟아 어드민만 이동하는 발판을 만드려면

execute as @a[tag=admin] at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp 닉네임 x y z

이 커맨드가 맞으며, 만약 이동하려는 좌표가 0 0 0 이라고 가정한뒤, 작성자님 본인을 tp 시키는 커맨드라면 아래와 같은 커맨드 입니다.

execute as @a[tag=admin] at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp @s 0 0 0

하지만 작성자님께서 'admin' 태그를 가지고 있어야 실행되기 때문에

/tag @s add admin 이라는 명령어를 한번 실행하여 작성자님에게 'admin' 태그를 부여해야 작성자님만, 즉 어드민만 작동시키고

tp 할 수 있는 커맨드가 완성됩니다.

 

둘째, 렐름의 모든 플레이어가 이 발판을 밟아 tp 하는 명령어를 만드려면

execute as @a at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp 닉네임 x y z

이 커맨드를 이용하면 됩니다.

현재 작성자님께서 "현재 서버에 사람이 없어서 아이템 던지기와 동물로 테스트해본결과 똑같이 실행이 되더라구요.ㅠㅠ" 라고 남기셨는데,

제가 알기로 '@a' 라는 실행대상은 플레이어가 아닌 다른 엔티티를 포함시키지 않는 것으로 알고 있습니다.

 

그렇기에 아이템이나 동물이 작동시키거나 tp 되는건 불가능한 일입니다. 근데 그런 일이 일어난 것을 보아

(제가 작성자님의 말을 잘못 이해한걸 수도 있겠지만) 실행 대상을 @a가 아닌 @e로 입력하셨거나 또 다른 이유가 있을 것 같습니다.

 

[어디까지나 자료를 보지 못하고 작성자님의 글 만으로 이해하려다 보니 제가 잘못 이해한 부분이 있을 수 있습니다. ㅠㅠ]

 

 

커맨드 왕초보라는 말씀때문에 커맨드에 대한 이해도가 어느정도인지는 잘 모르겠으나

scoreboard 커맨드를 아신다는 전제하에 2, 3 번에 대한 답변을 해드리겠습니다.

(혹여나 모르신다면 다시 질문 해주시면 감사하겠습니다.)


 

2. 연속되서 출력되는 사태는 간단히 해결할 수 있습니다.

/scoreboard objectives add A dummy

A라는 이름의 더미 스코어보드를 만든뒤

아이템 1개 지급, 대사 한번 띄우기 등의 명령어를 실행하면 A라는 스코어보드를 1 올려서

execute if score 명령어로 A 스코어보드를 감지해, 값이 1이라면 작동 시키지 않는 커맨드로 해결할 수 있습니다

(이 커맨드는 글로만 설명하는게 복잡해서 이해를 못하신다면 사진을 찍어 보내드리겠습니다)

 

3. clickEvent라는 NBT는 오직 표지판에만 적용될 수 있습니다. 종의 우클릭을 감지하려면 종의 사용횟수를 감지하는 것도 좋아 보입니다.

scoreboard 커맨드로 플레이어의 '종 울림' 횟수를 저장하여 종을 우클릭한 것을 감지할 수 있습니다.

 

/scoreboard objectives add bellRing minecraft.custom:minecraft.bell_ring

윗 커맨드로 bellRing 이라는 스코어보드르 만든뒤

똑같이 execute if score 명령어로 감지하여 응용할 수 있습니다.

(이 커맨드도 글로만 설명하는게 복잡해서 이해를 못하신다면 사진을 찍어 보내드리겠습니다)

앙구
2022.07.20
@파워코딩

정성스러운 답변 정말 감사드립니다!

일단 응용해본 후 답변을 드리자면, 제가 1번에서 말씀드린 것은 첫번째로 해석하신 쪽이 맞습니다.

제가 밟았을 때 저만이 이동할 수 있고, 동물과 아이템을 포함한 저 이외의 모든 엔티티는 발판을 밟았을 때 전혀 작동하지 않아야 합니다.

그래서 말씀 주신 대로 저에게 admin 태그를 부여한 후 execute as @a[tag=admin] at @s if block ~ ~ ~ #minecraft:wooden_pressure_plates[powered=true] run tp @s 0 0 0 커맨드를 그대로 응용해 보았습니다만, 여전히 다른 엔티티에 의해 작동이 되고 있습니다 .ㅠㅠ

 

그리고 혹시 대상 인자 @s는 정확히 어떻게 사용되는 지 알려주실 수 있나요?

@p는 사람이 많을 때 오작동이 꽤 많아 '실행하는 대상'만 해당시키는 방법이 가장 필요한 상황이라서요.

 

또, 3번 답변은 어떤 식으로 작동하는 지 이해가 됐기 때문에 감사히 응용할 수 있을 것 같습니다!

다만 2번 답변에서 값이 1이라면 작동시키지 않는 커맨드가 어떤 것인지 잘 모르겠어서, 사진을 보내주시면 좋을 것 같습니다.

 

마지막으로 표지판 우클릭 관련 커맨드는

give @p minecraft:oak_sign{BlockEntityTag:{Text2:'{"text":"텍스트","clickEvent":{"action":"run_command","value":"명령어"}}'}}

처럼 '커맨드가 입력된 상태의 커스텀 표지판을 생성'후 설치하여 실행하는 방식의 커맨드를 사용하고 있습니다만, 여기서 위의 명령어엔 저의 기량으론 아이템 지급 같은 한가지 커맨드밖에 실행시킬수 없는 상황입니다.

위와 같은 '커맨드가 입력된 커스텀 아이템 생성' 후 설치하여 실행하는 방식을 유지하면서,

스코어보드의 점수를 감산함과 동시에 아이템을 지급<처럼 두가지 이상의 명령을 한 번에 입력할 방법은 없는 것일까요?

 

이상입니다. 계속해서 답변해주셔서 다시한번 감사드립니다!

파워코딩
2022.07.21
@앙구

늦게 확인해서 죄송합니다. 현재 외출중이라 집으로 들어가서 마저 답변 해 드리겠습니다. 감사합니다.

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3