개인 자료란 (JE)

  서버 커뮤니티

Profile sdfdsr 대표칭호 없음

bl9ckSapphire 86355e6bbe4b483482de818ff64e62da

Profile

질문하기 스크립트

스크립트 질문

2021.04.24 조회 수 226 추천 수 0
이해도 1.16 
게임버전 (JE) 페이퍼 
스크립트 버전 중급자(필요한 애드온을 찾아서 만들 수 있어요) 
스크립트 애드온 2.5.3 

달콤한 열매 덤불이라는 블럭 (https://bit.ly/3vfMKu4) 을 밟을 시 속도가 느려지고(거미줄의 속도저하같은)  

플레이어와 닿을 시 플레이어에게 데미지를 가하게 되는데,

스크립트로 이러한 달콤한 열매 덤불의 속도저하와 데미지 등을 없앨 수도 있나요?


스크립트로 불가능하다면 다른 방법이 존재하나요?  달콤한 열매 덤불의 속도저하 효과는 꼭 없애보고 싶습니다.




2개의 댓글

스크립터브혼
2021.04.24

덤불블록으로부터 동작하는 이벤트는 없습니다.

그러나 데미지를 받을 때 [On Damage] 이벤트가 동작합니다.

이 이벤트에서 [Damage Cause]  익스프레션으로 피해의 원인을 받아 올 수 있습니다.

피해의 원인들은 [Damage Cause] 타입에 나와있고, 버킷 API [EntityDamageEvent.DamageCause]에도 나와있습니다.

덤불블록의 피해는 CONTACT으로 선인장처럼 가까이 붙어있을 경우 피해를 입는 것들입니다.


선인장, 덤불과 같은 블록으로부터 받는 피해 이벤트는 [EntityDamageByBlockEvent]를 사용합니다만,

스크립트의 on damage 이벤트는 해당 이벤트의 부모인 [EntityDamageEvent]로 구현되어 있는것 같습니다.

on damage 이벤트는 실제 피해를 준 블록이 선인장인지, 덤불인지는 구분하지 못하기 때문입니다.

피해를 제거하는 것은 on damage 이벤트로 시작했기에 이벤트를 취소하는 것으로 해결이 됩니다.


속도 저하를 제거하는 것은 저하된 속도만큼 [Push]하거나, 벡터의 [Velocity]를 수정하는것으로 상쇄 할 수 있습니다.

또는 [Speed] 익스프레션으로 플레이어의 이동속도 일시적으로 올려주는 것도 방법이 될 수 있습니다.

직접적으로 커스터마이징 할 수 있도록 구현된 것이 없기 때문에 비슷하게 동작할 수 있도록 하는 것 정도입니다.

스크립터브혼
2021.04.24
@스크립터브혼
on damage:
    damage type is contact
    cancel event
    add 1 to {_case} if velocity of victim is vector 0, 0, 0
    add 1 to {_case} if block 0.5 up victim is sweet berry bush
    if {_case} is 2:
        set walk speed of victim to 0.6
    else:
        reset walk speed of victim

간단하게 구현하면 이렇게 되는데 더 다듬어야 할거에요.