alias /mircstats { if ($readini mircstats.ini Global Init == $null) { /ms.init } dialog -m ms.config ms.config } alias ms.init { writeini mircstats.ini Global Init y writeini mircstats.ini Global FreqType h writeini mircstats.ini Global FreqHour 1 writeini mircstats.ini Global FreqDay 1 writeini mircstats.ini Global State m echo -s 2[12m10A12C2] 6-> 14Searching for mIRCstats.exe set %ms.programloc $findfile($left($mircdir, 3), mircstats.exe, 1) if (%ms.programloc != $null) { echo -s 2[12m10A12C2] 6-> 14Found mIRCstats.exe @ %ms.programloc writeini mircstats.ini Global Program %ms.programloc } else { echo -s 2[12m10A12C2] 6-> 14mIRCstats.exe not found! } unset %ms.programloc } alias ms.browse { set %ms.browsetemp $dir=" $2- " c:\ if (%ms.browsetemp != $null) { did -o ms.config $1 1 %ms.browsetemp } unset %ms.browsetemp } alias ms.saveChan { if (($chr(44) isin $1) || ($chr(35) != $left($1, 1)) || ($len($1) < 2)) { $ms.status(Error: Invalid channel name) | did -f ms.config 302 | return } if ($did(326).state == 1) { if ($did(309).text == $null) { $ms.status(Error: Please enter FTP hostname) | did -f ms.config 309 | return } if ($did(311).text == $null) { $ms.status(Error: Please enter FTP username) | did -f ms.config 311 | return } if ($did(313).text == $null) { $ms.status(Error: Please enter FTP password) | did -f ms.config 313 | return } if ($did(315).text == $null) { $ms.status(Error: Please enter Remote Location) | did -f ms.config 315 | return } writeini mircstats.ini $1 ftpState e writeini mircstats.ini $1 ftpHost $did(309).text writeini mircstats.ini $1 ftpLogin $did(311).text writeini mircstats.ini $1 ftpPassword $did(313).text writeini mircstats.ini $1 RemoteLocation $did(315).text } else { writeini mircstats.ini $1 ftpState d } if ($did(317).text == $null) { $ms.status(Error: Please enter Configuration Filename) | did -f ms.config 317 | return } if ($did(329).state == 0) { if ($did(319).text == $null) { $ms.status(Error: Please enter Log Filename) | did -f ms.config 319 | return } } if ($did(322).text == $null) { $ms.status(Error: Please enter .html Filename) | did -f ms.config 322 | return } if ($did(329).state == 1) { if ($did(328).text == $null) { $ms.status(Error: Please enter bot FTP hostname) | did -f ms.config 328 | return } if ($did(331).text == $null) { $ms.status(Error: Please enter bot FTP username) | did -f ms.config 331 | return } if ($did(333).text == $null) { $ms.status(Error: Please enter bot FTP password) | did -f ms.config 333 | return } if ($did(335).text == $null) { $ms.status(Error: Please enter bot log path + filename) | did -f ms.config 335 | return } writeini mircstats.ini $1 botState e writeini mircstats.ini $1 botftpHost $did(328).text writeini mircstats.ini $1 botLogin $did(331).text writeini mircstats.ini $1 botPW $did(333).text writeini mircstats.ini $1 botLog $did(335).text writeini mircstats.ini $1 botIncLog $did(336).state writeini mircstats.ini $1 Log $mircdir $+ $gettok($did(335).text, $numtok($did(335).text, 47), 47) if ($did == 304) { did -o ms.config 319 1 $mircdir $+ $gettok($did(335).text, $numtok($did(335).text, 47), 47) } } else { writeini mircstats.ini $1 botState d writeini mircstats.ini $1 Log $did(319).text } writeini mircstats.ini $1 Config $did(317).text writeini mircstats.ini $1 HTML $did(322).text if ($did(325).text != $null) { writeini mircstats.ini $1 Topic $did(325).text writeini mircstats.ini $1 SetTopic $did(324).state writeini mircstats.ini $1 SayTopic $did(337).state } else { writeini mircstats.ini $1 SetTopic 0 writeini mircstats.ini $1 SayTopic 0 did -u ms.config 324 did -b ms.config 325 } if ($ms.isInChans($1) == $false) { did -a ms.config 303 $1 did -c ms.config 303 $did(303).lines writeini mircstats.ini Global Chans $1 $+ $chr(44) $+ $readini mircstats.ini Global Chans $ms.status(Successfully saved new [ $1 ] channel info) } else { $ms.status(Successfully saved [ $1 ] channel info changes) } } alias ms.loadChan { did -o ms.config 302 1 $1 if ($readini mircstats.ini $1 ftpState == e) { did -c ms.config 326 /ms.ftpstate e } else { did -u ms.config 326 /ms.ftpstate d } did -o ms.config 309 1 $readini mircstats.ini $1 ftpHost did -o ms.config 311 1 $readini mircstats.ini $1 ftpLogin did -o ms.config 313 1 $readini mircstats.ini $1 ftpPassword did -o ms.config 315 1 $readini mircstats.ini $1 RemoteLocation did -o ms.config 317 1 $readini mircstats.ini $1 Config did -o ms.config 319 1 $readini mircstats.ini $1 Log did -o ms.config 322 1 $readini mircstats.ini $1 HTML did -o ms.config 325 1 $readini -n mircstats.ini $1 Topic if (($readini mircstats.ini $1 SetTopic == 1) || ($readini mircstats.ini $1 SayTopic == 1)) { if ($readini mircstats.ini $1 SetTopic == 1) { did -c ms.config 324 } if ($readini mircstats.ini $1 SayTopic == 1) { did -c ms.config 337 } did -e ms.config 325 } else { did -u ms.config 324 did -u ms.config 337 did -b ms.config 325 } if ($readini mircstats.ini $1 botState == e) { did -c ms.config 329 /ms.botstate e else { did -u ms.config 336 } } else { did -u ms.config 329 /ms.botstate d } if ($readini mircstats.ini $1 botIncLog == 1) { did -c ms.config 336 } else { did -u ms.config 336 } did -o ms.config 328 1 $readini mircstats.ini $1 botftpHost did -o ms.config 331 1 $readini mircstats.ini $1 botLogin did -o ms.config 333 1 $readini mircstats.ini $1 botPW did -o ms.config 335 1 $readini mircstats.ini $1 botLog $ms.status(Successfully loaded [ $1 ] channel info) } alias ms.delChan { if ($1 == $null) { return } if ($ms.isInChans($1) == $true) { set %ms.dCchanstemp $readini mircstats.ini Global Chans if ($numtok(%ms.dCchanstemp, 44) > 1) { writeini mircstats.ini Global Chans $remtok(%ms.dCchanstemp, $1, 1, 44) } else { remini mircstats.ini Global Chans } unset %ms.dCchanstemp remini mircstats.ini $1 did -d ms.config 303 $2 } did -r ms.config 302 did -r ms.config 309 did -r ms.config 311 did -r ms.config 313 did -r ms.config 315 did -r ms.config 317 did -r ms.config 319 did -r ms.config 322 did -r ms.config 325 did -u ms.config 324 did -u ms.config 337 did -b ms.config 325 did -c ms.config 326 /ms.ftpstate e did -u ms.config 329 did -r ms.config 328 did -r ms.config 331 did -r ms.config 333 did -r ms.config 335 did -u ms.config 336 /ms.botstate d $ms.status(Successfully deleted [ $1 ] channel info) } alias ms.newChan { if ($did(204).state == 0) { /ms.ftpstate e did -c ms.config 326 did -r ms.config 309 did -r ms.config 311 did -r ms.config 313 did -r ms.config 315 did -o ms.config 317 1 settings.cfg did -o ms.config 319 1 $logdir $+ $1 $+ .log did -o ms.config 322 1 $nofile($did(201).text) $+ html\ $+ $right($1, -1) $+ .html did -r ms.config 325 did -u ms.config 324 did -u ms.config 337 did -b ms.config 325 did -o ms.config 325 1 Visit the $1 stats page at [url] Last update $chr(36) $+ date(mmm dd), $chr(36) $+ time(HH:nn) did -u ms.config 329 did -r ms.config 328 did -r ms.config 331 did -r ms.config 333 did -r ms.config 335 did -u ms.config 336 /ms.botstate d } did -u ms.config 303 $did(303).sel $ms.status(New channel detected - don't forget to save!) } alias ms.isInChans { set %ms.iICtemp $readini mircstats.ini Global Chans if ($istok(%ms.iICtemp, $1, 44) == $true) { unset %ms.iICtemp | return $true } else { unset %ms.iICtemp | return $false } } alias ms.saveOpts { if ($exists($did(201).text) == $false) { $ms.status(Error: Enter mIRCstats program path and filename) | did -f ms.config 201 | halt } writeini mircstats.ini Global Program $did(201).text if ($did(203).state == 1) { writeini mircstats.ini Global State a } else { writeini mircstats.ini Global State m } writeini mircstats.ini Global Reuse $did(204).state if ($did(102).state == 1) { if (($did(103).text !isnum 1-23) || ($chr(46) isin $did(103).text)) { $ms.status(Error: Enter a value between 1 and 23) | did -f ms.config 103 | halt } writeini mircstats.ini Global FreqType h writeini mircstats.ini Global FreqHour $did(103).text } if ($did(105).state == 1) { if (($did(103).text !isnum 1-28) || ($chr(46) isin $did(103).text)) { $ms.status(Error: Enter a value between 1 and 28) | did -f ms.config 106 | halt } writeini mircstats.ini Global FreqType d writeini mircstats.ini Global FreqDay $did(106).text } $ms.status(Successfully saved global options) } alias ms.trueState { if ($exists( [ $mircdir $+ mircstats.ini ] ) == $false) { return N/A } if ($readini mircstats.ini Global State == a) { return On } else { return Off } } alias ms.state { if ($exists( [ $mircdir $+ mircstats.ini ] ) == $false) { return Configure } if ($readini mircstats.ini Global State == a) { return Disable } else { return Enable } } alias ms.changestate { if ($exists( [ $mircdir $+ mircstats.ini ] ) == $false) { /mircstats | return } if ($readini mircstats.ini Global State == a) { writeini mircstats.ini Global State m ms.disable } else { writeini mircstats.ini Global State a ms.enable } } alias ms.doAll { if ($1 == $null) { if (%ms.FUnotbytimer == $null) { writeini mircstats.ini Global LTS $date(yyyy.) $+ $ms.dayofyear($date(m), $date(d)) $+ $time(.H) $ctime } else { unset %ms.FUnotbytimer } set %ms.dAchanstext $readini mircstats.ini Global Chans if (%ms.dAchanstext == $null) { $ms.status(Error: No channels defined) | unset %ms.* | return } set %ms.dAchancount $numtok(%ms.dAchanstext, 44) set %ms.dAcurrentchan 1 set %ms.dAfullupdate active } if ($timer(.ms.enable) != $null) { .timer.ms.enable off } if ($readini mircstats.ini $gettok(%ms.dAchanstext, %ms.dAcurrentchan, 44) botState == e) { /ms.botdownload $gettok(%ms.dAchanstext, %ms.dAcurrentchan, 44) } else { /ms.update $gettok(%ms.dAchanstext, %ms.dAcurrentchan, 44) } } alias ms.botdownload { if ($ms.isInChans($1) == $false) { $ms.status(Error: Save channel before Updating Stats) | return } $ms.status(Download [ $1 ] log from eggdrop FTP...) write -c $mircdir $+ msftpdn.txt open $readini mircstats.ini $1 botftpHost write $mircdir $+ msftpdn.txt $readini mircstats.ini $1 botLogin write $mircdir $+ msftpdn.txt $readini mircstats.ini $1 botPW write $mircdir $+ msftpdn.txt ascii write $mircdir $+ msftpdn.txt lcd $left($mircdir, -1) set %ms.bdLogName $readini mircstats.ini $1 botLog set %ms.bdLogFile $gettok(%ms.bdLogName, $numtok(%ms.bdLogName, 47), 47) if ($readini mircstats.ini $1 botIncLog == 1) { write $mircdir $+ msftpdn.txt rename %ms.bdLogName %ms.bdLogFile $+ .temp write $mircdir $+ msftpdn.txt get %ms.bdLogFile $+ .temp write $mircdir $+ msftpdn.txt dele %ms.bdLogFile $+ .temp write -c $mircdir $+ msftpdn.bat ftp.exe -s: $+ $mircdir $+ msftpdn.txt write $mircdir $+ msftpdn.bat type %ms.bdLogFile $+ .temp >> %ms.bdLogFile write $mircdir $+ msftpdn.bat del %ms.bdLogFile $+ .temp } else { write $mircdir $+ msftpdn.txt get %ms.bdLogName write -c $mircdir $+ msftpdn.bat del $mircdir $+ %ms.bdLogFile write $mircdir $+ msftpdn.bat ftp.exe -s: $+ $mircdir $+ msftpdn.txt } write $mircdir $+ msftpdn.txt bye write $mircdir $+ msftpdn.bat del $mircdir $+ msftpdn.txt ;write $mircdir $+ msftpdn.bat del $mircdir $+ msftpdn.bat unset %ms.bdLo* run $mircdir $+ msftpdn.bat .timer.ms.checkdlfinish 0 1 /ms.checkdlfinish $1 } alias ms.checkdlfinish { if ($exists( [ $mircdir $+ msftpdn.txt ] ) == $false) { .timer.ms.checkdlfinish off $ms.status(Download of [ $1 ] log complete) /ms.update $1 } } alias ms.update { if ($ms.isInChans($1) == $false) { $ms.status(Error: Save channel info before running Update) | return } if ($exists($nofile( [ $readini mircstats.ini Global Program ] ) $+ $readini mircstats.ini $1 Config) == $false) { $ms.status(Error: Cannot find mIRCstats program file) | return } if ($exists( [ $readini mircstats.ini $1 Log ] ) == $false) { $ms.status(Error: Cannot find channel log) | /ms.enable | return } if ($exists( [ $readini mircstats.ini $1 HTML ] ) == $true) { .remove $readini mircstats.ini $1 HTML } $ms.status(Updating statistics for [ $1 $+ ... ] ) .timer.ms.checkupdatefinish 0 3 /ms.checkupdatefinish $1 run $readini mircstats.ini Global Program $readini mircstats.ini $1 Log $readini mircstats.ini $1 HTML -c $readini mircstats.ini $1 Config } alias ms.checkupdatefinish { if ($exists( [ $readini mircstats.ini $1 HTML ] ) == $true) { .timer.ms.checkupdatefinish off $ms.status(Finished updating statistics for [ $1 ] ) if ($readini mircstats.ini $1 ftpState == d) { /ms.topic $1 if (%ms.dAfullupdate == active) { if (%ms.dAcurrentchan < %ms.dAchancount) { inc %ms.dAcurrentchan /ms.doall %ms.dAcurrentchan } else { $ms.status(Update + Upload of all channels complete) unset %ms.dA* if ($readini mircstats.ini Global State == a) { /ms.enable } } } } elseif (%ms.dAfullupdate == active) { .timer.ms.uploaddelay 1 10 /ms.upload $1 $ms.status(Waiting to upload .html file) } } } alias ms.upload { if ($ms.isInChans($1) == $false) { $ms.status(Error: Save channel before Uploading stats) | return } if ($exists( [ $readini mircstats.ini $1 HTML ] ) == $false) { $ms.status(Error: No .html file found to upload) | /ms.enable | return } $ms.status(Uploading [ $1 ] statistics to website...) write -c $mircdir $+ msftpup.txt open $readini mircstats.ini $1 ftpHost write $mircdir $+ msftpup.txt $readini mircstats.ini $1 ftpLogin write $mircdir $+ msftpup.txt $readini mircstats.ini $1 ftpPassword write $mircdir $+ msftpup.txt ascii write $mircdir $+ msftpup.txt cd $readini mircstats.ini $1 RemoteLocation write $mircdir $+ msftpup.txt dele $nopath( [ $readini mircstats.ini $1 HTML ] ) write $mircdir $+ msftpup.txt quote pasv write $mircdir $+ msftpup.txt put $readini mircstats.ini $1 HTML write $mircdir $+ msftpup.txt bye write -c $mircdir $+ msftpup.bat ftp.exe -s: $+ $mircdir $+ msftpup.txt write $mircdir $+ msftpup.bat del $mircdir $+ msftpup.txt ;write $mircdir $+ msftpup.bat del $mircdir $+ msftpup.bat run $mircdir $+ msftpup.bat .timer.ms.checkulfinish 0 1 /ms.checkulfinish $1 } alias ms.checkulfinish { if ($exists( [ $mircdir $+ msftpup.txt ] ) == $false) { /ms.topic $1 .timer.ms.checkulfinish off $ms.status(Upload of [ $1 ] statistics complete) if (%ms.dAfullupdate == active) { if (%ms.dAcurrentchan < %ms.dAchancount) { inc %ms.dAcurrentchan /ms.doAll %ms.dAcurrentchan } else { $ms.status(Update + Upload of all channels complete) unset %ms.dA* if ($readini mircstats.ini Global State == a) { /ms.enable } } } } } alias ms.timediff { if ($1 == $null) { return } set %ms.tddiff $calc((($date(yyyy) - $gettok($1, 1, 46)) * 365) + ($ms.dayofyear($date(m), $date(d)) - $gettok($1, 2, 46))) if ($2 == h) { set %ms.tddiff $calc((%ms.tddiff * 24) + ($time(H) - $gettok($1, 3, 46))) } return %ms.tddiff unset %ms.tddiff } alias ms.dayofyear { set %ms.doydayspermonth 31.28.31.30.31.30.31.31.30.31.30.31 set %ms.doymonth 1 set %ms.doydayofyear 0 :ms.doyloop if (%ms.doymonth == $1) { inc %ms.doydayofyear $2 } else { inc %ms.doydayofyear $gettok(%ms.doydayspermonth, %ms.doymonth, 46) inc %ms.doymonth goto ms.doyloop } return %ms.doydayofyear unset %ms.doy* } alias ms.dayofweek { set %ms.dowdaysofweek Monday.Tuesday.Wednesday.Thursday.Friday.Saturday.Sunday return $findtok(%ms.dowdaysofweek, $1, 1, 46) } alias ms.enable { if ($server == $null) { return } set %ms.efreqtype $readini mircstats.ini Global FreqType set %ms.elastupdate $readini mircstats.ini Global LTS set %ms.elastupdate $gettok(%ms.elastupdate, 1, 32) if (%ms.efreqtype == h) { set %ms.efreq $readini mircstats.ini Global FreqHour if ($int($calc(24 / %ms.efreq)) == $calc(24 / %ms.efreq)) { set %ms.etime $int($calc(((($int($calc($time(H) / %ms.efreq)) + 1) * %ms.efreq) - ($time(H) + ($time(n) / 60) + ($time(s) / 3600))) * 3600)) ;echo -s BLAH ms.etime %ms.etime -- ms.elastupdate %ms.elastupdate -- ms.efreqtype %ms.efreqtype -- ms.timediff $ms.timediff(%ms.elastupdate, %ms.efreqtype) -- ms.efreq %ms.efreq -- calc $calc(%ms.efreq * 3600 / 2) if ((%ms.elastupdate != $null) && ($ms.timediff(%ms.elastupdate, %ms.efreqtype) >= %ms.efreq)) { $ms.statusecho(Interval exceeded since last update, updating now...) /ms.doAll return } } else { if ((%ms.elastupdate == $null) || ($ms.timediff(%ms.elastupdate, %ms.efreqtype) >= %ms.efreq)) { $ms.statusecho(Interval exceeded since last update (or 1st time run), updating on top of hour...) set %ms.etime $int($calc((($time(H) + 1) - ($time(H) + ($time(n) / 60) + ($time(s) / 3600))) * 3600)) } else { set %ms.etime $int($calc(((%ms.efreq + $gettok(%ms.elastupdate, 3, 46)) - ($time(H) + ($time(n) / 60) + ($time(s) / 3600))) * 3600)) } } } else { set %ms.efreq $readini mircstats.ini Global FreqDay if ($int($calc(%ms.efreq / 7)) == $calc(%ms.efreq / 7)) { set %ms.etime $int($calc((((7 - $ms.dayofweek($date(dddd))) * 24) + (24 - ($time(H) + ($time(n) / 60) + ($time(s) / 3600)))) * 3600)) if ((%ms.elastupdate != $null) && ($ms.timediff(%ms.elastupdate, %ms.efreqtype) >= %ms.efreq)) { $ms.statusecho(Interval exceeded since last update, updating now...) /ms.doAll return } } else { if ((%ms.elastupdate == $null) || ($ms.timediff(%ms.elastupdate, %ms.efreqtype) >= %ms.efreq)) { $ms.statusecho(Interval exceeded since last update (or 1st time run), updating at midnight...) set %ms.etime $int($calc((24 - ($time(H) + ($time(n) / 60) + ($time(s) / 3600))) * 3600)) } else { set %ms.etime $int($calc(((((%ms.efreq + $gettok(%ms.elastupdate, 2, 46)) - $ms.dayofyear($date(m), $date(d))) * 24) + (24 - ($time(H) + ($time(n) / 60) + ($time(s) / 3600)))) * 3600)) } } } $ms.statusecho(Next update scheduled in [ $duration(%ms.etime) ] ) ; writeini mircstats.ini Global LTS $date(yyyy.) $+ $ms.dayofyear($date(m), $date(d)) $+ $time(.H) $ctime .timer.ms.enable 1 %ms.etime /ms.doAll unset %ms.e* } alias ms.disable { if ($timer(.ms.enable) != $null) { .timer.ms.enable off } } alias ms.status { if ($dialog(ms.config).title != $null) { did -a ms.config 51 $1- } else { echo -s 2[12m10A12C2] 6-> 14 $+ $1- } } alias ms.statusecho { echo -s 2[12m10A12C2] 6-> 14 $+ $1- } alias ms.url { if ($len( [ $readini mircstats.ini $1 RemoteLocation ] ) == 1) { return http:// $+ $gettok( [ $readini mircstats.ini $1 ftpHost ] , 1, 32) $+ $chr(47) $+ $nopath( [ $readini mircstats.ini $1 HTML ] ) } else { return http:// $+ $gettok( [ $readini mircstats.ini $1 ftpHost ] , 1, 32) $+ $readini mircstats.ini $1 RemoteLocation $+ $chr(47) $+ $nopath( [ $readini mircstats.ini $1 HTML ] ) } } alias ms.topic { if ($server == $null) { return } set %ms.ttemp $readini mircstats.ini $1 Topic set %ms.ttemp $replace(%ms.ttemp, [url], $ms.url( [ $1 ] )) set %ms.ttemp $replace(%ms.ttemp, ^K, $chr(3)) set %ms.ttemp $replace(%ms.ttemp, ^B, $chr(2)) set %ms.ttemp $replace(%ms.ttemp, ^U, $chr(31)) set %ms.ttemp $replace(%ms.ttemp, ^R, $chr(22)) if (($me isop $1) && ($readini mircstats.ini $1 SetTopic == 1)) { topic $1 %ms.ttemp } if (($me ison $1) && ($readini mircstats.ini $1 SayTopic == 1)) { .raw privmsg $1 : $+ %ms.ttemp echo $1 2[12m10A12C2] 6-> 14Said in $1 $+ :99 %ms.ttemp } unset %ms.ttemp } alias ms.ftpstate { if ($1 == e) { did -e ms.config 309 did -e ms.config 311 did -e ms.config 313 did -e ms.config 315 } else { did -b ms.config 309 did -b ms.config 311 did -b ms.config 313 did -b ms.config 315 } } alias ms.botstate { if ($1 == e) { did -e ms.config 328 did -e ms.config 331 did -e ms.config 333 did -e ms.config 335 did -e ms.config 336 did -b ms.config 319 did -b ms.config 320 } else { did -b ms.config 328 did -b ms.config 331 did -b ms.config 333 did -b ms.config 335 did -b ms.config 336 did -e ms.config 319 did -e ms.config 320 } } alias ms.doallpopup { if ($server != $null) { set %ms.FUnotbytimer 1 /ms.doall } }