This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

sbnc script Prop

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
F
Fraud
Op
Posts: 101
Joined: Mon May 19, 2008 7:57 am

sbnc script Prop

Post by Fraud »

I have here a lil sbnc Script that always makes error

This is the Script

Code: Select all

#                AAA               lllllll
#               A:::A              l:::::l
#              A:::::A             l:::::l
#             A:::::::A            l:::::l
#            A:::::::::A            l::::l     eeeeeeeeeeee  xxxxxxx      xxxxxxx
#           A:::::A:::::A           l::::l   ee::::::::::::ee x:::::x    x:::::x
#          A:::::A A:::::A          l::::l  e::::::eeeee:::::eex:::::x  x:::::x
#         A:::::A   A:::::A         l::::l e::::::e     e:::::e x:::::xx:::::x
#        A:::::A     A:::::A        l::::l e:::::::eeeee::::::e  x::::::::::x
#       A:::::AAAAAAAAA:::::A       l::::l e:::::::::::::::::e    x::::::::x
#      A:::::::::::::::::::::A      l::::l e::::::eeeeeeeeeee     x::::::::x
#     A:::::AAAAAAAAAAAAA:::::A     l::::l e:::::::e             x::::::::::x
#    A:::::A             A:::::A   l::::::le::::::::e           x:::::xx:::::x
#   A:::::A               A:::::A  l::::::l e::::::::eeeeeeee  x:::::x  x:::::x
#  A:::::A                 A:::::A l::::::l  ee:::::::::::::e x:::::x    x:::::x
# AAAAAAA                   AAAAAAAllllllll    eeeeeeeeeeeeeexxxxxxx      xxxxxxx
#
#
# Mein erstes größeres TCL Script. Für die Einstellung von sBNC.
# Es überprüft jede halbe und volle Stunde ob alle User im Homechan sind.
#
# Danke an:
# Nighty - Für die Idee und das Simul-all script.
# Wanne - Für die mysqlconnect.tcl ;)
#
# Dieses Script benötigt die check.tcl von mir :)
#
# Commands:
#
# ?sbnc check
# - Überprüft ob jeder User im Homechan ist.
# ?sbnc simul Ident/all command
# - Simuls das angegebene Command an dem User.
# ?sbnc add Ident ?Nick? ?Realname?
# - Fügt einen neuen User hinzu. Nick = Der User, der die Zugangsdaten bekommt. Wenn kein Nick angegeben wird dein Nick genutzt.
# ?sbnc del Ident
# - Löscht einen Bouncer.
# ?sbnc suspend ident ?reason?
# - Suspendiert einen Bouncer mit dem Grund. Wenn kein Grund angegeben, der Standartgrund wird genutzt.
# ?sbnc unsuspend ident
# - Hebt die suspendierung eines Users wieder auf.
# ?sbnc resetpass ident ?nick?
# - Resetet das Passwort des Users.. Nick = Der User, der das neue Passwort bekommt. Wen kein Nick angegeben wird dein Nick genutzt.
# ?sbnc global Nachricht
# - Sendet eine Nachricht an alle User.
# ?sbnc status
# - Shows a status message.
# ?sbnc info ident
# - Zeigt Informationen zur angegebenen Ident.
# ?sbnc admin Ident
# - Gibt einem User Adminrechte
# ?sbnc unadmin Ident
# - Entfernt Adminrechte eines Users.
# ?sbnc list
# - Zeigt alle Bouncer.
# ?sbnc slist
# - Zeigt eine Liste alles suspendet Bouncer.
# ?sbnc welcome on/off
# - Aktiviert, dass der Bot in die Willkommens Message von Q schreibt, wieviele Bouncer noch verfügbar sind. ( Der Bot brauch +m bei Q! )
# ?sbnc version
# - Zeigt die aktuelle Version des Scripts.

# You didnt need to change this 2 settings.
set sbnc(author)		"WindowsLive"
set sbnc(version)		"2.8b MYSQL+Autoupdate"

# > Binds
bind PUB n|S $sbnc(global,trigger)sbnc sbnc:pub
bind time - "* * * * *" sbnc:timed
bind MSGM - {*} sbnc:qry
# < Binds

# > Flags
setudef flag welcome
setudef flag topic2
setudef str topic
setudef flag topicq
# < Flags

# Dont change anything, thanks!
# Dont change anything, thanks!
# Dont change anything, thanks!
# Dont change anything, thanks!


