| View previous topic :: View next topic |
| Author |
Message |
starpossen Op
Joined: 10 Jan 2006 Posts: 139
|
Posted: Wed Jan 31, 2007 2:18 pm Post subject: Teamspeak v2.0 show in notice |
|
|
Hi, im using Teamspeak v2.0 and it works nicely, but I would like it to show the output of the public commands in a notic to the nick writing. the script is this:
| 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"]
######################################################################################
###############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 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 Written by DieSucker, cleaned up by MC_8, original code by Vitto"
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"
putserv "NOTICE $nick : Any bugs or comments send to diesucker@kc.rr.com"
}
##########TS Script Help END######################
putlog " TeamSpeak Info v2.0 By DieSucker/MC_8/Vitto loaded "
|
And yes the author has been contacted but no reply.
So if anyone could help me, I did try edit some of it but it didnt work, so the above code is the original. |
|
| Back to top |
|
 |
Sir_Fz Revered One

Joined: 27 Apr 2003 Posts: 3793 Location: Lebanon
|
Posted: Wed Jan 31, 2007 3:19 pm Post subject: |
|
|
| Code: | | puthelp "notice $nick :<message>" |
Add this line where ever you want to notice the nick (of course, edit the message). _________________ Follow me on GitHub
- Opposing
Public Tcl scripts |
|
| Back to top |
|
 |
starpossen Op
Joined: 10 Jan 2006 Posts: 139
|
Posted: Wed Jan 31, 2007 3:26 pm Post subject: |
|
|
I tried that, and the line I tried was this one:
| Code: |
if {$ts(lines2) == 0} {
putserv "PRIVMSG $ts(arg) :\0034,0There Are NO Users Connected to\0033,0 $ts(servername)($ts(ip):$ts(port))"
} else {
puthelp "notice $ts(arg) :\0034,0Current Users Connected to \0033,0$ts(servername)($ts(ip):$ts(port)): \0036,0($ts(lines2))\0031,0 $channeloutput"
}
}
|
I added notice instead of privmsg, but that nocticed everyone in the channel, and if I add $nick it wont return anything. |
|
| Back to top |
|
 |
starpossen Op
Joined: 10 Jan 2006 Posts: 139
|
Posted: Wed Jan 31, 2007 7:24 pm Post subject: |
|
|
Could it be something with:
set ts(arg) "$channel"
?
*EDIT* bah.. sorry, didnt mean to make a new post. |
|
| Back to top |
|
 |
Alchera Revered One

Joined: 11 Aug 2003 Posts: 3344 Location: Ballarat Victoria, Australia
|
Posted: Thu Feb 01, 2007 8:43 pm Post subject: |
|
|
| starpossen wrote: | Could it be something with:
set ts(arg) "$channel"
?
*EDIT* bah.. sorry, didnt mean to make a new post. |
| Quote: | | set ts(arg) "$channel" |
Is why it notices the entire channel.
You were already told to use:
| Code: | | puthelp "notice $nick :<message>" |
_________________ Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM |
|
| 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
|
|