4nt1h4cker Posted July 11, 2008 Share Posted July 11, 2008 (edited) Hey @ all I am currently try to code a Teamspeak Bot, so i search for a way to Send a Player a colored Message, but Teamspeak must be in the background. Oh my current code ^^ But there is nothing with Msg sending , only over telnet for now. CODE #include <Array.au3> #include <String.au3> ; ### INIT #### ;Bot $cnick = read ("Bot", "Name") $username = read ( "Bot", "Login") $userpw = read ( "Bot", "Passwort") global $pw = read ("Bot" , "PasswortfuerBot") ;SSA $loginname = read ( "SSA", "Login") $loginpw = read ( "SSA", "Passwort") ;Server $ip = read ( "Server", "ip") $serverport = read ( "Server" , "port") $port = int ( read ( "Server", "tcp") ) func read ( $section, $name) $v = IniRead ( "settings.ini", $section, $name, $name) return $v EndFunc ; ############## $ssasocket = telnet_login () $sasocket = telnet_login ( true ) $text = ControlGetText ( "TeamSpeak 2", "Connected as HQ BOT", "[CLASS:TRichEditWithLinks; INSTANCE:2]") while 1 $newtext = ControlGetText ( "TeamSpeak 2", "Connected as HQ BOT", "[CLASS:TRichEditWithLinks; INSTANCE:2]") if $text = $newtext then ContinueLoop Else $p = stringmid ( $newtext, stringlen ( $text )) $text = $newtext $avarray = StringSplit($p, @LF) for $i = 2 to _arraymax ( $avarray) -1 parse ( $avarray[$i] ) Next EndIf WEnd func parse ( $line ) $line = StringTrimRight ( $line , 1 ) $array = Stringsplit ( $line , " ") $arraymax = _arraymax ( $array ) ; Privat Message if isdef ( $array , 2 ) And $array[2] == "*priv*" Then $nick = _StringBetween ( $line , "*priv* ", ": ") $nick = $nick[0] $msg = stringmid ( $line, stringinstr( $line , ": ")+2) parse_private_message ( $nick, $msg) ;player joined ElseIf $array[$arraymax-1] = "joined" and $array[$arraymax] = "channel" Then $start = stringinstr ( $line , " ") $nick = stringmid ( $line , $start+1, stringlen ( $line ) - stringlen (" joined channel") - $start) ;play left ElseIf $array[$arraymax] = "quit" Then $start = stringinstr ( $line , " ") $nick = stringmid ( $line , $start+1, stringlen ( $line ) - stringlen (" quit") - $start) EndIf EndFunc ; MsgBox (0 , "Nickname", "[" & $nick & "]" ) ; + func parse_private_message ( $nick, $msg) if $nick = "" then Return ; Player kicked or banned if $nick = "SERVER" Then MsgBox (0 , "msg", "[" & $msg & "]" ) $match = StringRegExp ( $msg , 'Client "(.+?)" got kicked|banned from Server by', 1) $knick = $match[0] Return EndIf $array = StringSplit ( $msg , " ") switch stringlower($array[1]) case "help" $id = getplayerid ( $nick ) if $id > -1 Then $s = $ssasocket telnet_send ( $s, "msgu " & $id & "@ === Die Hilfe ===") sleep (10) telnet_send ( $s, "msgu " & $id & " @== Öffentliche Befehle ==") sleep (10) telnet_send ( $s, "msgu " & $id & " @version : Gibt die Version zurück") sleep (10) telnet_send ( $s, "msgu " & $id & " @thetime : Akktuelle Uhrzeit") sleep (10) telnet_send ( $s, "msgu " & $id & " @help : Hilfe") sleep (10) telnet_send ( $s, "msgu " & $id & " @ == Geschütze Befehle ==") sleep (10) telnet_send ( $s, "msgu " & $id & " @! Leerzeichen im Nick dürch einen _ ersetzen !") sleep (10) telnet_send ( $s, "msgu " & $id & " @login <Passwort> : Login") sleep (10) telnet_send ( $s, "msgu " & $id & " @same : Gibt dir SA") sleep (10) telnet_send ( $s, "msgu " & $id & " @sa <Nickanme> : Gibt dem User Server Admin") sleep (10) telnet_send( $s, "msgu " & $id & " @switch <Nickname> <Teil des Channelnamens> : Switch den Nick in einen Channel") sleep (10) telnet_send ( $s, "msgu " & $id & " @!Du darfst den Channelnamen nur so angeben das er keine Leerzeichen enthält, also zb stat Zocker Bude , Bude oder Zocker, und dürch einen _ ersetzen geht hier auch nicht!") sleep (10) telnet_send ( $s, "msgu " & $id & " @remove <Nickname> : Lässt den Spieler leaven") sleep (10) telnet_send ( $s, "msgu " & $id & " @ban <Nickname> [<Reason>] : Ban den Spieler (bald auch auf Zeit muttley") sleep (10) telnet_send ( $s, "msgu " & $id & " @kick <Nickname> [<Reason>] : Kickt den angebenen User") sleep (10) telnet_send ( $s, "msgu " & $id & " @quit : Schaltet den Bot ab") telnet_recv ( $ssasocket ) EndIf case "thetime" $id = getplayerid ( $nick ) if $id > -1 Then $msg = @MDAY & "." & @MON & "." & @YEAR & " "& @hour & ":" & @MIN & ":" & @SEC sendmsg ( $ssasocket, $id, $msg) EndIf case "version" $id = getplayerid ( $nick ) if $id > -1 Then sendmsg ( $ssasocket, $id, "Version 0.2 (Complete Rewite)") sendmsg ( $ssasocket, $id, "by 4nt1h4cker") EndIf case else $id = getplayerid ( $nick ) if $id > -1 Then sendmsg ( $ssasocket, $id, "Unbekannter Befehl, help für hilfe") EndIf EndSwitch EndFunc func sendmsg ( $socket ,$id, $msg ) telnet_send ( $socket , "msgu " & $id & " @" & $msg ) telnet_recv ( $socket ) EndFunc func isdef ( $array, $index ) if Not IsArray ( $array ) Then return False $u = UBound ( $array ) -1 if $index > $u Then return False Else return True EndIf EndFunc func getplayerid ($search) telnet_send ( $ssasocket, "pl" ) $recv = telnet_recv ($ssasocket) $split = stringsplit ( $recv, @CRLF ) $s = $search for $i = 3 to $split[0] -4 step 2 $split2 = stringsplit ( $split[$i] , @tab ) $nickname = stringmid ( $split2[15], 2 , stringlen ( $split2[15] ) -2 ) $id = $split2[1] if $nickname == $s then return $id Next return -1 EndFunc Func telnet_login ($b = False) if $b Then $tempname = $username $temppw = $userpw Else $tempname = $loginname $temppw = $loginpw EndIf TCPStartup () $socket = TCPConnect ( $ip , $port ) if $socket == - 1 Then msgbox (0, "Error", "Kann nich zum TS Server connecten" ) Exit EndIf telnet_recv ( $socket ) TCPSend ( $socket, "sel " & $serverport & @CRLF) telnet_recv ( $socket ) if $b Then TCPSend ( $socket, "login " & $tempname & " " & $temppw & @CRLF) Else TCPSend ( $socket, "slogin " & $tempname & " " & $temppw & @CRLF) EndIf telnet_recv ( $socket ) return $socket EndFunc func telnet_send ($socket, $str) sleep ( 100 ) TCPSend ( $socket, $str & @CRLF) EndFunc func telnet_recv ($socket) $recv = "" ;$timer = TimerInit () while stringcompare ( $recv , "" ) == 0 sleep ( 100 ) $recv &= TCPRecv ( $socket, 100000000 ) WEnd return $recv EndFunc Edited July 11, 2008 by 4nt1h4cker Link to comment Share on other sites More sharing options...
4nt1h4cker Posted July 11, 2008 Author Share Posted July 11, 2008 ? Pls help me. Link to comment Share on other sites More sharing options...
4nt1h4cker Posted July 14, 2008 Author Share Posted July 14, 2008 Mhm No Way? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now