# > Procs
proc sbnc:pub { nick host hand chan arg } {
	global sbnc
	set function	[string tolower [lindex [split $arg] 0]]
	if {[string tolower $chan] != [string tolower $sbnc(global,home)]} { return }
	switch -- $function {
		check {
			putlog "$nick used sbnc check."
			putquick "SBNC simulall join $sbnc(global,home)"
			sbncmsg $chan 2 "Done. Alle [getbnc] User sind nun in diesem Channel."
		}

		simul {
			set user [lindex [split $arg] 1]
			set command [lrange [split $arg] 2 end]
			if {$user == "" || $command == ""} {
				sbncmsg $chan 2 "Falsche Eingabe. Benutz: $sbnc(global,trigger)sbnc simul ident command"
				return
			}
			if {$user == "all"} {
				putquick "SBNC simulall $command"
				sbncmsg $chan 2 "Done."
				putlog "!!! $nick hat SIMUL ALL benutzt. Command: $command !!!!!!"
				return
			}
			if {[bncexists $user] == "0"} { sbncmsg $chan 1 "$user gibt es nicht." ; return }
			putlog "!!!! $nick hat SIMUL $user benutzt. Command: $command !!!!!"
			putquick "SBNC simul $user :$command"
			sbncmsg $chan 2 "Done."
		}
		add {
			set ident [lindex [split $arg] 1]
			set inhere [lindex [split $arg] 2]
			set realname [lrange [split $arg] 3 end]
			set bncs [getbnc]
			if {$ident == ""} {
				sbncmsg $chan 2 "Falsche Eingabe. Benutz: $sbnc(global,trigger)sbnc add ident ?user? ?realname?"
				return
			}
			if {$realname == ""} {
				set realname $sbnc(global,realname)
			}
			if {$inhere == ""} {
				set inhere $nick
			}
			if {![onchan $inhere $sbnc(global,home)]} {
				sbncmsg $chan 2 "Fehler. $inhere ist nicht in diesem Channel."
				return
			}
			if {[bncexists $ident] == 1} {
				sbncmsg $chan 1 "Fehler. Da ist bereits ein Bouncer mit Ident $ident ."
				return
			}
			if {[getbnc] == $sbnc(global,max)} {
				sbncmsg $chan 2 "Fehler. Es sind bereits $sbnc(global,max) Bouncer hinzugefügt."
				return
			}
			if {[string length $ident] > 9} {
				sbncmsg $chan 1 "Fehler. Die Ident darf nur max. 9 Zeichen lang sein."
				return
			}
			set pass [randstring 8]

			putlog "$nick fügte bouncer $ident hinzu. Realuser: $inhere"
			putquick "SBNC adduser $ident $pass"
			putquick "SBNC simul $ident sbnc set realname $realname"
			putquick "SBNC simul $ident sbnc set server $sbnc(global,irc)"
			if {$sbnc(lock) == "1"} {
				foreach x $sbnc(locksetting) {
					putquick "SBNC lock $ident $x"
				}
			}
			if {$sbnc(global,ifaceon) == "1"} {
				putquick "PRIVMSG $inhere :Neuer Bouncer hinzugefügt! Powered by $sbnc(global,home)"
				putquick "PRIVMSG $inhere :Server: $sbnc(global,sbncip) Port: $sbnc(global,sbncport)"
				putquick "PRIVMSG $inhere :User: $ident Password: $pass"
				putquick "PRIVMSG $inhere :Webinterface: $sbnc(global,iface)"
			} else {
				putquick "PRIVMSG $inhere :Neuer Bouncer hinzugefügt! Powered by $sbnc(global,home)"
				putquick "PRIVMSG $inhere :Server: $sbnc(global,sbncip) Port: $sbnc(global,sbncport)"
				putquick "PRIVMSG $inhere :User: $ident Password: $pass"
			}
			add:bnc $ident $nick $inhere [unixtime] 0
			sbncmsg $chan 2 "Done. User $ident hinzugefügt | Bouncer [getbnc] / $sbnc(global,max)"
			utimer 20 [list putquick "SBNC simul $ident JOIN $sbnc(global,home)" ]
			topic:set
			if {[channel get $sbnc(global,home) welcome]} {
				putserv "PRIVMSG Q :chanflags $sbnc(global,home) +w"
				set free [expr {$sbnc(global,max) - [getbnc]}]
				putserv "PRIVMSG Q :welcome $sbnc(global,home) Es stehen noch $free Bouncer kostenlos zur Verfügung. Du willst einen kostenlosen Bouncer? Qry $sbnc(global,admin)"
			}
		}
		del {
			set ident [lindex [split $arg] 1]
			set bncs [getbnc]
			if {$ident == ""} {
				sbncmsg $chan 2 "Fehler. Benutze: $sbnc(global,trigger)sbnc del ident"
				return
			}
			if {$ident == $sbnc(botident)} {
				sbncmsg $chan 1 "Haha. Du kannst mich nicht löschen!"
				return
			}
			if {[issuspended $ident] == "1"} {
				unsuspend $ident
			}
			if {[sbnc:locked $ident]} {
				sbncmsg $chan 1 "Fehler. $ident ist gelockt und kann nicht gelöscht werden!"
				return
			}
			if {[del:bnc $ident] == "1"} {
				putlog "$nick löschte User $ident"
				putquick "SBNC deluser $ident"
				sbncmsg $chan 1 "Done. $ident wurde gelöscht."
				topic:set
				if {[channel get $sbnc(global,home) welcome]} {
					putserv "PRIVMSG Q :chanflags $sbnc(global,home) +w"
					set free [expr {$sbnc(global,max) - [channel get $sbnc(global,home) bncs]}]
					putserv "PRIVMSG Q :welcome $sbnc(global,home) Es stehen noch $free Bouncer kostenlos zur Verfügung. Du willst einen kostenlosen Bouncer? Qry $sbnc(global,admin)"
				}
			} else {
				sbncmsg $chan 1 "Kann $ident nicht finden!"
			}
		}
		suspend {
			set ident [lindex [split $arg] 1]
			set reason [lrange [split $arg] 2 end]
			set bncs [getbnc]
			if {$ident == ""} {
				sbncmsg $chan 2 "Fehler. Benutze: $sbnc(global,trigger)sbnc suspend ident ?reason?"
				return
			}
			if {$reason == ""} {
				set reason "$sbnc(global,sreason)"
			}
			if {$ident == "$sbnc(botident)"} {
				sbncmsg $chan 1 "Haha. Du kannst mich nicht suspendieren!"
				return
			}
			if {[issuspended $ident] == "1"} {
				sbncmsg $chan 1 "Fehler. $ident ist bereits suspendet."
				return
			}
			if {[suspend $ident [unixtime] $nick $reason] == "1"} {
				putlog "$nick suspendiert $ident mit Grund $reason"
				putquick "SBNC suspend $ident $reason"
				sbncmsg $chan 1 " Done."
				return
			} else {
				sbncmsg $chan 1 "Konnte $ident nicht finden!"
			}
		}
		unsuspend {
			set ident [lindex [split $arg] 1]
			set bncs [getbnc]
			set suspended [getsuspend]
			if {$ident == ""} {
				sbncmsg $chan 2 "Fehler. Benutz: $sbnc(global,trigger)sbnc unsuspend ident"
				return
			}
			if {$ident == "$sbnc(botident)"} {
				sbncmsg $chan 1 "Haha. Ich bin nicht suspendiert...!"
				return
			}
			if {[issuspended $ident] == "0"} {
				sbncmsg $chan 1 "$ident ist nicht suspendiert."
				return
			}
			if {[unsuspend $ident] == "1"} {
				putlog "$nick unsuspendiert User $ident"
				putquick "SBNC unsuspend $ident"
				sbncmsg $chan 1 " Done."
				return
			}

		}
		resetpass {
			set ident [lindex [split $arg] 1]
			set user [lindex [split $arg] 2]
			if {$ident == ""} {
				sbncmsg $chan 2 "Fehler. Benutz: $sbnc(global,trigger)sbnc resetpass ident ?user?"
				return
			}
			if {$user == ""} {
				set user "$nick"
			}
			if {![onchan $user $sbnc(global,home)]} {
				sbncmsg $chan 1 "Fehler. $user ist nicht in $sbnc(global,home)"
				return
			}
			if {[bncexists $ident] == "1"} {
				set temppass [randstring 8]
				putlog "$nick resetet Passwort von $ident . Neues Passwort: $temppass . Daten gesendet zu $user"
				putquick "SBNC resetpass $ident $temppass"
				putquick "PRIVMSG $user : Hallo! Dein Password vom Bouncer von $sbnc(global,home) wurde resetet!"
				putquick "PRIVMSG $user : IP: $sbnc(global,sbncip) Port: $sbnc(global,sbncport) "
				putquick "PRIVMSG $user : Ident: $ident | Dein neues Passwort ist $temppass"
				if {$sbnc(global,ifaceon) == "1"} {
					putquick "PRIVMSG $user : Webinterface: $sbnc(global,iface)"
				}
				sbncmsg $chan 2 " Done. Passwort von $ident geändert. Neues Passwort wurde zu $user gesendet."
				return
			} else {
				sbncmsg $chan 1 "Kann $ident nicht finden!"
			}
		}
		global {
			set message [lrange [split $arg] 1 end]
			if {$message == ""} {
				sbncmsg $chan 1 " Du hast deine Nachricht vergessen!"
				return
			}
			putlog "$nick verschickt globale message: $message"
			putquick "SBNC global $message"
			sbncmsg $chan 1 " Done. [getbnc] User haben diese Nachricht erhalten."
		}
		iface {
			if {$sbnc(global,ifaceon) == "1"} {
				sbncmsg $chan 1 "Webinterface: $sbnc(global,iface)"
			} else {
				sbncmsg $chan 1 "Zur Zeit ist das Webinterface nicht verfügbar."
			}
		}
		stats {
			putquick "PRIVMSG -sBNC :statusinfo"
			utimer 2 {
				sbncmsg $sbnc(global,home) 1 "Zur Zeit gibt es [getbnc] Bouncer. Möglich sind $sbnc(global,max) Bouncer. [expr {$sbnc(global,max) - [getbnc]}] freie Bouncer."
				if {[getsuspend] < "2" && [getsuspend] > "0"} {
					sbncmsg $sbnc(global,home) 1 "[getsuspend] Bouncer ist suspendiert."
				} else {
					sbncmsg $sbnc(global,home) 1 "[getsuspend] Bouncer sind suspendiert."
				}
				sbncmsg $sbnc(global,home) 1 "$sbnc(connected) User sind connectet. $sbnc(qnet) Bouncer sind zum Quakenet connected."
				if {$sbnc(admins) < "2"} {
					sbncmsg $sbnc(global,home) 1 "Es gibt $sbnc(admins) Admin."
				} else {
					sbncmsg $sbnc(global,home) 1 "Es gibt $sbnc(admins) Admins."
				}
			}
		}
		lock {
			set ident [lindex [split $arg] 1]
			if {$ident == ""} {
				sbncmsg $chan 1 "$sbnc(global,trigger)sbnc lock ?ident?"
				return
			}
			if {[bncexists $ident]} {
				if {![sbnc:locked $ident]} {
					sbnc:lock $ident
					sbncmsg $chan 1 "Done. Bouncer mit Ident $ident wurde erfolgreich gelocked."
					return
				} else {
					sbncmsg $chan 1 "Fehler. $ident ist bereits gelocked."
				}
			} else {
				sbncmsg $chan 2 "Es gibt keinen Bouncer mit Ident $ident"
			}
		}
		unlock {
			set ident [lindex [split $arg] 1]
			if {$ident == ""} {
				sbncmsg $chan 1 "$sbnc(global,trigger)sbnc unlock ?ident?"
				return
			}
			if {[bncexists $ident]} {
				if {[sbnc:locked $ident]} {
					sbnc:unlock $ident
					sbncmsg $chan 1 "Done. Bouncer mit Ident $ident wurde erfolgreich delocked."
					return
				} else {
					sbncmsg $chan 1 "Fehler. $ident ist nicht gelocked."
				}
			} else {
				sbncmsg $chan 2 "Es gibt keinen Bouncer mit Ident $ident"
			}
		}
		info {
			set bnc [lindex [split $arg] 1]
			if {$bnc == ""} {
				sbncmsg $chan 1 "Fehler. Benutz: $sbnc(global,trigger)sbnc info ident"
				return
			}
			set infobla [infos $bnc]
			if {$infobla != "0"} {
				if {[issuspended $bnc] == "0"} {
					set issuspended "nein"
					putquick "PRIVMSG -sBNC :infos $bnc"
				} else {
					set issuspended "ja"
					set susbla [susinfo $bnc]
					set sreason [lrange [split $susbla] 3 end]
					set suspender [lindex [split $susbla] 2]
					set sdate [lindex [split $susbla] 1]
				}
				set bnc2 [lindex [split $infobla] 0]
				set ersteller [lindex [split $infobla] 1]
				set real [lindex [split $infobla] 2]
				set suspended [lindex [split $infobla] 3]
				set admin [lindex [split $infobla] 4]
				set datum [lindex [split $infobla] 5]
				if {$admin == "1"} { set admin "ja" } else { set admin "nein" }
				if {[sbnc:locked $bnc]} {
					sbncmsg $chan 1 "Infos über: $bnc2 | Erstellt am [ctime $datum] von $ersteller | Realnick: $real | Admin: $admin | Suspendiert: $issuspended | $bnc ist gelockt."
				} else {
					sbncmsg $chan 1 "Infos über: $bnc2 | Erstellt am [ctime $datum] von $ersteller | Realnick: $real | Admin: $admin | Suspendiert: $issuspended"
				}
				if {$issuspended == "ja"} {
					sbncmsg $chan 1 "Suspendiert von $suspender am [ctime $sdate] | Grund: $sreason"
					return
				}
				utimer 2 { sbncmsg $sbnc(global,home) 1 "Connected zu $sbnc(ninfo) unter Nick $sbnc(nick) | Letzter Login: $sbnc(llogin) | Client ist $sbnc(isda)" }
			} else {
				sbncmsg $chan 1 "Kann $bnc nicht finden."
			}
		}
		admin {
			if {![matchattr $hand n]} { return }
			set ident [lindex [split $arg] 1]
			if {$ident == ""} {
				sbncmsg $chan 1 "Fehler. Benutz: $sbnc(global,trigger)sbnc admin Ident"
				return
			}
			if {[admin $ident] == "1"} {
				putquick "SBNC ADMIN $ident"
				sbncmsg $chan 1 "Done. $ident ist nun Admin."
				return
			} else {
				sbncmsg $chan 1 "Kann $ident nicht finden!"
			}
		}
		unadmin {
			if {![matchattr $hand n]} { return }
			set ident [lindex [split $arg] 1]
			if {$ident == ""} {
				sbncmsg $chan 1 "Fehler. Benutz: $sbnc(global,trigger)sbnc unadmin Ident"
				return
			}
			if {$ident == "$sbnc(botident)"} {
				sbncmsg $chan 1 "Haha. Du kannst meine Rechte nicht removen!"
				return
			}
			if {[unadmin $ident] == "1"} {
				putquick "SBNC UNADMIN $ident"
				sbncmsg $chan 1 "Done. $ident ist kein Admin mehr.."
				return
			} else {
				sbncmsg $chan 1 "Kann $ident nicht finden!"
			}
		}
		update {
			set ::sbnc(updatetimer) [utimer 5 [list sbncmsg $::sbnc(global,home) 1 "Keine neue Version des sBnc Scripts verfügbar."]]
			sbnc:autoupdate
			sbncmsg $::sbnc(global,home) 1 "Update gestartet - Bitte warten! :\)"
		}
		welcome {
			if {![matchattr $hand n]} { return }
			set funktion [lindex [split $arg] 1]
			switch -- $funktion {
				on {
					if {![channel get $sbnc(global,home) welcome]} {
						if {![onchan Q $sbnc(global,home)]} {
							sbncmsg $chan 1 "Fehler. Du kannst Welcome nicht aktivieren. Q benötigt."
							return
						}
						putquick "PRIVMSG Q :chanflags $sbnc(global,home) +w"
						channel set $sbnc(global,home) +welcome
						sbncmsg $chan 1 "Welcome Message ist nun aktiviert. Ich brauche +m bei Q!"
					} else {
						sbncmsg $chan 1 "Welcome Message ist bereits aktiviert."
						return
					}
				}
				off {
					if {[channel get $sbnc(global,home) welcome]} {
						putquick "PRIVMSG Q :chanflags $sbnc(global,home) -w"
						channel set $sbnc(global,home) -welcome
						sbncmsg $chan 1 "Welcome Message wurde deaktiviert.."
					} else {
						sbncmsg $chan 1 "Welcome Message ist bereits deaktiviert.."
						return
					}
				}
				set {
					if {![channel get $sbnc(global,home) welcome]} {
						sbncmsg $chan 1 "Sbnc Q welcome ist nicht aktiviert."
						return
					}
					putquick "PRIVMSG Q :chanflags $sbnc(global,home) +w"
					set free [expr {$sbnc(global,max) - [channel get $sbnc(global,home) bncs]}]
					putquick "PRIVMSG Q :welcome $sbnc(global,home) Es stehen noch $free Bouncer kostenlos zur Verfügung. Du willst einen kostenlosen Bouncer? Qry $sbnc(global,admin)"
					sbncmsg $chan 1 "Done."
				}
				default {
					if {[channel get $sbnc(global,home) welcome]} {
						set status aktiviert
					} else {
						set status deaktiviert
					}
					sbncmsg $chan 1 "Q welcome Message ist zur Zeit $status."
					sbncmsg $chan 1 "Benutze: $sbnc(global,trigger)sbnc welcome on/off | set."
				}
			}
		}
		topic {
			if {![matchattr $hand n]} { return }
			set funktion [lindex [split $arg] 1]
			switch -- $funktion {
				on {
					if {![channel get $sbnc(global,home) topic2]} {
						channel set $sbnc(global,home) +topic2
						channel set $sbnc(global,home) topic "topic $sbnc(global,home)"
						sbncmsg $chan 1 "Topic aktiviert. Das Topic wurde gespeichert."
					} else {
						sbncmsg $chan 1 "Topic ist bereits aktiviert."
						return
					}
				}
				off {
					if {[channel get $sbnc(global,home) topic2]} {
						channel set $sbnc(global,home) -topic2
						sbncmsg $chan 1 "Topic deaktiviert."
					} else {
						sbncmsg $chan 1 "Topic ist bereits deaktiviert."
						return
					}
				}
				q {
					if {![channel get $sbnc(global,home) topic2]} {
						sbncmsg $chan 1 "Du musst das Topic script erst aktivieren! ?sbnc topic on"
						return
					}
					if {![onchan Q $sbnc(global,home)]} {
						sbncmsg $chan 1 "Du brauchst Q für diese funktion."
						return
					}
					if {[lindex [split $arg] 2] == "on"} {
						if {[channel get $sbnc(global,home) topicq]} {
							sbncmsg $chan 1 "Das Topic wird bereits über Q gesetzt."
							return
						} else {
							channel set $sbnc(global,home) +topicq
							sbncmsg $chan 1 "Das Topic wird nun über Q gesetzt."
							return
						}
					}
					if {[lindex [split $arg] 2] == "off"} {
						if {![channel get $sbnc(global,home) topicq]} {
							sbncmsg $chan 1 "Das Topic wird bereits nicht über Q gesetzt.."
							return
						} else {
							channel set $sbnc(global,home) -topicq
							sbncmsg $chan 1 "Das Topic wird nun nichtmehr über Q gesetzt."
							return
						}
					}
				}
				save {
					if {![channel get $sbnc(global,home) topic2]} {
						sbncmsg $chan 1 "Das Topicscript ist nicht aktiviert."
						return
					}
					set topic [topic $sbnc(global,home)]
					if {![string match *:status:* $topic]} {
						sbncmsg $chan 1 "Im Topic muss :status: vorkommen!"
						return
					}
					channel set $sbnc(global,home) topic "$topic"
					sbncmsg $nick 1 "[channel get $sbnc(global,home) topic] wurde als Topic gespeichert."
					topic:set
				}
				set {
					set topic [lrange [split $arg] 2 end]
					putlog "$topic"
					if {[llength $topic] > 250} {
						sbncmsg $chan 1 "Das Topic darf nur max. 250 Buchstaben lang sein!"
						return
					}
					if {[llength $topic] < 10} {
						sbncmsg $chan 1 "Bitte gib mind. 10 Buchstaben ein."
						return
					}
					if {![string match *:status:* $topic]} {
						sbncmsg $chan 1 "Im Topic muss :status: vorkommen!"
						return
					}
					channel set $sbnc(global,home) topic "$topic"
					topic:set
					sbncmsg $chan 1 "Done."
				}
				default {
					if {[channel get $sbnc(global,home) topic2]} {
						set status aktiviert
					} else {
						set status deaktiviert
					}
					sbncmsg $chan 1 "Topic ist zur Zeit $status."
					if {$status == "aktiviert"} {
						sbncmsg $chan 1 "Gespeicherte Topic: [channel get $sbnc(global,home) topic]"
					}
					if {[channel get $sbnc(global,home) topicq]} {
						sbncmsg $chan 1 "Das Topic wird über Q gesetzt."
					} else {
						sbncmsg $chan 1 "Das Topic wird nicht über Q gesetzt."
					}
					sbncmsg $chan 1 "Benutze: $sbnc(global,trigger)sbnc topic on/off | set | save | q."
				}
			}
		}
		idlers {
			set d [lindex [split $arg] 1]
			if {$d == ""} { set d "3"}
			if {![isnumber $d]} { sbncmsg $chan 1 "Bitte gib eine valide Zahl ein!" ; return }
			putquick "PRIVMSG -sBNC :idlers $d"
			sbncmsg $chan 1 "Ich zeige nun die Bouncer an, die länger als $d Tage nicht genutzt worden sind."
			utimer 2 {
				sbncmsg $sbnc(global,home) 1 "Idle Bouncer sind: $sbnc(idlers)"
			}
		}
		list {
			foreach x [bnclist] {
				lappend ids $x
			}
			if {![info exists ids]} {
				sbncmsg $chan 1 "Kein Bouncer geadded."
				return
			}
			while {[llength $ids] > 0} {
				set p [lrange $ids 0 10]
				sbncmsg $nick 1 "\002Userlist:\002 [join $p ", "]"
				set ids [lreplace $ids 0 10]
			}

		}
		slist {
			foreach x [sbnclist] {
				lappend ids $x
			}
			if {![info exists ids]} {
				sbncmsg $nick 1 "Kein Bouncer suspended."
				return
			}
			while {[llength $ids] > 0} {
				set p [lrange $ids 0 10]
				sbncmsg $nick 1 "\002Suspended Userlist:\002 [join $p ", "]"
				set ids [lreplace $ids 0 10]
			}
		}
		kill {
			set ident [lindex [split $arg] 1]
			if {$ident == ""} { sbncmsg $chan 1 "Benutze: ?sbnc kill Ident"
				return
			}
			if {[bncexists $ident] == "1"} {
				putquick "SBNC KILL $ident"
				sbncmsg $chan 1 "Done. $ident wurde vom Bouncer disconnected."
				return
			} else {
				sbncmsg $chan 1 "Kann $ident nicht finden!"
			}
		}
		version {
			putquick "PRIVMSG $chan :\001ACTION benutzt sBNC-Admin-Control \(deutsch\) von $sbnc(author) - #BundesTrojaner - Version: $sbnc(version)"
		}
		adduser {
			if {![matchattr $hand n]} { return }
			set unick [lindex [split $arg] 1]
			if {$unick == ""} { putquick "NOTICE $nick :Nickname vergessen." ; return }
			if {[validuser $unick]} {
				sbncmsg $chan 1 "$unick ist bereits geadded."
				return
			}
			adduser $unick *![getchanhost $unick]
			chattr $unick -|S $chan
			sbncmsg $chan 1 "Done."
		}
		deluser {
			if {![matchattr $hand n]} { return }
			set unick [lindex [split $arg] 1]
			if {$unick == ""} { putquick "NOTICE $nick :Nickname vergessen." ; return }
			if {![validuser $unick]} {
				sbncmsg $chan 1 "$unick ist mir nicht bekannt."
				return
			}
			deluser $unick
			sbncmsg $chan 1 "Done."
		}
		ulist {
			if {![matchattr $hand n]} { return }
			sbncmsg $nick 1 "Userlist: [userlist -|S $chan]"
		}
		default {
			sbncmsg $chan 1 "$sbnc(global,trigger)sbnc check|simul|add|del|suspend|unsuspend|resetpass|global|iface|stats|lock|unlock|info|admin|unadmin|update|welcome|topic|idlers|list|slist|kill|version|adduser|deluser|ulist"
		}
	}
}

