Channellimite automatisch setzen. (Eggdrop)

Zest

Registered User
Hallo

nun eine neue Frage.
Ich will in momentanen 8 Channels die +l automatisch von einem Eggdrop setzen lassen.
Ich hab mir diverse Scripte angesehen doch leider funktioniert keines so richtig wie es soll

Hat jemand ein Script (auch gefunden) dass auf mehrere Channels funktioniert?

Gruss

Edit:
Ich habe einfach mal folgenden Code getestet:
bind time - "* * * * *" time:ChanLimit

proc time:ChanLimit {min hour day month year} {
foreach chan [channels] {
set newlimit [expr [llength [chanlist $chan]] + 5]
set currentlimit [currentlimit $chan]
if {$currentlimit < [expr $newlimit - 1] || $currentlimit > [expr $newlimit + 1]} {
putserv "mode $chan +l $newlimit"
}
}
}

proc currentlimit {chan} {
set currentmodes [getchanmode $chan]
if {[string match "*l*" [lindex $currentmodes 0]]} {
return [lindex $currentmodes end]
}
return 0
}

Leider wechselt der die Limite alle 2 bis 3 Minuten auf eine Differenz von:
4 alle 1 Min
5 alle 2 Min
Also mal hoch und mal runter.
Kann man das bei diesem Code noch so einstellen, dass der immer eine Differenz von +5 Usern hat und alle 5 Minuten checken soll? Aber dies unabhängig von weiterne Channel's? Also im Chan1 alle 5 Minuten prüfen und wenn 20 User da sind auf 25 setzen. Chan2 prüfen, wenn 12 User da sind auf 17 setzen.
Weil so wie der Code jetzt da steht setzt er alle Channels synchron um.
 
Last edited by a moderator:
Hallo Zest,

bei meiner ca. 10sekündigen Suche stoß ich auf ca. 50 solcher Scripts.

Hier hast du mal eins:
Ich habe es mir jedoch nicht angeguckt, da du das schoen brav selbst machen darfst ;)

Code:
# Auto-limit 0.52 by perpleXa.
# This script is similar to Q's auto-limit feature (+c).
# It must not be used in conjunction with chanmode +D (auditorium mode).
# Type $autolimt in a channel for more info..


bind pub  n|m "\$autolimit" autolimit:pub
bind join -|- * autolimit:join

setudef str "autolimit"

proc autolimit:start {} {
  foreach channel [channels] {
    if {[channel get $channel "autolimit"] == ""} {
      channel set $channel "autolimit" "0"
    }
  }
  utimer 60 autolimit
}

proc autolimit:join {nickname hostname handle channel} {
  if {![isbotnick $nickname]} {
    return 0
  }
  if {[channel get $channel "autolimit"] == ""} {
    channel set $channel "autolimit" "0"
  }
}

