HB
대표칭호 없음
이해도 | 1.12 |
---|---|
게임버전 (JE) | 페이퍼 |
게임버전 (BE) | marsk |
스크립트 버전 | 초보자(스크립트 구성요소, 기본문법은 알아요) |
스크립트 애드온 | 2.4.1 beta |
해당 이벤트를 사용해 아이템을 벗으면 적용되어있던 효과가 풀리게끔 하고 싶은데
빠르게 여러번 아이템을 좌클릭해 장착, 해제를 하면 해제하여도 적용되는 버그가 있습니다.
every 1 seconds 와 같이 일정 시간마다 해당 아이템을 갖고 있다면 적용되게끔
하는 것도 고려했는데, every 라는 구문 자체가 all players를 loop해서 체크해야 하기때문에
렉의 원인이 될까봐 다른 방안을 떠올리다 도저히 안떠올라 질문합니다.
스크립터브혼
2021.08.23버그를 재현해볼 수 있도록 작성하신 코드도 첨부해주시길 바랍니다.
HB
2021.08.23on armor equip:
@if event-item is diamond boots:
@@wait 0.5 seconds
@@if name of event-item contain "&a신속 신발":
@@@set player's walk speed to 0.26
@@@send "&f[ &b알림 &f] &a&l신속 신발 장착"
on armor unequip:
@if event-item is diamond boots:
@@wait 0.5 seconds
@@if name of event-item contain "&a신속 신발":
@@@set player's walk speed to 0.2
@@@send "&f[ &b알림 &f] &c&l신속 신발 장착 해제"
위 내용과 같이 작성했었습니다
스크립터브혼
2021.08.24지연시간을 지우세요.
0.5초 딜레이를 주어서 그보다 짧은시간 동안 입고 벋고하면 오류가 생기는 거에요.
HB
2021.08.24혹시나해서 wait 1 tick으로도 해보고 wait 0.5 seconds와 같은 딜레이를 아얘 없이해봐도 똑같네요..
스크립터브혼
2021.08.25인벤토리 변화를 확인하기 위해서 각 이벤트마다 값을 출력해봤습니다.
여기서보면 액션이 nothing 인 경우 클릭이 된 것이 아니라서 장비를 입은 것이 아닙니다.
그러나 앞서 on armor equip 이벤트는 동작을 하게 되죠.
이것을 해결할 수 있는 방법은 이벤트의 처리를 일임하는 방법입니다.
이벤트의 순서에 따라 가장 먼저 발생하는 이벤트에서 변수를 하나 설정하여
뒤에 오는 이벤트에서 해당 변수를 판단함으로써 앞선 이벤트의 처리를 대신 할 수 있습니다.
스크립터브혼
2021.08.25https://github.com/Sharpjaws/SharpSK/blob/master/src/main/java/com/codingforcookies/armorequip/ArmorEquipListener.java
on armor equip 이벤트는 InventoryClickEvent에서 발생됩니다.
InventoryClickEvent 는 스크립트에서 on inventory click 이벤트로 구현되어 있습니다.
on armor equip 이벤트는 클릭 액션이 nothing인 경우에도 동작하는 버그가 있으므로
위에 알려드린 방법으로 해결이 되지 않는다면 on inventory click으로 직접구현하여 해결해야합니다.
한가지 아셔야 하는 것은 on inventory click 이벤트는 드래그를 막지 못합니다.
HB
2021.08.26친절한 조언 감사드립니다
해당 장비를 장착시, 특정 변수가 true로 되게 하고
on inventory click 이벤트로 해당 변수가 활성화되었을 경우,
효과가 활성화 되게끔 할 수 있지만 드래그해서 버리거나 하면 다시 버그가 발생할 수 있다 라는 걸로 이해하였습니다.
따라서 내린 결론은 스크립트 선에서는 해결하기 힘들다는 것인데
말씀을 맞게 이해했는지 잘 모르겠습니다.