All pastes #920595 Raw Edit

Anonymous

public text v1 · immutable
#920595 ·published 2008-02-27 14:46 UTC
rendered paste body
;==================;
; ECTS script v2.5 ;
;==================;
;
; Functies:
;
; - startaantal ECTS invoeren
; - doelaantal ECTS + datum invoeren
; - gehaald vak invoeren (datum onthouden, evt omschrijving)
; - undo functie haalt laatste ects weg
; - !ects -> spamt ects van alle gebruikers (inc % balkje en ECTS/month)
; - !ects graph -> echo't graph
; - !ects showspeed on|off -> laat de speed wel of niet zien

;========;
; events ;
;========;

on *:INPUT:*: {
  if ($1 == !ects) {
    if (!$exists($ectsfile)) {
      /writeini $ectsfile main goal 0
      /writeini $ectsfile main goaldate 0
      /writeini $ectsfile main num_bookings 0
    }
    if ($2 == start) {
      if ($3 isnum) {
        /ects_del_booking all
        /writeini $ectsfile bookdates 0 $ctime
        /writeini $ectsfile bookects 0 $3
        /echo Set startvalue of12 $3 ECTS at12 $asctime(d mmmm yyyy) $+ .
      }
      else {
        /echo Please enter a number of ECTS.
      }
    }
    elseif ($2 == goal) {
      if ($ctime($4) isnum) {
        if ($3 isnum) {
          /writeini $ectsfile main goaldate $ctime($4)
          /writeini $ectsfile main goal $3
          /echo Set goalvalue of12 $3 ECTS at12 $asctime($ctime($4),d mmmm yyyy) $+ .
        }
        else {
          /echo Please enter a number of ECTS.
        }
      }
      else {
        /echo Please enter a date in the format dd/mm/yy.
      }
    }
    elseif ($2 == add) {
      if ($3 isnum) {
        $ectsadd(num_bookings)
        /writeini $ectsfile bookdates $ectsbookings $ctime
        /writeini $ectsfile bookects $ectsbookings $3
        /writeini $ectsfile bookdescription $ectsbookings $4-
        /echo Added12 $3 ECTS at12 $asctime(d mmmm yyyy) $+ $iif($4 != $null, $chr(32) $+ ( $+ $4- $+ )) $+ .
      }
      else {
        /echo Please enter a number of ECTS.
      }
    }
    elseif ($2 == undo) {
      if ($ectsbookings >= 1) {
        /ects_del_booking
      }
      else {
        /echo There are no bookings to delete.
      }
    }
    elseif ($2 == graph) {
      /show_graph $3-4
    }
    elseif ($2 == showspeed) {
      if ($3 == on) {
        /writeini $ectsfile main showspeed $true
        /echo The current and required speed of aquiring ECTS will be shown.
      }
      elseif ($3 == off) {
        /writeini $ectsfile main showspeed $false
        /echo The current and required speed of aquiring ECTS will not be shown.
      }
    }
    elseif ($2 == help) {
      /echo -
      /echo [1,0ECTS help file] You can use the following functions:
      /echo 12!ects start $chr(35) - Deletes all previous ECTS, and sets number of ECTS you have at this moment.
      /echo 12!ects goal $chr(35) dd/mm/yy - Sets goal number of ECTS you need at date dd/mm/yy.
      /echo 12!ects add $chr(35) description - Use when you got new ECTS. Description can be used to set course information.
      /echo 12!ects undo - Deletes last ECTS you added with "!ects add".
      /echo 12!ects graph - Plots a graph of the ECTS you aquired.
      /echo 12!ects graph #width #height - Changes the width and height of the graph.
      /echo 12!ects showspeed on|off - Enables/Disables showing the current and required speed of aquiring ECTS.
      /echo 12!ects help - Displays this help information
      /echo -

    }
    else {
      /msg $chan !ects
      /show_ects $chan
    }
    /halt
  }
}

on *:TEXT:*:*: {
  if ($1- == !ects) {
    if (!$exists($ectsfile)) {
      /writeini $ectsfile main goal 0
      /writeini $ectsfile main goaldate 0
      /writeini $ectsfile main num_bookings 0
    }
    /show_ects $chan
  }
}