proc autolimit:pub {nickname hostname handle channel arguments} {
 global lastbind
  set argumentc [llength [split $arguments { }]]
  set option [lindex $arguments 0]
  set users [llength [chanlist $channel]]
  if {$argumentc < 1} {
    set currentlimit [channel get $channel "autolimit"]
    if {$currentlimit > 0} {
      putserv "NOTICE $nickname :Current auto-limit is: [channel get $channel "autolimit"]"
    } else {
      putserv "NOTICE $nickname :Argument should start with a '#' and a digit. (eg. #10 or on|off)"
    }
    return
  }
  if {([regexp -nocase -- {(#[0-9]+|off|on)} $option tmp result]) && (![regexp -nocase -- {\S#} $option])} {
    switch $result {
      on {
        channel set $channel "autolimit" "10"
        putserv "MODE $channel +l [expr $users + 10]"
        puthelp "NOTICE $nickname :Auto-limit is changed to: +10"
      }
      off {
        channel set $channel "autolimit" "0"
        putserv "MODE $channel -l *"
        puthelp "NOTICE $nickname :Done. Auto-limit disabled successfully."
      }
      default {
        if {([regexp {#[0-9]} $result]) && ([string index $result 0] == "#")} {
          regexp {#([0-9]+)} $result tmp result
          if {($result < 2)} {
            set result 2
          } elseif {($result > 500)} {
            set result 500
          }
          channel set $channel "autolimit" "$result"
          putserv "MODE $channel +l [expr $users + $result]"
          puthelp "NOTICE $nickname :Auto-limit is changed to: $result"
        }
      }
    }
  } else {
    puthelp "NOTICE $nickname :Argument should start with a '#' and a digit. (eg. #10 or on|off)"
  }
}

proc autolimit {} {
  if {![string match *autolimit* [utimers]]} {
    utimer 60 autolimit
  }
  foreach channel [channels] {
    set autolimit [channel get $channel "autolimit"]
    if {(![botisop $channel]) || ($autolimit == "0")} {
      continue
    }
    set users [llength [chanlist $channel]]
    set newlimit [expr $users + $autolimit]
    set chanmodes [getchanmode $channel]
    if {[string match *l* [lindex $chanmodes 0]]} {
      regexp {\S[\s]([0-9].*)} $chanmodes tmp currentlimit
    } else {
      set currentlimit 0
    }
    if {$newlimit == $currentlimit} {continue}
    if {$newlimit > $currentlimit} {
      set difference [expr $newlimit - $currentlimit]
    } elseif {$newlimit < $currentlimit} {
      set difference [expr $currentlimit - $newlimit]
    }
    if {($difference <= [expr round($autolimit * 0.5)]) && ($autolimit > 5)} {
      continue
    } elseif {($difference < [expr round($autolimit * 0.38)]) && ($autolimit <= 5)} {
      continue
    }
    putserv "mode $channel +l $newlimit"
  }
}

autolimit:start

putlog "Script loaded: auto-limit by perpleXa"

Lieben Gruß
Free
 
Hallo

Danke dafür. Klar kann ich das auch selber. ;)
Meine Suche dauerte auch ned solange aber da autolimit scripts - Google-Suche
hab ich schon ettliche durchprobiert......;(

Also die 4 scripts die es unter egghelp.org also Slennox gibt funktionieren bei mir nicht.
Das von dir gepostete, hatte ich auch drinn, aber ich konnt den in der dcc Verbindung zum Bot nicht ansprechen...also Starten.
Hab das mit \$autolimit, $autolimit, \autolimit, .$autolimit usw.. versucht aber da tut sich nichts.

Normalerweise hab ich mit den Scripts nicht solche probleme aber gerade mit diesem......;(

Gruss
 
Last edited by a moderator:
Hi,

folgendes funktioniert bei mir mit insgesamt 14 Channels problemlos.

Code:
##### Channel Limit V1.1 by Morpheus #####
# http://www.BehindTheMatrix.de
# Morpheus@BehindTheMatrix.de

# Chanlimit bei Join / Part / Kick
# Ausgabe der Limitänderung auf der Partyline und in einem Chan

# Limit (Aktuelle Userzahl + Chan_Limit)
set chan_limit 3

# Verzögerung der Limitsetzung in Sekunden
set chan_delay_join 10
set chan_delay_part 0
set chan_delay_kick 0

##### Aktive Chans #####
# * = Alle Chans
set limit_chans "#HeLP"

##### Ausgabe Partyline #####
# 1 = An / 0 = Aus
set ausgabe_partyline 1

##### Ausgabe Chan #####
# "" = Keine Ausgabe im Chan
set ausgabe_chan_limit ""

######################## Ab hier nichts mehr ändern ################################

bind time - "* * * * *" check_limit_time
bind join - * check_limit_onjoin
bind part - * check_limit_onpart
bind kick - * check_limit_onkick

proc check_limit_onjoin {nick uhost hand chan} {
	global botnick limit_chans chan_delay_join

	# Nur bei OP
	if {!([isop $botnick $chan])} {return 0}

	if {(([lsearch -exact [string tolower $limit_chans] [string tolower $chan]] != -1) || ($limit_chans == "*"))} {utimer $chan_delay_join [split "limit_set $chan $nick"]}
	return 1
}
proc check_limit_onpart {nick uhost hand chan arg} {
	global botnick limit_chans chan_delay_part

	# Nur bei OP
	if {!([isop $botnick $chan])} {return 0}

	if {(([lsearch -exact [string tolower $limit_chans] [string tolower $chan]] != -1) || ($limit_chans == "*"))} {utimer $chan_delay_part [split "limit_set $chan $nick"]}
	return 1
}
proc check_limit_onkick {nick host hand chan target reason} {
	global botnick limit_chans chan_delay_kick

	# Nur bei OP
	if {!([isop $botnick $chan])} {return 0}

	set nick $target
	if {(([lsearch -exact [string tolower $limit_chans] [string tolower $chan]] != -1) || ($limit_chans == "*"))} {utimer $chan_delay_kick [split "limit_set $chan $nick"]}
	return 1
}
proc check_limit_time {nick uhost hand chan arg} {
	global botnick chan_limit limit_chans

	foreach chan [channels] {
		if {[botonchan $chan]} {

		# Nur bei OP
		if {!([isop $botnick $chan])} {return 0}

			if {(([lsearch -exact [string tolower $limit_chans] [string tolower $chan]] != -1) || ($limit_chans == "*"))} {
				set usercount [llength [chanlist $chan]]
				set new_limit [expr $usercount + $chan_limit]
				set modes [string tolower [getchanmode $chan]]
 				set modev [lindex $modes 1]
 				if {$modev == ""} {set modev 0}
 				if {$modev != $new_limit && $new_limit > 0} {
	 				putserv "MODE $chan +l $new_limit"
 					return 1
 				}
 			}
		}
	}
}
proc limit_set {chan nick} {
	global botnick chan_limit ausgabe_partyline ausgabe_chan_limit

	# Nur bei OP
	if {!([isop $botnick $chan])} {return 0}

	if {[botonchan $chan]} {
		set usercount [llength [chanlist $chan]]
		set new_limit [expr $usercount + $chan_limit]
		set modes [string tolower [getchanmode $chan]]
 		set modev [lindex $modes 1]
 		if {$modev == ""} {set modev 0}
 		if {$modev != $new_limit && $new_limit > 0} {
 			if {$ausgabe_partyline == 1} {putlog "Limit $chan von $modev auf $new_limit durch $nick"}
 			if {$ausgabe_chan_limit != ""} {
 				if {$modev < $new_limit} {set limit_change "3rauf"
 				} else {set limit_change "4runter"}
 				putserv "PRIVMSG $ausgabe_chan_limit :fass mich nicht mehr an baSti ;) *gell*"
 			}
 			putserv "MODE $chan +l $new_limit"
 			return 1
 		}
 	}
}
putlog "Channel Limit loaded by Morpheus"

Best regards
tessa
 
Back
Top