proc sbnc:qry {nickname hostname handle arguments} {
	global sbnc
	if {$nickname != "-sBNC"} { return }
	set user [lindex [split $arguments] 1]
	if {[isignore *!*@shroudbnc.info]} { killignore *!*@shroudbnc.info }
	if {[isignore *!*@shroudbnc.org]} { killignore *!*@shroudbnc.org }
	if {![validuser -sBNC]} { adduser -sBNC ; setuser -sBNC hosts "*!*@shroudbnc.info *!*@shroudbnc.org"  }
	if {![matchattr -sBNC f]} { chattr -sBNC f }
	if {[string match "*Status:*" "$arguments"]} { set sbnc(user) [lindex [split $arguments] 2] ; set sbnc(connected) [lindex [split $arguments] 5] ; set sbnc(qnet) [lindex [split $arguments] 8] ; set sbnc(admins) [lindex [split $arguments] 11]}
	if {[string match "*Infos:*" "$arguments"]} { set sbnc(ninfo) [lindex [split $arguments] 2] ; set sbnc(nick) [lindex [split $arguments] 3] ; set sbnc(isda) [lindex [split $arguments] 4] ; set sbnc(llogin) [lrange [split $arguments] 5 end]}
	if {[string match "*Idlers:*" "$arguments"]} { set sbnc(idlers) [lrange [split $arguments] 1 end] }
	if {[lindex [split $arguments] 3] == "on"} {
		if {$sbnc(admin,on) == "1"} {
			if {$sbnc(global,achan) == $sbnc(global,home)} {
				sbncmsg $sbnc(global,home) 1 "Du kannst den Internen Channel nicht als Homechannel benutzen!!!"
				return
			}
			putquick "PRIVMSG -sBNC :simul $user :privmsg $sbnc(global,achan) :\002 $user \002 hat sich eingeloggt!"
		}
	}
	if {[lindex [split $arguments] 3] == "off."} {
		if {$sbnc(admin,on) == "1"} {
			if {$sbnc(global,achan) == $sbnc(global,home)} {
				sbncmsg $sbnc(global,home) 1 "Du kannst den Internen Channel nicht als Homechannel benutzen!!!!"
				return
			}
			putquick "PRIVMSG -sBNC :simul $user :privmsg $sbnc(global,achan) :\002 $user \002 hat sich ausgeloggt!"
		}
	}
	if {[lindex [split $arguments] 1] == "removed:"} {
		if {$sbnc(admin,on) == "1"} {
			if {$sbnc(global,achan) == $sbnc(global,home)} {
				sbncmsg $sbnc(global,home) 1 "Du kannst den Internen Channel nicht als Homechannel benutzen!!!!"
				return
			}
			sbncmsg $sbnc(global,achan) 1 "\002 [lindex [split $arguments] 2] \002 wurde gelöscht und hat disconnected.!"
		}
	}
}

