Teamspeak Privat Message versenden

  • Ich versuche schoon seit einiger Zeit irgendwie im Hintergrund einem Spieler eine Message schicken, diese soll aber auf jeden Fall farbig sein (mann soll die Farbe ändern können).
    Leider geht das mit der TSRemote.dll und sonst fällt mir dazu auch nichts ein.
    Ich benutze den Code dann für meinen Teamspeak Bot, bis jetzt schick ich die Nachrichten über telnet.

    [autoit]

    #include <Array.au3>
    #include <String.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; ### INIT ####
    ;Bot
    $cnick = read ("Bot", "Name")
    $username = read ( "Bot", "Login")
    $userpw = read ( "Bot", "Passwort")
    global $pw = read ("Bot" , "PasswortfuerBot")

    [/autoit][autoit][/autoit][autoit]

    ;SSA

    [/autoit][autoit][/autoit][autoit]

    $loginname = read ( "SSA", "Login")
    $loginpw = read ( "SSA", "Passwort")

    [/autoit][autoit][/autoit][autoit]

    ;Server

    [/autoit][autoit][/autoit][autoit]

    $ip = read ( "Server", "ip")
    $serverport = read ( "Server" , "port")
    $port = int ( read ( "Server", "tcp") )

    [/autoit][autoit][/autoit][autoit]

    func read ( $section, $name)

    $v = IniRead ( "settings.ini", $section, $name, $name)
    return $v
    EndFunc
    ; ##############

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $ssasocket = telnet_login ()
    $sasocket = telnet_login ( true )

    [/autoit][autoit][/autoit][autoit]

    $text = ControlGetText ( "TeamSpeak 2", "Connected as HQ BOT", "[CLASS:TRichEditWithLinks; INSTANCE:2]")

    [/autoit][autoit][/autoit][autoit]

    while 1

    [/autoit][autoit][/autoit][autoit]


    $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

    [/autoit][autoit][/autoit][autoit]


    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit][autoit][/autoit][autoit]

    func parse ( $line )

    [/autoit][autoit][/autoit][autoit]

    $line = StringTrimRight ( $line , 1 )

    [/autoit][autoit][/autoit][autoit]

    $array = Stringsplit ( $line , " ")

    [/autoit][autoit][/autoit][autoit]

    $arraymax = _arraymax ( $array )

    [/autoit][autoit][/autoit][autoit]

    ; Privat Message
    if isdef ( $array , 2 ) And $array[2] == "*priv*" Then

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $nick = _StringBetween ( $line , "*priv* ", ": ")
    $nick = $nick[0]

    [/autoit][autoit][/autoit][autoit]

    $msg = stringmid ( $line, stringinstr( $line , ": ")+2)

    [/autoit][autoit][/autoit][autoit]

    parse_private_message ( $nick, $msg)

    [/autoit][autoit][/autoit][autoit]

    ;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

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; MsgBox (0 , "Nickname", "[" & $nick & "]" )
    ; +

    [/autoit][autoit][/autoit][autoit]

    func parse_private_message ( $nick, $msg)

    if $nick = "" then Return

    [/autoit][autoit][/autoit][autoit]

    ; Player kicked or banned
    if $nick = "SERVER" Then

    [/autoit][autoit][/autoit][autoit]

    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 & " [user='215866']login[/user] <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 ;)")
    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

    [/autoit][autoit][/autoit][autoit]

    sendmsg ( $ssasocket, $id, "Version 0.2 (Complete Rewite)")
    sendmsg ( $ssasocket, $id, "by 4nt1h4cker")

    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]


    case else


    $id = getplayerid ( $nick )

    if $id > -1 Then

    [/autoit][autoit][/autoit][autoit]

    sendmsg ( $ssasocket, $id, "Unbekannter Befehl, help für hilfe")

    EndIf

    EndSwitch

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func sendmsg ( $socket ,$id, $msg )

    telnet_send ( $socket , "msgu " & $id & " @" & $msg )

    telnet_recv ( $socket )
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    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]

    [/autoit][autoit][/autoit][autoit]

    if $nickname == $s then return $id
    Next

    [/autoit][autoit][/autoit][autoit]


    return -1

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    telnet_recv ( $socket )
    return $socket

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func telnet_send ($socket, $str)

    [/autoit][autoit][/autoit][autoit]

    sleep ( 100 )

    TCPSend ( $socket, $str & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func telnet_recv ($socket)

    [/autoit][autoit][/autoit][autoit]

    $recv = ""
    ;$timer = TimerInit ()
    while stringcompare ( $recv , "" ) == 0

    sleep ( 100 )

    $recv &= TCPRecv ( $socket, 100000000 )


    WEnd

    return $recv

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]