;==================; ; 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- }