proc sbnc:timed { min hour day month year } {
	global sbnc
	if { $min == 30 } {
		putlog "Überprüfe nun, ob alle User in $sbnc(global,home) sind."
		putserv "PRIVMSG -SBNC :simulall JOIN $sbnc(global,home)"
	}
	if { $hour == "23" && $::sbnc(autoupdate) == "1"} {
		sbnc:autoupdate
	}
	if {[isignore *!*@shroudbnc.info]} { killignore *!*@shroudbnc.info }
	if { $min == 00 } {
		putlog "Überprüfe nun, ob alle User in $sbnc(global,home) sind."
		putserv "PRIVMSG -SBNC :simulall JOIN $sbnc(global,home)"
		if {![validchan $sbnc(global,home)]} {
			putlog "Fehler. $sbnc(global,home) ist kein valider Channel. Überprüf deine Settings!"
			die "Fehler. $sbnc(global,home) ist kein valider Channel. Ueberpruef deine Settings!"
			return
		}
		if {$sbnc(admin,on) == "1"} {
			if {[string match "*n*" "[getchanmode $sbnc(global,achan)]"]} {
				channel set $sbnc(global,achan) chanmode -n
				pushmode $sbnc(global,achan) -n
				sbncmsg $sbnc(global,achan) 1 "Brauche -n in diesem Channel! SbncScript by WindowsLive"
			}
		}
	}
}

