개인 자료란 (JE)

  서버 커뮤니티

Profile HAN1110 대표칭호 없음

HAN1110 9899e780ba984d89824a90ee8deb7cb2

Profile

질문하기 스크립트

스크립트 MOTD 교체 에러

2021.05.09 조회 수 189 추천 수 0
이해도 1.12 
게임버전 (JE) 페이퍼 
게임버전 (BE) Skrayfall 
스크립트 버전 중급자(필요한 애드온을 찾아서 만들 수 있어요) 
스크립트 애드온 2.5.3 

on sever list ping:
  change motd to "<내용물임>"
  wait 5 seocnds
  change motd to "<내용물임>"

이렇게 쓰고 리로드를 했습니다.

결국 


[09:16:11 ERROR]: Can't understand this condition/effect: change motd to "내용물임" (MOTD.sk, line 2: change motd to "<내용물임>"')

[09:16:11 ERROR]: Can't understand this condition/effect: change motd to "내용물임22" (MOTD.sk, line 4: change motd to "<내용물임>"')

[09:16:11 INFO]: [Skript] Encountered 2 errors while reloading MOTD.sk!


라는  에러가 나더군요.


on server list ping:
  set motd to "<내용물임>"
  wait 5 seconds 
  set motd to "<내용물임>"

으로 바꿔해봤습니다.


[09:19:12 ERROR]: Can't change the MOTD anymore after the server list ping event has already passed (MOTD.sk, line 4: set motd to "<내용물임>"')

[09:19:12 INFO]: [Skript] Encountered 1 error while reloading MOTD.sk!


라는 오류가 뜨더군요.

같은 글자라서 그런가? 라고 생각되서 바꿔서 해봤습니다.

on server list ping:
  set motd to "<내용물임>"
  wait 5 seconds
  set motd to "<내용물임zzz>"

결과는 예상과 달랐습니다.\


[09:23:29 ERROR]: Can't change the MOTD anymore after the server list ping event has already passed (MOTD.sk, line 4: set motd to "<내용물임zzz>"')

[09:23:29 INFO]: [Skript] Encountered 1 error while reloading MOTD.sk!


라는 오류가 있었죠. 대채 어디가 오류인가요? every10 seconds 로 바꿔야하나요? 도와주세요!

8개의 댓글

스크립터브혼
2021.05.09

> Can't change the MOTD anymore after the server list ping event has already passed 

> 서버 목록 지정 이벤트가 이미 지나간 후에는 MOTD를 더 이상 변경할 수 없습니다. 


wait를 사용해서 지연을 시키면 이벤트를 벗어나게 됩니다.

on server list ping 이벤트는 서버 데이터를 클라이언트에 보내기 전에 실행되는 이벤트 입니다.


클라이언트에서 서버에게 정보를 요청하면 서버가 정보를 보내기 전에 해당 이벤트를 한번 실행하고 나서 데이터를 보내죠.

그래서 이벤트에서 motd 같은 서버 정보를 변경할 수 있습니다.

wait를 걸면 이미 이벤트는 완료되고 완료된 정보는 클라이언트에 전송됩니다.

그래서 지나간 후에는 변경할 수 없다는 메세지가 나오는 거에요.

HAN1110
2021.05.11
@스크립터브혼

그러면 MOTD 를 계속 바꿀순 없곤요

HAN1110
2021.05.12
@스크립터브혼

아니면 또 바꿀순 있나요?

HAN1110
2021.05.12
@HAN1110

다른법을 통해서 말이죠.

스크립터브혼
2021.05.12
@HAN1110

클라이언트에서 요청이 올 때 원하는 메세지를 보낼 수 있습니다. 그때 외 엔 없어요.

HAN1110
2021.05.13
@스크립터브혼

클라이언트 요청이 어떻게 와요?

every * seconds 로도 못할텐데요....

스크립터브혼
2021.05.15
@HAN1110

[클라이언트-서버 모델] 링크 한번 읽어보세요.

마크 클라이언트에서 서버 리스트를 갱신할때 서버가 열렸는지, 닫혔는지, 열렸다면 서버에 정보를 요청하게 됩니다.

그리고 서버가 클라이언트의 요청에 의해서 정보를 전달할 때, 전달하기 직전에 확장 이벤트를 통해서 전달할 데이터를 바꿀 수 있도록 하는 기능이 질문자님이 사용하려는 기능입니다.

그렇기 때문에 클라이언트의 요청이 없으면 데이터를 바꿀수 없고, 요청이 있을 때 한번만 바꿀 수 있는겁니다.

HAN1110
2021.05.16
@스크립터브혼

그럼 결국 언제올지 모르니 사용할수 없다는거군요.