ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디데이(D-Day) 스크립트
    IRC-Script 2007. 6. 27. 11:52
    반응형
    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일은 내 생년월일...



    반응형

    댓글 0

Copyright 2006-2021. Xeriars.com All rights reserved .