proc topic:set { } {
	global sbnc
	if {![channel get $sbnc(global,home) topic2]} { return }
	set topic [channel get $sbnc(global,home) topic]
	set bncs [getbnc]
	set max $sbnc(global,max)
	set sbncstatus " $bncs/$max "
	regsub -all {:status:} $topic "$sbncstatus" topic
	if {[channel get $sbnc(global,home) topicq]} {
		putquick "PRIVMSG Q :settopic $sbnc(global,home) $topic"
		return
	}
	if {![isop $::botnick $sbnc(global,home)]} {
		sbncmsg $::sbnc(global,home) 1 "Ich habe kein OP und kann das Topic nicht setzen."
		return
	}
	putserv "TOPIC $sbnc(global,home) :$topic"
}

proc sbncmsg { chan queue msg } {
	if {$queue == "1"} {
		set queue "putquick"
	} elseif {$queue == "2"} {
		set queue "putserv"
	} else {
		set queue "puthelp"
	}
	if {![string match "#*" $chan]} {
		set action "notice"
	} else {
		set action "privmsg"
		set mode "[string match *c* [getchanmode $chan]]"
	}
	if {[info exists mode] && $mode == "1"} {
		$queue "$action $chan :\(sBNC\) $msg"
	} else {
		$queue "$action $chan :\002\(\002sBNC\002\)\002 $msg"
	}
}

