NUngiboy 6e95e864e48245c2afe38069f3b5551f
마인크래프트 버전 : 1.17.1
스크립트 버전 : 2.6 beta 3
필요 애드온 : SKbee
안녕하세요! 11월 첫 날의 낮입니다.
저번에 간단하게 만든 총 스크립트를 올린 적이 있는데요 (https://www.koreaminecraft.net/free/2895084)
혼자서 테스트를 진행해 본 결과 다음과 같은 문제점이 발견되었습니다.
1) 엔티티가 벽 뒤에 있는 경우 벽을 뚫고 데미지를 주던 오류
2) 목표로 둔 엔티티 사이에 떨어진 아이템이 존재할 경우 총알 이펙트가 더 이상 나아가지 못 하던 오류
3) 그 외 수많은 잡 오류 등등
그래서 알고리즘을 뜯어고치고 코드를 다시 짜서 다음과 같은 코드를 만들었습니다.
코드 설명을 먼저 한 후에 배포 파일을 밑에 넣겠습니다.
# 제가 만든 총 스크립트는 히트스캔 방식이며, 인벤토리 속 탄창을 확인하는 방식은 넣지 않았습니다.
이번 스크립트에서는 위와 같은 전역 변수들이 사용됩니다. 각각 총알, 사격 가능 여부, 현재 재장전 중인지 여부를 나타냅니다.
스크립트를 설정하는데 필요한 아이템입니다
블럭 데이터를 "텍스트"로 받았을 때, 그 텍스트를 분석하여 적절하게 변형하는 함수입니다.
카펫의 색깔을 없애서 carpet만 돌려준다던가, 참나무 나뭇잎의 참나무를 없에서 나뭇잎만 돌려준다던가
같은 방식으로 변수에 비슷한 타입의 블럭을 많이 넣지 않아 부하를 줄이고 관리를 용이하게 하기 위한 방식입니다.
블럭 지정 막대기로 특정 블럭을 바라보고 우클릭 하면 그 블럭의 데이터가 위의 함수를 거친 후에
그 텍스트를 리스트 변수 안에 저장합니다
사용하면 다음과 같은 형태로 나옵니다 (3줄당 한번)
목표한 엔티티와 나 사이의 경로 상의 블럭을 분석하여 표현해주는 함수입니다.
각각의 블럭이 사격조건(관통 가능)인지 아닌지를 판별하고
그에 따라 전체적으로 목표한 엔티티에 사격이 가능한지 아닌지를 판별합니다
또한 경로상에서 가장 먼저 관통 불가능한 블럭의 위치가 몇 번째인지 나타내주기도 합니다.
사용 시 아래와 같은 모습으로 나타납니다
가로막는 블럭이 아예 없으므로 사격이 가능합니다
가로막는 블럭이 존재하므로 사격할 수 없습니다.
여기서는 제 앞에 2번째 블럭 위치에 가로막는 블럭이 있다고 뜨는군요
가로막는 블럭이 있지만 (redstone_wire) 제가 관통 가능한 물체로 지정했기에 사격조건을 충족해 사격이 가능한 모습입니다.
관통 가능한 물체에 관한 변수를 관리할 때 사용하는 명령어입니다.
좀 더 이쁘게 만들 수 있었지만 귀찮아서 안 했습니다...
@ 주의 @
블럭 지정 막대기로 허공을 우클릭하면 none이 뜹니다.
그렇기에 /`peneadd air 을 꼭 쳐주셔야 총알이 공기를 가를 수 있습니다!
실제로 총을 발사할 때 사용하는 구문입니다.
맨 위에 설명에 되어있는 4가지 사격 조건을 비교하여 2번째 조건일 경우 총알을 엔티티에 맞추게 됩니다
기본적인 알고리즘은 위의 pathtest 명령어랑 동일하며
추가적으로 play sound와 play dust 구문을 통하여 총소리와 총알이 나가는 이펙트를 구현하였습니다.
위 구문에 이어지는 구문으로 4번째 조건의 결과가 보이고 그 밑으로는 총의 발사속도를 결정하는 구문입니다.
{fire.%player%}를 통해 사격을 불가능하게 만들고
총알 사용을 1번 add 하여 체크해주고
0.5초를 기다린 다음 다시 사격 가능으로 돌려놓습니다.
즉, 여기서 발사속도는 1발/0.5초입니다. (약 분당 120번)
그리고 중간의 설명 밑 부분도 위의 구문과 이어지며, 10발을 다 쐈을 때, 재장전을 하기 위한 구문입니다.
swing player hand 구문과 play sound 구문을 이용하여 재장전 하는 것 같은 느낌을 주었습니다
그리고 재장전 중에는 총을 내려놓고 다른 아이템을 들지 못 하게 하였습니다
실행하면 다음과 같은 효과를 냅니다 (총 모양은 텍스쳐팩입니다.)
초보자라 아직 부족한 것도 많고, 이 스크립트에도 오류가 많을 수 있습니다 (저는 잘 모르겠습니다 ㅎ...)
그래도 거의 일주일동안 고생해가면서 만든 보람이 있던 스크립트였습니다.
모두 행복한 마크 생활 되세요!
FSanchir
2021.11.01오 멋지네요
눙이
2021.11.01좋게 봐주셔서 감사합니다!
허두
2021.11.01이거... 자료란으로 가도 될듯..!
눙이
2021.11.01그 정도 까지는 아니라 생각해서 잡담 포럼에 올리긴 했는데 좋게 봐주셔서 감사합니다 ㅎㅎ
퇴근 후 글 내용 보충해서 옮겨보도록 하겠습니다 ㅎㅎ
허두
2021.11.01이것만으로 고퀄 스크립트인데.. 자료란으로 가지 않으면 넘 아까워요!!