Soul_MC 394e8b058b494a24be42a0a304207c31
이해도 | 1.12 |
---|---|
게임버전 (JE) | 모드버킷 |
게임버전 (BE) | 없습니다. |
스크립트 버전 | 입문자(아무것도 몰라요) |
스크립트 애드온 | 2.2-dev32c |
리얼 타임 기준으로 12시간 마다 명령어 입력을 통해서 보상을 얻을 수 있게 하였습니다.
대강이나마 쓰자면
command /보상 [<text>]:
@trigger:
@@if 인자가 없을 경우
@@@if uuid판단해서 이미보상을 받은 경우
@@@@메시지출력
@@@아닐경우
@@@@보상 지급
@@if 인자 존재
@@@op메뉴
여기가 질문 구간입니다.
if arg 1 is "time": # 인자가 time 일 경우
set {_ntime} to now # 현재 시간을 임시 변수에 저장
set {_time} to difference between {htime} from {_ntime}
# 임시변수에서 htime을 뺀 값 (htime은 아래 12시간마다 변수에 값을 저장)
message "{@a} %{_time}%" # 을 출력
every 12 hours:
set {htime} to now
삭으로 코드를 짰고 실제로 작동은 잘 합니다.
다만
Q1) 다른 방법으로 코드를 짤 수 있는 방법도 있을까요?
every : 를 통해서 변수를 하나 잡아놓고 명령어 입력 때 마다 현재시간에서 빼는 방식 말고
다른 방법이 있는지, 해당 레퍼런스나 함수가 있는지 궁금합니다.
Q2) 혹시 다른 방식이 없다면
_time 변수를 출력 했을 때 ~hours ~minutes and ~seconds 라는 형식으로 출력 되는데
이것을 ~시간 ~분 ~초 로 바꿀 수 있는 방법은 없을까요?
스크립터브혼
2021.02.081. [Periodical]이벤트는 서버가 시작할 때 동작해서 정해진 시간마다 한번씩 반복합니다.
이 이벤트로 기준 시간을 정한다면 서버가 시작한 시간을 기준으로 12시간마다 한번씩 동작하게 되겠죠.
정확히 정해진 시간마다 반복하려면 [Date()] 함수를 사용해 시간을 지정하세요.
날짜의 년, 월, 일, 시를 지정할 수 있습니다. 각각의 수를 구하는 방법은 Q2의 답변과 같습니다.
남은 시간을 표시하는 방법은 difference로 차이를 구하는 방법 뿐입니다.
2. 글자 편집은 여러 방법이 있습니다.
[Subtext]익스프레션으로 필요한 글자만 잘라 사용할 수 있고,
[Join&Split]익스프레션으로 특정 문자로 나누거나 붙일 수도 있고,
[Replace]이펙트로 글자를 변환할 수도 있습니다.
정해진 글자 폼에서 특정 데이터를 추출하는 방식으로 [Parse]익스프레션도 있습니다.
> set {_i} to "stone" parsed as item
일반적으로 위 처럼 글자를 특정 타입으로 파싱하는 기능으로 많이 쓰이지만
> set {_i::*} to "1천 5백 원" parsed as "%integer%천 %integer%백 원"
이처럼 특정한 글자 폼에서 데이터를 추출 할 수도 있습니다.
다만 글자 폼이 가변적인 상황이라면 먼저 서술한 Subtext, Join&split, Replace를 활용하여 일정한 폼으로 맞추는 작업을 선행해야 할 수 있습니다.
3. now를 출력하면 보통 %년%. %월%. %일% (오전|오후) %시%:%분%으로 표시됩니다.
2와 같은 방식으로 Parse를 사용해 각각의 위치에 있는 수를 파싱할 수 있습니다.
파싱한 수를 Data()함수의 인수로 사용하세요.
느으너앍
2021.02.09답변 감사합니다! 두고두고 보면서 하겠습니다 ^^