이해도 | 입문자(아무것도 몰라요) |
---|---|
게임버전 (JE) | 1.14.4 |
command /서버시작:
trigger:
set {dashtime} to 0
every 1 ticks:
if {dashtime} > 0:
send actionbar "&c%{dashtime}%&b초 남았습니다." to player
every 1 seconds:
if {dashtime} > 0:
subtract 1 from {dashtime}
on click holding a feather:
if {dashtime} = 0:
push player upwards at speed 0.1
wait 0.03 seconds
push player downwards at speed 999
wait 0.03 seconds
push player forwards at speed 2
set {dashtime} to 2
else:
send actionbar "&c%{dashtime}%&b초 남았습니다." to player
스크립트에서
There's no world in a periodic event if no world is given in the event (e.g. like 'every hour in "world") ( dash.sk, line 6: send actionber "&c%{dashtime}%&b초 남았습니다." to player)라는 오류가 뜨는데 어떻게 해야 할까요?
스크립터브혼
2021.08.29먼저 이벤트와 이벤트 기본값에 대한 이해가 필요합니다.
이벤트는 발생될 때 이벤트를 조작하는데 필요한 여러가지 기본값을 가지고 실행되는데요.
스크립트의 대부분의 이벤트는 플레이어의 행동으로부터 발생됩니다.
예를들어 채팅을 할 때 발생되는 on chat 이벤트는 이벤트 기본값으로 채팅을 입력한 플레이어와 입력한 메세지를 가지고 실행됩니다.
이러한 이벤트 기본값은 event-player로 사용됩니다. 메세지는 다른 이벤트에는 없는 특수한 경우라 message 익스프레션으로 따로 받구요.
이벤트 기본값의 패턴은 [event-]%type%으로 머릿말인 'event-'를 생략할 수 있습니다.
대부분의 이벤트에서 사용하는 player 익스프레션은 본래 event-player 패턴의 축약형입니다.
그러나 Periodic 이벤트는 플레이어가 발생시키는 이벤트가 아닙니다.
서버에서 Task를 생성하여 주기적으로 반복하는 이벤트로 해당 이벤트는 플레이어 정보를 이벤트 기본값으로 가지지 못합니다.
서버에서 동작하는것이므로 어떠한 좌표나, 월드또한 특정 할 수 없습니다.
이 이벤트에서 사용된 player는 아무런 값을 가지지 못합니다.
스크립트에서 구문 분석 과정에서 해당 익스프레션을 사용할 수 없는 것을 알고 오류 메세지를 출력한것입니다.
all players 패턴으로 서버에 접속중인 모든 온라인 플레이어를 받아서 플레이어에게 메세지를 전달해야합니다.