개인 자료란 (JE)

  서버 커뮤니티

Profile 사랑에냐핫 대표칭호 없음
Profile

질문하기 스크립트

on death if문 안되는데 뭐가 문제일까요?

2020.09.28 조회 수 1067 추천 수 0
이해도 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 문이 안먹히는데 뭐가 문제일까요?



6개의 댓글

스크립터브혼
2020.09.29

이벤트가 on death of a pig:로 되어있어서 돼지가 죽을때만 동작하기 때문입니다.

사랑에냐핫
2020.09.29
@스크립터브혼

네 그런데 돼지를 죽여도 변수가 true로 되있어도 안되는데 if문이 안먹히는거같은데요?

사랑에냐핫
2020.09.29
@사랑에냐핫

신기하게도 on break에서 if 문은 잘작동하는데 on death 에서 if 문이 작동을 안하는데 이문제를 어떻게 해결해야 할지 모르겠네요

 

스크립터브혼
2020.09.29
@사랑에냐핫

on 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.30
@사랑에냐핫

player를 메세지로 출력해보셨나요?

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