proc sbnc:autoupdate { } {
	set size [file size "$::sbnc(dir)/sbnc.tcl"]
	catch { exec wget http://update.alexanderb.info/sbnc.tcl } unwichtig
	if {[file exists sbnc.tcl] && [file size "sbnc.tcl"] != $size && [file size "sbnc.tcl"] != "0"} {
		exec cp "sbnc.tcl" "$::sbnc(dir)/sbnc.tcl"
		exec rm sbnc.tcl
		rehash
		if {[info exists ::sbnc(updatetimer)]} {
			killutimer $::sbnc(updatetimer)
		}
		sbncmsg $::sbnc(global,home) 2 "Neue Version des sBNC Scripts heruntergeladen und erfolgreich aktualisiert."
		return 1
	}
	exec rm sbnc.tcl
	return 0
}

putlog "Sbncscript von $::sbnc(author) V$::sbnc(version) geladen"
This is the Error

Code: Select all

Tcl error [sbnc:timed]: can't read "::sbnc(dir)": no such element in array


Thanks a lot
User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

Post by Nor7on »

add in top
after:

Code: Select all

# > Procs
add:

Code: Select all

set sbnc(dir) "home/user/sbnc/scripts"
in "USER" change for ur user account.

after:

Code: Select all

proc sbnc:autoupdate { } {
add:

Code: Select all

global sbnc
and try it again.
F
Fraud
Op
Posts: 101
Joined: Mon May 19, 2008 7:57 am

Post by Fraud »

Works Perfekt.

Thanks
Post Reply