개인 자료란 (JE)

  서버 커뮤니티

Profile 뇽뇨뇽 대표칭호 없음

Sierra_24 9e02e0e56c084821b3ba3c02f36edb71

Profile

질문하기 스크립트

플레이어 이동 인식

2021.04.01 조회 수 469 추천 수 0
이해도 1.12 
게임버전 (JE) 모드버킷 
스크립트 애드온 skript 2.2 dev-37c 


플레이어가 이동을 할때, 혹은 한 블럭을 이동을 할때 발생하는 이벤트가 있을까요?
일정거리 혹은 일정블럭을 이동했을때 발동하려고 하는데
on move on stone 을 이용해봤는데 제자리 점프로 해당 되고 블럭을 모두 설정해줘야 하더라구요.
다른 방법이 있을지 궁금합니다.

3개의 댓글

스크립터브혼
2021.04.01

그런 이벤트는 없고 반복적으로 플레이어의 변화를 감지하도록 코드를 짜야합니다.
플레이어와 상관없이 주기적으로 플레이어의 이전 위치와 현재 위치를 비교하여 기능을 실행할지 않할지 결정해야합니다.


흔히들 [Periodical]이벤트로 주기적으로 코드가 실행되도록 구성합니다만,
저는 [On Join]이벤트에서 While 반복문과 [Is Online]을 사용하는 방식을 추천드립니다.
이 내용은 [예제분석6 - 반복 시행] 강좌에서 다룬적이 있습니다.
위 포스트의 하단에 "주기적 이벤트(Periodical Event)의 문제" 부분을 참고해주세요.


주기적으로 실행되도록 구성되었다면 그 안에 플레이어의 위치가 얼마나 변하였는지 계산하도록 해야합니다.
현재의위치는 On Join이벤트이므로 location of %player%로 받을 수 있습니다.
이전 위치는 코드의 마지막 부분에 저장해주어야 합니다. 그래야 다음 실행시 비교를 할 수 있겠죠.
두 좌표간 거리는 [Distance]익스프레션으로 얻을 수 있습니다.
> distance between %location% and %location%

뇽뇨뇽
2021.04.02
@스크립터브혼

제가 말을 어렵게 적었나봅니다..! 들어온 뒤 일정 거리를 측정하는게 아닌 걸음 수 를 측정하고 싶습니다. 일정 걸음 수가 될때마다 이벤트가 발동하는...

예를 들어보자면 100걸음 200걸음 때마다 신속을 부여한다던지... 해서 걸음수를 확인 하는 방법이 있는지 궁금합니다!

스크립터브혼
2021.04.03
@뇽뇨뇽

'걸음'을 셀 수 없습니다. 이동한 '거리'를 측정할 순 있죠.

이동거리를 재는것도 마찬가지입니다.

플레이어의 위치가 변한 정도를 계속 더하여 일정거리가 넘어간다면

측정된 거리를 0으로 초기화하고, 필요한 효과를 주도록 구성하면 됩니다.