Chat Umschreiber Gesucht

  • Chat Umschreibung Suche jemanden Der mir das Umschreibt

    Also der Server Fuktioniert.
    Nur der CLient Mäckert.

    Für die die Zufaul sind es zu Downloaden (Ich) :P

    Spoiler anzeigen
    [autoit]


    ; include
    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <Array.au3>
    #include <GuiListView.au3>

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

    ; autoit options
    Opt("GUIOnEventMode", 1)

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

    ; ---------- CONSTANTS - DEFINITIONS -------------------------------------------

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

    ; protocol
    Global Const $USER_LIST = "USERLIST"
    Global Const $USER_JOIN = "USERJOIN"
    Global Const $USER_QUIT = "USERQUIT"
    Global Const $CHANGE_NICK = "CHNGNICK"
    Global Const $PUBLIC_MESSAGE = "PUBLMESG"
    Global Const $ME_MESSAGE = "MEMESSAG"
    Global Const $PRIVATE_MESSAGE = "PRIVMESG"
    Global Const $YOUR_NICK = "YOURNICK"
    Global Const $IMPORTANT = "IMPORTNT"
    Global Const $GIVE_NICK = "GIVENICK"
    Global Const $NICK_OKAY = "NICKOKAY"
    Global Const $NICK_ERROR = "NICKEROR"
    Global Const $PLAIN_MESSAGE = "PLAINMSG"
    Global Const $EOL = @LF

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

    ; print aliases
    Global Const $CHTNOTICE = 2
    Global Const $SYSNOTICE = 3

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

    ; config
    Global Const $CONFIG = "data\config.ini"
    Global Const $EMOTES_FILE = "data\emotes.txt"

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

    ; userlist
    Global $NickList[1]
    Global $ListItem[50][3] ; [item places][0: ctrl-id, 1: nickname, 2: ip]

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

    ; connection
    Global $IP = @IPAddress1
    Global $Port = 47295

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

    ; chat related
    Global $Buffer
    Global $Name
    Global $Line = False
    Global $LineSet = False

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

    ; debug
    ; Global $Timer = TimerInit() ; ###### DEBUG

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

    ; ---------- *.INI -------------------------------------------------------------

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

    If FileExists($CONFIG) Then
    $IP = IniRead($CONFIG, "connection", "host", @IPAddress1)
    $State = IniRead($CONFIG, "gui", "maximize", "no")
    $Trans = IniRead($CONFIG, "gui", "transparency", 100)
    $s_where = IniRead($CONFIG, "gui", "lines", "beforeend")
    If Not StringRegExp($s_where, "\A(beforeend|afterbegin)\z") Then $s_where = "beforeend"
    $Name = IniRead($CONFIG, "user", "nickname", "")
    Else
    IniWrite($CONFIG, "connection", "host", $IP)
    IniWrite($CONFIG, "gui", "maximize", "no")
    $State = "no"
    IniWrite($CONFIG, "gui", "transparency", 100)
    $Trans = 100
    IniWrite($CONFIG, "gui", "lines", "beforeend")
    $s_where = "beforeend"
    $Tmp = InputBox("AuChat", "Wie willst du heißen?" & @LF & @LF & "(Später mit /nick änderbar, siehe /help im Chat.)")
    If Not @error And $Tmp <> "" Then
    IniWrite($CONFIG, "user", "nickname", $Tmp)
    $Name = $Tmp
    EndIf
    EndIf

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

    ; ---------- DEBUG -------------------------------------------------------------

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

    #cs
    HotKeySet("{F9}", "debug") ; ## DEBUG
    Func debug()
    FileWrite("Log.txt", $oIE.document.documentElement.outerHTML)
    ShellExecute("Log.txt")
    Sleep(250)
    FileDelete("Log.txt")
    EndFunc
    #ce

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

    ; ---------- GUI ---------------------------------------------------------------

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

    $GUI = GuiCreate("AuChat", 700, 500, -1, -1)
    GUISetFont(10, -1, 0, "Tahoma")
    GUISetBkColor(0xFFFFFF)
    $oIE = _IECreateEmbedded()
    GUICtrlCreateObj($oIE, 0, 0, 470, 473)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    $Listview = GUICtrlCreateListView("Nick|IP", 470, 0, 230, 473, BitAND($GUI_SS_DEFAULT_LISTVIEW, BitNOT($LVS_SHOWSELALWAYS)), $LVS_EX_CHECKBOXES + $LVS_EX_FULLROWSELECT)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH)
    ; GUICtrlSetFont(-1, 10, 700, 0, "Verdana")
    $Input = GuiCtrlCreateInput("", 0, 473, 700, 27)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GuiCtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetFont(-1, 13 + 0.5, -1, 0, "Arial") ; 13 pt
    GUICtrlSetColor(-1, 0x333333)
    GUICtrlSetBkColor(-1, 0xFFFFFF)

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

    ; events and messages
    GUISetOnEvent($GUI_EVENT_CLOSE, "gui_event")
    GUISetOnEvent($GUI_EVENT_RESIZED, "gui_event")
    GUISetOnEvent($GUI_EVENT_RESTORE, "gui_event")
    GUIRegisterMsg($WM_COMMAND, "gui_msg")

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

    Func gui_event()
    Switch @GUI_CTRLID
    Case $GUI_EVENT_CLOSE
    Exit 0
    Case $GUI_EVENT_RESIZED, $GUI_EVENT_RESTORE
    scroll()
    EndSwitch
    EndFunc

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

    Func gui_msg($hWnd, $Msg, $wParam, $lParam)
    Switch 1
    Case BitAnd($wParam, 0x0000FFFF)
    Submit()
    GUICtrlSetState($Input, $GUI_FOCUS)
    EndSwitch
    EndFunc

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

    _IENavigate($oIE, "file:///" & StringReplace(@ScriptDir, "\", "/") & "/data/body.html")

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

    If $Trans <> 100 Then WinSetTrans($GUI, "", Round(255 / 100 * $Trans))

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

    GuiSetState()

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

    If $State = "yes" Then GuiSetState(@SW_MAXIMIZE)

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

    ; ---------- START -------------------------------------------------------------

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

    TCPStartup()

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

    GUICtrlSetData($Input, "Verbinde...")

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

    print("Versuche zur IP °b" & $IP & "°b zu verbinden, bitte warten...", $SYSNOTICE)

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

    $Socket = TCPConnect($IP, $Port)
    If $Socket <> -1 Then
    GUICtrlSetData($Input, "")
    GUICtrlSetState($Input, $GUI_ENABLE + $GUI_FOCUS)
    print("°bVerbindung°b zum Chat-Server °bhergestellt°b.", $SYSNOTICE)
    ElseIf @error = 1 Then
    print("Die Verbindung konnte nicht aufgebaut werden weil die IP falsch ist!", $SYSNOTICE)
    GUICtrlSetState($Input, $GUI_DISABLE)
    GUICtrlSetData($Input, "Keine Verbindung")
    Stop()
    Else ; wrong port or other errors
    print("Chat-Server derzeit °bnicht erreichbar°b!", $SYSNOTICE)
    GUICtrlSetState($Input, $GUI_DISABLE)
    GUICtrlSetData($Input, "Keine Verbindung")
    Stop()
    EndIf

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

    ; ----- read emotes in definition file

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

    If FileExists($EMOTES_FILE) Then
    Global $emotes[1]
    $handle = FileOpen($EMOTES_FILE, 0)
    While 1
    $read = FileReadLine($handle)
    If @error = -1 Then ExitLoop
    $read = StringStripWS($read, 3)
    If StringLeft($read, 2) = "//" Or $read = "" Then ContinueLoop ; comment in file
    _ArrayAdd($emotes, $read)
    ; MsgBox(0, "", $read) ; debug
    WEnd
    FileClose($handle)
    Else
    MsgBox(0, "AuChat", "Hinweis: Datei " & $EMOTES_FILE & " fehlt.") ; debug, muss später besser umgesetzt werden
    EndIf

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

    ; ---------- WHILE -------------------------------------------------------------

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

    While 1
    ; Pakete empfangen
    $sRecv = TCPRecv($Socket, 2048)
    If $sRecv <> "" Then
    PaketBuffer($sRecv)
    ElseIf @error Then
    PaketReadAll($Buffer) ; alle übrigen pakete noch verarbeiten
    print("°bVerbindung°b zum Chat-Server °bverloren°b!", $SYSNOTICE)
    TCPCloseSocket($Socket)
    Stop()
    EndIf

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

    ; Pakete verarbeiten
    PaketReadAll($Buffer)

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

    ; Abwesenheitslinie
    If WinActive($GUI) Then
    If $LineSet Then
    $Line = False
    $LineSet = False
    EndIf
    Else
    If Not $LineSet Then
    $Line = True
    $LineSet = True
    EndIf
    EndIf
    WEnd

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

    ; ---------- FUNCTIONS ---------------------------------------------------------

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

    Func print($sHTML, $Format = 1, $Code = 1)
    If $Code Then $sHTML = code2html($sHTML) ; important
    #cs
    Formatierungen:
    0: blank string
    1: normal line
    2: chat notice
    3: system notice
    4: important server notice
    5: /me
    #ce
    Switch $Format
    Case 1
    $sHTML = '<p>' & $sHTML & '</p>'
    Case 2
    $sHTML = '<p class="chat">' & $sHTML & '</p>'
    Case 3
    $sHTML = '<p class="system">' & $sHTML & '</p>'
    Case 4
    $sHTML = '<p class="important">' & $sHTML & '</p>'
    Case 5
    $sHTML = '<p class="me">' & $sHTML & '</p>'
    EndSwitch

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

    If $Line Then
    ; ----- alte linien löschen damit immer nur eine vorhanden ist
    ;$div = _IEGetObjByName($oIE, "line") ; funzt nicht.. vielleicht weil lines generiert und nicht im echten quellcode sind
    ; $div = _IETagNameGetCollection($oIE, "div") ; ist fricklig weil ALLE div gelöscht werden würden
    #cs
    If IsArray($div) Then ; #### DEBUG
    _ArrayDisplay($div)
    Else
    MsgBox(0, "", $div)
    EndIf
    #ce
    ; <<<<<<<<funzt alles nicht weil code generiert ist und nicht real existiert>>>>>>
    ;For $i = 0 To UBound($div)-1
    ; _IEAction($div[$i], "delete") ; funzt nicht
    ; _IEPropertySet($div[$i], "visible", 0) ; falls das erste nicht funzen sollte
    ;Next
    ; ----- neue linie adden
    $sHTML = '<div class="line"></div>' & $sHTML
    $Line = False
    EndIf

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

    ; $sHTML &= "] " & Round(TimerDiff($Timer), 1) ; ##### DEBUG

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

    $oBody = _IETagNameGetCollection($oIE, "body", 0)
    _IEDocInsertHTML($oBody, $sHTML, $s_where)
    scroll()
    ; MsgBox(0, "print", $sHTML) ; ##### DEBUG
    EndFunc

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

    Func scroll()
    $iDocHeight = $oIE.document.body.scrollHeight
    $oIE.document.parentWindow.scrollTo(0, $iDocHeight)
    EndFunc

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

    Func htmlmask($str)
    $str = StringReplace($str, "&", "&amp;")
    $str = StringReplace($str, "<", "&lt;")
    $str = StringReplace($str, ">", "&gt;")
    $str = StringReplace($str, '"', "&quot;")
    Return StringReplace($str, Chr(32) & Chr(32), Chr(32) & "&nbsp;")
    EndFunc

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

    ; ----- INTERPRETERS

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

    Func code2html($ret)
    ; uri
    $ret = StringRegExpReplace($ret, "(https?://.+?\.+.+?)([^\-/a-zA-Z0-9.?=&;_+#]{1}|\z)", '<a href="\1" target="_blank">\1</a>\2')

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

    ; emotes
    Local $count = 0
    If IsDeclared("emotes") Then
    For $i = 1 To UBound($emotes)-1
    $ret = StringReplace($ret, "°" & StringTrimRight($emotes[$i], 4), emote($emotes[$i]), 1)
    If @extended > 0 Then $count += 1 ; wenn smiley gefunden
    If $count > 5 Then ExitLoop
    Next
    For $i = 1 To UBound($emotes)-1 ; restliche zu "text" ersetzen
    $ret = StringReplace($ret, "°" & StringTrimRight($emotes[$i], 4), "*" & StringTrimRight($emotes[$i], 4) & "*")
    Next
    EndIf

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

    ; breakers
    $ret = StringReplace($ret, "°br", '<br><span class="br">........</span>')
    $ret = StringReplace($ret, "°nl", "<br>")

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

    ; colors
    $ret = StringRegExpReplace($ret, "°red(.*?)°red", '<span class="r">\1</span>')
    $ret = StringRegExpReplace($ret, "°green(.*?)°green", '<span class="g">\1</span>')
    $ret = StringRegExpReplace($ret, "°blue(.*?)°blue", '<span class="b">\1</span>')

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

    $ret = StringRegExpReplace($ret, "°red(.*)", '<span class="r">\1</span>')
    $ret = StringRegExpReplace($ret, "°green(.*)", '<span class="g">\1</span>')
    $ret = StringRegExpReplace($ret, "°blue(.*)", '<span class="b">\1</span>')

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

    ; inline
    $ret = StringRegExpReplace($ret, "°b(.*?)°b", "<b>\1</b>")
    $ret = StringRegExpReplace($ret, "°i(.*?)°i", "<i>\1</i>")

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

    $ret = StringRegExpReplace($ret, "°b(.*)", "<b>\1</b>")
    $ret = StringRegExpReplace($ret, "°i(.*)", "<i>\1</i>")

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

    Return $ret
    EndFunc

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

    Func emote($sFileName)
    Return '<img src="file:///' & StringReplace(@ScriptDir, "\", "/") & '/data/img/emotes/' & $sFileName & '"><img class="spacer" src="file:///' & StringReplace(@ScriptDir, "\", "/") & '/data/img/spacer.gif">'
    EndFunc

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

    ; ----- PACKETS

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

    Func PaketBuffer($Paket)
    $Buffer &= $Paket ; Paket in das Buffer vom User packen
    If StringLen($Buffer) > 10000 Then ; sollte zwar nicht passieren aber sicher ist sicher...
    GUICtrlSetState($TabSyst, $GUI_SHOW)
    print("Es ist ein °bFehler°b im Chat-Server aufgetreten.", $SYSNOTICE)
    print("Ich bitte Sie, den Inhaber des Chats zu informieren.", $SYSNOTICE)
    TCPCloseSocket($Socket)
    Stop()
    EndIf
    EndFunc

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

    Func PaketBufferTrim($s)
    $Pos = StringInStr($s, $EOL) ; Position vom ersten NL ausgeben
    If $Pos Then
    $Paket = StringLeft($s, $Pos) ; Paket auslesen
    $Buffer = StringTrimLeft($s, $Pos) ; Paket aus dem globalen Buffer rausschneiden
    Return StringReplace($Paket, @CR & $EOL, "") ; paket ohne NL returnen
    Else
    Return 0 ; kein paket oder kein vollständiges im buffer
    EndIf
    EndFunc

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

    #cs
    Func PaketReadAll($s)
    While 1
    $Paket = PaketBufferTrim($s)
    If $Paket Then
    PaketRead($Paket) ; Paket verarbeiten
    Else
    ExitLoop ; alle übrigen pakete verarbeitet
    EndIf
    WEnd
    EndFunc
    #ce

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

    Func PaketReadAll($str)
    Do
    $sPacket = PaketBufferTrim($str)
    If $sPacket Then PaketRead($sPacket)
    Until $sPacket = 0
    EndFunc

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

    Func PaketRead($Paket)
    ; $Paket = htmlmask($Paket) ; important ; wird jetzt direkt in den paket formaten gemacht
    ; print("Server: " & $Paket, 1, 0) ; ##### DEBUG
    $Type = StringLeft($Paket, 8) ; type auslesen ['TYPE' blabla]
    $Paket = StringTrimLeft($Paket, 9) ; type aus paket rausschneiden ['TYPE 'blabla]
    Switch $Type

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

    Case $PUBLIC_MESSAGE
    $Paket = htmlmask($Paket) ; important
    $Paket = StringReplace($Paket, ": ", Chr(31), 1)
    $Split = StringSplit($Paket, Chr(31))
    If StringRegExp($Split[2], "(?i)(?:\h|\A)+(" & $Name & "[a-z]*)") Then ; And $Split[1] <> $Name Then
    $Split[2] = StringRegExpReplace($Split[2], "(?i)(?:\h|\A)+(" & $Name & "[a-z]*)", "°b\0°b")
    EndIf
    print('<b class="nick">' & $Split[1] & ":</b> " & $Split[2])

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

    Case $ME_MESSAGE
    $Paket = htmlmask($Paket) ; important
    print($Paket, 5)

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

    Case $USER_JOIN
    $Split = StringSplit($Paket, " ")
    print("» " & $Split[1] & " (" & $Split[2] & ") betritt den Chat um " & Abs(@HOUR) & ":" & @MIN & " Uhr.", $CHTNOTICE)
    UsrLstAdd($Split[1] & "|" & $Split[2])

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

    Case $USER_QUIT
    $Split = StringSplit($Paket, " ")
    print("« " & $Split[1] & " (" & $Split[2] & ") verlässt den Chat um " & Abs(@HOUR) & ":" & @MIN & " Uhr.", $CHTNOTICE)
    UsrLstDel($Split[1] & "|" & $Split[2])

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

    Case $CHANGE_NICK
    $Paket = StringReplace($Paket, " -> ", Chr(31), 1)
    $Split = StringSplit($Paket, Chr(31))
    print("» " & $Split[1] & " heißt jetzt " & $Split[2], $CHTNOTICE)
    For $search = 1 To UBound($ListItem) - 1
    If $ListItem[$search][1] = $Split[1] Then
    $_IP = $ListItem[$search][2]
    ExitLoop
    EndIf
    Next
    UsrLstEdit($Split[1] & "|" & $_IP, $Split[2] & "|" & $_IP)

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

    Case $YOUR_NICK
    $Name = $Paket
    WinSetTitle($GUI, "", WinGetTitle($GUI) & " - " & $Name)
    IniWrite($CONFIG, "user", "nickname", $Name) ; nick in config schreiben
    print("Dein Nick wurde vom Chat-Server auf " & $Paket & " gesetzt.", $SYSNOTICE) ; hmm...

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

    Case $USER_LIST
    UsrLstAddEx(StringRegExp($Paket, "([^, ].*?) +(?:\[)(.*?)(?:\])", 3))

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

    Case $PRIVATE_MESSAGE
    $Paket = htmlmask($Paket) ; important
    $Paket = StringReplace($Paket, ": ", Chr(31), 1)
    $Nicks_Data = StringSplit($Paket, Chr(31))

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

    $Nicks_Data[1] = StringReplace($Nicks_Data[1], " -&gt; ", Chr(31), 1)
    $Quelle_Ziel = StringSplit($Nicks_Data[1], Chr(31))
    If $Quelle_Ziel[0] < 2 Then ; wenn es nur ein ziel gibt (PRIVMSG nick: text)
    ReDim $Quelle_Ziel[3]
    $Quelle_Ziel[2] = "Dich"
    EndIf
    Switch $Quelle_Ziel[1]
    Case "Du" ; Nachricht für Versender
    print('<b class="priv">' & $Name & " (Privat an " & $Quelle_Ziel[2] & "):</b> " & $Nicks_Data[2])
    Case Else ; Nachricht für Empfänger
    print('<b class="priv">' & $Quelle_Ziel[1] & " (Privat an " & $Quelle_Ziel[2] & "):</b> " & $Nicks_Data[2])
    If Not WinActive($GUI) Then WinFlash($GUI)
    EndSwitch

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

    Case $IMPORTANT
    print($Paket, 4)

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

    Case $GIVE_NICK
    If $Name <> "" Then PaketSend($Socket, "/nick " & $Name)

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

    Case $NICK_OKAY
    $str = StringRegExp($Paket, "'(.*)'", 3)
    $Name = $str[0]
    WinSetTitle($GUI, "", WinGetTitle($GUI) & " - " & $Name)
    IniWrite($CONFIG, "user", "nickname", $Name) ; nick in config schreiben

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

    Case $NICK_ERROR
    print("Fehler beim Einloggen oder übergeben des Nicks: " & $Paket & " Bitte senden sie einen neuen Nick oder loggen sich ein.", $SYSNOTICE)

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

    Case $PLAIN_MESSAGE
    print($Paket, 0, 0)

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

    Case Else
    print("Es wurde gerade eine nicht interpretierbare Nachricht vom Chat-Server empfangen. Bitte stellen sie sicher, dass sie die neuste Version des Chat-Programms verwenden und das ihre Internetverbindung fehlerfrei funktioniert.", $SYSNOTICE)

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

    EndSwitch
    EndFunc

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

    ; ----- MISC

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

    Func Stop()
    ; GUICtrlSetState($Input, $GUI_DISABLE)
    ; GUICtrlSetData($Input, "Keine Verbindung")
    While 1
    Sleep(1) ; idle
    WEnd
    EndFunc

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

    ; ----- SEND

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

    Func Submit()
    $sRead = GUICtrlRead($Input)
    GUICtrlSetData($Input, "")
    $sRead = StringStripWS($sRead, 3)
    If $sRead = "" Then Return 0
    Switch 1
    Case StringInStr($sRead, "/a")
    $sRead = StringTrimLeft($sRead, 2)
    $sRead = StringStripWS($sRead, 3)
    PaketSend($Socket, $sRead)
    Return 1
    Case StringInStr($sRead, "/clear")
    _IEAction($oIE, "refresh")
    Return 1
    Case StringInStr($sRead, "/trans")
    $sRead = StringTrimLeft($sRead, 6)
    $sRead = StringStripWS($sRead, 3)
    If $sRead < 10 Then $sRead = 10
    If $sRead > 100 Then $sRead = 100
    WinSetTrans($GUI, "", Round(255 / 100 * $sRead))
    Return 1
    EndSwitch
    $To = ""
    For $Loop = 1 To UBound($ListItem) - 1
    If $ListItem[$Loop][0] = "" Then ContinueLoop ; index ist nicht in benutzung... skip
    If _GUICtrlListView_GetItemChecked($Listview, $Loop - 1) Then $To &= $ListItem[$Loop][1] & ", "
    Next
    If $To <> "" And StringLeft($sRead, 1) <> "/" Then $sRead = "/p " & StringTrimRight($To, 2) & ": " & $sRead
    PaketSend($Socket, $sRead)
    Return 1
    EndFunc ;==>_Submit

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

    Func PaketSend($i, $s)
    TCPSend($i, $s & $EOL)
    If @error Then print("Fehler beim Versenden einer Nachricht: " & $s, $SYSNOTICE)
    ; $Timer = TimerInit() ; ###### DEBUG
    ; print("Client: " & $s, 1, 0) ; ##### DEBUG
    EndFunc

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

    ; ----- USERLIST

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

    Func UsrLstAdd($usr)
    $search = _ArraySearch($NickList, $usr)
    If @error Then
    _ArrayAdd($NickList, $usr)
    UsrLstRefresh()
    Else
    print("DEBUG: Benutzer " & $usr & " hat den Chat betreten und steht schon auf der Benutzerliste. Der selbe Benutzer wurde nicht noch einmal hinzugefügt.", $SYSNOTICE)
    EndIf
    ;_ArrayAdd($NickList, $usr)
    ;UsrLstRefresh()
    EndFunc

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

    Func UsrLstAddEx($Array)
    For $Loop = 0 To UBound($Array)-1 Step 2
    _ArrayAdd($NickList, $Array[$Loop] & "|" & $Array[$Loop+1])
    Next
    UsrLstRefresh()
    EndFunc

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

    Func UsrLstEdit($usr, $newuser)
    $search = _ArraySearch($NickList, $usr)
    If Not @error Then
    $NickList[$search] = $newuser
    UsrLstRefresh()
    Else
    UsrLstAdd($newuser)
    print("DEBUG: Unbekannter Benutzer " & $usr & " hat sich zu " & $newuser & " umbenannt. Nick wurde zur Benutzerliste hinzugefügt.", $SYSNOTICE)
    EndIf
    EndFunc

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

    Func UsrLstDel($usr)
    $search = _ArraySearch($NickList, $usr)
    If Not @error Then
    _ArrayDelete($NickList, $search)
    UsrLstRefresh()
    Else
    print("DEBUG: Unbekannter Benutzer " & $usr & " hat sich ausgeloggt aber stand nicht auf der Benutzerliste.", $SYSNOTICE)
    EndIf
    EndFunc

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

    Func UsrLstRefresh()
    ; alte Einträge löschen und Array leeren
    For $Loop = 1 To UBound($ListItem) - 1
    If $ListItem[$Loop][0] = "" Then ContinueLoop ; index war nicht in benutzung... skip
    GUICtrlDelete($ListItem[$Loop][0])
    $ListItem[$Loop][0] = ""
    $ListItem[$Loop][1] = ""
    $ListItem[$Loop][2] = ""
    Next

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

    Local $temp
    For $Loop = 1 To UBound($NickList) - 1
    $Split = StringSplit($NickList[$Loop], "|")
    $ListItem[$Loop][1] = $Split[1]
    $ListItem[$Loop][2] = $Split[2]

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

    $ListItem[$Loop][0] = GUICtrlCreateListViewItem($NickList[$Loop], $Listview)
    If $Split[2] = "Bot" Then GUICtrlSetColor(-1, 0x2A55FF)
    If $Split[1] = $Name Then GUICtrlSetColor(-1, 0x408000) ; 0x66CC00)
    _GUICtrlListView_SetColumnWidth($Listview, 0, $LVSCW_AUTOSIZE_USEHEADER);$LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($Listview, 1, $LVSCW_AUTOSIZE_USEHEADER)
    Next
    EndFunc

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

    ;
    ;
    ;

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

    PS : Client und Chat mit Angehängt!

    @Der das Schafft = Ich bin dir Sehr Dankbar!!! :rock:

  • ich hab mir den Client mal grob angesehen und wie es aussieht
    ist nicht nur die verwendete autoit-Version Beta gewesen.

    Ich fürchte auch das Script ist reines Beta.
    Da sehe ich schwarz ....

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Zitat

    Wollte für meine Schulklasse nähmlich nen Chat Machen


    Das heißt aber eigentlich nicht sich ein Script zu "leihen",
    sondern es selber zu schreiben - Oder?

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • dann hast du es ja doch selber "umgeschrieben" :D

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ich habe mir auch mal das script angesehen , meine erste Frage war wie schreibe ich da ? b.z wie sende ich eine Nachicht 0o