늘솜보름
정품인증자
JIMIN2457 69b92cf6d9194ba7a57a668b093cb822
이해도 | 1.16 |
---|---|
게임버전 (JE) | 스피곳 |
스크립트 애드온 | 2.5.1 |
* TNT를 설치할 때 해당 이벤트를 취소하고 소지중인 TNT 수를 파악하여 모두 제거하는 스크립트를 만들었습니다.
* 아래는 완성된 스크립트 입니다.
1 on place of tnt:
2 cancel event
3 set {_test} to amount of tnt in inventory of player
4 remove {_test} of tnt from player
5 stop
여기서 레드스톤 등을 추가하려고 하는데 복붙하기엔 똑같은 내용이 많아지고 지저분해저서 간략하게 짜보려고 했습니다.
그래서 event-block를 이용해서 tnt 부분을 event-block 로 변경해봤는데 3번 구문은 되는데 4번 구문이 적용이 안됩니다.
4번 구문의 tnt 부분에 무엇을 적어야 제 의도대로 작동하게 되는지 궁금합니다!
* 아래는 제가 의도한 스크립트 입니다.
on place of tnt or :
cancel event
set {_test} to amount of event-block in inventory of player
remove {_test} of event-block from player
stop
스크립터브혼
2020.11.04블록 타입과 아이템 타입을 헛갈려 하셔서 그렇습니다.
아이템은 인벤토리(슬롯)에 저장될 수 있지만, 블록을 그럴 수 없습니다.
침대로 예를들면 쉽습니다. 침대 '블록'은 파괴 될 때 침대 '아이템'을 드랍합니다. 이렇게 드랍된 아이템은 인벤토리에 저장될 수 있죠.
그러나 월드에 설치된 침대 그 자체로는 인벤토리에 넣을 수 없습니다. 인벤토리에 블록을 담을수 없기 때문이죠.
여기서 메터리얼 이라는 개념을 아셔야합니다. 한글로는 재질이라는 뜻인데요.
침대 아이템은 아이템 타입이면서 메터리얼로 침대를 가지고 있습니다. 침대 재질의 아이템인 것입니다.
침대 블록은 블록 타입이면서 메터리얼로 침대를 가지고 있습니다. 침대 재질의 블록인 것이죠.
on place 이벤트에서 event-block은 블록 타입니다.
그래서 플레이어의 인벤토리에서 제거될 수 없습니다. 애초에 블럭은 인벤토리에 없기때문이죠.
그렇다면
amount of event-block in inventory of player
이 부분은 어째서 동작할 수 있는가는스크립트 자체에서 event-block의 메터리얼 정보를 토대로 인벤토리에 있는 아이템의 메터리얼 정보와 대조했기 때문입니다.
이 부분은 스크립트가 어떻게 동작하는가를 이해해야하는 부분이라 조금 난해하실 수 있습니다.
늘솜보름
2020.11.05우선 답변과 자세한 설명 감드립니다 ㅠㅠ
영어를 잘 못해서 관련있는 내용으로 나름대로 검색해봐도 제가 원하던 답이 나오지 않아서 답답했었는데 브혼님 덕분에 한번에 해결됬네요.