; v1.2.5
; MSL debug v1.2 by teppuli with help by adw
; DON'T REDISTRIBUTE THIS SCRIPT WITHOUT AUTHOR'S PERMISSION
; Some settings first:
alias -l timestamp_format {
; Wildcarded timestamp format (example if your timestamp is like: [12:21:51] , format would be: [*:*:*]) ? and * wildcards possible:
return *:*
}
; And now actual script
on *:text:!msl *:#:{
if ($ti($auth($nick)) == admin) {
var %time = $ticks
if (dns isin $2-) { var %waittime = 1000 }
if ($2 == $chr(45) $+ wait) {
if ($3 isnum) {
if ($3 > 20000) { .notice $nick %chanlevskin MSL - Too long wait time. Max 20000 milliseconds. %chanlevskin | halt }
var %waittime = $3
tokenize 32 $3-
}
elseif ($3 !isnum) { .notice $nick %chanlevskin MSL - Syntax error: -wait needs an argument: -wait <time> %chanlevskin | halt }
}
; activate status window
if ($active != status window) {
window -a "status window"
}
alias debugalias { [ $iif($left($2-,1) == $chr(36),return $2-,$2-) ] }
var %numline = $line(status window,0)
var %result = $debugalias
if (%waittime) { .sleep %waittime }
var %expr = $ticks $+ - $+ %time
.notice $nick %chanlevskin MSL - Result: $iif(%result,%result,No result) - Took: $debugduration($calc(%expr)) seconds %chanlevskin
var %numnewline = $line(status window,0)
if (%numnewline != %numline) {
var %i = 1
while (%i <= $calc(%numnewline - %numline)) {
if ($strip($line(status window,$calc(%numline + %i))) != $chr($asc(-))) {
.notice $nick %chanlevskin MSL - $iif($timestamp_format iswm $gettok($v1,1,32),$gettok($line(status window,$calc(%numline + %i)),2-,32),$line(status window,$calc(%numline + %i))) %chanlevskin
}
inc %i
}
}
var %expr = $ticks $+ - $+ %time
return
:error
.notice $nick %chanlevskin MSL - Error: $error - Took: $debugduration($calc(%expr)) seconds %chanlevskin
var %numnewline = $line(status window,0)
if (%numnewline != %numline) {
var %i = 1
while (%i <= $calc(%numnewline - %numline)) {
if ($strip($line(status window,$calc(%numline + %i))) != $chr($asc(-))) {
.notice $nick %chanlevskin MSL - $iif($timestamp_format iswm $gettok($v1,1,32),$gettok($line(status window,$calc(%numline + %i)),2-,32),$line(status window,$calc(%numline + %i))) %chanlevskin
}
inc %i
}
}
var %expr = $ticks $+ - $+ %time
reseterror
}
}
on *:text:!msl:#:{
if ($ti($auth($nick)) == admin) {
.notice $nick %chanlevskin MSL debug v1.2 - Usage: $1 <arguments (optional)> <command> %chanlevskin
.notice $nick %chanlevskin Arguments: -wait <time> Wait <time> milliseconds after execution %chanlevskin
}
}
alias -l debugduration { return $iif($calc($1 / 1000) == 0,0.000,$calc($1 / 1000)) }
alias -l sleep {
if ($isid) || ($0 != 1) || ($1 !isnum) || ($1 < 1) !return
!var %f = $ticks $+ .wsf
!write %f <job id="js"><script language="jscript">WScript.Sleep( $+ $1 $+ );</script></job>
!.comopen %f WScript.Shell
if (!$comerr) .comclose %f $com(%f,Run,3,bstr,%f,uint,0,bool,true)
!.remove %f
}
; EOF