사랑에냐핫
대표칭호 없음
이해도 | 1.16 |
---|---|
게임버전 (JE) | 스피곳 |
게임버전 (BE) | 기본적인거 |
스크립트 애드온 | 2.5 beta 4 |
variables:
{예시.%player%} = false
command /예시:
trigger:
if {예시.%player%} is false:
set {예시.%player%} to true
on death of a pig:
if {예시.%player%} is true:
clear drops
drop 1 diamond to attacker
on break coal ore:
if {광부.%player%} is true:
give 1 coal to player
이렇게 명령문인데 on break는 if문이 먹히고 on death는 if 문이 안먹히는데 뭐가 문제일까요?
스크립터브혼
2020.09.29이벤트가 on death of a pig:로 되어있어서 돼지가 죽을때만 동작하기 때문입니다.
사랑에냐핫
2020.09.29네 그런데 돼지를 죽여도 변수가 true로 되있어도 안되는데 if문이 안먹히는거같은데요?
사랑에냐핫
2020.09.29신기하게도 on break에서 if 문은 잘작동하는데 on death 에서 if 문이 작동을 안하는데 이문제를 어떻게 해결해야 할지 모르겠네요
스크립터브혼
2020.09.29on death 이벤트에서 player는 플레이어가 죽을 때만 값을 가집니다. player를 메세지로 출력해보세요.
사랑에냐핫
2020.09.29지금 여러번 시도할때 on death 이벤트에서 if문만 안먹히는건대 이걸 해결을 못합니다 아무리 영어문법으로 번역해도
돼지가 죽었을때 = on death of a pig
만약 {테스트.%player%} 가 허용(true): = if {테스트.%player%} is true:
다이아몬드를 돼지를 죽인 사람 한테 하나 줍니다 = give 1 diamond to attacker
메세지 "테스트" 를 돼지를 죽인 사람 에게 = message "테스트" to attacker
이런식인데 if를 넣었을때는 실행이 안되고 if를 뺏을땐 실행이 잘됩니다 이건 on death 문제라기보단 if 자체에서 멈춘거 같은데 이거에 대한 해답을 얻고싶습니다
스크립터브혼
2020.09.30player를 메세지로 출력해보셨나요?
on death 이벤트에서 event-entity는 죽은 entity를 가집니다.
플레이어가 죽으면 event-entity는 player가 담겨져 있고, 돼지가 죽으면 pig가 담겨져 있습니다.
player와 pig 모두 LivingEntity이지만,
pig는 LivingEntity를 상속받은 Aniamals인터페이스를 구현하였고,
player는 LivingEntity를 상속받은 Player인터페이스를 구현했습니다.
즉, on death 이벤트에서 죽은 엔티티를 돼지로 설정하면 event-entity의 하위 타입인 event-player는 null이 됩니다.
저장할때 사용한 player와 death이벤트에서의 player를 메세지로 출력해보시고 질문주세요.
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/LivingEntity.html
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Pig.html
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Player.html