ChannelStats

Platform:  mIRC
Published  Mar 29, 2008
Updated  Mar 29, 2008
Copy and paste into a new remotes file. Than just type /Chanstats <Channel>. It will echo the channel stats in the channel. alias ChanStats {
if ($active ischan) { var %Chan = $active }
elseif (!$1 ischan) { echo -a You must select a channel you are on | halt }
else { var %Chan = $1 }
set %ChanStats $1
.who $1
}

alias -l ChanStat {
var %Chan_Temp = 0
While (%Chan_Temp != $Nick($1,0)) {
inc %Chan_Temp 1
if ($Nick($1,%Chan_Temp) isop $1) { inc %Chan_op 1 }
elseif ($Nick($1,%Chan_Temp) ishop $1) { inc %Chan_Hop 1 }
elseif ($Nick($1,%Chan_Temp) isvoice $1) { inc %Chan_voice 1 }
else { inc %Chan_Reg 1 }
}
echo $1 8[ 15-- 9S3tat9s 14Total Users8: $Nbr($nick($1,0)).c $iif(%Chan_Op != $Null,14OPs8: $Nbr(%Chan_op $Percent(%Chan_op,$1,2).c).c) $iif(%Chan_Hop != $Null,14HOPs8: $nbr(%Chan_hop $Percent(%Chan_hop,$1,2).c).c) $iif(%Chan_Voice != $Null,14Voices8: $nbr(%Chan_Voice $Percent(%Chan_Voice,$1,2).c).c) $iif(%Chan_Reg != $Null,14Regulars8: $Nbr(%Chan_Reg $Percent(%Chan_Reg,$1,2).c).c)
echo $1 8[ 15-- 9S3tat9s 14Clones8: $Nbr($CCheck($1) $Percent($CCheck($1),$1,2).c).c $iif($Hget($1,Away),14Away Users8: $nbr($Hget($1,Away) $Percent($Hget($1,Away),$1,2).c).c) $iif($Hget($1,IRCop),14IRCops8: $nbr($Hget($1,IRCop) $Percent($Hget($1,IRCop),$1,2).c).c) $iif($Hget($1,Bots),14Bots8: $nbr($Hget($1,Bots) $Percent($Hget($1,Bots),$1,2).c).c) $iif($Hget($1,Reg),14Reg8/14UnReg8: $nbr($+($Hget($1,Reg),8/15,$Hget($1,UnReg))).c)
unset %Chan_*
}

alias percent {
if ($2 ischan) { Var %Val2 = $Nick($2,0) }
else { var %Val2 = $2 }
var %z = $calc($1 / %Val2 *100)
if ($3 != $null) { %z = $round(%z,$3) }
if (%z) { var %x = $+(15,$Replace(%z,.,8.15),8%) }
else { var %x = 1508% }
if ($Prop = c) { Return %x }
else { Return $strip(%x) }
}

alias nbr {
if ($1- != $null) {
if ($prop = c) { return 10(15 $+ $1- $+ 10) }
else { return ( $+ $1- $+ ) }
}
}

alias who {
if ($1 ischan) {
if ((!$isTok(%Who.Queue,$1,32)) && ($Numtok(%Who.Queue,32) > 0)) { set %Who.Queue %Who.Queue $1 }
if (!$isTok(%Who.Chan,$1,32)) { set %Who.Chan %Who.Chan $1 }
if ($HGet($1)) { hfree $1 }
hmake $1 5
hadd -m $1 Away 0
hadd -m $1 Bots 0
hadd -m $1 IRCop 0
hadd -m $1 Reg 0
hadd -m $1 UnReg 0
}
!.raw who $1-
}

alias CCheck {
var %x = 1
var %a 0
while (%x <= $nick($1,0)) {
var %clones = $cclone($address($nick($1,%x),2),$1)
if (%clones) {
inc %a $Numtok(%Clones,32)
}
inc %x
}
return %a
}

alias CClone {
if ($ialchan($1,$2,0) >= 2) {
var %x = 1
while ($ialchan($1,$2,%x)) {
inc %x
}
}
return %x
}
raw 315:*:{
haltdef
if ($IsTok(%Who.Chan,$2,32)) {
ChanStat $2 Self
%Who.Chan = $DelTok(%Who.Chan,$FindTok(%Who.Chan,$2,32),32)
}
if (%Who.Queue) {
var %Chan = $GetTok(%Who.Queue,1,32)
%Who.Queue = $DelTok(%Who.Queue,1,32)
.who %Chan
}
}

raw 352:*:{
haltdef
if ($2 = *) { halt }
var %Chan = $GetTok(%Who.Chan,$FindTok(%Who.Chan,$2,1,32),32)
if ($6 ison %Chan) {
if (G isin $7) { hinc -m %Chan Away 1 }
if (* isin $7) { hinc -m %Chan IRCop 1 }
if (B isin $7) { hinc -m %Chan Bots 1 }
if (r isin $7) { hinc -m %Chan Reg 1 }
if (r !isin $7) { hinc -m %Chan UnReg 1 }
}
}

Comments

Sign in to comment.
ovelayer   -  Mar 05, 2013
can this script be updated with channel triggers for a bot?
!chanstats #channel
 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.