rendered paste body;==================;
; ECTS script v2.3 ;
;==================;
;
; 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/qtr)
; - !ects graph -> echo't graph
;========;
; 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
/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
}
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 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)) {
%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) - $num_ects) / ($readini($ectsfile,main,goaldate) - $ctime) * $duration(13wks)),0)
}
%delay = $rand(2,5)
/.timerects1 1 %delay [ /msg $1 2I have $chr(91) $+ 12 $+ [ $num_ects ] $+ 2/12 $+ [ $readini($ectsfile,main,goal) ] $+ 2 $+ [ $chr(93) ] ECTS. %balkje ]
/.timerects2 1 %delay /msg $1 2 $+ $iif(%cur_speed != =undef=,Current speed:12 %cur_speed 2EC/qtr - 2) $+ $iif(%req_speed != =undef=,Required speed:12 %req_speed 2ECTS/qtr)
}
alias show_graph {
/echo This is a graph of your ECTS:
/echo
%xcoord = 0
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 g_h {
/return 20
}
alias g_w {
/return 100
}
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 $readini($ectsfile,bookects,%num_ects_i)
inc %num_ects_i
}
/return %num_ects
}
}
alias ects_bar {
/return 10
}
alias -l echo {
/echo 2 $1-
}