Public feed
#723932
namespace eval ::ModeD:: {
#
# ModeD.tcl startet 21.09.2003 by CyBex
#
# any problems or suggestions? write to Script-ModeD@CyBex.has.nolife.org
#
# This Script is written for one channel only and its only for the
# www.QuakeNET.org channel mode +D .. it scan for new joining users
# and give them +v (do visible without talk) .. or kick user that
# found in the banlist or have the +k flag. Ant an auto-limit is included
# to see, how many user are at moment online :-)
#
# Feel free to change this script, but please submit me your changes :-)
#
# Testet with Eggdrop 1.6.15
#
# config
#how much higher
set ::ModeD::userandom 0
set ::ModeD::random 1
set ::ModeD::raiselimit 5
#time in minutes to change the limit
set ::ModeD::uplimitticks 8
set ::ModeD::downlimitticks 16
#save stats 0/1 and path to data dir, or create "data" in your eggdrop folder
set ::ModeD::savestats 1
set ::ModeD::datadir data
set ::ModeD::uselimiter 0
if {$::botnick=="Honecker" || $::botnick=="NewS-FlasH"} {set ::ModeD::uselimiter 1}
# switch debug by default on/off
if {![info exists ::ModeD::debug]} { set ::ModeD::debug 0 }
#my special settings ;)
set ::ModeD::channel #bitchesunited
if {$::botnick=="DV9"} {
set ::ModeD::savestats 1
set ::ModeD::raiselimit 3
set ::ModeD::uplimitticks 6
set ::ModeD::downlimitticks 60
set ::ModeD::channel #bitchesunited
}
if {$::username=="dv9"} {
set ::ModeD::userandom 1
set ::ModeD::random 5
set ::ModeD::uplimitticks 16
set ::ModeD::downlimitticks 32
}
if {$::username=="20mark"} {
set ::ModeD::savestats 0
set ::ModeD::raiselimit 3
set ::ModeD::uplimitticks 15
set ::ModeD::downlimitticks 120
set ::ModeD::channel #bitchesunited
}
if {$::username=="Chatter"} {
set ::ModeD::DoExtStats 1
} {
set ::ModeD::DoExtStats 1
}
# data
## helper
## main
### vars
set ::ModeD::develop 0
if {$::botnick=="DV9" || $::botnick=="DV9"} { set ::ModeD::develop 1 }
set ::ModeD::major 0
set ::ModeD::minor 3
if {![info exist ::ModeD::build] || !$::ModeD::develop} { set ::ModeD::build 14 } { incr ::ModeD::build }
if {![info exist ::ModeD::run]} { set ::ModeD::run 1 } { incr run }
set ::lateststable 0.3.14
### helper
if {$debug} { putcmdlog "Warning! Debug Mode ist \002ON\002!" }
if {$::lateststable!="$major.$minor.$build"} { if $develop { putcmdlog "Warning! Developer Mode \002ON\002! Latest stable: $::lateststable" } { putcmdlog "Warning! Unstable Version! Latest stable: $::lateststable" } }
### binds
bind raw - 311 ::ModeD::raw311
bind raw * 330 ::ModeD::raw330
bind raw - 355 ::ModeD::raw355
bind pubm - "$::ModeD::channel *" ::ModeD::countwords;
bind splt - "$::ModeD::channel *" ::ModeD::netsplit:split
bind rejn - "$::ModeD::channel *" ::ModeD::netsplit:rejoin
bind mode - "$::ModeD::channel +l" ::ModeD::ModeL
bind time - "*" ::ModeD::time:check
### procs
proc onchan {nick {chan ""}} {
if {$chan!=""} {
putcmdlog "onchan ModeD: [expr [lsearch -exact [string tolower $::ModeD::onlinelist] [string tolower $nick]]!=-1 || [::onchan $nick $chan]]"
return [expr [lsearch -exact [string tolower $::ModeD::onlinelist] [string tolower $nick]]!=-1 || [::onchan $nick $chan]]
} {
putcmdlog "onchan ModeD: [expr [lsearch -exact [string tolower $::ModeD::onlinelist] [string tolower $nick]]!=-1 || [::onchan $nick]]"
return [expr [lsearch -exact [string tolower $::ModeD::onlinelist] [string tolower $nick]]!=-1 || [::onchan $nick]]
}
}
#### helper
proc loadfile {name args} {
if {$::ModeD::debug} { putcmdlog "load $name" }
if [info exists name] {
set fh [open $name r]
set gets [gets $fh]
close $fh
return $gets
}
}
proc savefile {name data} {
if {$::ModeD::debug} { putcmdlog "save $name" }
set fh [open $name w]
puts $fh $data
close $fh
}
proc appendfile {name data} {
if [info exists name] {
if {$::ModeD::debug} { putcmdlog "append $name" }
set fh [open $name a]
puts $fh $data
close $fh
} {
save $name $data
}
}
proc debug:makedummy {} {
proc adddebug {args} {}
proc putdebug {args} {}
}
if ![info exists ::ModeD::Statistik(Init)] {set ::ModeD::Statistik(Init) 0} {incr ::ModeD::Statistik(Init)}
if ![info exists ::ModeD::Statistik(Netsplit)] {set ::ModeD::Statistik(Netsplit) 0}
if ![info exists ::ModeD::Statistik(Rejoin)] {set ::ModeD::Statistik(Rejoin) 0}
if ![info exists ::ModeD::Statistik(WPM)] {set ::ModeD::Statistik(WPM) 0}
if ![info exists ::ModeD::Statistik(LPM)] {set ::ModeD::Statistik(LPM) 0}
if [info exist ::ModeD::debug] {
if $::ModeD::debug {
if [info exist debug:buffer] { set debug:buffer [list] }
proc adddebug {args} {
if {[lindex $args 0]=="-newline"} {
lappend ::ModeD::debug:buffer [lrange $args 1 end]
} {
set ::ModeD::debug:buffer [lreplace $::ModeD::debug:buffer end end [set args "[lindex $::ModeD::debug:bufer end]${args}"]]
}
}
proc putdebug {args} {
putcmdlog "putdebug $args!=[list]"
if {$args!=[list]} {
putcmdlog [join $args]
} {
foreach line $::ModeD:buffer {
putcmdlog $line
}
set debug:buffer [list]
}
}
} { debug:makedummy }
} { debug:makedummy }
if {![info exists ::ModeD::onlinelist]} { set ::ModeD::onlinelist [list] }
if {![info exists ::ModeD::userlist]} { set ::ModeD::userlist [list] }
if {![info exists ::ModeD::voicelist]} { set ::ModeD::voicelist [list] }
if {![info exists ::ModeD::kicklist]} { set ::ModeD::kicklist [list] }
if {![info exists ::ModeD::authlist]} { set ::ModeD::authlist [list] }
proc user:add {mask} {
if $::ModeD::debug { putcmdlog " u:a start : $mask" }
set found 0
if ![info exist ::ModeD::userlist] {set ::ModeD::userlist [list]}
set num 0; foreach {name last} $::ModeD::userlist {
set time [expr [unixtime]-$last]
if {$time>295 && !$::ModeD::develop || $time>115 && $::ModeD::develop} {
#set num [lsearch $::ModeD::userlist $name];
if $::ModeD::debug {
putcmdlog "nick $name last [duration $time] deleted"
}
set ::ModeD::userlist [lreplace $ModeD::userlist $num [expr $num+1]]
} { incr num 2 }
#putcmdlog "nick $name last $time"
}
#putcmdlog "lsearch $::ModeD::userlist [list $mask] [lsearch $::ModeD::userlist [list $mask]]"
set found 0;
foreach {name time} $::ModeD::userlist {
if {$name==$mask || [string match $mask $name]} { set found 1; break}
}
if !$found {
lappend ::ModeD::userlist $mask
lappend ::ModeD::userlist [expr [unixtime]+20-[rand 60]]
}
#putcmdlog "::ModeD::user:add found $found $mask"
return $found
}
#### main
proc raw311 {args} {
if $::ModeD::debug { putcmdlog " r311 start : $args" }
if ![info exist ::ModeD::voicelist] {set ::ModeD::voicelist [list]}
if ![info exist ::ModeD::kicklist] {set ::ModeD::kicklist [list]}
set nick [lindex [split [lindex $args 2]] 1]
set ident [lindex [split [lindex $args 2]] 2]
set host [lindex [split [lindex $args 2]] 3]
set mask $nick!$ident@$host
set hand [finduser $mask]
set chattr [chattr $hand $::ModeD::channel]
set banlist [list]
if {[banlist]!=[list]} { lappend banlist [banlist] }
if {[banlist $::ModeD::channel]!=[list]} { lappend banlist [banlist $::ModeD::channel] }
if {[string match -nocase *Pink* $nick]} {
#putcmdlog "Checkmask: $mask // Banlist: $banlist"
}
set num 0; foreach item $banlist { foreach ban $item {
#putcmdlog "check: $ban"
incr num
if {[string match *Pink* [lindex $ban 0]] && [string match *Pink* $mask]} {
#putcmdlog "if {string match -nocase [lindex $ban 0] $mask [string match -nocase [lindex $ban 0] $mask]}"
}
if {[string match -nocase [lindex $ban 0] $mask]} {
if {[lsearch -exact $::ModeD::kicklist $mask] == -1} {
putcmdlog "add $nick to kicklist / match banlist $num / string match [lindex $ban 0] $mask [string match [lindex $ban 0] $mask]"
lappend ::ModeD::kicklist $mask
lappend ::ModeD::kicklist [lindex $ban 1]
} { putcmdlog "$nick is allready on kicklist 1" }
}
} }
if {$hand!="*"} {
#putcmdlog "v: if {matchattr $hand v|gv $::ModeD::channel && lsearch $::ModeD::voicelist $nick == -1} == [matchattr $hand v|gv $::ModeD::channel] && [lsearch $::ModeD::voicelist $nick] == -1"
if {[matchattr $hand v|gv $::ModeD::channel]} {
if {[lsearch -exact $::ModeD::voicelist $nick] == -1} {
putcmdlog "add $nick to voicelist"
lappend ::ModeD::voicelist $nick
#pushmode $::ModeD::channel +v $nick
} {
#putcmdlog "allready exist $nick in voicelist";
}
} {
#putcmdlog "dont match voice $nick";
}
#putcmdlog "k: if {matchattr $hand k|k $::ModeD::channel && lsearch $::ModeD::kicklist $nick == -1} == [matchattr $hand k|k $::ModeD::channel] && [lsearch $::ModeD::kicklist $nick] == -1"
if {[matchattr $hand k|k $::ModeD::channel]} {
if {[lsearch -exact $::ModeD::kicklist $mask] == -1} {
putcmdlog "add $nick to kicklist / match +k flag"
lappend ::ModeD::kicklist $mask
lappend ::ModeD::kicklist "banned"
#pushmode $::ModeD::channel +v $nick
} { putcmdlog "$nick is allready on kicklist 2" }
}
} {
#putcmdlog "::ModeD::raw311 nick $mask - no handle"
}
}
proc raw330 {from signal args} {
set args [lindex $args 0]
set botn ""; set nick ""; set auth "";
regexp {^(.*) (.*) :is authed as (.*)} $args args botn nick auth
#putcmdlog "BotNick1: $botn - Nick: $nick - Auth: $auth"
regexp {^(.*) (.*) (.*) :is authed as} $args args botn nick auth
#putcmdlog "BotNick1: $botn - Nick: $nick - Auth: $auth"
}
proc raw355 {args} {
if $::ModeD::debug { putcmdlog " r355 start : $args" }
if ![info exist ::ModeD::raw355:timestamp] {set ::ModeD::raw355:timestamp [clock sec]}
if {[expr [clock sec]-${::ModeD::raw355:timestamp}]<=10} {
#putcmdlog "onlyappend";
set onlyadd 1
} {
#putcmdlog "startnew";
set onlyadd 0;
set ::ModeD::raw355:timestamp [clock sec]
}
#putcmdlog "::ModeD::raw355:b [llength $::ModeD::onlinelist] expr [expr [clock sec]-${::ModeD::raw355:timestamp}] onlyadd $onlyadd"
set whois ""; set skip "";
set users [lindex [split [lindex $args 2] :] 1]
if !$onlyadd {set ::ModeD::onlinelist [list]}
foreach user [split $users] {
set found [user:add $user]
###
#putcmdlog " r355 found $found user $user"
if !$found {
utimer [expr 10+[rand 5]+[rand 5]+[rand 5]+[rand 5]+[rand 5]] [list puthelp [subst -nocommands -nobackslashes {WHOIS $user}]];
lappend whois $user
} {
lappend skip $user
}
if {[lsearch -exact $::ModeD::onlinelist $user]==-1} {
#putcmdlog " r355 append $found user $user to onlinelist"
lappend ::ModeD::onlinelist $user
}
}
if ![info exist ::ModeD::statuscounter] { set ::ModeD::statuscounter 0 } { incr ::ModeD::statuscounter }
#putcmdlog "statuscounter: $::ModeD::statuscounter"
set text "\002whois:\002$whois \002skip:\002$skip"
set text [string map -nocase {{cybex} {C*B*x} {never} {n*v*r} {securetohopethatneverthiswordcomes} {andthisonetwoorbettertoorevenbettertoo} {die} {d**}} $text]
set ::ModeD::checktext $::ModeD::onlinelist
if ![info exist ::ModeD::lastwhoistext] { set ::ModeD::lastwhoistext "" }
if { ( $::ModeD::statuscounter>="15" && ( $whois!="" || $skip!="" ) ) && [string length $::ModeD::checktext] != [string length $::ModeD::lastwhoistext]} {
set ::ModeD::statuscounter 0;
#putcmdlog "$text // [string length $::ModeD::checktext] != [string length $::ModeD::lastwhoistext] // [llength $::ModeD::checktext] != [llength $::ModeD::lastwhoistext]"
set ::ModeD::lastwhoistext $::ModeD::checktext
} {
if {$whois!="" || $skip!=""} {
if $::ModeD::debug {
putcmdlog "$text"
}
}
}
#putcmdlog "::ModeD::raw355:e [llength $::ModeD::onlinelist]"
}
proc countwords {nick host hand chan text} {
#putcmdlog "args [llength [split $text]]"
if ![info exists ::ModeD::Statistik(WPM)] {set ::ModeD::Statistik(WPM) 0} {incr ::ModeD::Statistik(WPM) [llength [split $text]]}
if ![info exists ::ModeD::Statistik(LPM)] {set ::ModeD::Statistik(LPM) 0} {incr ::ModeD::Statistik(LPM)}
}
proc netsplit:split {nick args} {
set found [user:add $nick]
if ![info exists ::ModeD::Statistik(Netsplit)] {set ::ModeD::Statistik(Netsplit) 0} {incr ::ModeD::Statistik(Netsplit)}
}
proc netsplit:rejoin {nick args} {
if ![info exists ::ModeD::Statistik(Rejoin)] {set ::ModeD::Statistik(Rejoin) 0} {incr ::ModeD::Statistik(Rejoin)}
if ![info exist ::ModeD::userlist] {set ::ModeD::userlist [list]}
set num [lsearch -exact $::ModeD::userlist $nick]
if {$num!="-1"} {
set ::ModeD::userlist [lreplace $::ModeD::userlist $num [expr $num+1]]
}
}
proc ModeL {nick host hand chan mc victim} {
set ::ModeD::lastlimit $victim
set ::ModeD::lastlimittick 0
if {$nick!=$::botnick && $::ModeD::develop} {putcmdlog "MODE Change $chan $mc $victim by $nick"}
utimer [expr 3+[rand 5]+[rand 5]+[rand 5]] [list putserv "NAMES -d $::ModeD::channel"]
}
proc time:doit {args} {
#putcmdlog "::ModeD::tc:b [llength $::ModeD::onlinelist] args $args"
putdebug "::ModeD::time:check [set start [unixtime]] start"
utimer [expr 3+[rand 5]+[rand 5]+[rand 5]] [list putserv "NAMES -d $::ModeD::channel"]
if {[lindex $args 0]=="23" && [lindex $args 1]=="59"} {
set ::ModeD::kicklist [list]
set ::ModeD::voicelist [list]
}
if ![info exist ::ModeD::userlist] {set ::ModeD::userlist [list]}
if ![info exist ::ModeD::kicklist] {set ::ModeD::kicklist [list]}
if ![info exist ::ModeD::voicelist] {set ::ModeD::voicelist [list]}
set limit [expr [llength [chanlist $::ModeD::channel]]+[llength $::ModeD::userlist]/2+$::ModeD::raiselimit]
if ![info exist ::ModeD::lastlimit] {set ::ModeD::lastlimit 0}
if ![info exist ::ModeD::lastlimittick] {set ::ModeD::lastlimittick 0}
if {$::ModeD::voicelist != [list]} {
#putcmdlog "if {$::ModeD::voicelist != [list] && ( [llength $::ModeD::voicelist] >= 5 || [lindex $args 0]==\"00\" || [lindex $args 0]==\"15\" || [lindex $args 0]==\"30\" || [lindex $args 0]==\"45\") } "
}
#remove dead nicks
foreach checknick $::ModeD::voicelist {
if {[lsearch -exact $::ModeD::onlinelist $checknick]==-1} {
#putcmdlog "[lsearch -exact $::ModeD::onlinelist $checknick] == -1 // lsearch $checknick <> $::ModeD::onlinelist "
putcmdlog "remove $checknick from voicelist"
set removenum [lsearch -exact $::ModeD::voicelist $checknick]
#putcmdlog "1 - $removenum - $::ModeD::voicelist"
set ::ModeD::voicelist [lreplace $::ModeD::voicelist $removenum $removenum]
set removenum [lsearch -exact $::ModeD::voicelist $checknick]
#putcmdlog "2 - $removenum - $::ModeD::voicelist"
}
}
foreach {checkmask checktype} $::ModeD::kicklist {
putcmdlog "DEBUG: Check Mask $checkmask Type $checktype"
set cknick [lindex [split $checkmask !] 0]
if {[lsearch [split [string tolower [join $::ModeD::onlinelist]]] *[string tolower $cknick]*]==-1} {
set removenum [lsearch -exact $::ModeD::kicklist $checkmask]
#putcmdlog "1 - $removenum - $checkmask from $::ModeD::kicklist"
set ::ModeD::kicklist [lreplace $::ModeD::kicklist $removenum [expr 1+$removenum]]
set removenum [lsearch -exact $::ModeD::kicklist $checkmask]
#putcmdlog "2 - $removenum - $::ModeD::kicklist"
putcmdlog "remove $cknick from kicklist ($removenum)"
}
}
if ![info exists ::ModeD::LastKickNick] {set ::ModeD::LastKickNick [list]}
foreach {checkmask checktype} $::ModeD::kicklist {
set cknick [lindex [split $checkmask !] 0]
if {[lsearch -exact [split [string tolower [join $::ModeD::onlinelist]]] [string tolower $cknick]]!=-1} {
if {[lsearch -exact [split [string tolower [join $::ModeD::LastKickNick]]] [string tolower $cknick]]!=-1} {
if [string match -nocase *.users.quakenet.org $checkmask] {
set banmask *!*@[lindex [split $checkmask @] 1]
} {
set banmask [maskhost $checkmask]
}
putlog "BAN $::ModeD::channel +b $banmask // $checkmask"
puthelp "MODE $::ModeD::channel +b $banmask"
}
putlog "KICK $cknick $::ModeD::channel :$checktype"
puthelp "KICK $::ModeD::channel $cknick :$checktype"
lappend ::ModeD::LastKickNick $cknick
lappend ::ModeD::LastKickNick [unixtime]
putcmdlog "LastKickNick(s) $::ModeD::LastKickNick"
}
}
foreach {cknick dtime} $::ModeD::LastKickNick {
if {[expr [unixtime]-$dtime]>600} {
#putcmdlog "set Num [lsearch -exact [split [string tolower [join $::ModeD::LastKickNick]]] [string tolower $cknick]]"
set Num [lsearch -exact [split [string tolower [join $::ModeD::LastKickNick]]] [string tolower $cknick]]
putcmdlog "Remove $cknick from LastKickNicks $Num ($::ModeD::LastKickNick)"
set ::ModeD::LastKickNick [lreplace $::ModeD::LastKickNick $Num [expr $Num+1]]
#putcmdlog "LastKickNicks ($::ModeD::LastKickNick)"
}
}
#work on cy:allbefore to 20031030
if {$::ModeD::voicelist != [list] && ( [llength $::ModeD::voicelist] >= 5 || [lindex $args 0]=="00" || [lindex $args 0]=="15" || [lindex $args 0]=="30" || [lindex $args 0]=="45") || ( $::ModeD::voicelist != [list] && ( ( $::ModeD::lastlimit<$limit && $::ModeD::lastlimittick>=$::ModeD::uplimitticks ) || ( $::ModeD::lastlimit>$limit && $::ModeD::lastlimittick>=$::ModeD::downlimitticks ) ) ) } {
#if {$::ModeD::voicelist != [list]}
if {$::ModeD::lastlimit!=$limit && $::ModeD::lastlimittick!=0} {
putcmdlog "VOICELIST-LIMIT: $limit $::ModeD::voicelist"
foreach {a b c d e} $::ModeD::voicelist {
puthelp "MODE $::ModeD::channel +lvvvvv $limit $a $b $c $d $e"
putcmdlog "MODE $::ModeD::channel +lvvvvv $limit $a $b $c $d $e"
}
set ::ModeD::voicelist [list]
set ::ModeD::lastlimit $limit
set ::ModeD::lastlimittick 0
if $::ModeD::debug { putcmdlog "set ::ModeD::lastlimittick to 0 - $limit/$::ModeD::lastlimit - $args" }
} {
putcmdlog "VOICELIST: $::ModeD::voicelist"
foreach {a b c d e f} $::ModeD::voicelist {
puthelp "MODE $::ModeD::channel +vvvvvv $a $b $c $d $e $f"
putcmdlog "MODE $::ModeD::channel +vvvvvv $a $b $c $d $e $f"
}
set ::ModeD::voicelist [list]
}
} {
if {$::ModeD::voicelist != [list]} {
#putcmdlog "waiting with voices: $::ModeD::voicelist != [list] && ( [llength $::ModeD::voicelist] >= 5 || [lindex $args 0]==00 || [lindex $args 0]==15 || [lindex $args 0]==30 || [lindex $args 0]==45) "
}
}
#putcmdlog "if { ( ( $::ModeD::lastlimit<$limit && $::ModeD::lastlimittick>=$::ModeD::uplimitticks ) || ( $::ModeD::lastlimit>$limit && $::ModeD::lastlimittick>=$::ModeD::downlimitticks ) ) }"
if { ( ( $::ModeD::lastlimit<$limit && $::ModeD::lastlimittick>=$::ModeD::uplimitticks ) || ( $::ModeD::lastlimit>$limit && $::ModeD::lastlimittick>=$::ModeD::downlimitticks ) ) } {
putcmdlog "set limit from $::ModeD::lastlimit to $limit after [duration [expr $::ModeD::lastlimittick*60]]"
if { ( $::ModeD::lastlimit<$limit && $::ModeD::lastlimittick>$::ModeD::uplimitticks ) || ( $::ModeD::lastlimit>$limit && $::ModeD::lastlimittick>$::ModeD::downlimitticks ) } {
#putcmdlog "set limit from $::ModeD::lastlimit to $limit after [duration [expr $::ModeD::lastlimittick*60]]"
}
set ::ModeD::lastlimit $limit
pushmode $::ModeD::channel +l $limit
set ::ModeD::lastlimittick 0
if $::ModeD::debug { putcmdlog "set ::ModeD::lastlimittick to 0 - $limit/$::ModeD::lastlimit - $args" }
} {
incr ::ModeD::lastlimittick
if $::ModeD::debug { putcmdlog "incr ::ModeD::lastlimittick to $::ModeD::lastlimittick - $limit/$::ModeD::lastlimit - $args" }
}
#sp?ter ersetzen durch if ::ModeD::savestat
if {$::ModeD::savestats} {
if {[llength $args]==5} {
set fname $::ModeD::datadir/day.$::nick.[lindex $args 4].[lindex $args 3].[lindex $args 2]
#putcmdlog "set fname $fname - args $args"
set op 0; set voice 0; set visit 0;
foreach user [chanlist $::ModeD::channel] {
if [isop $user $::ModeD::channel] { incr op } elseif [isvoice $user $::ModeD::channel] { incr voice } { incr visit }
}
set data [list]
lappend data [lindex $args 1]
lappend data [lindex $args 0]
lappend data [expr [llength [chanlist $::ModeD::channel]]+[llength $::ModeD::onlinelist]]
lappend data $op
lappend data $voice
lappend data $visit
lappend data [llength $::ModeD::onlinelist]
lappend data [expr [llength $::ModeD::userlist]/2]
lappend data $::ModeD::lastlimittick
lappend data $limit
lappend data $::ModeD::lastlimit
lappend data [expr [llength $::ModeD::kicklist]/2]
lappend data [expr [llength $::ModeD::voicelist]]
#putcmdlog "::ModeD::time:check - t: ll: l: - c: op: voice: user: invisible: - u: v:[llength $::ModeD::voicelist] k:[llength $::ModeD::kicklist] - $args -"
#putcmdlog "::ModeD::time:check $fname $data"
if {$::ModeD::DoExtStats} {
lappend data $::ModeD::Statistik(Netsplit)
lappend data $::ModeD::Statistik(Rejoin)
lappend data $::ModeD::Statistik(WPM); set ::ModeD::Statistik(WPM) 0
lappend data $::ModeD::Statistik(LPM); set ::ModeD::Statistik(LPM) 0
}
appendfile $fname $data
if {$::ModeD::develop || $::ModeD::debug || ( [expr [scan [lindex $args 0] %d] % 5]==0 && [channel get $::ModeD::channel statuslog]) } {
putcmdlog "::ModeD::time:check - t:$::ModeD::lastlimittick ll:$::ModeD::lastlimit l:$limit - c:[expr [llength [chanlist $::ModeD::channel]]+[llength $::ModeD::onlinelist]] op:$op voice:$voice user:$visit invisible:[llength $::ModeD::onlinelist] visible:[llength [chanlist $::ModeD::channel]] - u:[expr [llength $::ModeD::userlist]/2] v:[llength $::ModeD::voicelist] k:[expr [llength $::ModeD::kicklist]/2] - $args -"
}
}
}
set num 0; foreach {name last} $::ModeD::userlist {
set time [expr [unixtime]-$last]
if {$time>3595} {
#set num [lsearch $::ModeD::userlist $name];
if $::ModeD::debug {
putcmdlog "nick $name last [duration $time] deleted"
}
set ::ModeD::userlist [lreplace $ModeD::userlist $num [expr $num+1]]
} { incr num 2 }
#putcmdlog "nick $name last $time"
}
if $::ModeD::debug {
}
#putcmdlog "::ModeD::tc:e [llength $::ModeD::onlinelist] args $args"
#putdebug "::ModeD::time:check [set end [unixtime]] end [expr $end-$start]"
}
proc time:check {arg1 arg2 arg3 arg4 args} {
set time [expr [rand $::ModeD::random]+[rand $::ModeD::random]+[rand $::ModeD::random]+[rand $::ModeD::random]+$::ModeD::random]
set cmd [list ::ModeD::time:doit $arg1 $arg2 $arg3 $arg4 $args]
if {$::ModeD::userandom && $::ModeD::debug} {putcmdlog "utimer $time $cmd"}
if $::ModeD::userandom {utimer $time $cmd} {eval $cmd}
}
proc main {args} {
}
### init
proc init {args} {
set err [catch {main $args} msg]
return [list $err $msg]
}
set init [init]
}
# proc fixes for me
proc lol_whois_reply {args} {}
proc lol_whois_unknow {args} {}
namespace eval ::ModeD:: {
set ::ModeD::develop 0
putlog "ModeD.tcl loaded version $major.$minor.$build.$run"
return "$major.$minor.$build.$run"
}