;===========;
; functions ;
;===========;

alias ects_del_booking {
  if ($1 == all) {
    /remini $ectsfile bookdates
    /remini $ectsfile bookects
    /writeini $ectsfile bookdates 0 $ctime
    /writeini $ectsfile bookects 0 0
    /writeini #ectsfile main num_bookings 0
  }
  else {
    /echo Deleted booking: $readini($ectsfile,bookects,$ectsbookings) ECTS at $asctime($readini($ectsfile,bookdates,$ectsbookings),d mmmm yyyy) $+ .
    /remini $ectsfile bookdates $ectsbookings
    /remini $ectsfile bookects $ectsbookings
    $ectsadd(num_bookings,-1)
  }
}

alias show_ects {
  %balkje = [12
  %i = 1
  while (%i <= $ects_bar) {
    if ($calc($num_ects / $readini($ectsfile,main,goal) * $ects_bar) >= %i) {
      %balkje = %balkje $+ X
    }
    else {
      %balkje = %balkje $+ _
    }
    inc %i
  }
  %balkje = %balkje $+ 2]
  if (($calc($ctime - $readini($ectsfile,bookdates,0)) < $duration(13wks)) || ($readini($ectsfile,bookdates,0) == $null)) {
    %cur_speed = =undef=
  }
  else {
    %cur_speed = $round($calc( ($num_ects - $readini($ectsfile,bookects,0)) / ($ctime - $readini($ectsfile,bookdates,0)) * 7),0)
  }
  if ($readini($ectsfile,main,goaldate) <= $ctime) {
    %req_speed = =undef=
  }
  else {
    %req_speed = $round($calc( ($readini($ectsfile,main,goal) - $readini($ectsfile,bookects,0)) / ($readini($ectsfile,main,goaldate) - $readini($ectsfile,bookdates,0)) * $duration(13wks)),0)
  }
  %has_goal = [ $readini($ectsfile,main,goaldate) != 0 ]
  %show_speed = $iif($readini($ectsfile,main,showspeed) != $null,$readini($ectsfile,main,showspeed),$true)
  /.timerects1 1 $rand(2,10) [ /msg $1 2I have $chr(91) $+ 12 $+ [ $num_ects ] $+ [ $iif( [ %has_goal ] ,2/12 $+ [ $readini($ectsfile,main,goal) ] ) ] $+ 2 $+ [ $chr(93) ] ECTS. [ $iif( [ %has_goal ] ,%balkje) ] ] $iif( %show_speed ,     2 $+ $iif((%cur_speed != =undef=) || (%req_speed != =undef=),$chr(40)) $+ $iif(%cur_speed != =undef=,Cur $+ $iif(%req_speed != =undef=,/)) $+ $iif(%req_speed != =undef=,Req) $iif((%cur_speed != =undef=) || (%req_speed != =undef=),spd:) $iif(%cur_speed != =undef=,12 $+ %cur_speed $+ $iif(%req_speed != =undef=,2/)) $+ $iif(%req_speed != =undef=,12 $+ %req_speed) $iif((%cur_speed != =undef=) || (%req_speed != =undef=),2EC/qtr $+ $chr(41)) )
}

