| View previous topic :: View next topic |
| Author |
Message |
genti Voice
Joined: 30 Nov 2005 Posts: 7
|
Posted: Wed Nov 30, 2005 5:36 pm Post subject: [need help] TeamSpeak Info v2.0 |
|
|
Hi all! I've a problem with a script downloaded from egghelp.org.
If ther's no user on my ts server the script works fine, but with someone connected if I try to retrieve info about ts server, in the telnet window to the eggdrop i have this error:
"Tcl error [TS:control]: can't read "nik": no such variable"
in "ts.tcl" the only line with "TS:control" are:
-bash-2.05b$ cat ts.tcl |grep TS:control
control $sock TS:control
proc TS:control {sock input} {
can you help me?
thx a lot
(sorry for my english ) |
|
| Back to top |
|
 |
]Kami[ Owner

Joined: 24 Jul 2003 Posts: 590 Location: Slovenia
|
Posted: Wed Nov 30, 2005 6:10 pm Post subject: |
|
|
Copy whole script here and output of .tcl set errorInfo / .set errorInfo _________________ Slovene Eggdrop Page |
|
| Back to top |
|
 |
genti Voice
Joined: 30 Nov 2005 Posts: 7
|
Posted: Thu Dec 01, 2005 5:22 am Post subject: |
|
|
ts.tcl:
| Code: |
##################################################
# Teamspeak v2.0 #
# Author: PezCore aka DieSucker #
# Tested on Eggdrop v1.6.17 #
##################################################
# #
# #
# #
# This is a TCL Script designed to query a #
# TeamSpeak server and post the nick and their #
# time one the server into a channel. #
# 3/30/2005 v2.0 - Added channels list #
# Server info #
# cleaned up some outputs #
# 3/20/2005 v1.2 - Added multi-server support #
# 3/11/2005 v1.1 - Fixed The server time out #
# it now gives an error if the #
# server is offline or you #
# give a BAD IP/PORT. It will #
# take a minute for the it to #
# time-out #
# 2/23/2005 v1.0 - rewrote most of the script #
# 8/13/2004 v0.9 - Intial script by Vitto #
# Many THANKS goes to MC_8 #
# If you need me, #donuthole on irc.protium.org #
# or email me diesucker@kc.rr.com #
# #
# Things-To-Do: Maybe add an HTML setting #
# Also add/delete servers #
##################################################
array unset ts_server
# Configuration:
# Set here a list of TeamSpeak servers, and there information.
# Specify as many ts_server(<short_name>)'s as you need.
# Syntax:
# set ts_server(<short_name>) [list "<full name>" "<ip>" "<port>" "<tcpquery>"]
#set ts_server(TEST) [list "Servername" "127.2.0.0" "8767" "51234"]
set ts_server(mxb) [list "###" "#######" "8767" "51234"]
######################################################################################
###############Coding, Please don't edit below########################################
######################################################################################
unset -nocomplain Name
unset -nocomplain Value
foreach {Name Value} [array get ts_server] {
array unset ts_server $Name
array set ts_server [list [string tolower $Name] $Value]
}
unset -nocomplain Name
unset -nocomplain Value
#Public Binding
bind pub - !ts TS:start
bind pub - !tsc TS:channels
bind pub - !tsi TS:serverinfo
bind pub - !tsservers TS:servers
bind pub - !tshelp TS:help
proc TS:servers {nick uhost handle channel text} {
set list [array names ::ts_server]
if {![llength $list]} {
putserv "PRIVMSG $channel :\0034,0There are no TeamSpeak servers currently defined, sorry."
} else {
putserv "PRIVMSG $channel :\0034,0List of availble TeamSpeak servers:\0033,0 [join $list ", "]"
}
}
#######Grabbing Server Info#############
proc TS:serverinfo {nick uhost handle channel text} {
global ts
set text [string tolower $text]
if {$text == ""} {
putserv "PRIVMSG $channel :\0034,0Sorry, please specify a valid server selection. Use !tsservers to find supported servers"
return 0
}
if {[lsearch -exact [array names ::ts_server] $text] == "-1"} {
putserv "PRIVMSG $channel :\0034,0 Sorry, '$text' isn't a valid server selection. Please us !tsservers to find supported servers"
return 0
}
foreach {ts(servername) ts(ip) ts(port) ts(tcpquery)} $::ts_server($text) break
set sock [connect $ts(ip) $ts(tcpquery)]
close [open "scripts/tsserverinfo.txt" w]
close [open "scripts/tsserverinfo2.txt" w]
set ts(user:$sock) "" ; set ts(count:$sock) 0
set ts(chan:$sock) "" ; set ts(arg:$sock) "$channel"
set ts(arg) "$channel"
set ts(players:$sock) 0
set ts(last:$sock) ""
control $sock TS:servercontrol
}
proc TS:servercontrol {sock input} {
global ts
if {$input == ""} {
putserv "PRIVMSG $ts(arg) :\0034,0 The TeamSpeak Server has timed-out. Either The TeamSpeak server is offline or an Invalid IP
was specified"
return 1
}
if {$ts(last:$sock) == ""} {
if {$input == {[TS]}} {
putdcc $sock "sel $ts(port)"
set ts(last:$sock) sel
return 0
}
}
if {$ts(last:$sock) == "sel"} {
if {$input == "OK"} {
putdcc $sock "si"
set ts(last:$sock) si
return 0
}
}
if {$ts(last:$sock) == "si"} {
if {$input == "OK"} {
putdcc $sock "gi"
set ts(last:$sock) gi
return 0
}
set io2 [open "scripts/tsserverinfo.txt" a]
puts $io2 "$input"; close $io2; return 0
}
if {$ts(last:$sock) == "gi"} {
if {$input == "OK"} {
TS:serverend
return 1
}
set io3 [open "scripts/tsserverinfo2.txt" a]
puts $io3 "$input"
close $io3
return 0
}
return 0
}
proc TS:serverend {} {
global ts
set info [open "scripts/tsserverinfo.txt" r]
set info1 [read -nonewline $info]
close $info
set vers [open "scripts/tsserverinfo2.txt" r]
set vers1 [read -nonewline $vers]
close $vers
file delete -force -- "scripts/tsserverinfo.txt"
set vers2 [split $vers1 "\n"]
set vers3 [lindex $vers2 1]
set vers4 [split $vers3 "="]
set vers5 [lindex $vers4 1]
set info2 [split $info1 "\n"]
set name1 [lindex $info2 1]
set name2 [split $name1 "="]
set name3 [lindex $name2 1]
set welcome1 [lindex $info2 3]
set welcome2 [lindex [split $welcome1 "="] 1]
set max1 [lindex $info2 9]
set max2 [lindex [split $max1 "="] 1]
set plat [lindex $info2 2]
set plat2 [lindex [split $plat "="] 1]
set users [lindex $info2 28]
set users2 [lindex [split $users "="] 1]
set channs [lindex $info2 29]
set channs2 [lindex [split $channs "="] 1]
set uptime [lindex $info2 27]
set uptime2 [lindex [split $uptime "="] 1]
set uptime3 [duration $uptime2]
set uptime5 [split $uptime3 " "]
set uptime4 [llength $uptime5]
if {$uptime4 == "10"} {
set test14 "[lindex $uptime5 0]w[lindex $uptime5 2]d[lindex $uptime5 4]h[lindex $uptime5 6]m"
}
if {$uptime4 == "8"} {
set test14 "[lindex $uptime5 0]d[lindex $uptime5 2]h[lindex $uptime5 4]m"
}
if {$uptime4 == "6"} {
set test14 "[lindex $uptime5 0]h[lindex $uptime5 2]m"
}
if {$uptime4 == "4"} {
set test14 "0h[lindex $uptime5 0]m"
}
if {$uptime4 == "2"} {
set test14 "[lindex $uptime5 0]s"
}
putserv "PRIVMSG $ts(arg) :\0034,0Server Info For\0033,0 $ts(servername)($ts(ip):$ts(port)) :\0031,0 \002Name:\002 $name3 \002Welcome Message:\002 $welcome2 \002Max Users:\002 $max2 \002Platform:\002 $plat2 \002Current users:\002 $users2 \002 Total Channels:\002 $channs2 \002Uptime:\002 $test14 \002Version:\002 $vers5"
}
#################End Of Server Info################################
#################Server channels###################################
proc TS:channels {nick uhost handle channel text} {
global ts
if {$text == ""} {
putserv "PRIVMSG $channel :\0034,0Sorry, please specify a valid server selection. Use !tsservers to find supported servers"
return 0
}
set text [string tolower $text]
if {[lsearch -exact [array names ::ts_server] $text] == "-1"} {
putserv "PRIVMSG $channel :\0034,0Sorry, '$text' isn't a valid server selection. Use !tsservers to find supported servers"
return 0
}
foreach {ts(servername) ts(ip) ts(port) ts(tcpquery)} $::ts_server($text) break
set sock [connect $ts(ip) $ts(tcpquery)]
close [open "scripts/tschannels.txt" w]
set ts(user:$sock) "" ; set ts(count:$sock) 0
set ts(chan:$sock) "" ; set ts(arg:$sock) "$channel"
set ts(arg) "$channel"
set ts(players:$sock) 0
set ts(last:$sock) ""
control $sock TS:chancontrol
}
proc TS:chancontrol {sock input} {
global ts
if {$input == ""} {
putserv "PRIVMSG $ts(arg) :\0034,0 The TeamSpeak Server has timed-out. Either The TeamSpeak server is offline or an Invalid IP
was specified"
return 1
}
if {$ts(last:$sock) == ""} {
if {$input == {[TS]}} {
putdcc $sock "sel $ts(port)"
set ts(last:$sock) sel
return 0
}
}
if {$ts(last:$sock) == "sel"} {
if {$input == "OK"} {
putdcc $sock "cl"
set ts(last:$sock) cl
return 0
}
}
if {$ts(last:$sock) == "cl"} {
if {$input == "OK"} {
TS:chanend
return 1
}
set io [open "scripts/tschannels.txt" a]
puts $io "/ $input"
close $io
return 0
}
return 0
}
proc TS:chanend {} {
global ts
set ts(channels1) [open "scripts/tschannels.txt" r]
set ts(channels2) [read $ts(channels1)]
set ts(channels3) [split $ts(channels2) "\n"]
close $ts(channels1)
file delete -force -- "scripts/tschannels.txt"
set ts(channels3) [lreplace $ts(channels3) 0 0]
set ts(channels4) [llength $ts(channels3)]
set ts(channels4) [expr "$ts(channels4) - 1"]
set ts(ch1) [lindex $ts(channels3) 0]
set ts(ch2) [lindex [split $ts(ch1) \t] 5]
set ts(ch3) [lindex [split $ts(ch2) {"}] 1]
set ts(channelsoutput) ": $ts(ch3)"
set j 1
while {$j < $ts(channels4)} {
set ts(channels6) [lindex $ts(channels3) $j]
set ts(channels7) [lindex [split $ts(channels6) \t] 5]
set ts(channels8) [split $ts(channels7) {"}]
set ts(channels9) [lindex $ts(channels8) 1]
append ts(channelsoutput) ", " $ts(channels9)
incr j
}
putserv "PRIVMSG $ts(arg) :\0034,0 Channels on\0033,0 $ts(servername)($ts(ip):$ts(port)):\0036,0($ts(channels4))\0031,0$ts(channelsoutput)"
}
#############End of channels#####################
#############Users Connected#####################
proc TS:start {nick uhost handle channel text} {
global ts
set text [string tolower $text]
if {$text == ""} {
putserv "PRIVMSG $channel :\0034,0Sorry, please specify a valid server selection. Use !tsservers to find supported servers"
return 0
}
if {[lsearch -exact [array names ::ts_server] $text] == "-1"} {
putserv "PRIVMSG $channel :\0034,0Sorry, '$text' isn't a valid server selection. Use !tsservers to find supported servers"
return 0
}
foreach {ts(servername) ts(ip) ts(port) ts(tcpquery)} $::ts_server($text) break
set sock [connect $ts(ip) $ts(tcpquery)]
close [open "scripts/tstester.txt" w]
set ts(user:$sock) "" ; set ts(count:$sock) 0
set ts(chan:$sock) "" ; set ts(arg:$sock) "$channel"
set ts(arg) "$channel"
set ts(players:$sock) 0
set ts(last:$sock) ""
control $sock [b]TS:control
}
proc TS:control {sock input} {
global ts
if {$input == ""} {
putserv "PRIVMSG $ts(arg) :\0034,0 The TeamSpeak Server has timed-out. Either The TeamSpeak server is offline or an Invalid IP was specified"
return 1
}
if {$ts(last:$sock) == ""} {
if {$input == {[TS]}} {
putdcc $sock "sel $ts(port)"
set ts(last:$sock) sel
return 0
}
}
if {$ts(last:$sock) == "sel"} {
if {$input == "OK"} {
putdcc $sock "pl"
set ts(last:$sock) pl
return 0
}
}
if {$ts(last:$sock) == "pl"} {
if {$input == "OK"} {
TS:end
return 1
}
set io [open "scripts/tstester.txt" a]
puts $io "/ $input"; close $io; return 0
}
return 0
}
proc TS:end {} {
global ts
set ts(players2) "scripts/tstester.txt"
set ts(players3) [open $ts(players2) r]
set ts(playerdata) [read $ts(players3)]
set ts(plines) [split $ts(playerdata) "\n"]
close $ts(players3)
file delete -force -- "scripts/tstester.txt"
set ltd 0
set ts(plines) [lreplace $ts(plines) $ltd $ltd]
set i [open $ts(players2) w]
puts $i [join $ts(plines) ""]
close $i
set ts(nlines) [llength $ts(plines)]
set ts(lines2) [expr "$ts(nlines) - 1"]
set channeloutput [list ":"]
set i 0
while {$i < $ts(lines2)} {
set users2 [lindex $ts(plines) $i]
set users1 [regexp {\d\t(\d+?)\t[\d|\t]+?\t".+?"\t"(.+?)"\t"(.*?)"\t} [lindex $ts(plines) $i] {\1\2\3} input nik Name]
set test11 [duration [lindex [split $users2 \t] 8]]
set test12 [split $test11 " "]
set test13 [llength $test12]
if {$test13 == "10"} {
set test14 "([lindex $test12 0]w[lindex $test12 2]d[lindex $test12 4]h[lindex $test12 6]m)"
}
if {$test13 == "8"} {
set test14 "([lindex $test12 0]d[lindex $test12 2]h[lindex $test12 4]m)"
}
if {$test13 == "6"} {
set test14 "([lindex $test12 0]h[lindex $test12 2]m)"
}
if {$test13 == "4"} {
set test14 "(0h[lindex $test12 0]m)"
}
if {$test13 == "2"} {
set test14 "([lindex $test12 0]s)"
}
lappend channeloutput $nik $test14
incr i
}
if {$ts(lines2) == 0} {
putserv "PRIVMSG $ts(arg) :\0034,0There Are NO Users Connected to\0033,0 $ts(servername)($ts(ip):$ts(port))"
} else {
putserv "PRIVMSG $ts(arg) :\0034,0Current Users Connected to \0033,0$ts(servername)($ts(ip):$ts(port)): \0036,0($ts(lines2))\0031,0 $channeloutput"
}
}
###########End of Users Connected##############
###########TS Script Help######################
proc TS:help {nick uhost handle channel text} {
putserv "NOTICE $nick : TeamSpeak TCL v2.0 "
putserv "NOTICE $nick : Commands :"
putserv "NOTICE $nick : !ts (servername) - returns current users connected"
putserv "NOTICE $nick : !tsi (servername) - returns information for the given server"
putserv "NOTICE $nick : !tsc (servername) - returns channels from the server"
putserv "NOTICE $nick : !tsservers - returns list of supported servers"
}
##########TS Script Help END######################
putlog " TeamSpeak Info v2.0 "
|
The only error message is:
| Quote: | | "Tcl error [TS:control]: can't read "nik": no such variable" |
when i write in my channel !ts mxb, to know if someone is connected to the ts server. |
|
| Back to top |
|
 |
De Kus Revered One

Joined: 15 Dec 2002 Posts: 1361 Location: Germany
|
Posted: Thu Dec 01, 2005 10:40 am Post subject: |
|
|
obviously the regexp doesnt match the input string and therefor the var gets not created. you could use 'if $users1 {lappend...}' to prevent the TCL error to occur, however it won't display what it should until the regular expression or the source of the script is fixed. _________________ De Kus
StarZ|De_Kus, De_Kus or DeKus on IRC
Copyright © 2005-2009 by De Kus - published under The MIT License
Love hurts, love strengthens... |
|
| Back to top |
|
 |
Syntax1980 Voice
Joined: 13 Jun 2008 Posts: 2
|
Posted: Fri Jun 13, 2008 2:43 pm Post subject: |
|
|
Hello,
i have similar mistake !
| Code: | | Tcl error [TS:start]: invalid command name "b" |
my tcl with my data (Thanks for Help)
| Code: |
##################################################
# Teamspeak v2.0 #
# Author: PezCore aka DieSucker #
# Tested on Eggdrop v1.6.17 #
##################################################
# #
# #
# #
# This is a TCL Script designed to query a #
# TeamSpeak server and post the nick and their #
# time one the server into a channel. #
# 3/30/2005 v2.0 - Added channels list #
# Server info #
# cleaned up some outputs #
# 3/20/2005 v1.2 - Added multi-server support #
# 3/11/2005 v1.1 - Fixed The server time out #
# it now gives an error if the #
# server is offline or you #
# give a BAD IP/PORT. It will #
# take a minute for the it to #
# time-out #
# 2/23/2005 v1.0 - rewrote most of the script #
# 8/13/2004 v0.9 - Intial script by Vitto #
# Many THANKS goes to MC_8 #
# If you need me, #donuthole on irc.protium.org #
# or email me diesucker@kc.rr.com #
# #
# Things-To-Do: Maybe add an HTML setting #
# Also add/delete servers #
##################################################
array unset ts_server
# Configuration:
# Set here a list of TeamSpeak servers, and there information.
# Specify as many ts_server(<short_name>)'s as you need.
# Syntax:
# set ts_server(<short_name>) [list "<full name>" "<ip>" "<port>" "<tcpquery>"]
#set ts_server(TEST) [list "TCTS" "84.201.42.164" "12819" "32800"]
set ts_server(mxb) [list "TCTS" "84.201.42.164" "12819" "32800"]
######################################################################################
###############Coding, Please don't edit below########################################
######################################################################################
unset -nocomplain Name
unset -nocomplain Value
foreach {Name Value} [array get ts_server] {
array unset ts_server $Name
array set ts_server [list [string tolower $Name] $Value]
}
unset -nocomplain Name
unset -nocomplain Value
#Public Binding
bind pub - !ts TS:start
bind pub - !tsc TS:channels
bind pub - !tsi TS:serverinfo
bind pub - !tsservers TS:servers
bind pub - !tshelp TS:help
proc TS:servers {nick uhost handle channel text} {
set list [array names ::ts_server]
if {![llength $list]} {
putserv "PRIVMSG $channel :\0034,0There are no TeamSpeak servers currently defined, sorry."
} else {
putserv "PRIVMSG $channel :\0034,0List of availble TeamSpeak servers:\0033,0 [join $list ", "]"
}
}
#######Grabbing Server Info#############
proc TS:serverinfo {nick uhost handle channel text} {
global ts
set text [string tolower $text]
if {$text == ""} {
putserv "PRIVMSG $channel :\0034,0Sorry, please specify a valid server selection. Use !tsservers to find supported servers"
return 0
}
if {[lsearch -exact [array names ::ts_server] $text] == "-1"} {
putserv "PRIVMSG $channel :\0034,0 Sorry, '$text' isn't a valid server selection. Please us !tsservers to find supported servers"
return 0
}
foreach {ts(servername) ts(ip) ts(port) ts(tcpquery)} $::ts_server($text) break
set sock [connect $ts(ip) $ts(tcpquery)]
close [open "scripts/tsserverinfo.txt" w]
close [open "scripts/tsserverinfo2.txt" w]
set ts(user:$sock) "" ; set ts(count:$sock) 0
set ts(chan:$sock) "" ; set ts(arg:$sock) "$channel"
set ts(arg) "$channel"
set ts(players:$sock) 0
set ts(last:$sock) ""
control $sock TS:servercontrol
}
proc TS:servercontrol {sock input} {
global ts
if {$input == ""} {
putserv "PRIVMSG $ts(arg) :\0034,0 The TeamSpeak Server has timed-out. Either The TeamSpeak server is offline or an Invalid IP
was specified"
return 1
}
if {$ts(last:$sock) == ""} {
if {$input == {[TS]}} {
putdcc $sock "sel $ts(port)"
set ts(last:$sock) sel
return 0
}
}
if {$ts(last:$sock) == "sel"} {
if {$input == "OK"} {
putdcc $sock "si"
set ts(last:$sock) si
return 0
}
}
if {$ts(last:$sock) == "si"} {
if {$input == "OK"} {
putdcc $sock "gi"
set ts(last:$sock) gi
return 0
}
set io2 [open "scripts/tsserverinfo.txt" a]
puts $io2 "$input"; close $io2; return 0
}
if {$ts(last:$sock) == "gi"} {
if {$input == "OK"} {
TS:serverend
return 1
}
set io3 [open "scripts/tsserverinfo2.txt" a]
puts $io3 "$input"
close $io3
return 0
}
return 0
}
proc TS:serverend {} {
global ts
set info [open "scripts/tsserverinfo.txt" r]
set info1 [read -nonewline $info]
close $info
set vers [open "scripts/tsserverinfo2.txt" r]
set vers1 [read -nonewline $vers]
close $vers
file delete -force -- "scripts/tsserverinfo.txt"
set vers2 [split $vers1 "\n"]
set vers3 [lindex $vers2 1]
set vers4 [split $vers3 "="]
set vers5 [lindex $vers4 1]
set info2 [split $info1 "\n"]
set name1 [lindex $info2 1]
set name2 [split $name1 "="]
set name3 [lindex $name2 1]
set welcome1 [lindex $info2 3]
set welcome2 [lindex [split $welcome1 "="] 1]
set max1 [lindex $info2 9]
set max2 [lindex [split $max1 "="] 1]
set plat [lindex $info2 2]
set plat2 [lindex [split $plat "="] 1]
set users [lindex $info2 28]
set users2 [lindex [split $users "="] 1]
set channs [lindex $info2 29]
set channs2 [lindex [split $channs "="] 1]
set uptime [lindex $info2 27]
set uptime2 [lindex [split $uptime "="] 1]
set uptime3 [duration $uptime2]
set uptime5 [split $uptime3 " "]
set uptime4 [llength $uptime5]
if {$uptime4 == "10"} {
set test14 "[lindex $uptime5 0]w[lindex $uptime5 2]d[lindex $uptime5 4]h[lindex $uptime5 6]m"
}
if {$uptime4 == "8"} {
set test14 "[lindex $uptime5 0]d[lindex $uptime5 2]h[lindex $uptime5 4]m"
}
if {$uptime4 == "6"} {
set test14 "[lindex $uptime5 0]h[lindex $uptime5 2]m"
}
if {$uptime4 == "4"} {
set test14 "0h[lindex $uptime5 0]m"
}
if {$uptime4 == "2"} {
set test14 "[lindex $uptime5 0]s"
}
putserv "PRIVMSG $ts(arg) :\0034,0Server Info For\0033,0 $ts(servername)($ts(ip):$ts(port)) :\0031,0 \002Name:\002 $name3 \002Welcome Message:\002 $welcome2 \002Max Users:\002 $max2 \002Platform:\002 $plat2 \002Current users:\002 $users2 \002 Total Channels:\002 $channs2 \002Uptime:\002 $test14 \002Version:\002 $vers5"
}
#################End Of Server Info################################
#################Server channels###################################
proc TS:channels {nick uhost handle channel text} {
global ts
if {$text == ""} {
putserv "PRIVMSG $channel :\0034,0Sorry, please specify a valid server selection. Use !tsservers to find supported servers"
return 0
}
set text [string tolower $text]
if {[lsearch -exact [array names ::ts_server] $text] == "-1"} {
putserv "PRIVMSG $channel :\0034,0Sorry, '$text' isn't a valid server selection. Use !tsservers to find supported servers"
return 0
}
foreach {ts(servername) ts(ip) ts(port) ts(tcpquery)} $::ts_server($text) break
set sock [connect $ts(ip) $ts(tcpquery)]
close [open "scripts/tschannels.txt" w]
set ts(user:$sock) "" ; set ts(count:$sock) 0
set ts(chan:$sock) "" ; set ts(arg:$sock) "$channel"
set ts(arg) "$channel"
set ts(players:$sock) 0
set ts(last:$sock) ""
control $sock TS:chancontrol
}
proc TS:chancontrol {sock input} {
global ts
if {$input == ""} {
putserv "PRIVMSG $ts(arg) :\0034,0 The TeamSpeak Server has timed-out. Either The TeamSpeak server is offline or an Invalid IP
was specified"
return 1
}
if {$ts(last:$sock) == ""} {
if {$input == {[TS]}} {
putdcc $sock "sel $ts(port)"
set ts(last:$sock) sel
return 0
}
}
if {$ts(last:$sock) == "sel"} {
if {$input == "OK"} {
putdcc $sock "cl"
set ts(last:$sock) cl
return 0
}
}
if {$ts(last:$sock) == "cl"} {
if {$input == "OK"} {
TS:chanend
return 1
}
set io [open "scripts/tschannels.txt" a]
puts $io "/ $input"
close $io
return 0
}
return 0
}
proc TS:chanend {} {
global ts
set ts(channels1) [open "scripts/tschannels.txt" r]
set ts(channels2) [read $ts(channels1)]
set ts(channels3) [split $ts(channels2) "\n"]
close $ts(channels1)
file delete -force -- "scripts/tschannels.txt"
set ts(channels3) [lreplace $ts(channels3) 0 0]
set ts(channels4) [llength $ts(channels3)]
set ts(channels4) [expr "$ts(channels4) - 1"]
set ts(ch1) [lindex $ts(channels3) 0]
set ts(ch2) [lindex [split $ts(ch1) \t] 5]
set ts(ch3) [lindex [split $ts(ch2) {"}] 1]
set ts(channelsoutput) ": $ts(ch3)"
set j 1
while {$j < $ts(channels4)} {
set ts(channels6) [lindex $ts(channels3) $j]
set ts(channels7) [lindex [split $ts(channels6) \t] 5]
set ts(channels8) [split $ts(channels7) {"}]
set ts(channels9) [lindex $ts(channels8) 1]
append ts(channelsoutput) ", " $ts(channels9)
incr j
}
putserv "PRIVMSG $ts(arg) :\0034,0 Channels on\0033,0 $ts(servername)($ts(ip):$ts(port)):\0036,0($ts(channels4))\0031,0$ts(channelsoutput)"
}
#############End of channels#####################
#############Users Connected#####################
proc TS:start {nick uhost handle channel text} {
global ts
set text [string tolower $text]
if {$text == ""} {
putserv "PRIVMSG $channel :\0034,0Sorry, please specify a valid server selection. Use !tsservers to find supported servers"
return 0
}
if {[lsearch -exact [array names ::ts_server] $text] == "-1"} {
putserv "PRIVMSG $channel :\0034,0Sorry, '$text' isn't a valid server selection. Use !tsservers to find supported servers"
return 0
}
foreach {ts(servername) ts(ip) ts(port) ts(tcpquery)} $::ts_server($text) break
set sock [connect $ts(ip) $ts(tcpquery)]
close [open "scripts/tstester.txt" w]
set ts(user:$sock) "" ; set ts(count:$sock) 0
set ts(chan:$sock) "" ; set ts(arg:$sock) "$channel"
set ts(arg) "$channel"
set ts(players:$sock) 0
set ts(last:$sock) ""
control $sock [b]TS:control
}
proc TS:control {sock input} {
global ts
if {$input == ""} {
putserv "PRIVMSG $ts(arg) :\0034,0 The TeamSpeak Server has timed-out. Either The TeamSpeak server is offline or an Invalid IP was specified"
return 1
}
if {$ts(last:$sock) == ""} {
if {$input == {[TS]}} {
putdcc $sock "sel $ts(port)"
set ts(last:$sock) sel
return 0
}
}
if {$ts(last:$sock) == "sel"} {
if {$input == "OK"} {
putdcc $sock "pl"
set ts(last:$sock) pl
return 0
}
}
if {$ts(last:$sock) == "pl"} {
if {$input == "OK"} {
TS:end
return 1
}
set io [open "scripts/tstester.txt" a]
puts $io "/ $input"; close $io; return 0
}
return 0
}
proc TS:end {} {
global ts
set ts(players2) "scripts/tstester.txt"
set ts(players3) [open $ts(players2) r]
set ts(playerdata) [read $ts(players3)]
set ts(plines) [split $ts(playerdata) "\n"]
close $ts(players3)
file delete -force -- "scripts/tstester.txt"
set ltd 0
set ts(plines) [lreplace $ts(plines) $ltd $ltd]
set i [open $ts(players2) w]
puts $i [join $ts(plines) ""]
close $i
set ts(nlines) [llength $ts(plines)]
set ts(lines2) [expr "$ts(nlines) - 1"]
set channeloutput [list ":"]
set i 0
while {$i < $ts(lines2)} {
set users2 [lindex $ts(plines) $i]
set users1 [regexp {\d\t(\d+?)\t[\d|\t]+?\t".+?"\t"(.+?)"\t"(.*?)"\t} [lindex $ts(plines) $i] {\1\2\3} input nik Name]
set test11 [duration [lindex [split $users2 \t] 8]]
set test12 [split $test11 " "]
set test13 [llength $test12]
if {$test13 == "10"} {
set test14 "([lindex $test12 0]w[lindex $test12 2]d[lindex $test12 4]h[lindex $test12 6]m)"
}
if {$test13 == "8"} {
set test14 "([lindex $test12 0]d[lindex $test12 2]h[lindex $test12 4]m)"
}
if {$test13 == "6"} {
set test14 "([lindex $test12 0]h[lindex $test12 2]m)"
}
if {$test13 == "4"} {
set test14 "(0h[lindex $test12 0]m)"
}
if {$test13 == "2"} {
set test14 "([lindex $test12 0]s)"
}
lappend channeloutput $nik $test14
incr i
}
if {$ts(lines2) == 0} {
putserv "PRIVMSG $ts(arg) :\0034,0There Are NO Users Connected to\0033,0 $ts(servername)($ts(ip):$ts(port))"
} else {
putserv "PRIVMSG $ts(arg) :\0034,0Current Users Connected to \0033,0$ts(servername)($ts(ip):$ts(port)): \0036,0($ts(lines2))\0031,0 $channeloutput"
}
}
###########End of Users Connected##############
###########TS Script Help######################
proc TS:help {nick uhost handle channel text} {
putserv "NOTICE $nick : TeamSpeak TCL v2.0 "
putserv "NOTICE $nick : Commands :"
putserv "NOTICE $nick : !ts (servername) - returns current users connected"
putserv "NOTICE $nick : !tsi (servername) - returns information for the given server"
putserv "NOTICE $nick : !tsc (servername) - returns channels from the server"
putserv "NOTICE $nick : !tsservers - returns list of supported servers"
}
##########TS Script Help END######################
putlog " TeamSpeak Info v2.0 " |
|
|
| Back to top |
|
 |
speechles Revered One

Joined: 26 Aug 2006 Posts: 1398 Location: emerald triangle, california (coastal redwoods)
|
Posted: Fri Jun 13, 2008 2:56 pm Post subject: |
|
|
| Syntax1980 wrote: | Hello,
i have similar mistake !
| Code: | | Tcl error [TS:start]: invalid command name "b" |
my tcl with my data (Thanks for Help)
|
LMAO... it's php forum bbcode, that's supposed to make things bold (normally, but not within code tags). It's safe to remove the [b]..heh | Code: | #change
control $sock [b]TS:control
#into
control $sock TS:control |
_________________ speechles' eggdrop tcl archive |
|
| Back to top |
|
 |
Syntax1980 Voice
Joined: 13 Jun 2008 Posts: 2
|
Posted: Fri Jun 13, 2008 3:37 pm Post subject: |
|
|
Thanks,
I now have the error as above! How or what do I need to change so that it works my English is not so good
| Code: | | [21:31] Tcl-Fehler [TS:control]: can't read "nik": no such variable |
Problem..
line: 352 // | Code: | | set users1 [regexp {\d\t(\d+?)\t[\d|\t]+?\t".+?"\t"(.+?)"\t"(.*?)"\t} [lindex $ts(plines) $i] {\1\2\3} input nik Name] |
or
line 371/372/373
| Code: | lappend channeloutput $nik $test14
incr i
} |
I must rename nik in nick ?
THx |
|
| Back to top |
|
 |
speechles Revered One

Joined: 26 Aug 2006 Posts: 1398 Location: emerald triangle, california (coastal redwoods)
|
Posted: Fri Jun 13, 2008 3:53 pm Post subject: |
|
|
| Code: | | set users1 [regexp {\d\t(\d+?)\t[\d|\t]+?\t".+?"\t"(.+?)"\t"(.*?)"\t} [lindex $ts(plines) $i] {\1\2\3} input nik Name] |
This is your problem. Understanding how regexp works helps a bit. The regexp will compare it's pattern against $ts(plines). But not the entire contents of $ts(plines) only the lindex position represented by the variable $i.
If this lindex position matches the pattern within the regexp it will transpose these values into the variables input, nik, and name. If this regexp pattern is successful users1 will be set to 1 (which is stupid because this script never uses the users1 variable again). The values caught by the regexp patterns will be transposed to the variables.
If this regexp pattern fails users1 will be set to 0 (again for no reason). The values caught by the regexp patterns will not be transposed to the variables, if these variables existed prior to processing this regexp their values will remain what they were before. If these variables didn't exist prior to processing this regexp they shall not be created as well. | Code: | | [21:31] Tcl-Fehler [TS:control]: can't read "nik": no such variable |
Which is exactly why nik is not a variable, the regexp has failed and value transposition/variable creation did not take place...
To solve this requires doing as De Kus has already stated. Either fixing the source text which this script parses, or fixing this script to parse altered source text. _________________ speechles' eggdrop tcl archive |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|