Here are the admin commands...
alias showclones {
if ($hget(clones)) hfree clones
hmake clones 10
var %x = $nick($1,0)
while (%x) {
var %addr = $address($nick($1,%x),2)
; Get user's clones
var %g = $clones(%addr,$1)
var %n = $gettok(%g,2-,32), %g = $gettok(%g,1,32)
if (%n) && (!$hget(clones,%addr)) {
echo $colour(info) $1 *** %g clones from %addr $+ : %n
if ($2 = -k) && (%g > $thresh($1)) && (!$is_clone_prot($address($nick($1,%x),5))) {
mode $chan +b %addr
.timer 1 600 mode $chan -b %addr
var %xx = $ialchan(%addr,$1,0)
while (%xx) {
if ($ialchan(%addr,$1,%xx).nick isreg $1) { kick $chan $ifmatch Clones from %addr }
dec %xx
}
}
hinc clones %addr
}
dec %x
}
hfree clones
}
alias clones {
var %x = $ialchan($1,$2,0)
if (%x = 1) { return 1 }
if (%x > 80) { return %x Too many to list }
var %r
while (%x) {
%r = %r $ialchan($1,$2,%x).nick
dec %x
}
return $ialchan($1,$2,0) %r
}
menu channel {
Clone Utilities
.Show clones in $chan:showclones #
.Kick/Ban current clones:if ($input(Are you sure you want to kick/ban all clones in $chan $+ ?,y)) { showclones # -k }
.$iif($($+(%,clones.join),2),$style(1)) Show clones on join:if ($($+(%,clones.join),2)) { set $+(%,clones.join) 0 } | else { set $+(%,clones.join) 1 }
.-
.$iif($($+(%,clones.kick.,$chan),2),$style(1)) Kick/Ban clones on join:if ($($+(%,clones.kick.,$chan),2)) { set $+(%,clones.kick.,$chan) 0 } | else { set $+(%,clones.kick.,$chan) 1 }
.Clone threshold - $thresh($chan).1:set $+(%,clones.th.,$chan) $input(Enter how many clones a site is allowed in the channel [0 means only 1 user/host $+ $chr(44) 1 means 2 users/host]:,e)
}
menu nicklist {
$iif(!$is_clone_prot($address($$1,5)),Clone Utilities)
.Protect User
..$submenu($getmasks($1))
$iif($is_clone_prot($address($$1,5)),Clone Utilities)
.Unprotect $is_clone_prot($address($$1,5)).addr:ruser $is_clone_prot($address($$1,5)).addr
}
alias -l getmasks {
if ($1 > 19) { return }
return $1 $address($snick($active,1),$1) $+ :auser cloneprotect $address($snick($active,1),$1)
}
alias is_clone_prot {
var %x = $ulist(*,cloneprotect,0)
while (%x) {
var %a = $ulist(*,cloneprotect,%x)
if (%a iswm $1) { return $iif($prop = addr,%a,$true) }
dec %x
}
return $false
}
ON *:JOIN:#: {
if ($nick == Romeo) { halt }
; Show users clones
var %n = $clones($wildsite,$chan)
if ($($+(%,clones.join),2)) {
if ($gettok(%n,2-,32)) {
Msg %ChanSet $+ $chan $+ 12- 4,1 $+ $gettok(%n,1,32) $+ Clones From 7,1 $+ $wildsite $+ :4,1 $gettok(%n,2-,32)
}
}
; If you are opped, there are more clones from the host than the threshold allows, kicking clones has been enabled for this channel and the user is not protected, kick/ban the clones
if ($me isop $chan) && ($gettok(%n,1,32) > $thresh($chan)) && ($($+(%,clones.kick.,$chan),2)) && (!$is_clone_prot($fulladdress)) {
; Ban the host if we haven't already
if (!$($+(%,clonekicking,$cid,$chan,$wildsite),2)) {
mode $chan +b $wildsite
.timer 1 60 mode $chan -b $wildsite
set -u10 $+(%,clonekicking,$cid,$chan,$wildsite) 1
}
var %x = $ialchan($wildsite,$chan,0)
while (%x) {
; Kick this user is we haven't already
if ($ialchan($wildsite,$chan,%x).nick isreg $chan) && (!$($+(%,clonekicking,$cid,$chan,$ifmatch),2)) {
var %nick = $ialchan($wildsite,$chan,%x).nick
kick $chan %nick Clones from $wildsite
set -u10 $+(%,clonekicking,$cid,$chan,%nick) 1
}
dec %x
}
}
}
alias -l thresh {
if ($($+(%,clones.th.,$1),2) != $null) { return $calc($ifmatch + 1 - $prop) }
return $calc(1 - $prop)
}
on 5:text:*!Heal*:#:{
if ($chan != %ChanSet) { halt }
if ($readini($nick $+ .ini,Register,Complete) != on) { Notice $nick Please Register! `Register | halt }
if ($readini($nick $+ .ini,pass,passaccept) != on) { Notice $nick Login! | halt }
if ($readini($2 $+ .ini,Register,Complete) != on) { Notice $nick No Such Person | halt }
Heal $2
Msg %ChanSet 9 $+ $2 15Has Been Fully Healed By:11 Romeo
}
on 5:text:*!Force Enter*:#:{
if ($chan != %ChanSet) { halt }
if ($readini($nick $+ .ini,Register,Complete) != on) { Notice $nick Please Register! `Register | halt }
if ($readini($nick $+ .ini,pass,passaccept) != on) { Notice $nick Login! | halt }
if ($readini($3 $+ .ini,Register,Complete) != on) { Notice $nick No Such Person | halt }
Set %Aura $readini($3 $+ .ini,$3,Aura)
Set %BAura $readini($3 $+ .ini,$3,BAura)
Writeini $3 $+ .ini $3 fighting yes
Writeini $3 $+ .ini $3 field normal
set %batlist %batlist $3
Msg %ChanSet 9 $+ $3 15has been forced into battle By:11 $nick $+ !
Msg %ChanSet $+ %Aura $+ , $+ %BAura $+ $3 $+ ( $+ $readini($3 $+ .ini,$3,Name) $+ )9,1 Enters the Arena.
Msg %ChanSet $+ %Aura $+ , $+ %BAura $+ $3 $+ ( $+ $readini($3 $+ .ini,$3,Name) $+ )9,1 Says:15 $readini($3 $+ .ini,$3,motto)
}
on 3:text:*!Force Leave*:#:{
if ($chan != %ChanSet) { halt }
if ($readini($nick $+ .ini,Register,Complete) != on) { Notice $nick Please Register! `Register | halt }
if ($readini($nick $+ .ini,pass,passaccept) != on) { Notice $nick Login! | halt }
if ($readini($3 $+ .ini,Register,Complete) != on) { Notice $nick No Such Person | halt }
Leave $3
Msg %ChanSet 9 $+ $3 15has been forced out of battle By:11 $nick $+ !
}
on 5:text:*!Revive*:#:{
if ($chan != %ChanSet) { halt }
if ($readini($nick $+ .ini,Register,Complete) != on) { Notice $nick Please Register! `Register | halt }
if ($readini($nick $+ .ini,pass,passaccept) != on) { Notice $nick Login! | halt }
if ($readini($2 $+ .ini,Register,Complete) != on) { Notice $nick No Such Person | halt }
writeini $2 $+ .ini $2 Running no
writeini $2 $+ .ini Planet Dead no
writeini $2 $+ .ini Planet Earth yes
writeini $2 $+ .ini $2 Traveling no
writeini $2 $+ .ini Planet Namek no
writeini $2 $+ .ini Planet Yardat no
writeini $2 $+ .ini Planet Plant no
writeini $2 $+ .ini Planet Vegeta no
writeini $2 $+ .ini Planet Kai no
Msg %ChanSet 9 $+ $2 15has been Revived to planet earth By:11 $nick $+ !
}
on *:PONG:{
unset %pingstatus
if (%pingtime >= 20) {
msg %chanset Controlling Lag
pausealltimers
ignore -u35 * MediaDriven
.timersetback1 1 30 resumealltimers
.timersetback2 1 33 msg %chanset Lag Fixed
}
}
on 5:TEXT:!Boot Force*:#:{
if ($chan != %ChanSet) { halt }
if ($readini($nick $+ .ini,Register,Complete) != on) { Notice $nick Please Register! `Register | halt }
if ($readini($nick $+ .ini,pass,passaccept) != on) { Notice $nick Login! | halt }
if ($nick == $4) { halt }
Set %Member1 $readini($3 $+ .ini,$3,member1)
Set %Member2 $readini($3 $+ .ini,$3,member2)
Set %Member3 $readini($3 $+ .ini,$3,member3)
Set %Member4 $readini($3 $+ .ini,$3,member4)
Set %Member5 $readini($3 $+ .ini,$3,member5)
if ($4 == %Member1) {
/remini %Member1 $+ .ini %Member1 Force
Writeini %Member1 $+ .ini %Member1 INForce no
Writeini $3 $+ .ini $3 Member1 None
Writeini %Member1 $+ .ini Force Loan no
Writeini $nick $+ .ini $nick money $calc($readini($nick $+ .ini,$nick,money) - 500)
Msg %Chanset 4 $+ %Member1 Was Booted Out Of0 $3
}
if ($4 == %Member2) {
/remini %Member2 $+ .ini %Member2 Force
Writeini %Member2 $+ .ini %Member2 INForce no
Writeini $3 $+ .ini $3 Member2 None
Writeini %Member2 $+ .ini Force Loan no
Writeini $nick $+ .ini $nick money $calc($readini($nick $+ .ini,$nick,money) - 500)
Msg %Chanset 4 $+ %Member2 Was Booted Out Of0 $3
}
if ($4 == %Member3) {
/remini %Member3 $+ .ini %Member3 Force
Writeini %Member3 $+ .ini %Member3 INForce no
Writeini $3 $+ .ini $3 Member3 None
Writeini %Member3 $+ .ini Force Loan no
Writeini $nick $+ .ini $nick money $calc($readini($nick $+ .ini,$nick,money) - 500)
Msg %Chanset 4 $+ %Member3 Was Booted Out Of0 $3
}
if ($4 == %Member4) {
/remini %Member4 $+ .ini %Member4 Force
Writeini %Member4 $+ .ini %Member4 INForce no
Writeini $3 $+ .ini $3 Member4 None
Writeini %Member4 $+ .ini Force Loan no
Writeini $nick $+ .ini $nick money $calc($readini($nick $+ .ini,$nick,money) - 500)
Msg %Chanset 4 $+ %Member4 Was Booted Out Of0 $3
}
if ($4 == %Member5) {
/remini %Member5 $+ .ini %Member5 Force
Writeini %Member5 $+ .ini %Member5 INForce no
Writeini $3 $+ .ini $3 Member3 None
Writeini %Member5 $+ .ini Force Loan no
Writeini $nick $+ .ini $nick money $calc($readini($nick $+ .ini,$nick,money) - 500)
Msg %Chanset 4 $+ %Member5 Was Booted Out Of0 $3
}
}