개인 자료란 (JE)

  서버 커뮤니티

Profile DrownPole 정품인증자

gongbaek04 2b816a5b5b4c41cf9c7fd4bce3827fe1

Profile

질문하기 스크립트

엔더드래곤을 죽었을때 리젠되는 스크립트 질문입니다

2024.02.06 조회 수 92 추천 수 0
이해도 입문자 
게임버전 (JE) 관련없음 
게임버전 (BE) 관련없음 

on death of enderdragon:
@loop all-player:
@@message "엔더드래곤 재생성까지 60분 남았습니다" to loop-player
@@wait 10 minutes
@@message "엔더드래곤 재생성까지 50분 남았습니다" to loop-player
@@wait 10 minutes
@@message "엔더드래곤 재생성까지 40분 남았습니다" to loop-player
@@wait 10 minutes
@@message "엔더드래곤 재생성까지 30분 남았습니다" to loop-player
@@wait 10 minutes
@@message "엔더드래곤 재생성까지 20분 남았습니다" to loop-player
@@wait 10 minutes
@@message "엔더드래곤 재생성까지 10분 남았습니다" to loop-player
@@wait 10 minutes
@@message "엔더드래곤이 재생성 되었습니다" to loop-player
@@spawn 1 of enderdragon at location(2815, 104, 5078, world "world")


이렇게 구문을 짰는데 loop all-player 구문이 제대로 작동하지 않는건지 엔더드래곤을 죽여도 메세지가 뜰때도 있고 안뜰때도 있네요.
혹시 서버에 인원이 많으면 루프 구문이 버그가 유발되나요? 서버인원은 12명정도 됩니다.




3개의 댓글

windy_wind
2024.02.07

저 같은 경우에는 따로 every n tick으로 빼가지고 계산합니다.
따라서 다음과 같이 할 수 있습니다.

on death of enderdragon:
@set {변수::엔더드래곤} to 10*1200+0*20 #분,초

every 1 tick: #1 second도 좋음(근데 그걸로 할거면 값 수정이..)
@if {변수::엔더드래곤} is set:
@@remove 1 from {변수::엔더드래곤}
@@if {변수::엔더드래곤} <= 0:
@@@delete {변수::엔더드래곤}
@@@send "엔더드래곤이 부활했습니다" to all players
@@@#그외 액션
@@else if mod({변수::엔더드래곤},1200) = 0:
@@@send "엔더드래곤 재생까지 %ceiling({변수::엔더드래곤}/1200)%분 남았습니다" to all players


DrownPole
2024.02.07
@windy_wind

감사합니다! 그럼 혹시 10분마다 말고 한시간마다 리젠이 되려면 어떤값을 수정해줘야하나요?? 그리고 또 알림이 1분 단위가 아닌 10분 단위로 알려주면 좋겠는데 어떻게 해야하나요??

 

windy_wind
2024.02.07
@DrownPole

20틱은 1초고 1분은 60초고, 1시간은 60분이니까

set {_time} to 1*3600*20 #1시간
#원하는 시간*20*60*60

또 알림을 10분마다 하고 싶으시면 mod(~)부분에서 1200을 10분, 즉 10*20*60 하시면될듯