개인 자료란 (JE)

  서버 커뮤니티

Profile sizsiz7777 대표칭호 없음
Profile

이해도 입문자(아무것도 몰라요) 
게임버전 (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)라는 오류가 뜨는데 어떻게 해야 할까요?

1개의 댓글

스크립터브혼
2021.08.29

먼저 이벤트와 이벤트 기본값에 대한 이해가 필요합니다.

이벤트는 발생될 때 이벤트를 조작하는데 필요한 여러가지 기본값을 가지고 실행되는데요.

스크립트의 대부분의 이벤트는 플레이어의 행동으로부터 발생됩니다.


예를들어 채팅을 할 때 발생되는 on chat 이벤트는 이벤트 기본값으로 채팅을 입력한 플레이어와 입력한 메세지를 가지고 실행됩니다.

이러한 이벤트 기본값은 event-player로 사용됩니다. 메세지는 다른 이벤트에는 없는 특수한 경우라 message 익스프레션으로 따로 받구요.

이벤트 기본값의 패턴은 [event-]%type%으로 머릿말인 'event-'를 생략할 수 있습니다.

대부분의 이벤트에서 사용하는 player 익스프레션은 본래 event-player 패턴의 축약형입니다.


그러나 Periodic 이벤트는 플레이어가 발생시키는 이벤트가 아닙니다.

서버에서 Task를 생성하여 주기적으로 반복하는 이벤트로 해당 이벤트는 플레이어 정보를 이벤트 기본값으로 가지지 못합니다.

서버에서 동작하는것이므로 어떠한 좌표나, 월드또한 특정 할 수 없습니다.


every 1 ticks:
    if {dashtime} > 0:
        send actionbar "&c%{dashtime}%&b초 남았습니다." to player

이 이벤트에서 사용된 player는 아무런 값을 가지지 못합니다.

스크립트에서 구문 분석 과정에서 해당 익스프레션을 사용할 수 없는 것을 알고 오류 메세지를 출력한것입니다.


every 1 ticks:
    loop all players:
        if {dashtime} > 0:
            send actionbar "&c%{dashtime}%&b초 남았습니다." to loop-player

all players 패턴으로 서버에 접속중인 모든 온라인 플레이어를 받아서 플레이어에게 메세지를 전달해야합니다.