alias show_graph {
  if (($1 isnum) && ($2 isnum)) {
    /writeini $ectsfile main graph_w $1
    /writeini $ectsfile main graph_h $2
  }
  if (($readini($ectsfile,main,graph_w) == $null) || ($readini($ectsfile,main,graph_h) == $null)) {
    /writeini $ectsfile main graph_w 100
    /writeini $ectsfile main graph_h 20
  }
  /echo This is a graph of your ECTS:
  /echo  
  %xcoord = 0
  %g_w = $readini($ectsfile,main,graph_w)
  %g_h = $readini($ectsfile,main,graph_h)
  while (%xcoord <= %g_w) {
    %lined [ $+ [ %xcoord ] ] = $false
    inc %xcoord
  }
  %ycoord = %g_h
  while (%ycoord >= 0) {
    %balk = $null
    if ((($calc(%ycoord % 5) == 0) && ($calc(%g_h - %ycoord) >= 5)) || (%ycoord == %g_h)) {
      %balk = $ceil($calc( %ycoord * $readini( $ectsfile ,main,goal) / %g_h )))
      %i = 1
      while (%i <= $len($ceil($calc( %ycoord * $readini( $ectsfile ,main,goal) / %g_h )))) {
        %balk = %balk $+ 
        inc %i
      }
    }
    %balk = %balk $+ $chr(124)
    while ($len(%balk) < 6) {
      %balk =  %balk
    }
    if (%ycoord == 0) {
      %balk =   0|
    }
    %xcoord = 0
    %lined = $false
    while (%xcoord <= %g_w) {
      if (($calc(%xcoord * ( $readini( $ectsfile ,main,goaldate) - $readini( $ectsfile ,bookdates,0) ) / %g_w + $readini( $ectsfile ,bookdates,0)) <= $ctime) && ($num_ects( $calc(%xcoord * ( $readini( $ectsfile ,main,goaldate) - $readini( $ectsfile ,bookdates,0) ) / %g_w + $readini( $ectsfile ,bookdates,0)) ) >= $calc( %ycoord * $readini( $ectsfile ,main,goal) / %g_h ))) {
        if (!%lined [ $+ [ %xcoord ] ] ) {
          %balk = %balk $+ $iif(%ycoord == 0, ,_)
          %lined [ $+ [ %xcoord ] ] = $true
        }
        else {
          %balk = %balk $+ $iif(%ycoord == 0,) $+ /
        }
      }
      else {
        %balk = %balk $+ $iif(%ycoord == 0,)  
      }
      inc %xcoord
    }
    %balk = %balk $+ |
    /echo %balk
    dec %ycoord
  }
  /unset %lined*
  %balk =    $chr(124)
  %xcoord = 0
  while (%xcoord <= %g_w) {
    if ((($calc(%xcoord % 25) == 0) && ($calc(%g_w - %xcoord) > 20)) || ($calc(%g_w - %xcoord + 1) == $len($asctime($readini($ectsfile,main,goaldate),d/mm/yy)))) {
      %balk = %balk $+ $iif(($calc(%g_w - %xcoord + 1) == $len($asctime($readini($ectsfile,main,goaldate),d/mm/yy))),04 $+ $asctime($readini($ectsfile,main,goaldate),d/mm/yy),$asctime($calc(%xcoord * ( $readini( $ectsfile ,main,goaldate) - $readini( $ectsfile ,bookdates,0) ) / %g_w + $readini( $ectsfile ,bookdates,0)),d/mm/yy)) $+ 
    }
    elseif ($len($strip(%balk)) <= $calc(%xcoord + 1)) {
      %balk = %balk 
    }
    inc %xcoord
  }
  %balk = %balk $+ |
  /echo %balk
}

;=============;
; identifiers ;
;=============;

alias ectsfile {
  /return " $+ $scriptdir $+ ects.ini $+ "
}

alias ectsbookings {
  /return $readini($ectsfile,main,num_bookings)
}

alias ectsadd {
  /writeini $ectsfile main $1 $calc($readini($ectsfile,main,$1) + $iif($2 == $null,1,$2))
}

alias num_ects {
  if ($1 isnum) {
    %num_ects_i = 0
    %num_ects = 0
    while ((%num_ects_i <= $ectsbookings) && ($readini($ectsfile,bookdates,%num_ects_i) <= $1)) {
      inc %num_ects $readini($ectsfile,bookects,%num_ects_i)
      inc %num_ects_i
    }
    /return %num_ects
  }
  else {
    %num_ects_i = 0
    %num_ects = 0
    while (%num_ects_i <= $ectsbookings) {
      inc %num_ects $iif($readini($ectsfile,bookects,%num_ects_i) != $null,$readini($ectsfile,bookects,%num_ects_i),0)
      inc %num_ects_i
    }
    /return %num_ects
  }
}

alias ects_bar {
  /return 10
}

alias -l echo {
  /echo 2 $1-
}