;pxplugin=2.1:5.6:pager and away system ; ; pager 2.1 - phreax plugin for mIRC by spiff ; http://www.phreax.net/mircplugins/ ; ; type /pager help for help ; alias pager.pxhook { if ($1 == file) return $script if ($1 == unload) return 1; return $px.fileinfo($script, $1) } dialog pager.options { title "Pager Options" option pixel size -1 -1 300 153 text "Audio alert", 20, 10 15 75 20 combo 21, 90 12 125 80, drop text "Visible alert", 22, 10 35 75 20 combo 23, 90 13 125 80, drop check "Enable Pager", 40, 10 121 120 20, 3state button "OK", 10, 135 119 75 25, default ok button "Cancel", 11, 215 119 75 25, cancel } alias pager { if ($1 == $null) { pager.status } elseif ($1 == 0) { px.writeini enabled 0 pager.status } elseif ($1 == 1) { px.writeini enabled 1 pager.status } elseif ($1 == 2) { px.writeini enabled 2 pager.status } elseif ($1 == sound) { if ($2 == $null) { px.writeini beep echo $colour(info) -aq * Pager is using default beep } elseif ($isfile($2)) { var %b set %b $2 if ($mid(%b,2,2) != :\) { set %b $iif($left(%b,1) == \,$left($mircdir,2),$mircdir) $+ %b } px.writeini beep %b echo $colour(info) -aq * Pager is using %b } else { echo $colour(info) -aq * /pager: sound file ' $+ $2 $+ ' was not found } } elseif ($1 == gui) { dialog $iif($dialog(pager.options) == $null,-m pager.options,-v) pager.options } elseif ($1 == help) { echo -a - echo $colour(info) -a * /page [msg]       page the specified person echo $colour(info) -a * /pager                   display the current settings echo $colour(info) -a * /pager <0/1/2>           turn the pager off/silent/on echo $colour(info) -a * /pager sound [filename]  set the sound to play when being paged echo -a - } else echo $colour(info) -aq * /pager: invalid parameters. type  /pager help  for help } alias page { if ($1 == $null) { echo $colour(info) -aq * /page } else { echo 4 -sq * paging $1 ... .ctcp $1 PAGE $2- } } alias -l pager.status { var %e,%b set %e $px.readini(enabled) set %b $px.readini(beep) if (%e == 2) { echo $colour(info) -aq * Pager is ON, using $iif(%b == $null,default beep,%b) } else if (%e == 1) { echo $colour(info) -aq * Pager is SILENT } else { px.writeini enabled 0 echo $colour(info) -aq * Pager is OFF } } ctcp *:PAGE:?:{ var %e,%b set %e $px.readini(enabled) set %b $px.readini(beep) .ctcpreply $nick PAGE %e if (%e >= 1) { echo 4 -at -( $+ $nick $+ )- $iif($2 == $null,requesting your attention,$2-) flash PAGER ( $+ $nick $+ ) if ((%e == 2) && (%pager.mute == $null)) { if ((%b != $null) && $isfile(%b)) { .splay %b } else { beep 3 50 } set -u10 %pager.mute 1 } } halt } on *:CTCPREPLY:PAGE*:{ if (($2 == 0) || ($2 == $null)) { echo 4 -se * Page request ignored: $nick $+ 's pager is OFF } else { echo 4 -se * Page request to $nick dispatched $iif($2 == 1,silently) } halt } on *:START:{ if ($px.install) { var %b set %b $nofile($script) $+ pager.wav if ($isfile(%b)) px.writeini beep %b px.writeini enabled 2 pager.status echo $colour(info) -s * use  /pager help  to display a list of commands } .events on .ctcps on } ; ; px plugin common code ; alias -l px.scriptid { return $gettok($nopath($script),1,46) } alias -l px.writeini { if ($1 != $null) { if ($2 != $null) { writeini pxplugins.ini $px.scriptid $1 $2 } else { remini pxplugins.ini $px.scriptid $1 } } } alias -l px.readini { var %x set %x $readini -n pxplugins.ini $px.scriptid $1 return $iif(%x == $null,$2,%x) } alias -l px.fileinfo { var %i set %i $read -ntl1 $1 if ($left(%i,10) != ;pxplugin $+ $chr(61)) return set %i $right(%i,-10) if ($2 == version) return $gettok(%i,1,58) if ($2 == mirc) return $gettok(%i,2,58) if ($2 == info) return $gettok(%i,3,58) } alias -l px.plugin { var %h set %h $iif($1 == this,$px.scriptid,$1) $+ .pxhook if ($isalias(%h) != $true) return $null if (($2 == $null) || ($2 == loaded)) return 1 set %h $ $+ %h $+ ( $+ $2 $+ ) return [ [ %h ] ] } alias -l px.install { if (($version < 5.6) || ($version < 0 $+ $px.plugin(this,mirc))) { echo 4 -se * this plugin requires mIRC version $iif(0 $+ $1 < 5.6,5.6,$1) or above .timer -o 1 0 .unload -rs $script halt } var %i,%l,%p set %px.loaded $addtok(%px.loaded,$px.scriptid,58) set %i $numtok(%px.loaded,58) :plugin if (%i == 0) goto display set %p $gettok(%px.loaded,%i,58) if ($px.plugin(%p,loaded) != 1) set %px.loaded $deltok(%px.loaded,%i,58) dec %i goto plugin :display if ($px.scriptid == $gettok(%px.loaded,1,58)) echo $colour(info) -se * px plugins: $replacecs(%px.loaded,:, / ) return $iif($isfile(pxplugins.ini) && $ini(pxplugins.ini,$px.scriptid),0,1) } alias plugins { if ($1 == $null) { echo $colour(info) -se * px plugins: $replacecs(%px.loaded,:, / ) } elseif ($1 == list) { var %i,%j,%p,%t echo -s - echo $colour(info) -s * px plugins loaded: set %i $numtok(%px.loaded,58) :plugin if (%i == 0) goto end set %p $gettok(%px.loaded,%i,58) if ($px.plugin(%p,loaded)) { set %t %p v $+ $px.plugin(%p,version) $+ : set %j $calc(16 - $len(%t)) :pad if (%j <= 0) goto padend set %t %t  dec %j goto pad :padend echo $colour(info) -s * %t $px.plugin(%p,info) } else set %px.loaded $deltok(%px.loaded,%i,58) dec %i goto plugin :end echo -s - } elseif (($1 == unload) && ($2 != $null)) { if (($findtok(%px.loaded,$2,1,58) > 0) && $px.plugin($2,loaded)) { var %s set %s $px.plugin($2,file) set %px.loaded $remtok(%px.loaded,$2,1,58) if (%px.loaded == $null) unset %px.loaded px.plugin $2 unload unset % $+ $2 $+ .* remini pxplugins.ini $2 if ($isfile(pxplugins.ini) && ($ini(pxplugins.ini,0) == 0)) .remove pxplugins.ini .timer -o 1 0 .unload -rs %s echo $colour(info) -aq * plugin $2 removed. to reload type /load -rs %s } else echo $colour(info) -aq * plugin $2 not found } elseif ($1 == help) { echo -a - echo $colour(info) -a * /plugins list             list all loaded plugins echo $colour(info) -a * /plugins unload [plugin]  unload a plugin echo -a - } else echo $colour(info) -a * /plugins: invalid parameters. /plugins help for info }