Channel Central — File Browser
ChannelCentralv1.0 / ChannelCentralv1.0 / Chancentral / chancentral.mrc
chancentral.mrc — 43.88 KB — Download this file
;-------------------------------------------
; Channel central by Lindrian
; Do not edit anything here unless you know what youre doing!
;-------------------------------------------
dialog cm {
title "Channel central..."
size -1 -1 228 185
option dbu
icon icons\script.ico
tab "Channel modes", 10, 2 0 225 169
tab "Bans", 2
tab "Excepts", 64
tab "Invites", 65
tab "Topic", 47
tab "Statistics", 16
edit "", 41, 67 145 18 10, tab 10 autohs
edit "", 42, 67 135 61 10, tab 10 pass autohs
edit "", 48, 7 25 211 37, tab 47 autovs multi vsbar limit 600
text "Characters avaliable:", 110, 10 125 52 8, tab 47
text "", 52, 64 125 155 8, tab 47, right
button "Set topic", 54, 50 171 33 12, tab 47
box "Current channel information...", 55, 4 16 220 65, tab 10
edit "", 56, 81 26 120 9, tab 10 read autohs
edit "", 57, 81 46 120 9, tab 10 read autohs
edit "", 58, 81 36 120 9, tab 10 read autohs
edit "", 59, 81 56 120 9, tab 10 read autohs
text ":", 19, 76 26 6 8, tab 10 center
text ":", 26, 76 66 6 8, tab 10 center
text ":", 25, 76 56 6 8, tab 10 center
text ":", 24, 76 46 6 8, tab 10 center
text ":", 23, 76 36 6 8, tab 10 center
edit + $+ $chanmodes, 890, 81 66 120 10, tab 10 read autohs
text "Active channel", 60, 16 27 59 8, tab 10
text "Active network/server", 61, 16 47 59 8, tab 10
text "Current modes", 62, 16 37 61 8, tab 10
text "Ammount of ops (@)", 63, 16 57 59 8, tab 10
text "users", 29, 89 146 16 8, tab 10
check "p - Private", 103, 82 95 50 8, tab 10
check "s - Secret", 104, 82 105 50 8, tab 10
check "m - Moderated", 107, 16 125 50 8, tab 10
check "t - Only ops set topic", 100, 16 95 60 8, tab 10
check "n - No ext. messages", 101, 16 105 65 8, tab 10
check "i - Invite only", 102, 16 115 50 8, tab 10
check "l - Limit channel:", 106, 16 145 51 8, tab 10
check "k - Channel key:", 105, 16 135 51 8, tab 10
combo 49, 30 140 189 35, tab 47 drop
text "Topic:", 50, 10 141 16 8, tab 47
text "Topic set at:", 90, 10 152 30 8, tab 47
text "-No topic selected-", 91, 44 152 158 15, tab 47
button "Clear topic data", 92, 2 171 45 12, tab 47
text "", 97, 7 115 211 8, tab 47
text "Avaliable modes", 5, 16 67 59 8, tab 10
button "Close", 1, 190 171 37 12, cancel default
button "Ok", 3, 150 171 37 12
list 4, 4 17 220 135, tab 2 size extsel
list 8, 4 17 220 135, tab 64 size extsel
list 12, 4 17 220 135, tab 65 size extsel
text "Current/maximum:", 9, 6 155 50 8, tab 64
text "0/0", 11, 50 155 170 8, tab 64, right
text "Current/maximum:", 13, 6 155 50 8, tab 65
text "0/0", 14, 50 155 170 8, tab 65, right
text "Current/maximum:", 6, 6 155 50 8, tab 2
text "0/0", 7, 50 155 170 8, tab 2, right
box "Topic...", 15, 4 16 220 121, tab 47
box "Modes", 577, 4 85 220 81, tab 10
text Bans are not supported on $network $+ !, 584, 4 80 221 20, tab 2 hide center
text Excepts are not supported on $network $+ !, 585, 4 80 221 20, tab 64 hide center
text Invites are not supported on $network $+ !, 586, 4 80 221 20, tab 65 hide center
list 17, 4 17 220 105, tab 16 size extsel
list 18, 4 123 220 44, tab 16 size extsel
list 20, 154 98 51 59, tab 10 size
box "Other modes", 21, 150 89 59 73, tab 10
button "", 22, 7 63 211 50, tab 47
}
dialog inform {
title "information..."
size -1 -1 150 76
option dbu
icon icons\script.ico
button "Ok", 3, 110 62 37 12, ok
edit "", 2, 2 4 145 50, read multi return vsbar
edit "", 4, 2 58 147 1
}
on *:dialog:inform:init:0: {
dll $mdx SetMircVersion $version
dll $mdx MarkDialog $dname
dll $mdx SetBorderStyle 4 staticedge
dll $mdx SetBorderStyle 2
did -ra $dname 2 %cm.inform
}
alias cb2 return
on *:dialog:cm:*:*: {
if ($devent == init) {
dcx Mark $dname cb2
did -ra $dname 4 Refreshing bans...
did -ra $dname 8 Refreshing excepts...
did -ra $dname 12 Refreshing invites...
var %t = $ticks
unset %cm.mode.* %cm.other.modes
dll $mdx SetMircVersion $version
dll $mdx MarkDialog $dname
dll $mdx SetColor $dname 4,8,12 background $color($color(background))
dll $mdx SetColor $dname 4,8,12 text $color($color(text))
dll $mdx SetColor $dname 4,8,12 textbg $color($color(background))
dll $mdx SetControlMDX $dname 97 ProgressBar smooth > $ctl
dll $mdx SetControlMDX $dname 4,8,12,17 ListView report showsel rowselect labeltip editlabels > $views
dll $mdx SetControlMDX $dname 18 ListView report report showsel rowselect labeltip noheader > $views
dll $mdx SetControlMDX $dname 20 ListView report showsel labeltip checkboxes noheader > $views
did -i $dname 20 1 headerdims 80:1
dll $mdx SetBorderStyle 56,57,58,890,59 windowedge
dll $mdx SetFont $dname 55,15,577,21 13 700 Tahoma
did -i $dname 4,8,12 1 headerdims 215:1 97:2 110:3
did -i $dname 4,8,12 1 headertext + 0 Address + 0 Set by + 0 Date
did -i $dname 17 1 Headerdims 50 40 80 80 70 120 80 80
did -i $dname 17 1 headertext $+(Number,$chr(9),Status,$chr(9),Nick,$chr(9),Real name,$chr(9),Ident,$chr(9),Host,$chr(9),Away,$chr(9),IrcOp)
did -i $dname 18 1 headerdims 200:1 60:2 160:3
did -i $dname 18 1 headertext + 0 1 + 0 2 + 0 3
if ($scid($activecid).status != connected) { dialog -x $dname | halt }
$iif($chan(%cm.chan).topic,cm.topic.load.2,cm.topic.load.er)
did -ra $dname 56 %cm.chan ( $+ $nick(%cm.chan,0) users $+ )
did -ra $dname 57 $network ( $+ $server $+ )
did -ra $dname 58 $iif($chan(%cm.chan).mode,$v1,No modes set)
did -ra $dname 59 $+($round($calc($nick(%cm.chan,0,o) / $nick(%cm.chan,0) * 100),0),%) ( $+ $nick(%cm.chan,0,o) $+ )
did -a $dname 48 $chan(%cm.chan).topic
set %cm.chan.cid $cid
cm.mode.check
cm.topic.check
;cm.topic.load
dialog -t $dname Channel Central... [/cc] ( $+ %cm.chan $+ )
if (b isincs $chanmodes) mode %cm.chan +b
if (e isincs $chanmodes) mode %cm.chan +e
if (I isincs $chanmodes) mode %cm.chan +I
other.modes.load
if (I !isincs $chanmodes) {
did -v $dname 586
did -h $dname 12-14
}
if (e !isincs $chanmodes) {
did -v $dname 585
did -h $dname 8,9,11
}
if (b !isincs $chanmodes) {
did -v $dname 584
did -h $dname 4,6,7
}
did -b $dname 54
if ($me !isop %cm.chan) {
did -b $dname 100-105,107,42,106,41,29,3,54
}
who_ %cm.chan
var %n = $nick(%cm.chan,0)
did -a $dname 18 Total users on the channel $chr(9) %n
did -a $dname 18 Ops $chr(9) $nick(%cm.chan,0,o) $chr(9) $round($calc($nick(%cm.chan,0,o) / %n * 100),1) $+ %
did -a $dname 18 Voiced users $chr(9) $nick(%cm.chan,0,v) $chr(9) $round($calc($nick(%cm.chan,0,v) / %n * 100),1) $+ %
did -a $dname 18 Regulars $chr(9) $nick(%cm.chan,0,r) $chr(9) $round($calc($nick(%cm.chan,0,r) / %n * 100),1) $+ %
did -a $dname 18 Away users $chr(9) 0 $chr(9) 0%
did -a $dname 18 IRC operators $chr(9) 0 $chr(9) 0%
set %cm.temp.topic $didtok(48,32)
cm.topic.check
dll $mdx SetControlMDX $dname 22 window > $dialogs
window -phf @topicprev -1 -1 $window(-1).w $window(-1).h
did -a $dname 22 grab $window(@topicprev).hwnd @topicprev
prevtopic
var %i = $hfind(topichist,$+($network,%cm.chan,$cr,*),0,w),%r,%z = 1,%g,%n = $nick(%cm.chan,0),%cm = $gettok($chanmodes,1,44)
while (%i) {
%r = $addtok(%r,$hget(topichist,$hfind(topichist,$+($network,%cm.chan,$cr,*),%i,w)) %i,124)
dec %i
}
%r = $sorttok(%r,124)
while ($gettok(%r,%z,124)) {
tokenize 32 $v1
did -i $dname 49 1 $+($decode($gettok($hfind(topichist,$+($network,%cm.chan,$cr,*),$2,w),2,13),m),$str(Â ,150),$1)
inc %z
}
if ($calc($ticks - %t) > 500) {
set %cm.inform The channel central took $calc($v1 / 1000) seconds to load. This is most likely due to your topic history being too mayor! Please clean it up! It may also be due to a huge ban/invite/excepts list, or alot of users on the channel for the statistics.
$dialog(inform,inform,-4)
}
set %cm.chan.t 10
}
elseif ($devent == edit) {
if ($did == 41) {
if ($did(41) !isnum) {
var %t = $did(41)
did -ra $dname 41 $remove(%t,$right(%t,1))
beep 1
}
}
if ($did == 48) {
cm.topic.check
prevtopic
if ($($didtok(48,32),0) != $chan(%cm.chan).topic) && ($($didtok(48,32),0) != %cm.temp.topic) && ($gtxt($dname,48) != $chan(%cm.chan).topic) && ($oh($me,%cm.chan)) {
did -e $dname 54
}
else {
did -b $dname 54
}
}
}
elseif ($devent == sclick) {
if ($did) {
tokenize 32 $did($did,1)
if ($1-2 == headerclick headerEvent) && ($3 isnum) {
headersort
}
}
if ($dialog($dname).tab != 16) { set %cm.chan.t $v1 }
if $did == 16 {
if $chan($active).inwho {
set %cm.inform There's already a /who request for %cm.chan in progress! Please wait for it to finish.
$dialog(inform,inform,-4)
did -f $dname %cm.chan.t
}
}
if ($did == 17) {
tokenize 32 $did($did,1)
if ($1 == rclick) && ($did(17).seltext) {
stats.popup
}
}
if ($istok(4 8 12,$did,32)) {
if (!$istok(bans excepts invites,$gettok($did($did).seltext,7,32),32)) && ($oh($me,%cm.chan)) {
var %r, %ö = $iif($did == 4,-b+b,$iif($did == 8,-e+e,$iif($did == 12,-I+I)))
if ($did($did).sel) && ($oh($me,%cm.chan)) { %r = 1 }
if (beginlabeledit * iswm $did($did,1)) && (!$did(20).enabled) { did -i $dname $did 1 cancel }
elseif (endlabeledit * iswm $did($did,1)) { cm.labeledit %ö $did $lbl($did,1) $gtok($did($did,1),3-) }
}
tokenize 32 $did($did,1)
if ($1 == rclick) {
if ($istok(bans excepts invites,$gettok($did($did).seltext,7,32),32)) {
cm.popup $did $iif($did == 4,ba&n,$iif($did == 8,e&xcept,$iif($did == 12,&invite))) 1
}
else {
cm.popup $did $iif($did == 4,ba&n,$iif($did == 8,e&xcept,$iif($did == 12,&invite)))
}
}
}
if ($did == 92) {
cdialog Are you sure you wish to clear all topic data?
if (%cdialog.did == yes) {
hdel -w topichist *
hsave -o topichist topichist.hsh
did -r $dname 49
did -ra $dname 91 -No topic selected-
}
}
if ($did == 54) {
if ($($didtok(48,32),0) != $chan(%cm.chan).topic) && ($($didtok(48,32),0) != %cm.temp.topic) && ($gtxt($dname,48) != $chan(%cm.chan).topic) {
var %topic = $iif($didtok(48,32),$v1,$chr(10))
.scid $activecid topic %cm.chan $(%topic,0)
cm.topic.check
did -b $dname 54
}
}
if ($did == 49) {
var %t = $gettok($did($did),-1,160)
did -ra $dname 48 $deltok($did($did),-1,160)
did -ra $dname 91 $asctime(%t,dddd $+ $chr(44) mmmm doo yyyy $+ $chr(44) HH:nn:ss) ( $+ $duration($calc($ctime - %t)) ago)
cm.topic.check
prevtopic
if ($($didtok(48,32),0) != $chan(%cm.chan).topic) && ($($didtok(48,32),0) != %cm.temp.topic) && ($gtxt($dname,48) != $chan(%cm.chan).topic) && ($oh($me,%cm.chan)) {
did -e $dname 54
}
else {
did -b $dname 54
}
halt
}
elseif ($istok(100 101 102 103 104 107,$did,32)) {
if $did($did).state {
set %cm.mode.add $addtok(%cm.mode.add,$left($did($did),1),32)
}
else {
set %cm.mode.add $remtok(%cm.mode.add,$left($did($did),1),32)
set %cm.mode.rem $addtok(%cm.mode.rem,$left($did($did),1),32)
}
}
elseif ($did == 105) {
did $iif($did(105).state,-e,-b) $dname 42
}
elseif ($did == 106) {
did $iif($did(106).state,-e,-b) $dname 41
}
elseif ($did == 43) {
cm.other.modes.add
}
elseif ($did == 3) {
if ($oh($me,%cm.chan)) {
var %y = $chan(%cm.chan).mode
if ($did(105).state == 0) { mode %cm.chan -k $chan(%cm.chan).key }
elseif $did(42) && $did(105).state == 1 { mode %cm.chan +k $did(42) }
var %a = %cm.chan,%i = $did(20).lines,%r,%d,%m = $gtok($chan(%a).mode,1),%z
while (%i > 1) {
tokenize 32 $gettok($did(20,%i),1,9)
var %z = $mid($6,2)
if ($5 == 2) {
if (%z !isincs %m) {
%r = $+(%r,$iif(!%r,+),%z)
}
}
elseif (%z isincs %m) {
%d = $+(%d,$iif(!%d,-),%z)
}
if ($regex(%r $+ %d,/[a-zA-Z]/g) >= $modespl) {
mode %cm.chan %r $+ %d
var %r = "",%d = ""
}
dec %i
}
if ($did(106).state == 1) { mode %cm.chan +l $did(41) }
elseif ($did(106).state == 0) && (l isincs $gtok($chan(%cm.chan).mode,1)) {
%cm.mode.rem = %cm.mode.rem $+ l
}
var %x = $remove($+($iif(%r,%r,+),%cm.mode.add,$iif(%d,%d,-),%cm.mode.rem),$chr(32))
if ($removecs(%x,+,-,$chr(32)) != $null) .scid $activecid mode %cm.chan %x
; .scid $activecid mode %cm.chan $removecs($+(+,$remove(%r,+),$remove(%cm.mode.add,+),-,%t,$remove(%cm.mode.rem,-)),$chr(32))
unset %cm.mode.*
}
if ($($didtok(48,32),0) != $chan(%cm.chan).topic) && ($($didtok(48,32),0) != %cm.temp.topic) && ($gtxt($dname,48) != $chan(%cm.chan).topic) {
.scid $activecid topic %cm.chan $iif($didtok(48,32),$($v1,0),$chr(10))
}
dialog -x $dname
unset %cm.temp.topic
}
}
}
alias cm.clear {
set -u1 %cm.clear.all 1
if ($1 == b) { var %p = b, %il = $ibl(%cm.chan,%a), %max = $ibl(%cm.chan,0), %id = 4, %msg = bans, %id2 = 7 }
if ($1 == I) { var %p = I, %il = $iil(%cm.chan,%a), %max = $iil(%cm.chan,0), %id = 12, %msg = invites, %id2 = 11 }
if ($1 == e) { var %p = e, %il = $iel(%cm.chan,%a), %max = $iel(%cm.chan,0), %id = 8, %msg = excepts, %id2 = 14 }
var %a = 1, %b
while (%a <= %max) {
%b = %b $iif(%p == b,$ibl(%cm.chan,%a),$iif(%p == I,$iil(%cm.chan,%a),$iif(%p == e,$iel(%cm.chan,%a))))
if $numtok(%b,32) == $modespl {
mode %cm.chan $+(-,$str(%p,$numtok(%b,32))) %b
%b = ""
}
inc %a
}
if (%b) { mode %cm.chan $+(-,$str(%p,$numtok(%b,32))) %b }
;mode %cm.chan $+(+,%p)
did -ra cm %id No %msg set.
cm.update.stats %id2 %cm.chan
}
alias cc {
if $active !ischan { echo -a This feature can only be used in channels! | halt }
if ($me !ison $active) { echo -a You're not currently on $_Wrap($active) $+ ! | halt }
if (!$dialog(cm)) && ($status == connected) {
set %cm.chan $active
$dialog(cm,cm,-4)
}
}
alias inform {
set %cm.inform $$1-
if (!$dialog(inform)) {
dialog -m inform inform
}
else {
did -ra inform 2 %cm.inform
dialog -v inform
}
}
alias cm.topic.load.2 {
var %c = $cm.topiclen
var %text = $didtok(cm,48,32)
var %calc = $int($calc($len(%text) / %c * 100))
set %cm.top %text
did -ra $dname 97 $iif(%calc <= 100,$v1,100)
did -ra $dname 52 $+($len(%text),/,%c) ( $+ $calc(100 - %calc) $+ % $+ )
if ($len(%text) > %c) {
dll $mdx SetColor $dname 52,53 text $rgb(480,0,0)
}
else {
dll $mdx SetColor $dname 52,53 text $rgb(0,0,0)
}
}
alias cm.topic.load.er {
did -ra cm 52 0/ $+ $cm.topiclen (0%)
did -a cm 97 0
}
on *:part:%cm.chan: {
if (%cm.chan.cid == $cid) && ($nick == $me) {
if ($dialog(cm)) {
dialog -c cm cm
$inform(You have parted from %cm.chan $+ , closing dialog...)
}
}
}
on *:kick:%cm.chan: {
if (%cm.chan.cid == $cid) && ($knick == $me) {
if ($dialog(cm)) {
dialog -c cm cm
$inform(You have been kicked from %cm.chan $+ , closing dialog...)
}
}
}
alias cm.mode.check {
var %x = $chan(%cm.chan).mode
if (t isincs $gettok(%x,1,32)) { did -c cm 100 }
if (n isincs $gettok(%x,1,32)) { did -c cm 101 }
if (i isincs $gettok(%x,1,32)) { did -c cm 102 }
if (p isincs $gettok(%x,1,32)) { did -c cm 103 }
if (s isincs $gettok(%x,1,32)) { did -c cm 104 }
if (m isincs $gettok(%x,1,32)) { did -c cm 107 }
if (k isincs %x) {
did -c cm 105
if ($me isop %cm.chan) did -e cm 42
did -ra cm 42 $chan(%cm.chan).key
}
else { did -b cm 42 }
if (l isincs %x) {
did -c cm 106
if ($me isop %cm.chan) did -e cm 41
did -ra cm 41 $chan(%cm.chan).limit
}
else { did -b cm 41 }
}
alias -l cm.id return 100,101,102,103,104,105,106,107,41,42
alias cm.topiclen { return $iif(%cm.topic. [ $+ [ $cid ] ],$v1,0) }
alias cm.topic { var %a = $chan(%cm.chan).topic, %b = $(%a),2 | set %c $len(%b) }
#channel on
alias channel cc
#channel end
alias cm.topic.check {
var %c = $cm.topiclen
var %lines = $did(cm,48).lines
var %text = $didtok(cm,48,32)
var %len = $iif(%lines > 1,$calc($len(%text) - ($v1 - 1)),$len(%text))
var %calc = $int($calc(%len / %c * 100))
set %cm.top %text
did -a cm 97 $iif(%calc <= 100,$v1,100)
did -ra cm 52 $+($calc(%c - %len),/,%c) ( $+ $calc(100 - %calc) $+ % $+ )
if (%len > %c) {
Dll $mdx SetColor cm 52,53 text $rgb(480,0,0)
}
else {
Dll $mdx SetColor cm 52,53 text $rgb(0,0,0)
}
}
on *:rawmode:%cm.chan: {
statusbar
if ($dialog(cm)) {
if ($right($1,1) === e) { var %dialog = 8, %dialog2 = 11 }
if ($right($1,1) === b) { var %dialog = 4, %dialog2 = 7 }
if ($right($1,1) === I) { var %dialog = 12, %dialog2 = 14 }
cm.update.stats %dialog2 %cm.chan
if ($istok(-b+b -e+e -I+I,$1,32)) {
did -o cm %dialog %label.sel $+($3,$chr(9),$nick,$chr(9),$asctime($ctime,dd/mm/yyyy HH:nn))
unset %label.sel
}
if (!%cm.clear.all) {
if ($nick == $me) && ($left($1,1) == -) { halt }
if ($did(cm,%dialog).lines == 1) { return }
if ($left($1,1) == -) && ($nick != $me) {
did -r cm %dialog
mode %cm.chan $+(+,$right($1,1))
return
}
if ($istok(bans excepts invites,$gettok($did(cm,%dialog,2),7,32),32)) { did -r cm %dialog }
if (%dialog) did -a cm %dialog + 0 0 0 $2 $+ + 0 0 0 $nick $+ + 0 0 0 $asctime($ctime,dd/mm/yyyy HH:nn)
if (%dialog == 4) {
if ($dialog(cm)) did -ra cm 7 $iif(%cm.bans. [ $+ [ $cid ] ],$ibl(%cm.chan,0) $+ / $+ $v1,$ibl(%cm.chan,0) $+ /unknown) ( $+ $round($calc($ibl(%cm.chan,0) / %cm.bans. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
}
}
if (%dialog == 8) {
if ($dialog(cm)) did -ra cm 11 $iif(%cm.excepts. [ $+ [ $cid ] ],$iel(%cm.chan,0) $+ / $+ $v1,$iel(%cm.chan,0) $+ /unknown) ( $+ $round($calc($iel(%cm.chan,0) / %cm.excepts. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
}
if (%dialog == 12) {
if ($dialog(cm)) did -ra cm 14 $iif(%cm.invites. [ $+ [ $cid ] ],$iil(%cm.chan,0) $+ / $+ $v1,$iil(%cm.chan,0) $+ /unknown) ( $+ $round($calc($iil(%cm.chan,0) / %cm.invites. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
}
}
}
on *:op:%cm.chan: {
if ($opnick == $me) {
if ($dialog(cm)) {
did -e cm 100-105,107,42,106,41,29,3,54
}
}
}
on *:deop:%cm.chan: {
if ($opnick == $me) {
if ($dialog(cm)) {
did -b cm 100-105,107,42,106,41,29,3,54
}
}
}
raw 367:*: {
haltdef
if (!%ban.delay) && ($dialog(cm)) did -r cm 4 | set %ban.delay 1
if ($dialog(cm)) {
did -a cm 4 + 0 0 0 $3 $+ + 0 0 0 $iif($4,$v1,*) $+ + 0 0 0 $asctime($5,dd/mm/yyyy HH:nn)
}
}
raw 348:*: {
haltdef
if (!%except.delay) && ($dialog(cm)) did -r cm 8 | set %except.delay 1
if ($dialog(cm)) {
did -a cm 8 + 0 0 0 $3 $+ + 0 0 0 $iif($4,$v1,*) $+ + 0 0 0 $asctime($5,dd/mm/yyyy HH:nn)
}
}
raw 346:*: {
haltdef
if (!%invite.delay) && ($dialog(cm)) did -r cm 12 | set %invite.delay 1
if ($dialog(cm)) {
did -a cm 12 + 0 0 0 $3 $+ + 0 0 0 $iif($4,$v1,*) $+ + 0 0 0 $asctime($5,dd/mm/yyyy HH:nn)
}
}
raw 368:*: {
statusbar
if ($ibl($2,0) == 0) && ($dialog(cm)) { did -ra cm 4 No bans set. }
if ($dialog(cm)) { did -ra cm 7 $ibl($2,0) $+ / $+ $iif(%cm.bans. [ $+ [ $cid ] ],$v1,unknown) ( $+ $round($calc($ibl($2,0) / %cm.bans. [ $+ [ $cid ] ] * 100),0) $+ % $+ ) }
unset %ban.delay
haltdef
}
raw 349:*: {
statusbar
if ($iel($2,0) == 0) && ($dialog(cm)) { did -ra cm 8 No excepts set. }
if ($dialog(cm)) did -ra cm 11 $iif(%cm.excepts. [ $+ [ $cid ] ],$iel($2,0) $+ / $+ $v1,$iil($2,0) $+ /unknown) ( $+ $round($calc($iel($2,0) / %cm.excepts. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
unset %except.delay
haltdef
}
raw 347:*: {
statusbar
if ($iil($2,0) == 0) && ($dialog(cm)) { did -ra cm 12 No invites set. }
if ($dialog(cm)) did -ra cm 14 $iif(%cm.invites. [ $+ [ $cid ] ],$iil($2,0) $+ / $+ $v1,$iil($2,0) $+ /unknown) ( $+ $round($calc($iil($2,0) / %cm.invites. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
unset %invite.delay
haltdef
}
raw 472:*: haltdef
raw 461:*: { var %x = k,%y = l | if (%x isin $1-) || (%y isin $1-) { haltdef } }
raw 005:*: {
if $regex($1-,/MAXBANS=(\d+)/) { set $+(%,cm.bans,.,$cid) $regml(1) }
if $regex($1-,/TOPICLEN=(\d+)/) { set $+(%,cm.topic,.,$cid) $regml(1) }
if $regex($1-,/MAXLIST=b:([0-9]+)/) { set $+(%,cm.bans,.,$cid) $regml(1) }
if ($gettok($wildtok($1-,PREFIX=?*,1,32),2,61)) { set $+(%,cm.prefix,.,$cid) $v1 }
var %r = /MAXLIST=.*?,e:(\d+)/ | if $regex($1-,%r) { set $+(%,cm.excepts,.,$cid) $regml(1) }
var %r = /MAXLIST=.*?,I:(\d+)/ | if $regex($1-,%r) { set $+(%,cm.invites,.,$cid) $regml(1) }
if ($gettok($wildtok($1-,SILENCE=?*,1,32),2,61)) { set %silencenum. $+ $cid $v1 }
}
raw 004:*:{ set %usermodes. $+ $cid $4 }
raw 352:*: {
if ($dialog(cm)) {
var %number = $did(cm,17).lines
did -a cm 17 $+(%number,$chr(46)) $+($chr(9),$iif(~ isin $7,$v1,$iif(& isin $7,$v1,$iif(@ isin $7,$v1,$iif(% isin $7,$v1,$iif(+ isin $7,$v1))))),$chr(9),$6,$chr(9),$9,$chr(9),$3,$chr(9),$4,$chr(9),$iif(G isin $7,Yes,No),$chr(9),$iif($chr(42) isin $7,Yes,No))
cm.stats $1-
haltdef
}
}
raw 315:*: {
if ($dialog(cm)) {
haltdef
}
}
alias cm.stats {
if (G isincs $7) {
var %g = $calc($gettok($did(cm,18,6),12,32) + 1), %n = $nick(%cm.chan,0)
did -o cm 18 6 Away users $chr(9) %g $chr(9) $round($calc(%g / %n * 100),1) $+ %
}
if (* isin $7) {
var %y = $calc($gettok($did(cm,18,7),12,32) + 1), %n = $nick(%cm.chan,0)
did -o cm 18 7 1 IRC operators $chr(9) %y $chr(9) $round($calc(%y / %n * 100),1) $+ %
}
}
alias stats.popup {
mkmenu stats office2003rev
if ($did(cm,$did).seltext) {
var %nick = $remove($gettok($did(cm,17).seltext,15,32),+fs,+,$chr(9))
xpop -a stats 0 $chr(9) +g 1 0 $chr(151) $iif($len(%nick) > 8,$left(%nick,8) $+ ..,%nick) $chr(151)
xpop -a stats 0 $chr(9) + 0 0 -
}
var %o = $iif($oh($me,%cm.chan),+,+g), %r = $iif($did(cm,$did).seltext,+,+g)
xpopup -i stats + 0 $shortfn($scriptdiricons\question.ico)
xpop -a stats 0 $chr(9) + 1 1 Whois
xpop -a stats 0 $chr(9) + 0 0 -
xpop -a stats 0 $chr(9) $iif(%o == +,%r,%o) 2 0 K&ick
xpop -a stats 0 $chr(9) $iif(%o == +,%r,%o) 3 0 B&an
xpop -a stats 0 $chr(9) $iif(%o == +,%r,%o) 4 0 K&ick && Ban
xpopup -s stats +t $mouse.dx $mouse.dy
xpopup -d stats
}
alias stats.do {
var %nick = $remove($gettok($did(cm,17).seltext,15,32),+fs,$chr(9),+s)
if ($1 == kick) {
kick %cm.chan %nick
}
if ($1 == whois) {
whois %nick %nick
}
if ($1 == ban) {
mode %cm.chan +b $bantype(%nick)
}
if ($1 == kb) {
ban -k %cm.chan %nick
}
}
alias cm.popup {
if ($1 == 4) {
var %d = $iif($ibl(%cm.chan,0) == 0,+g,+)
}
elseif ($1 == 8) {
var %d = $iif($iel(%cm.chan,0) == 0,+g,+)
}
elseif ($1 == 12) {
var %d = $iif($iil(%cm.chan,0) == 0,+g,+)
}
var %o = $iif($oh($me,%cm.chan),+,+g), %r = $iif($did(cm,$1).seltext,+,+g), %r = $iif($3,+g,%r), %z = $iif($did(cm,$1,0).sel > 1,+g,+)
mkmenu cm office2003rev
xpopup -i cm + 0 $shortfn($scriptdiricons\question.ico)
xpopup -i cm + 0 $shortfn($scriptdiricons\search.ico)
if ($did(cm,$did).seltext) && (!$3) {
xpop -a cm 0 $chr(9) +g 1 1 $chr(151) $iif($len($remove($gettok($did(cm,$did).seltext,6,32), ,+fs)) > 8,$left($remove($gettok($did(cm,$did).seltext,6,32), ,+fs),8) $+ ..,$remove($gettok($did(cm,$did).seltext,6,32), ,+fs)) $chr(151)
xpop -a cm 0 $chr(9) + 0 0 -
}
xpop -a cm 0 $chr(9) %o 2 0 &Add $2
xpop -a cm 0 $chr(9) $iif(%o == +,%r,%o) 3 0 &Remove $+($2,(s))
xpop -a cm 0 $chr(9) $iif(%o == + && %z == +,%r,$iif(%o == +,%z,%o)) 4 0 &Edit $2
xpop -a cm 0 $chr(9) + 0 0 -
if ($did == 4) {
xpop -a cm 0 $chr(9) $iif($ibl(%cm.chan,0) == 0,+g,+) 5 2 Fin&d ban..
xpop -a cm 0 $chr(9) + 0 0 -
}
xpop -a cm 0 $chr(9) $iif(%o == +,%d,%o) 6 0 Clear $+($2,(s))
xpopup -s cm +t $mouse.dx $mouse.dy
xpopup -d cm
}
ON *:SIGNAL:Xpopup-cm: {
var %pop = $gettok($signal, 2-, 45)
if (%pop == cm) {
var %id = $replace($dialog(cm).tab,2,4,64,8,65,12)
if ($1 == 2) { cm.menu.do %id add }
elseif ($1 == 3) { cm.menu.do %id rem }
elseif ($1 == 4) { cm.menu.do %id edit }
elseif ($1 == 5) { findban }
elseif ($1 == 6) { cm.menu.do %id clear }
}
}
on *:signal:xpopup-stats: {
if ($1 == 1) stats.do whois
elseif ($1 == 2) stats.do kick
elseif ($1 == 3) stats.do ban
elseif ($1 == 4) stats.do kb
}
alias cm.menu.do {
if ($1 == 4) {
if ($2 == rem) { cm.remove.sel 4 }
elseif ($2 == add) { set %prefix +b | set %dialog 4 | $dialog(cm.add,cm.add,-4) }
elseif ($2 == edit) { set %prefix -b+b | set %prefix2 +b | set %dialog 4 | $dialog(cm.edit,cm.edit,-4) }
elseif ($2 == clear) { cm.clear b }
}
if ($1 == 8) {
if ($2 == rem) { cm.remove.sel 8 }
elseif ($2 == add) { set %prefix +e | set %dialog 8 | $dialog(cm.add,cm.add,-4) }
elseif ($2 == edit) { set %prefix -e+e | set %prefix2 +e | set %dialog 8 | $dialog(cm.edit,cm.edit,-4) }
elseif ($2 == clear) { cm.clear e }
}
if ($1 == 12) {
if ($2 == rem) { cm.remove.sel 12 }
elseif ($2 == add) { set %prefix +I | set %dialog 12 | $dialog(cm.add,cm.add,-4) }
elseif ($2 == edit) { set %prefix -I+I | set %prefix2 +I | set %dialog 12 | $dialog(cm.edit,cm.edit,-4) }
elseif ($2 == clear) { cm.clear I }
}
}
dialog cm.add {
title "Channel Central [/cm]"
size -1 -1 143 73
option dbu
text "Please input your mask below in the format of: nick!ident@address.com", 1, 5 4 108 15
edit "", 2, 3 42 137 10
icon icons\script.ico
button "Ok", 3, 73 58 32 13, default
button "Cancel", 4, 108 58 32 13, cancel default
}
on *:dialog:cm.add:init:0: did -b $dname 3
on *:dialog:cm.add:edit:2: {
did $iif($did(2),-e,-b) $dname 3
$iif($did(2),did -t $dname 3)
}
on *:dialog:cm.add:sclick:3: {
mode %cm.chan %prefix $did(2)
dialog -x $dname
unset %prefix %dialog
}
dialog cm.edit {
title "Channel Central [/cm]"
size -1 -1 143 73
option dbu
text "Please input your replacement below in the format of: nick!ident@address.com", 1, 5 4 108 15
edit "", 2, 3 42 137 10
icon icons\script.ico
button "Ok", 3, 71 58 32 12, default
button "Cancel", 4, 108 58 32 13, cancel
}
on *:load: {
if ($version < 6.21) {
echo -a This script require you to have mIRC 6.21 or above. download the latest version from www.mirc.com
unload -rs $qt($script)
}
else {
.scon -at1 .version
set %cm.statsbar off
.enable #channel
set %cm.style office2003rev 2
echo -at Thank you for loading my channel central. The channel central will now by default be enabled, toggle it and various settings by typing /cm.settings
}
}
on *:dialog:cm.edit:init:0: {
set %cm.replace $remove($gettok($did(cm,%dialog).seltext,6,32), ,+fs)
set %label.sel $did(cm,%dialog).sel
did -ra $dname 2 %cm.replace
did -c $dname 2 1 1 $calc($len(%cm.replace) + 1)
}
on *:dialog:cm.edit:sclick:3: {
if ($did(2) != %cm.replace) {
mode %cm.chan %prefix %cm.replace $did($dname,2) | dialog -x $dname
}
else {
dialog -x $dname
}
}
alias findban {
if (%cm.chan !ischan) { inform * /findban: insufficient parameters (You're in no channel) | return }
var %x = 1, %y = $ibl(%cm.chan,0)
$iif(!$1,idialog Name or address to search for. Wildcards such as ? and * are accepted.)
set %findban $iif(%idialog.result,$v1,$1)
if (%findban == *!*@*) { inform You can't search for the term $v2 $+ ! | return }
if (!%findban) return
updatenl
while (%x <= %y) {
if ($wildtok($ibl(%cm.chan,%x),$+(*,%findban,*),1,32)) {
set %match 1
inform $qt(%findban) matched $ibl(%cm.chan,%x) set by $ibl(%cm.chan,%x).by at $asctime($ibl(%cm.chan,%x).ctime) on %cm.chan $+ .
}
inc %x
}
if (!%match) && (%findban != $null) { inform No matches for $qt(%findban) found on %cm.chan $+ . }
unset %findban %match %idialog.result
}
; Thanks to xDaeMoN and Snabbi for helping me here.
alias cm.remove.sel {
var %a = 1, %r, %t = $iif($1 == 4,-b,$iif($1 == 8,-e,$iif($1 == 12,-I))), %i = $iif($1 == 4,7,$iif($1 == 8,11,$iif($1 == 12,14)))
while ($did(cm,$1,%a).sel) {
%r = %r $remove($gettok($did(cm,$1,$did(cm,$1,%a).sel),6,32),$chr(9),+fs,+s)
if ($numtok(%r,32) == $modespl) {
mode %cm.chan $str(%t,$numtok(%r,32)) %r
var %r = ""
}
inc %a
}
if (%r) mode %cm.chan $str(%t,$numtok(%r,32)) %r
cm.dialog.rem $did(cm,$1,0).sel $1
cm.update.stats %i %cm.chan
if ($did(cm,$1).lines == 1) {
did -ra cm $1 No $iif($1 == 4,bans,$iif($1 == 8,excepts,$iif($1 == 12,invites))) set.
}
}
alias cm.dialog.rem {
var %i = $1
while (%i) {
did -d cm $2 $did(cm,$2,%i).sel
dec %i
}
}
alias oh return $iif($1 isop $2 || $1 ishop $2,$true,$false)
alias cm.update.stats {
var %i = $1
if ($dialog(cm)) {
if (%i == 7) {
did -ra cm 7 $iif(%cm.bans. [ $+ [ $cid ] ],$ibl($2,0) $+ / $+ $v1,$ibl($2,0) $+ /unknown) ( $+ $round($calc($ibl($2,0) / %cm.bans. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
}
if (%i == 11) {
did -ra cm 11 $iif(%cm.excepts. [ $+ [ $cid ] ],$iel($2,0) $+ / $+ $v1,$iel($2,0) $+ /unknown) ( $+ $round($calc($iel($2,0) / %cm.excepts. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
}
if (%i == 14) {
did -ra cm 14 $iif(%cm.invites. [ $+ [ $cid ] ],$iil($2,0) $+ / $+ $v1,$iil($2,0) $+ /unknown) ( $+ $round($calc($iil($2,0) / %cm.invites. [ $+ [ $cid ] ] * 100),0) $+ % $+ )
}
}
}
alias other.modes.load {
var %i = 1, %m = $removecs($chanmodes,$chr(44),$chr(32),t,m,n,p,s,k,l,i,b,e,I)
while ( %i <= $len(%m) ) {
$iif($mid(%m,%i,1) isincs $gettok($chan(%cm.chan).mode,1,32),%cm.other.modes = %cm.other.modes $mid(%m,%i,1))
did -a cm 20 0 0 0 $iif($mid(%m,%i,1) isincs $gettok($chan(%cm.chan).mode,1,32),2,1) + $+ $mid(%m,%i,1)
inc %i
}
}
alias prevtopic {
var %i = 0, %w = @topicprev,%y = 1,%t = $gtxt(cm,48),%f = $window(%w).font,%s = $window(%w).fontsize,%h = $calc($height(%t,%f,%s) +1)
drawrect -nf %w $color(back) 1 0 0 $window(%w).w $window(%w).h
if (%t != $null) {
while (%y < $window(%w).h) {
drawtext -npb %w $color(topic) $color(back) $qt(%f) %s $calc(2-(%i *($window(%w).w -6))) %y %t
inc %y %h
inc %i
}
drawrect -n %w $color(back) 2 0 0 $calc($window(%w).w -2) $calc($window(%w).h -2)
}
drawdot %w
}
alias gtxt {
var %i = $did($1,$2).lines,%r
while (%i) {
%r = $did($1,$2,%i) $+ %r
dec %i
}
return %r
}
alias cm.labeledit {
if ($3 != $4) && ($4) {
set %label.sel $did(cm,$2).sel
mode %cm.chan $1 $3-4
}
}
alias save.topic {
if ($encode($3-,m)) {
var %t = $v1,%h = $+($network,$1,$cr,%t)
if ($1 == %chancentral.chan) && (!$hget(topichist,%h)) { did -i chancentral 5 1 $+($3-,$str(Â ,150),$2) }
hadd -m topichist %h $2
}
if ($hfind(topichist,$+($network,$1,$cr,*),0,w) > 50) {
var %i = $v1,%l = $ctime,%r
while (%i) {
var %h = $hfind(topichist,$+($network,$1,$cr,*),%i,w)
if ($hget(topichist,%h) < %l) { var %l = $v1,%r = %h }
dec %i
}
hdel topichist %r
}
}
on *:topic:#: {
save.topic $chan $ctime $1-
if ($dialog(cm)) {
did -r cm 49
did -ra cm 91 -No topic selected-
var %i = $hfind(topichist,$+($network,%cm.chan,$cr,*),0,w),%r,%z = 1,%g,%n = $nick(%cm.chan,0),%cm = $gettok($chanmodes,1,44)
while (%i) {
%r = $addtok(%r,$hget(topichist,$hfind(topichist,$+($network,%cm.chan,$cr,*),%i,w)) %i,124)
dec %i
}
%r = $sorttok(%r,124)
while ($gettok(%r,%z,124)) {
tokenize 32 $v1
did -i cm 49 1 $+($decode($gettok($hfind(topichist,$+($network,%cm.chan,$cr,*),$2,w),2,13),m),$str(Â ,150),$1)
inc %z
}
}
}
raw 333:*:{ save.topic $2 $4 $chan($2).topic }
alias -l mdx return $shortfn($scriptdirdlls\mdx.dll)
alias -l views return $shortfn($scriptdirdlls\views.mdx)
alias -l dialogs return $shortfn($scriptdirdlls\dialog.mdx)
alias -l ctl return $shortfn($scriptdirdlls\ctl_gen.mdx)
alias who_ {
.enable #raws
who $1-
}
#rawz off
raw 315:*: haltdef
raw 352:*: haltdef
#rawz end
alias mkmenu {
if ($xpopup($1).ismenu == $false) {
xpopup -c $1 $gettok(%cm.style,1,32)
xpopup -l $1 2 $rgb(58, 110, 165)
xpopup -l $1 5 $rgb(214, 230, 250)
xpopup -l $1 7 $rgb(214, 230, 250)
xpopup -l $1 8 $rgb(58, 110, 165)
xpopup -l $1 2 $rgb(58, 110, 165)
xpopup -l $1 5 $rgb(214, 230, 250)
xpopup -l $1 7 $rgb(214, 230, 250)
xpopup -l $1 8 $rgb(58, 110, 165)
xpopup -t $1 $gettok(%cm.style,1,32)
}
}
alias -l xpop {
if ( $isid ) returnex $dcx( _xpop, $1 $prop $2- )
dcx xpop $2 $1 $3-
}
alias -l xpopup {
if ( $isid ) returnex $dcx( _xpopup, $1 $prop $2- )
dcx xpopup $2 $1 $3-
}
alias -l dcx {
if ($isid) returnex $dll($scriptdirdlls\dcx.dll,$1,$2-)
else dll " $+ $scriptdirdlls\dcx.dll" $1 $2-
}
alias gtok return $gettok($1,$2,32)
alias headerunsel {
var %w1 = $+(@mdxunsel.,$1,.,$2,.1),%w2 = $+(@mdxunsel.,$1,.,$2,.2),%z
window -hw0 %w1
window -hw0 %w2
filter -iwr 2- $+ $did($1,$2).lines $1 $2 %w1
var %i = 1,%t = $line(%w1,0)
while (%i <= %t) {
noop $regsub($gtok($line(%w1,%i),3-),/ \+[fs]+ (\d+) (\d+) (\d+)/g, + \1 \2 \3,%z)
echo %w2 1 + %z
inc %i
}
close -@ %w1
}
alias headersort {
if (headerclick headerEvent ?* iswm $did($did,1)) {
var %z,%x = $gtok($did($did,1),3),%w = $+(@mdxunsel.,$dname,.,$did,.2),%r
headerunsel $dname $did
filter $iif(%sortheader. [ $+ [ $dname ] $+ ] . [ $+ [ $did ] ] == %x,-cwoet,-cwot) %x 9 %w $dname $did *
close -@ %w
did -i $dname $did 1 page headertext
noop $regsub($puttok($remove($gtok($did($did,1),2-),(asc.),(desc.)),$remove($iif(%x == 1,$gtok($gettok($did($did,1),%x,9),2-),$gettok($did($did,1),%x,9)),(asc.),(desc.)) ( $+ $iif(%sortheader. [ $+ [ $dname ] $+ ] . [ $+ [ $did ] ] == %x,desc.,asc.) $+ ),%x,9),/(\+[clr]) 1/g,\1 0,%r)
var %ö = $gettok($did($did,1),%x,9))
did -i $dname $did 1 %r
if (%sortheader. [ $+ [ $dname ] $+ ] . [ $+ [ $did ] ] != %x) { set $+(%,sortheader.,$dname,.,$did) %x }
else { unset $+(%,sortheader.,$dname,.,$did) }
}
}
alias idialog {
if ($1) {
set %idialog.text $1-
$dialog(idialog,idialog,-4)
}
}
dialog idialog {
title "input request"
size -1 -1 163 86
option dbu
icon icons\script.ico
edit "", 2, 2 3 159 51, read multi return vsbar
button "Cancel", 3, 124 72 37 12, cancel default
edit "", 4, 2 58 159 12, autohs
button "Ok", 5, 84 72 37 12, disable default
}
on *:dialog:idialog:*:*: {
if ($devent == init) {
dll $mdx SetMircVersion $version
dll $mdx MarkDialog $dname
dll $mdx SetBorderStyle $dname 2
did -f $dname 4
did -ra $dname 2 %idialog.text
if (%idialog.text2) {
did -ra $dname 4 $v1
did -c $dname 4 1 1 $calc($len($v1) + 1)
unset %idialog.text2
}
}
if ($devent == close) unset %idialog.result idialog.text
if ($devent == edit) {
if ($did == 4) {
did $iif($did(4),-e,-b) $dname 5
did -t $dname $iif($did(4),5,3)
}
}
elseif ($devent == sclick) {
if ($did == 5) {
set %idialog.result $did(4)
dialog -x $dname
}
}
}
dialog cdialog {
title "confirmation request..."
size -1 -1 163 70
option dbu
icon icons\script.ico
edit "", 2, 2 4 159 45, read multi return vsbar
button "No", 3, 123 56 37 12, default
button "Yes", 5, 83 56 37 12
edit "", 10, 2 52 160 1
}
on *:dialog:cdialog:init:0: {
dll $mdx SetMircVersion $version
dll $mdx MarkDialog $dname
dll $mdx SetBorderStyle $dname 2
dll $mdx SetBorderStyle $dname 10 staticedge
did -ra $dname 2 %cdialog.text
did -f $dname 3
}
alias cdialog {
if ($1) {
set %cdialog.text $1-
$dialog(cdialog,cdialog,-4)
}
}
on *:dialog:cdialog:sclick:*: {
if ($istok(3 5,$did,32)) {
if ($did) set -u2 %cdialog.did $did($did)
dialog -x $dname
.timer -m 1 500 unset %idialog.result %cdialog.did
}
}
alias lbl {
if ($dialog($1)) && ($1 !isnum) {
if ($4) { var %t = $did($1,$2,$3), %c = $4 }
else { var %t = $did($1,$2).seltext, %c = $3 }
}
else {
if ($3) { var %t = $did($1,$2), %c = $3 }
else { var %t = $did($1).seltext, %c = $2 }
}
return $gtok($gettok($gettok(%t,1,4),%c,9),$iif(%c == 1,6-,5-))
}
on *:exit: {
if ($hget(topichist)) .hsave -o topichist topichist.hsh
}
on *:disconnect: {
if ($hget(topichist)) .hsave -o topichist topichist.hsh
}
on *:start: {
if !$hget(topichist) { .hmake topichist 100 }
if $exists(topichist.hsh) { .hload topichist topichist.hsh }
}
raw 005:*: {
if $regex($1-,/MAXBANS=(\d+)/) { set $+(%,cm.bans,.,$cid) $regml(1) }
if $regex($1-,/TOPICLEN=(\d+)/) { set $+(%,cm.topic,.,$cid) $regml(1) }
if $regex($1-,/MAXLIST=b:([0-9]+)/) { set $+(%,cm.bans,.,$cid) $regml(1) }
var %r = /MAXLIST=.*?,e:(\d+)/ | if $regex($1-,%r) { set $+(%,cm.excepts,.,$cid) $regml(1) }
var %r = /MAXLIST=.*?,I:(\d+)/ | if $regex($1-,%r) { set $+(%,cm.invites,.,$cid) $regml(1) }
}
on *:unload: {
unset %cm.*
hfree topichist
}
alias statusbar {
if ($1) {
if ($1 == new) {
xstatusbar -A 1 tooltips grip
dcx xSignal 1 +s
set %cm.statusbar on
if ($dialog(config)) {
did -c config 227
}
}
elseif ($1 == close) {
xstatusbar -A 0
dcx xSignal 0 +s
set %cm.statusbar off
if ($dialog(config)) {
did -u config 227
}
}
}
if ($xstatusbar().visible) {
xstatusbar -l $str(120 $chr(32),10) -1
xstatusbar -w + 0 $shortfn($scriptdiricons\3.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\2.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\1.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\6.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\4.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\5.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\3.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\10.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\11.ico)
xstatusbar -w + 0 $shortfn($scriptdiricons\12.ico)
.scid $activecid xstatusbar -t 1 +p 1 Users: $iif($active ischan,$nick($active,0),n/a) $chr(9) Users: $iif($active ischan,$nick($active,0),n/a)
if (~ isincs %cm.prefix. [ $+ [ $activecid ] ]) .scid $activecid xstatusbar -t 2 +p 2 Owners: $iif($active ischan,$nick($active,0,q) $wr($calc(($nick($active,0,q) / $nick($active,0)) * 100)),n/a) $chr(9) Owners: $iif($active ischan,$nick($active,0,q) $wr($calc(($nick($active,0,q) / $nick($active,0)) * 100)),n/a)
else .scid $activecid xstatusbar -t 2 +p 0 n/a
if (& isincs %cm.prefix. [ $+ [ $activecid ] ]) .scid $activecid xstatusbar -t 3 +p 3 Admins: $iif($active ischan,$nick($active,0,a,vhrq) $wr($calc(($nick($active,0,a,vhrq) / $nick($active,0)) * 100)),n/a) $chr(9) Admins: $iif($active ischan,$nick($active,0,a,vhrq) $wr($calc(($nick($active,0,a,vhrq) / $nick($active,0)) * 100)),n/a)
else .scid $activecid xstatusbar -t 3 +p 0 n/a
if (@ isincs %cm.prefix. [ $+ [ $activecid ] ]) .scid $activecid xstatusbar -t 4 +p 4 Ops: $iif($active ischan,$nick($active,0,o) $wr($calc(($nick($active,0,o) / $nick($active,0)) * 100)),n/a) $chr(9) Ops: $iif($active ischan,$nick($active,0,o) $wr($calc(($nick($active,0,o) / $nick($active,0)) * 100)),n/a)
else .scid $activecid xstatusbar -t 4 +p 0 n/a
if (% isincs %cm.prefix. [ $+ [ $activecid ] ]) .scid $activecid xstatusbar -t 5 +p 5 Half-Ops: $iif($active ischan,$nick($active,0,h) $wr($calc(($nick($active,0,h) / $nick($active,0)) * 100)),n/a) $chr(9) Half-Ops: $iif($active ischan,$nick($active,0,h) $wr($calc(($nick($active,0,h) / $nick($active,0)) * 100)),n/a)
else .scid $activecid xstatusbar -t 5 +p 0 n/a
if (+ isincs %cm.prefix. [ $+ [ $activecid ] ]) .scid $activecid xstatusbar -t 6 +p 6 Voices: $iif($active ischan,$nick($active,0,v) $wr($calc(($nick($active,0,v) / $nick($active,0)) * 100)),n/a) $chr(9) Voices: $iif($active ischan,$nick($active,0,v) $wr($calc(($nick($active,0,v) / $nick($active,0)) * 100)),n/a)
else .scid $activecid xstatusbar -t 6 +p 0 n/a
var %b = %cm.bans. [ $+ [ $activecid ] ], %e = %cm.excepts. [ $+ [ $activecid ] ], %i = %cm.invites. [ $+ [ $activecid ] ]
.scid $activecid xstatusbar -t 7 +p 7 Regulars: $iif($active ischan,$nick($active,0,r) $wr($calc(($nick($active,0,r) / $nick($active,0)) * 100)),n/a) $chr(9) Regulars: $iif($active ischan,$nick($active,0,r) $wr($calc(($nick($active,0,r) / $nick($active,0)) * 100)),n/a)
.scid $activecid xstatusbar -t 8 +p 8 Bans: $iif($active ischan,$ibl($active,0) $wr($calc(($ibl($active,0) / %b) * 100)),n/a) $chr(9) Bans: $iif($active ischan,$ibl($active,0) $wr($calc(($ibl($active,0) / %b) * 100)),n/a)
.scid $activecid xstatusbar -t 9 +p 9 Invites: $iif($active ischan,$iel($active,0) $wr($calc(($iel($active,0) / %i) * 100)),n/a) $chr(9) Invites: $iif($active ischan,$iel($active,0) $wr($calc(($iel($active,0) / %e) * 100)),n/a)
.scid $activecid xstatusbar -t 10 +p 10 Excepts: $iif($active ischan,$iil($active,0) $wr($calc(($iil($active,0) / %i) * 100)),n/a) $chr(9) Excepts: $iif($active ischan,$iil($active,0) $wr($calc(($iil($active,0) / %i) * 100)),n/a)
}
}
alias -l wr return ( $+ $round($1-,0) $+ % $+ )
on *:active:*: statusbar
on *:join:#: statusbar
on *:SIGNAL:*: {
if ($signal == XPopup-statusbar) {
if ($1 == 2) statusbar
elseif ($1 == 4) statusbar close
}
if ($1 == DCXStatusbar) {
if ($2 == rclick) {
mkmenu statusbar office2003rev
xpopup -i statusbar + 0 $shortfn($scriptdiricons\question.ico)
xpop -a statusbar 0 $chr(9) +g 1 1 $xstatusbar($4).text
xpop -a statusbar 0 $chr(9) + 0 0 -
xpop -a statusbar 0 $chr(9) + 2 0 &Refresh
xpop -a statusbar 0 $chr(9) + 0 0 -
xpop -a statusbar 0 $chr(9) +c 4 0 En&able statusbar
xpopup -s statusbar +t $mouse.dx $mouse.dy
xpopup -d statusbar
}
}
}
alias xstatusbar {
!if ($isid) returnex $dcx( _xstatusbar, mIRC $prop $1- )
dcx xstatusbar $1-
}
dialog cm.settings {
title "Channel Central configuration..."
size -1 -1 113 64
option dbu
check "Enable channel central", 1, 8 9 68 9
check "Use statusbar", 2, 16 20 50 8
combo 3, 49 30 54 35, drop
text "Menu Style:", 4, 17 31 31 9
box "Settings...", 5, 4 0 105 46
button "&Ok", 6, 69 49 40 13, ok
icon $scriptdiricons\script.ico
}
on *:dialog:cm.settings:*:*: {
if ($devent == init) {
dll $mdx MarkDialog $dname
dll $mdx SetFont $dname 5 13 700 Tahoma
didtok $dname 3 44 office2003,office2003rev,officexp,icy,icyrev,grade,graderev,normal,vertical,verticalrev
did $iif(%cm.statusbar == on,-e,-b) $dname 4,2
did $iif(%cm.statusbar == on,-c,-u) $dname 2
did $iif($group(#channel) == on,-e,-b) $dname 4,2
did $iif($group(#channel) == on,-c,-u) $dname 1
did -c $dname 3 $gettok(%cm.style,2,32)
}
elseif ($devent == sclick) {
if ($did == 1) {
did $iif($did(1).state == 1,-e,-b) $dname 4,2
$iif($did(1).state == 1,.enable,.disable) #channel
statusbar $iif($did(1).state == 1 && $did(2).state == 1,new,close)
}
elseif ($did == 2) {
statusbar $iif($did(2).state == 0,close,new)
}
elseif ($did == 3) {
set %cm.style $did(3) $did(3).sel
}
}
}
alias cm.settings dialog $iif($dialog(cm.settings),-v,-m) cm.settings cm.settings
;---------------------------------------
; End of file
;---------------------------------------