Ylemon0618 f920ec2ed0f7479684dd910fc7fde463
게임버전 | 모든버전 |
---|
안녕하세요. 오늘은 마인크래프트 커맨드를 응용해서 타이머를 만드는 방법을 소개해 드리겠습니다.
우선 알아야 할 명령어 들입니다.
-scoreboard
-execute
-setblock
-title
이 명령어들은 나중에 소개해 드리겠습니다.
모르시는 분들은 다른 강좌를 찾아보시거나, 구글링을 해보시는 걸 추천합니다.
자, 그럼 이제 시작해 보겠습니다.
우선, 채팅창에 다음과 같은 명령어들을 쳐주세요.
/scoreboard objectives add timer dummy {"text":"timer"}
잠깐 설명을 하자면 timer 라는 이름의 dummy 타입의 objective 를 만드는 명령어 입니다.
파란색 글씨로 되어있는 timer 는 명령어에서 쓸 이름이고, 초록색 JSON형식으로 되어있는 timer 는 직접 보이는 이름입니다.
저는 쉽게 이해를 돕기위해 두개의 이름을 통일했습니다.
/scoreboard objectives add second dummy {"text":"second"}
second 라는 이름의 dummy 타입의 objective 를 만드는 명령어 입니다.
/scoreboard objectives add minute dummy {"text":"minute"}
minute 라는 이름의 dummy 타입의 objectives 를 만드는 명령어 입니다.
자, 이렇게 3개의 명령어를 쳐줬다면 준비는 끝났습니다.
이제 커맨드 블럭을 사용해 봅시다.
(저는 타이머를 시작시키는 방법을 레버를 당기는 형식으로 선택했습니다.
여러분들은 하고싶으신 대로 하셔도 무방함을 알려드립니다.)
이제 본격적으로 타이머를 만들어 보겠습니다.
scoreboard players add @a timer 1
을 반복형 커맨드 블럭에 넣어주고,
execute as @a if score @s timer matches 20 run scoreboard players add @a second
를 연쇄형 항상 활성화 커맨드 블럭에 넣어주세요.
scoreboard players reset @a timer
를 연쇄형 항상 활성화 조건적 커맨드 블럭에 넣어주시고 작동 시켜주면
second가 올라가는 것을 확인 할 수 있습니다.
이 명령어의 원리는, 반복 커맨드는 1틱(0.05초)에 한번 작동된다는 점을 이용해 timer 변수가 20이 될때마다 second 에 1을 더하고, timer 를 초기화 시키는 것 입니다.
이번에는 분이 올라가는 시스템을 만들어 보겠습니다.
execute as @a if score @s second matches 60 run scoreboard players add @a minute 1
을 연쇄형 항상 활성화 커맨드 블럭에 넣어주고,
scoreboard players reset @a second
를 연쇄형 항상 활성화 조건적 커맨드 블럭에 넣어주면
60초 마다 분이 올라가는 것을 확인 할 수 있습니다.
이것도 마찬가지로 second 변수가 60이 될 때 마다 minute 에 1을 더하고, second 를 초기화 시키는 것 입니다.
이제 분과 초를 actionbar 에 띄워줄 건데요
다른 반복형 커맨드 블럭에 (좀 깁니다)
title @a actionbar ["",{"text":"[","color":"gold","bold":false},{"selector":"@a","color":"gold","bold":false},{"text":"] ","color":"gold","bold":false},{"text":"timer : ","color":"yellow","bold":false},{"score":{"name":"@a","objective":"minute"},"color":"green","bold":false},{"text":" : ","color":"blue"},{"score":{"name":"@a","objective":"second"},"color":"green","bold":false}]
를 넣어 주세요.
그리고
와 같은 모양으로 커맨드 블럭 3개를 더 설치해 주시고,
커맨드 블럭에 각각
scoreboard players set @a second 0
scoreboard players set @a minute 0
scoreboard players reset @a timer
을 넣어 주세요.
이렇게 하면 스톱워치 기능은 완성입니다.
이제 타이머 기능을 만드시고 싶으신 분은 앞의 명령어를 조금 바꿔야 됩니다.
우선 스톱워치와 같은 모양으로 커맨드 블럭을 설치해 주시고, (조건적, 무조건적 등도 유지되어야 합니다.)
반복형 커맨드 블럭 쪽은 차례로
scoreboard players add @a timer 1
execute as @a if score @s timer matches 20 run scoreboard players remove @a second 1
scoreboard players reset @a timer
execute as @a if score @s second matches -1 run scoreboard players remove @a minute 1
scoreboard players set @a second 59
를 넣어 주세요.
그리고 반응형 커맨드 블럭 쪽은 차례로
scoreboard players set @a second <하고싶은 초 크기>
scoreboard players set @a minute <하고싶은 분 크기>
scoreboard players reset @a timer
를 넣어주세요.
이렇게 해주시면 완성이지만, 자동으로 actionbar도 뜨게 하고싶으신 분은
다음과 같은 모양으로 반응형 커맨드 블럭을 하나 더 설치해 주세요.
(저는 스톱워치, 타이머 둘다 해서 두개입니다.)
그리고 저 커맨드 블럭에
setblock <actionbar 를 뜨게 하는 커맨드 블럭을 작동시킬 레드스톤 블럭을 설치할 좌표> redstone_block
을 넣어주시면 됩니다.
이렇게 해 주시면 최종적으로 완성입니다.
만든 타이머를 탈출맵이나 파쿠르맵에 써 주시면 좋겠네요 ㅎㅎ
긴 글 읽어주셔서 감사하고, 또 정말 고맙습니다.
저는 다음에 또 다른, 더 재미있고 유익한 강좌로 찾아뵙겠습니다.
여러분 모두 안녕히 계세요.
욜로오오오오오오
2020.10.06저만 그런지는 모르겠는데 second가 줄어들지 않아요 ㅠ0ㅠ
Ylemon0618
2020.10.06코드좀 올려주시겠어요
욜로오오오오오오
2020.10.07그냥 레몬님이 올리신거 그대로 사용했어요...
욜로오오오오오오
2020.10.07아 조건형이 꺼져있었네요...ㅠㅠ 죄송합니다 ㅠㅠㅠ
Ylemon0618
2020.10.08넹~
조건형이 아니면 초/분이(가) 올라가고 나서 timer 변수가 리셋이 되지가 않아서
한번 초/분이(가) 올라가고 말기 때문에 꼭 지켜 주셔야 해요.
강좌 읽어 주셔서 감사하고,
댓글도 감사합니다!
앞으로 잘 안되는게 있으면
디스코드 '레몬#2334' DM 이나 한마포 쪽지기능으로 연락 주세요~
국민석
2021.01.31타이머 0초가 됬을 때 타임 오버 뛰우고 싶은데 어떻게 해야 하나요?
Ylemon0618
2021.02.05확인이 늦었네요.. ;;
무슨 말씀이신지...?
국민석
2021.02.05타이머에 시간제한이 되면 액션바에 타임 오버라는 글씨가 뜨는 커맨드를 만들고 싶은 겁니다.
근데 그것을 어떻게 해야 할지 몰라서 물어본 것입니다.
Ylemon0618
2021.02.07if score 써서 minute 랑 second 둘 다 0이라면 띄우게 하시면 됩니다
국민석
2021.02.14감사합니다
노군오1244
2021.02.07멀티가 돼면 타이머가 작동하지 않아요
Ylemon0618
2021.03.16아마 selector 가 @a 라서 그럴겁니다
셀렉터를 바꿔보세요
haneul1102
2021.06.20처음부터 끝까지 작동이 안되는데 어떻게 하나요?
리을
2021.08.24그대로 입력했는데 타이머가 끝나지 않고 마이너스로 계속 내려가네요ㅠㅠ 어떻게 해야하죠..?
Ylemon0618
2021.09.11second 와 minute 이 0인지 비교하는 부분이 오류가 있을 가능성이 큽니다
확인해 보세요