디데이(D-Day) 스크립트

Inkbot에 있던 d-day 기능을 보고 MSL로 비스꾸무레 하게 converting 해본 스크립트..
윤년까지 계산하여 처리하도록 설계하였다.
단, 윤년인 경우 2월 29일의 입력은 불가능하다.
; ————————————————————
; | Made by Xeriars                                                               |
; | (변경해서 쓰는건 니맘대로지만 이 부분은 지우지 말아주세요.)  |
; ————————————————————

on *:text:*:#: {
if ($1 == @디데이 || $1 == -디데이) {
if (!$2) { msg $chan “@디데이 YYYY년MM월DD일”와 같은 형식으로 입력하셔야 합니다. (ex : $rand($asctime(yyyy),9999) $+ 년 $+ $rand(1,12) $+ 월 $+ $rand(1,30) $+ 일) | halt }
var %pyear = $asctime(yyyy), %pmonth = $asctime(mm), %pday = $asctime(dd), %iyear = $mid($2,1,4), %imonth = $mid($2,7,2), %iday = $mid($2,11,2)
var %falsey 0
if ($3 == 과거) {
if (%iyear > $asctime(yyyy)) {
msg $chan 디데이가 현재년도보다 크면 안됩니다. (ex : $rand(1000,$asctime(yyyy)) $+ 년 $+ $rand(1,12) $+ 월 $+ $rand(1,30) $+ 일) | halt }
else {
var %prevmode 1 | goto prev
}
}
if (%pyear > %iyear) { msg $chan 디데이가 현재년도보다 작으면 안됩니다. (ex : $rand($asctime(yyyy),9999) $+ 년 $+ $rand(1,12) $+ 월 $+ $rand(1,30) $+ 일) | halt }
var %prevmode 2
goto prev
:prev
if (%pyear == %iyear) {
if (%pmonth == %imonth) {
if (%pday == %iday) {
msg $chan 입력하신날짜( $+ %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ )는 오늘입니다.
halt
}
}
}
if ($len($2) != 14) {
var %pyear = $asctime(yyyy), %pmonth = $asctime(mm), %pday = $asctime(dd), %iyear = $rand($asctime(yyyy),9999), %imonth = $rand(1,12), %iday = $rand(1,30)
var %falsey 1
}
if ((%imonth == 1) || (%imonth == 3) || (%imonth == 5) || (%imonth == 7) || (%imonth == 8) || (%imonth == 10) || (%imonth == 12)) {
if (%iday > 31) {
msg $chan 31일 이상 초과하시면 안됩니다. | halt }
else { var %resign 31 }
}
if ((%imonth == 4) || (%imonth == 6) || (%imonth == 9) || (%imonth == 11)) {
if (%iday > 30) { msg $chan 30일 이상 초과하시면 안됩니다. | halt }
else { var %resign 30 }
}
if (%imonth == 2) {
if (%iday > 28) { msg $chan 28일 이상 초과하시면 안됩니다. | halt }
else { var %resign 28 }
}
if (%prevmode == 1) {
var %result1 $calc((%pyear – %iyear) * 365), %result2 $calc((%pmonth – %imonth) * %resign), %result3 $calc(%pday – %iday), %result $calc(%result1 + %result2 + %result3)
if ($calc(%pyear – %iyear) > 4) { var %result $calc(%result + $int($calc((%pyear – %iyear)/4))) }
if (%falsey == 0) {
msg $chan %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ 부터 현재까지는 D- $+ %result $+ 일의 차이가 있습니다.
halt
}
if (%falsey == 1) {
msg $chan 입력하신 값이 올바르지 않습니다.
}
}
if (%prevmode == 2) {
var %result1 $calc((%iyear – %pyear) * 365), %result2 $calc((%imonth – %pmonth) * %resign), %result3 $calc(%iday – %pday), %result $calc(%result1 + %result2 + %result3)
if ($calc(%iyear – %pyear) > 4) { var %result $calc(%result + $int($calc((%iyear – %pyear)/4))) }
if (%falsey == 0) {
msg $chan %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ 까지는 앞으로 D- $+ %result $+ 일 남았습니다.
halt
}
if (%falsey == 1) {
msg $chan 입력하신 값이 올바르지 않아 임의의 값을 선정하였습니다. ( $+ %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ )
msg $chan $2 $+ 까지는 앞으로 D- $+ %result $+ 일 남았습니다.
halt
}
}
}
}앞으로 얼마간 더 스크립트를 제작할지 모르겠다는.
차후부터는 C Programming으로 배을 옮겨 탈까 생각 중…

왜냐면 MSL은 너무 제약이 많으니까.

작동 예제
[11:50:05] <@Xeriars> @디데이
[11:50:05] <@Zod> “@디데이 YYYY년MM월DD일”와 같은 형식으로 입력하셔야 합니다. (ex : 8652년8월28일)
[11:50:36] <@Xeriars> @디데이 2007년09월22일
[11:50:36] <@Zod> 2007년 09월 22일까지는 앞으로 D-85일 남았습니다.
[11:50:54] <@Xeriars> @디데이 1985년09월22일 과거
[11:50:54] <@Zod> 1985년 09월 22일부터 현재까지는 D-7950일의 차이가 있습니다.

1985년 09월 22일은 내 생년월일…

댓글 남기기