게임버전 | 1.15.x |
---|
리미트의 한계까지 달려보는 커맨드 강좌
- 야생티켓 만들기!
안녕하세요! 리미트 입니다!
와 벌써 응용 2번째! (원래 오늘은 기초를 올리려 했으나 너무 탐스러운 질문이 보여서...)
흠..! 질문게시판을 돌아다니다 보니 꽤나 재밌어 보이는 질문이 있더군요. (야생 티켓을 만들어 달라는 질문)
(근데.... 저는 1.15.2 버전을 기준으로 만들었는데 그 질문은 1.12.2 버전이네요.ㅎ)
어.... 어쨌든 바로 한번 시작 해 봅시다!
(이 강좌는 30분을 기준으로 만들었습니다. 하지만 조금만 수정하면 10분, 20분 뭐 1시간도 가능합니다!)
먼저 야생맵 같은 것을 먼저 만들어 줍시다 (너무 대충인가?)
그리고 커맨드 블럭을 이러케 설치 해 주세요
(잘 보이시죠?)
자 그리고 커맨드를 입력해 줍시다. (한꺼번에 몰아서 처리한다!!!)
처음에
/scoreboard objectives add sp dummy
/scoreboard objectives add spt dummy 를 치고 시작해 주세요
1 :
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run tp @s x y z (야생 지역)
2 :
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run scoreboard players set @s sp 1
3 :
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run scoreboard players set @s spt 0
4 :
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run replaceitem entity @s weapon.offhand minecraft:air
5 :
scoreboard players add @a[scores={sp=1}] spt 1
6 :
tp @a[scores={spt=36000..}] X Y Z (스폰 지역)
7 :
scoreboard players set @a[scores={spt=36000..}] sp 0
8 :
scoreboard players set @a[scores={spt=36000..}] spt 0
이렇게 입력 해 줍시다!
자... 이제 뜻풀이를...
먼저 1번!
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run tp @s x y z인데요
대충 설명 해 보자면 execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] 왼손에 배드락을 들고
있는 플레이어를 대상으로 합니다. (-106번이 왼손이에요)
run tp @s x y z 그 대상을 X Y Z 좌표로 이동 시킵니다. (야생 시작 지역으로 입력해 주심 됩니다.)
2번은
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run scoreboard players set @s sp 1
앞부분은 똑같구요, run scoreboard players set @s sp 1 는 그 대상의 sp 점수를 1로 만든다는 의미입니다.
3번!
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run scoreboard players set @s spt 0
앞부분은 역시 똑같구요 run scoreboard players set @s spt 0 이 부분은 대상의 spt 점수를 0으로 만든다는 의미입니다.
4번
execute as @a[nbt={Inventory:[{id:"minecraft:bedrock",Slot:-106b}]}] run replaceitem entity @s weapon.offhand minecraft:air
앞부분은 여윽시나 똑같구요 run replaceitem entity @s weapon.offhand minecraft:air 이부분은 대상의 왼손 즉 기반암을 들고 있는 위치를 공기로 바꾼다는 의미입니다. (마인크래프트에서 공기는 그냥 없는 것을 의미합니다.)
5번
scoreboard players add @a[scores={sp=1}] spt 1
spt 점수를 1점씩 올립니다.
6번
tp @a[scores={spt=36000..}] X Y Z (스폰 지역) spt 점수가 36000 이상인 플레이어를 X Y Z (이 부분은 스폰 위치로 해주심 됩
니다.) 로 이동시킵니다. 왜 36000 이냐 하면 마인크래프트 반복형 커맨드 블럭은 1초에 20 번 작동합니다.
즉 1초에 20의 점수가 더해진다고 보면 되겠죠 그럼 30 분을 만들기 위해선 20 x 60 x 30 을 해서 36000이 될 때를 종점으로 해주면 정확
히는 아닐 수도 있지만 30분가량 됩니다 (직접 스톱워치로 재봤습니다.)
7번
scoreboard players set @a[scores={spt=36000..}] sp 0 spt 점수가 36000 이상인 플레이어의 sp 점수를 0으로 만듭니다.
정확히 36000이 아니라 36000 이상으로 한 이유가 이것입니다. 아무리 빠르게 커맨드가 작동 한다 해도 그 사이에 1이 더해져버리면
커맨드가 작동 하지 않을 수 있기 때문입니다.
마지막 8번!
scoreboard players set @a[scores={spt=36000..}] spt 0 spt 점수가 36000 이상인 플레이어의 spt 점수를 0으로 만듭니
다. 초기화 해주는 것이죠.
흠... 이렇게 문장해석만 하면 이해가 안될 수 있으니 알고리즘을 대충 알려드리겠습니다.
1. 기반암을 든 플레이어를 X Y Z (야생 시작 지점) 으로 이동시킨다. 실행이 성공 했을 경우 2를 실행한다.
2. 기반암을 든 플레이어(이제 그냥 대상이라고 할게요)의 sp 점수를 1로 만든다 (야생에 있는 플레이어라고 지정 해주는 느낌입니다.)
실행이 성공 했을 경우 3를 실행한다.
3. 대상의 spt 점수를 0으로 만든다. (혹시나 해서 초기화 해주는 겁니다.) 실행이 성공 했을 경우 4를 실행한다.
4. 대상의 왼손을 공기로 바꾼다.
이렇게 하나 있구요 그리고 따로
1. sp 점수가 1인 플레이어의 spt 점수를 1 올린다. (무한반복)
2. spt 점수가 36000 이상인 플레이어를 X Y Z (스폰 지점) 으로 이동시킨다. 실행이 성공 했을 경우 3를 실행한다.
3. spt 점수가 36000 이상인 플레이어의 sp 점수를 0으로 만든다. 실행이 성공 했을 경우 4를 실행한다.
4. spt 점수가 36000 이상인 플레이어의 spt 점수를 0으로 만든다.
(그림엔 4만 조건적인데 알고리즘 상으론 3 과 4가 조건적인 상황의 느낌입니다. 사실 두개 다 조건적으로 해도 되고
4만 조건적으로 해도 상관 없습니다.)
저는 커맨드를 만들기 전에 먼저 알고리즘을 생각해 보는데요 이게 커맨드를 만들때 이제 뭘 만들어야 하는지 생각하기도 쉽고
만약 뭐가 안되면 수정하기도 쉬운 것 같아서 이 방법을 많이 사용하는 편입니다.
(강좌마다 이걸 써야하나)
어쨌든 야생 티켓을 만들어 봤는데요 뭐 만들고는 싶지만 만들 수 없는것이나 만들어 줬으면 하는 것 같은 것을 댓글에 남겨주시면 제가
할 수 있는 것은 강좌로 써드리겠습니다. (요즘 응용강좌 쓰느라 기초를 못썼네요 내일 써야 겠어요)
그럼... 안녕!
마크러버
2020.05.17님이 커맨드를 너무 잘하셔서 그런데 커맨드 스킬강좌를 따로 하시는게 어떨까요?
ㅎㅎ
리미트
2020.05.18어... 뭐 예를 들면 겐지 질풍참 같은건가요?
아님 뭐 칼 사이드 옐로우버스터 블랙프라임 다크니스헬 아이스스톰 같은건가요?
mchang
2020.05.18헐
리미트
2020.05.18ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
마크러버
2020.05.18아 말하자면 그런거죠
리미트
2020.05.18ㅋㅋㅋㅋ 한번 해보겠습니다 ㅋㅋㅋㅋ
mchang
2020.05.18넹넹
마크러버
2020.05.17제 말은 커맨드로 스킬을 만든다는 뜻입니다
여우리
2020.06.05티켓아이템 만드는 것도 알려주실 수 있나요? 야생티켓이라는 이름을 가진 아이템을 들고 공중에 우클릭하면 이동된다 < 이런식으로요! 기능은 도움이 정말 많이 됐어요
리미트
2020.06.06우클릭은 불가능하고 F 키 (양손 맞바꾸기) 로 가능합니다! 혹시 버전이 몇인지 알 수 있을까요?
여우리
2020.06.061.15.2 버전입니다!
KimLotTV
2020.06.08그거 스크립트로 할수있음
구르구르
2022.09.151.19에서 해당 방법을 하려는데 4번에서 run 뒤에 eplaceitem entity @s weapon.offhand minecraft:air 가 전부 오류가 떠서 아이템이 공기로 바뀌지 않는데 어떻게 해야할까요?
그리고 아이템 이름을 바꾸는 커맨드로 종이를 '티켓'으로 인식하게 해서 이용권을 만들고 싶은데, 커맨드로 이름을 바꾸는 것 까지는했는데 위 명령어에서 '티켓'으로 어떻게 인식하게 해야할까요?