Advertisement
flypip

Flenger (client irc)

Nov 22nd, 2011
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 28.86 KB | None | 0 0
  1. #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
  2. #AutoIt3Wrapper_icon=trayirc.ico
  3. #AutoIt3Wrapper_outfile=Flenger.exe
  4. #AutoIt3Wrapper_UseAnsi=n
  5. #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
  6.  
  7.  
  8. #include <GUIConstantsEx.au3>
  9. #include <WindowsConstants.au3>
  10. #include <EditConstants.au3>
  11. #include <StaticConstants.au3>
  12. #include <Constants.au3>
  13.  
  14. #include <IE.au3>
  15. #include <Array.au3>
  16.  
  17. Opt("GUIDataSeparatorChar", @LF) ; Some people have | in their names.. Ex.: Manadar|Away
  18. Opt("TrayMenuMode", 1) ; 1 = no default menu - I need this later
  19. Opt("TrayOnEventMode", 1)
  20. Opt("GUIOnEventMode", 1)
  21. Opt("GUIResizeMode", $GUI_DOCKAUTO)
  22.  
  23. $sHTML = "<HTML>" & @CR
  24. $sHTML &= "<HEAD>" & @CR
  25. $sHTML &= '<style type="text/css"><!-- body { margin: 4px; line-height: 16px;} --></style>'
  26. $sHTML &= "</HEAD>" & @CR
  27. $sHTML &= "<BODY>"
  28. $sHTML &= "</BODY>"
  29. $sHTML &= "</HTML>"
  30.  
  31. Global $sock, $version = 1.1
  32. Global $server = IniRead("Flenger.ini", "options", "Server", "irc.freenode.net")
  33. Global $port = IniRead("Flenger.ini", "options", "Port", "")
  34. Global $nick = IniRead("Flenger.ini", "options", "Nickname", "")
  35. Global $channel = IniRead("Flenger.ini", "options", "Channel", "#AutoIt")
  36. Global $BootWithWindow = IniRead("Flenger.ini", "options", "BootWithWindows", "0")
  37. Global $ForceActivation = IniRead("Flenger.ini", "options", "ForceActivation", "0")
  38.  
  39. $GUIOpt = GUICreate("Flenger Options", 225, 223)
  40. GUISetOnEvent($GUI_EVENT_CLOSE, "_Opt_Close")
  41.  
  42. GUICtrlCreateGroup("Options", 5, 5, 215, 105)
  43. GUICtrlCreateLabel("Nickname", 15, 28, 52, 17)
  44. $InputNickname = GUICtrlCreateInput($nick, 75, 25, 126, 21)
  45. $OptStartWithWindows = GUICtrlCreateCheckbox("Start Flenger avec windows", 15, 55, 187, 17)
  46. If Not @Compiled Then GUICtrlSetState($OptStartWithWindows, $GUI_DISABLE)
  47. $OptForceActivation = GUICtrlCreateCheckbox("sauter les messages d'arriver", 15, 80, 187, 17)
  48.  
  49. GUICtrlCreateGroup("Advanced", 5, 115, 215, 80)
  50. GUICtrlCreateLabel("Server", 15, 138, 35, 17)
  51. $InputServer = GUICtrlCreateInput($server, 75, 135, 126, 21)
  52. GUICtrlCreateLabel("Channel", 15, 163, 43, 17)
  53. $InputChannel = GUICtrlCreateInput($channel, 75, 160, 126, 21)
  54.  
  55. $ButtonAccept = GUICtrlCreateButton("Accept", 10, 199, 100, 21)
  56. GUICtrlSetOnEvent($ButtonAccept, "_Opt_Accept")
  57. $ButtonCancel = GUICtrlCreateButton("Cancel", 118, 199, 100, 21)
  58. GUICtrlSetOnEvent($ButtonCancel, "_Opt_Cancel")
  59.  
  60. GUICtrlSetState($InputNickname, $GUI_FOCUS)
  61.  
  62. Global $members[1] = [$nick]
  63. Dim $i = 0
  64.  
  65. If $server = "" Or $nick = "" Or $channel = "" Then
  66.     GUISetState(@SW_SHOW, $GUIOpt)
  67.  
  68.     While $server = "" Or $nick = "" Or $channel = "" ; wait for the option window to have fixed the problem
  69.         Sleep(100)
  70.     WEnd
  71. EndIf
  72.  
  73. _IEErrorHandlerRegister()
  74.  
  75. $oIE = _IECreateEmbedded()
  76.  
  77. $GUI = GUICreate($channel & " sur " & $server & " - Flenger " & $version & " (IRC)", 600, 398, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX))
  78. GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_Close")
  79. GUISetOnEvent($GUI_EVENT_MINIMIZE, "_GUI_ToTray")
  80. GUISetFont(10, 400, 0, "Verdana")
  81.  
  82. $OutputEdit = GUICtrlCreateObj($oIE, 5, 5, 470, 324)
  83. GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
  84. $NameList = GUICtrlCreateList("", 475, 5, 121, 329, -1, $WS_EX_STATICEDGE)
  85. GUICtrlSetResizing(-1, $GUI_DOCKBORDERS - $GUI_DOCKLEFT + $GUI_DOCKWIDTH)
  86. $InputEdit = GUICtrlCreateEdit("", 5, 329 + 5, 590, 60, BitOR($ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL))
  87. GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
  88. GUICtrlSetState($InputEdit, $GUI_DISABLE)
  89.  
  90. _IENavigate($oIE, "about:blank")
  91. _IEDocWriteHTML($oIE, $sHTML)
  92. _IEHeadInsertEventScript($oIE, "document", "oncontextmenu", "return false")
  93.  
  94. GUISetState(@SW_SHOW, $GUI)
  95.  
  96. TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "_GUI_FromTray")
  97.  
  98. _GUI_AddGlobalMessage("Flenger (Version " & $version & ")", "000000")
  99. _GUI_AddGlobalMessage("connection a " & $server &" ...")
  100.  
  101. TCPStartup()
  102. $sock = _IRCConnect($server, $port, $nick); Connects to IRC and Identifies its Nickname
  103.  
  104. While 1
  105.     $recv = TCPRecv($sock, 8192)
  106.     If @error Then
  107.         _GUI_AddGlobalMessage("Server est deconnecter...")
  108.         Sleep(4000)
  109.         Exit
  110.     Else
  111.         ConsoleWrite($recv)
  112.     EndIf
  113.     If $recv Then
  114.         $sData = StringSplit($recv, @CRLF); Splits the messages
  115.         For $i = 1 To $sData[0] Step 1
  116.             $sTemp = StringSplit($sData[$i], " ")
  117.  
  118.             If $sTemp[1] = "" Then ContinueLoop; If its empty, Continue!
  119.             If $sTemp[1] = "PING"  Then _IRCPing($sock, $sTemp[2]); Checks for PING replys (There smaller then usual messages so its special!
  120.             If $sTemp[0] <= 2 Then ContinueLoop; Useless messages for the most part
  121.  
  122.             If StringLeft($sData[$i], 1) = ":"  Then
  123.                 $sData[$i] = StringTrimLeft($sData[$i], 1)
  124.  
  125.                 ;kubrick.freenode.net 353 Manadar = #autoit :Manadar poisonkiller2 poisonkiller WhOOt hansengel WebPrag\work Tobsn Rickbert
  126.                 If $sTemp[0] >= 5 And $sTemp[3] = $nick And $sTemp[5] = $channel And StringRegExp($sData[$i], "(?i)" & StringReplace($nick, "|", "\|") & " [@%&~=] " & $channel & " :") Then
  127.                     ; This contains names of people in the channel
  128.                     $sNameList = StringTrimLeft($sData[$i], StringInStr($sData[$i], ":"))
  129.                     $members = StringSplit($sNameList, " ")
  130.                     _ArrayDelete($members, 0)
  131.                     _GUI_MemberListSet($members)
  132.                 EndIf
  133.  
  134.                 ;kubrick.freenode.net 376 Manadar :End of /MOTD command.
  135.                 If $sTemp[3] = $nick And $sTemp[4] = ":End"  And $sTemp[6] = "/MOTD"  Then
  136.                     _GUI_AddGlobalMessage("You have joined " & $channel)
  137.                     GUICtrlSetState($InputEdit, $GUI_ENABLE)
  138.                     GUICtrlSetState($InputEdit, $GUI_FOCUS)
  139.                     _IRCJoinChannel($sock, $channel)
  140.                 EndIf
  141.  
  142.                 ;kubrick.freenode.net 433 * Manadar :Nickname is already in use.
  143.                 If $sTemp[0] >= 9 And $sTemp[4] = $nick And $sTemp[5] = ":Nickname"  Then
  144.                     _GUI_AddGlobalMessage($nick & " est deja utilise alors vous devriez prendre " & $nick & "1", "B05A76")
  145.                     $nick &= "1"
  146.                     GUICtrlSetData($InputNickname, $nick)
  147.                     _IRCSendMessage($sock, "NICK " & $nick)
  148.                 EndIf
  149.  
  150.                 ;Manadar!n=Miranda@84-104-140-8.cable.quicknet.nl PRIVMSG #a :Hai
  151.                 If $sTemp[0] >= 3 And $sTemp[2] = "PRIVMSG"  And $sTemp[3] = $channel Then
  152.                     $text = StringTrimLeft($sData[$i], StringInStr($sData[$i], ":"))
  153.                     $snick = StringLeft($sData[$i], StringInStr($sData[$i], "!") - 1)
  154.                     If StringLeft($text, 1) = Chr(1) Then ; /me message
  155.                         $text = StringTrimLeft($text, 8)
  156.                         _GUI_AddGlobalMessage($snick & " " & $text, "B05AA0")
  157.                     Else
  158.                         _GUI_AddPersonalMessage($text, $snick)
  159.                     EndIf
  160.                 EndIf
  161.  
  162.                 ;Manadar!n=Miranda@84-104-140-8.cable.quicknet.nl PART #a :Bye
  163.                 If $sTemp[0] >= 3 And $sTemp[2] = "PART"  And $sTemp[3] = $channel Then
  164.                     $name = StringLeft($sData[$i], StringInStr($sData[$i], "!") - 1)
  165.                     $element = __ArraySearch($members, $name)
  166.                     _ArrayDelete($members, $element)
  167.                     $message = StringTrimLeft($sData[$i], StringInStr($sData[$i], ":"))
  168.                     _GUI_AddGlobalMessage($name & " a quitter la channel:" & $message, "B05A76")
  169.                     _GUI_MemberListSet($members)
  170.                 EndIf
  171.  
  172.                 ;Zerosploit!n=homgwtfb@84-104-9-159.cable.quicknet.nl QUIT :"im gay"
  173.                 If $sTemp[0] >= 2 And $sTemp[2] = "QUIT"  Then
  174.                     $name = StringLeft($sData[$i], StringInStr($sData[$i], "!") - 1)
  175.                     $element = __ArraySearch($members, $name)
  176.                     _ArrayDelete($members, $element)
  177.                     $message = StringTrimLeft($sData[$i], StringInStr($sData[$i], ":"))
  178.  
  179.                     _GUI_AddGlobalMessage($name & " quitte le serveur: " & $message, "B05A76")
  180.                     _GUI_MemberListSet($members)
  181.                 EndIf
  182.  
  183.                 ;Manadar!n=Miranda@84-104-140-8.cable.quicknet.nl JOIN :#A
  184.                 If $sTemp[0] >= 3 And $sTemp[2] = "JOIN"  And $sTemp[3] = ":" & $channel Then
  185.                     $name = StringLeft($sData[$i], StringInStr($sData[$i], "!") - 1)
  186.                     If $name <> $nick Then
  187.                         _ArrayAdd($members, $name)
  188.                         _GUI_AddGlobalMessage($name & " a rejoind la channel")
  189.                         _GUI_MemberListSet($members)
  190.                     EndIf
  191.                 EndIf
  192.  
  193.                 ;XaoCTheoRY!n=homgwtfb@84-104-9-159.cable.quicknet.nl NICK :Zer0sploit
  194.                 If $sTemp[0] >= 3 And $sTemp[2] = "NICK"  Then
  195.                     $name = StringLeft($sData[$i], StringInStr($sData[$i], "!") - 1)
  196.                     $element = __ArraySearch($members, $name)
  197.                     _ArrayDelete($members, $element)
  198.                     $name_after = StringTrimLeft($sData[$i], StringInStr($sData[$i], ":"))
  199.                     _ArrayAdd($members, $name_after)
  200.  
  201.                     If $name = $nick Then
  202.                         $nick = $name_after
  203.                         GUICtrlSetData($InputNickname, $nick)
  204.                     EndIf
  205.  
  206.                     _GUI_AddGlobalMessage($name & " change son nom en " & $name_after)
  207.                     _GUI_MemberListSet($members)
  208.                 EndIf
  209.  
  210.                 ;Nick!Name@Host KICK #Channel User :Reason
  211.                 If $sTemp[0] >= 2 And $sTemp[2] = "KICK"  Then
  212.                     $name = StringLeft($sData[$i], StringInStr($sData[$i], "!") - 1)
  213.                     $element = __ArraySearch($members, $name)
  214.                     _ArrayDelete($members, $element)
  215.  
  216.                     _GUI_AddGlobalMessage($name & " a etait quitter de la channel")
  217.                     _GUI_MemberListSet($members)
  218.                 EndIf
  219.  
  220.                 ;kubrick.freenode.net 433 Manadar test :Nickname is already in use.
  221.                 If $sTemp[0] >= 9 And $sTemp[3] = $nick And $sTemp[5] = ":Nickname"  Then
  222.                     $name = $sTemp[4]
  223.  
  224.                     _GUI_AddGlobalMessage("Nickname " & $name & " est deja en usage.", "B05A76")
  225.                 EndIf
  226.  
  227.                 ;kubrick.freenode.net 332 Manadar #AutoIt :Current AutoIt Version: 3.2.10.0 || Post code longer than 3 lines @ http://autoit.pastebin.com || Don't ask to ask; just ask
  228.                 If $sTemp[0] >= 7 And $sTemp[3] = $nick And $sTemp[4] = $channel Then
  229.                     $msg = StringTrimLeft($sData[$i], StringInStr($sData[$i], ":"))
  230.                     If $msg <> "End of /NAMES list."  Then
  231.                         _GUI_AddGlobalMessage($msg, "4684DF")
  232.                     EndIf
  233.                 EndIf
  234.  
  235.                 ;Manadar!n=Miranda@84-104-25-84.cable.quicknet.nl TOPIC #autoit :Current AutoIt Version: 3.2.10.0 || Post code longer than 3 lines @ ht...
  236.  
  237.  
  238.                 ;kubrick.freenode.net NOTICE Hickname kiss.gif** Notice -- Too many nick changes; wait 4 seconds before trying again
  239.             EndIf
  240.         Next
  241.     EndIf
  242.     If StringInStr(GUICtrlRead($InputEdit), @CRLF) Then
  243.         _GUI_Enter()
  244.     EndIf
  245.     Sleep(10)
  246. WEnd
  247.  
  248. Func _Opt_Accept()
  249.     $temp1 = GUICtrlRead($InputServer)
  250.     $temp2 = GUICtrlRead($InputNickname)
  251.     $temp3 = GUICtrlRead($InputChannel)
  252.     $temp4 = GUICtrlRead($OptStartWithWindows)
  253.     $temp5 = GUICtrlRead($OptForceActivation)
  254.  
  255.     If $temp1 <> "" Then
  256.         IniWrite("Flenger.ini", "options", "Server", $temp1)
  257.         If $server <> $temp1 Then
  258.             _Reboot()
  259.         EndIf
  260.         $server = $temp1
  261.     EndIf
  262.     If $temp2 <> "" Then
  263.         IniWrite("Flenger.ini", "options", "Nickname", $temp2)
  264.         If $sock Then _IRCSendMessage($sock, "NICK " & $temp2)
  265.     EndIf
  266.     If $temp3 <> "" Then
  267.         IniWrite("Flenger.ini", "options", "Channel", $temp3)
  268.         If $channel <> $temp3 Then
  269.             _Reboot()
  270.         EndIf
  271.         $channel = $temp3
  272.     EndIf
  273.     If $temp4 = $GUI_CHECKED Then
  274.         IniWrite("Flenger.ini", "options", "BootWithWindows", 1)
  275.         If @Compiled Then RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Flenger", "REG_SZ", @ScriptFullPath)
  276.     Else
  277.         IniWrite("Flenger.ini", "options", "BootWithWindows", 0)
  278.         RegDelete("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Flenger")
  279.     EndIf
  280.     If $temp5 = $GUI_CHECKED Then
  281.         IniWrite("Flenger.ini", "options", "ForceActivation", 1)
  282.     Else
  283.         IniWrite("Flenger.ini", "options", "ForceActivation", 0)
  284.     EndIf
  285.  
  286.     GUISetState(@SW_HIDE, $GUIOpt)
  287.     $server = IniRead("Flenger.ini", "options", "Server", "irc.freenode.net")
  288.     $port = IniRead("Flenger.ini", "options", "port", "")
  289.     $nick = IniRead("Flenger.ini", "options", "Nickname", "")
  290.     $channel = IniRead("Flenger.ini", "options", "Channel", "#AutoIt")
  291.     $BootWithWindow = IniRead("Flenger.ini", "options", "BootWithWindows", "0")
  292.     $ForceActivation = IniRead("Flenger.ini", "options", "ForceActivation", "0")
  293. EndFunc   ;==>_Opt_Accept
  294.  
  295. Func _Opt_Close()
  296.     If MsgBox(0x24, "Flenger", "etes vous sure de vouloir quitter ?") == 6 Then
  297.         If $sock Then _IRCQuit($sock, "Flenger. ©2011 Flypip.")
  298.         Exit
  299.     EndIf
  300. EndFunc   ;==>_Opt_Close
  301.  
  302. Func _Reboot()
  303.     MsgBox(0x40, "Flenger", "Flenger doit relancer l'app pour changer.")
  304.     If @Compiled Then
  305.         Run(@ScriptFullPath)
  306.     Else
  307.         Run(@AutoItExe & " " & @ScriptFullPath)
  308.     EndIf
  309.     Exit
  310. EndFunc   ;==>_Reboot
  311.  
  312. Func _Opt_Cancel()
  313.     If $server = "" Or $nick = "" Or "veuillez tout remplir les champs "= "" Then
  314.         MsgBox(0x10, "Flenger", "v")
  315.     Else
  316.         GUISetState(@SW_HIDE, $GUIOpt)
  317.         GUICtrlSetData($InputServer, $server)
  318.         GUICtrlSetData($InputChannel, $channel)
  319.         GUICtrlSetData($InputNickname, $nick)
  320.         If $BootWithWindow = 1 Then
  321.             GUICtrlSetState($OptStartWithWindows, $GUI_CHECKED)
  322.         Else
  323.             GUICtrlSetState($OptStartWithWindows, $GUI_UNCHECKED)
  324.         EndIf
  325.         If $ForceActivation = 1 Then
  326.             GUICtrlSetState($OptForceActivation, $GUI_CHECKED)
  327.         Else
  328.             GUICtrlSetState($OptForceActivation, $GUI_UNCHECKED)
  329.         EndIf
  330.     EndIf
  331. EndFunc   ;==>_Opt_Cancel
  332.  
  333. Func _Flash()
  334.     If WinGetState($GUI) = 21 And $ForceActivation = 1 Then
  335.         GUISetState(@SW_SHOW, $GUI)
  336.     EndIf
  337.     If Not WinActive($GUI) Then
  338.         WinFlash($GUI, "", 2, 150)
  339.     EndIf
  340. EndFunc   ;==>_Flash
  341.  
  342. Func _GUI_Format(ByRef $sText)
  343.     Local $sReturn = ""
  344.     $sText = StringReplace($sText, "&", "&amp;")
  345.     $sText = StringReplace($sText, "<", "&lt;") ;no user tags
  346.     $sText = StringReplace($sText, ">", "&gt;")
  347.     $sChar = StringSplit($sText, "")
  348.     For $i = 1 To $sChar[0]
  349.         $asc = Asc($sChar[$i])
  350.         Switch $asc
  351.             Case 0x20 To 0x7E, 0x80, 0x82 To 0x8C, 0x8E, 0x91 To 0x9C, 0x9E To 0xAC, 0xAE To 0xFF ; Support for Extended ASCII, some characters are not displayed
  352.                 $sReturn &= Chr($asc)
  353.         EndSwitch
  354.     Next
  355.     $sText = $sReturn
  356. EndFunc   ;==>_GUI_Format
  357.  
  358. Func _IRC_SendMessage($msg)
  359.     _IRCSendMessage($sock, $msg, $channel)
  360. EndFunc   ;==>_IRC_SendMessage
  361.  
  362. Func _GUI_Close()
  363.     _IRCQuit($sock, "Flenger. ©2011 Flypip")
  364.     Exit
  365. EndFunc   ;==>_GUI_Close
  366.  
  367. Func _GUI_ToTray()
  368.     GUISetState(@SW_HIDE, $GUI)
  369. EndFunc   ;==>_GUI_ToTray
  370.  
  371. Func _GUI_FromTray()
  372.     GUISetState(@SW_SHOW, $GUI)
  373.     WinActivate($GUI)
  374. EndFunc   ;==>_GUI_FromTray
  375.  
  376. Func _GUI_Enter()
  377.     If ControlGetFocus($GUI) = "Edit1"  Then
  378.         $text = _Uni2Ansi(StringTrimRight(GUICtrlRead($InputEdit), 2))
  379.         GUICtrlSetData($InputEdit, "")
  380.         If $text <> "" Then
  381.             If StringInStr($text, " ") Then
  382.                 $command = StringLeft($text, StringInStr($text, " ") - 1)
  383.             Else
  384.                 $command = $text
  385.             EndIf
  386.             Switch $command
  387.                 Case "/nick"
  388.                     _IRCSendMessage($sock, "NICK " & StringTrimLeft($text, StringInStr($text, " ")))
  389.                     _GUI_MemberListSet($members)
  390.                 Case "/quit", "/part"
  391.                     If MsgBox(0x24, "Flenger", "etes vous sure de vouloir fermer Flenger ?") == 6 Then
  392.                         $msg = StringTrimLeft($text, 6)
  393.                         If $msg = "" Then
  394.                             _IRCQuit($sock, "Flenger. ©2011 Flypip")
  395.                         Else
  396.                             _IRCQuit($sock, $msg)
  397.                         EndIf
  398.                         Exit
  399.                     EndIf
  400.                 Case "/me"
  401.                     $msg = StringTrimLeft($text, 4)
  402.                     $text = Chr(1) & "ACTION " & $msg & Chr(1)
  403.                     _IRC_SendMessage($text)
  404.                     _GUI_AddGlobalMessage($nick & " " & $msg, "B05AA0")
  405.                 Case "/opt"
  406.                     GUISetState(@SW_SHOW, $GUIOpt)
  407.                 Case Else
  408.                     If StringLeft($text, 1) = "/"  Then
  409.                         _GUI_AddGlobalMessage($command & " n'est pas une commande valide")
  410.                     Else
  411.                         _GUI_AddPersonalMessage($text, $nick)
  412.                         _IRC_SendMessage($text)
  413.                     EndIf
  414.             EndSwitch
  415.         EndIf
  416.     EndIf
  417. EndFunc   ;==>_GUI_Enter
  418.  
  419. Func _GUI_MemberListSet($names)
  420.     _ArraySort($names)
  421.     GUICtrlSetData($NameList, "")
  422.     For $i = 0 To UBound($names) - 1
  423.         GUICtrlSetData($NameList, $names[$i] & @LF)
  424.     Next
  425. EndFunc   ;==>_GUI_MemberListSet
  426.  
  427. Func _GUI_AddGlobalMessage($msg, $color = "5AA05A")
  428.     $msg = _HTMLEntityNumEncode(_Ansi2Uni($msg))
  429.     $sText = _IEBodyReadHTML($oIE)
  430.     If $sText == 0 Then $sText = ""
  431.     _IEBodyWriteHTML($oIE, $sText & "<font face=""Terminal"" color=""#3254F8"" size=""1"">[" & @HOUR & ":" & @MIN & "]</font>  <font face=""Verdana"" color=""#" & $color & """ size=""-1""> " & $msg & "</font><br>")
  432.     _GUI_AutoScroll()
  433. EndFunc   ;==>_GUI_AddGlobalMessage
  434.  
  435. Func _GUI_AddPersonalMessage($msg, $nickname)
  436.     $msg = _HTMLEntityNumEncode(_Ansi2Uni($msg))
  437.     $nickname = _HTMLEntityNumEncode(_Ansi2Uni($nickname))
  438.     $sText = _IEBodyReadHTML($oIE)
  439.     If $sText == 0 Then $sText = ""
  440.     _IEBodyWriteHTML($oIE, $sText & "<font face=""Terminal"" color=""#3254F8"" size=""1"">[" & @HOUR & ":" & @MIN & "]</font>  <font face=""Verdana"" size=""-1""><b>" & $nickname & ":</b></font><font face=""Verdana"" color=""#5A5A5A"" size=""-1""> " & $msg & "</font><br>")
  441.     _GUI_AutoScroll()
  442.     _Flash()
  443. EndFunc   ;==>_GUI_AddPersonalMessage
  444.  
  445. Func _GUI_AutoScroll()
  446.     $iDocHeight = $oIE.document.body.scrollHeight
  447.     $oIE.document.parentWindow.scrollTo(0, $iDocHeight)
  448. EndFunc   ;==>_GUI_AutoScroll
  449.  
  450.  
  451. Func __ArraySearch(Const ByRef $avArray, $vWhat2Find, $iStart = 0, $iEnd = 0, $iCaseSense = 0, $fPartialSearch = False)
  452.     Local $iCurrentPos, $iUBound, $iResult
  453.     If Not IsArray($avArray) Then
  454.         SetError(1)
  455.         Return -1
  456.     EndIf
  457.     $iUBound = UBound($avArray) - 1
  458.     If $iEnd = 0 Then $iEnd = $iUBound
  459.     If $iStart > $iUBound Then
  460.         SetError(2)
  461.         Return -1
  462.     EndIf
  463.     If $iEnd > $iUBound Then
  464.         SetError(3)
  465.         Return -1
  466.     EndIf
  467.     If $iStart > $iEnd Then
  468.         SetError(4)
  469.         Return -1
  470.     EndIf
  471.     If Not ($iCaseSense = 0 Or $iCaseSense = 1) Then
  472.         SetError(5)
  473.         Return -1
  474.     EndIf
  475.     For $iCurrentPos = $iStart To $iEnd
  476.         Select
  477.             Case $iCaseSense = 0
  478.                 If $fPartialSearch = False Then
  479.                     If ($avArray[$iCurrentPos] = $vWhat2Find) Or ($avArray[$iCurrentPos] = "@" & $vWhat2Find) Or ($avArray[$iCurrentPos] = "+" & $vWhat2Find) Or ($avArray[$iCurrentPos] = "&" & $vWhat2Find) Or ($avArray[$iCurrentPos] = "~" & $vWhat2Find) Or ($avArray[$iCurrentPos] = "%" & $vWhat2Find) Then
  480.                         SetError(0)
  481.                         Return $iCurrentPos
  482.                     EndIf
  483.                 Else
  484.                     $iResult = StringInStr($avArray[$iCurrentPos], $vWhat2Find, $iCaseSense)
  485.                     If $iResult > 0 Then
  486.                         SetError(0)
  487.                         Return $iCurrentPos
  488.                     EndIf
  489.                 EndIf
  490.             Case $iCaseSense = 1
  491.                 If $fPartialSearch = False Then
  492.                     If $avArray[$iCurrentPos] == $vWhat2Find Then
  493.                         SetError(0)
  494.                         Return $iCurrentPos
  495.                     EndIf
  496.                 Else
  497.                     $iResult = StringInStr($avArray[$iCurrentPos], $vWhat2Find, $iCaseSense)
  498.                     If $iResult > 0 Then
  499.                         SetError(0)
  500.                         Return $iCurrentPos
  501.                     EndIf
  502.                 EndIf
  503.         EndSelect
  504.     Next
  505.     SetError(6)
  506.     Return -1
  507. EndFunc   ;==>__ArraySearch
  508.  
  509. #cs Reference Guide
  510.    
  511.    
  512.     Common recieves:
  513.     Nick = User who the message is from
  514.     Name = Settable by user, set in the USER command
  515.     host = ISP host
  516.    
  517.     ~~~~PRIVMSG~~~~
  518.     You recieve this when someone has sent a message in a channel,
  519.     gives you there Nick, host, the channel it was said in and the message.
  520.    
  521.     SYNTAX:
  522.     :Nick!Name@host PRIVMSG #Channel :Message
  523.    
  524.     EXAMPLE:
  525.     :Chip!Chip@OMN-8243F63D.dsl.bell.ca PRIVMSG #Chip :Hey guy's
  526.     Would be a message from Chip to say 'Hey guy's' in the channel #Chip
  527.    
  528.     :Chip!Chip@OMN-8243F63D.dsl.bell.ca PRIVMSG Bob :Hey Bob!
  529.     Would be a Personal Message from Chip to Bob saying 'Hey Bob!'
  530.     ~~~~~~~~~
  531.    
  532.     ~~~~MODE~~~~
  533.     You recieve this when a mode is changed, a mode can give/take access change certain
  534.     things like who can join a channel etc..
  535.    
  536.     SYNTAX:
  537.     :Nick!Name@host MODE #Channel +/- MODE (USER)
  538.    
  539.     EXAMPLES:
  540.     :ChanServ!services@host MODE #Chip +o Chip
  541.     This says ChanServ (usually a service bot) has given Chip Operator access in the channel #Chip
  542.    
  543.     :ChanServ!services@host MODE #Chip +i
  544.     This makes #Chip invite only, so only OPs can invite users in the channel.
  545.    
  546.     :Chip!Chip@OMN-8243F63D.dsl.bell.ca MODE Chip +i
  547.     This will make Chip invisible to WHOIS. These are usermodes.
  548.     ~~~~~~~~~
  549.    
  550.     ~~~~PING~~~~
  551.     You recieves these at random to make sure your still online and
  552.     not disconnected.
  553.    
  554.     SYNTAX:
  555.     PING :Randomletters
  556.    
  557.     Usually a PING has random letters that you have to respond with.
  558.    
  559.     EXAMPLE:
  560.     PING :29809dj0d
  561.    
  562.     You would respond with
  563.     PONG 29809dj0d
  564.     ~~~~~~~~~~~
  565.    
  566.     ~~~~JOIN~~~~
  567.     You recieve this when someone joins a channel.
  568.    
  569.     SYNTAX:
  570.     :Nick!Name@Host JOIN :#Channel
  571.    
  572.     EXAMPLE:
  573.     :Chip!Chip@OMN-8243F63D.dsl.bell.ca JOIN :#Chip
  574.     This would be sent to everybody in #Chip to show that Chip has joined the channel #Chip
  575.     ~~~~~~~~~~~~~
  576.    
  577.     ~~~~KICK~~~~
  578.     You recieve this when someone gets kicked (Including yourself!)
  579.    
  580.     SYNTAX:
  581.     :Nick!Name@Host KICK #Channel User :Reason
  582.    
  583.     EXAMPLE:
  584.     :Chip!Name@Host KICK #Chip Bob :Talk in private
  585.     Would kick Bob from #Chip and say 'Talk in private' in the reason
  586.     ~~~~~~~~~~~~~~
  587.    
  588.     ~~~~QUIT~~~~
  589.     You recieve this when someone disconnects from IRC.
  590.    
  591.     SYNTAX:
  592.     :Nick!Name@Host QUIT :Reason
  593.    
  594.     EXAMPLE:
  595.     :Chip!Chip@OMN-8243F63D.dsl.bell.ca QUIT :I'm bored
  596.     Would be sent to everyone in the channels Chip was in to say that he left IRC because He was bored.
  597.     ~~~~~~~~~~~~~~
  598.    
  599. #ce
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608. ;===============================================================================
  609. ;
  610. ; Description:      Connects you to a IRC Server, and gives your chosen Nick
  611. ; Parameter(s):     $server - IRC Server you wish to connect to
  612. ;                   $port - Port to connect to (Usually 6667)
  613. ;                   $nick - Nick you choose to use (You can change later)
  614. ; Requirement(s):   TCPStartup () to be run
  615. ; Return Value(s):  On Success - Socket identifer
  616. ;                   On Failure - It will exit on error
  617. ; Author(s):        Chip
  618. ; Note(s):          English only
  619. ;
  620. ;===============================================================================
  621. Func _IRCConnect($server, $port, $nick)
  622.     Local $i = TCPConnect(TCPNameToIP($server), $port)
  623.     If $i = -1 Then Exit MsgBox(1, "IRC.au3 Error", "Server " & $server & " ne repond pas.")
  624.     TCPSend($i, "NICK " & $nick & @CRLF)
  625.     TCPSend($i, "USER " & $nick & " 0 0 " & $nick & @CRLF)
  626.     Return $i
  627. EndFunc   ;==>_IRCConnect
  628.  
  629. ;===============================================================================
  630. ;
  631. ; Description:      Joins an IRC Channel
  632. ; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
  633. ;                   $chan - Channel you wish to join
  634. ; Requirement(s):   _IRCConnect () to be run
  635. ; Return Value(s):  On Success - 1
  636. ;                   On Failure - -1 = Server disconnected.
  637. ; Author(s):        Chip
  638. ; Note(s):          English only
  639. ;
  640. ;===============================================================================
  641. Func _IRCJoinChannel($irc, $chan)
  642.     If $irc = -1 Then Return 0
  643.     TCPSend($irc, "JOIN " & $chan & @CRLF)
  644.     If @error Then
  645.         MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  646.         Return -1
  647.     EndIf
  648.     Return 1
  649. EndFunc   ;==>_IRCJoinChannel
  650.  
  651. ;===============================================================================
  652. ;
  653. ; Description:      Sends a message using IRC
  654. ; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
  655. ;               $msg - Message you want to send
  656. ;                   $chan - Channel/Nick you wish to send to
  657. ; Requirement(s):   _IRCConnect () to be run
  658. ; Return Value(s):  On Success - 1
  659. ;                   On Failure - -1 = Server disconnected.
  660. ; Author(s):        Chip
  661. ; Note(s):          English only
  662. ;
  663. ;===============================================================================
  664. Func _IRCSendMessage($irc, $msg, $chan = "")
  665.     If $irc = -1 Then Return 0
  666.     If $chan = "" Then
  667.         TCPSend($irc, $msg & @CRLF)
  668.         If @error Then
  669.             MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  670.             Return -1
  671.         EndIf
  672.         Return 1
  673.     EndIf
  674.     TCPSend($irc, "PRIVMSG " & $chan & " :" & $msg & @CRLF)
  675.     If @error Then
  676.         MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  677.         Return -1
  678.     EndIf
  679.     Return 1
  680. EndFunc   ;==>_IRCSendMessage
  681.  
  682. ;===============================================================================
  683. ;
  684. ; Description:      Changes a MODE on IRC
  685. ; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
  686. ;               $mode - Mode you wish to change
  687. ;                   $chan - Channel/Nick you wish to send to
  688. ; Requirement(s):   _IRCConnect () to be run
  689. ; Return Value(s):  On Success - 1
  690. ;                   On Failure - -1 = Server disconnected.
  691. ; Author(s):        Chip
  692. ; Note(s):          English only
  693. ;
  694. ;===============================================================================
  695. Func _IRCChangeMode($irc, $mode, $chan = "")
  696.     If $irc = -1 Then Return 0
  697.     If $chan = "" Then
  698.         TCPSend($irc, "MODE " & $mode & @CRLF)
  699.         If @error Then
  700.             MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  701.             Return -1
  702.         EndIf
  703.         Return 1
  704.     EndIf
  705.     TCPSend($irc, "MODE " & $chan & " " & $mode & @CRLF)
  706.     If @error Then
  707.         MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  708.         Return -1
  709.     EndIf
  710.     Return 1
  711. EndFunc   ;==>_IRCChangeMode
  712.  
  713. ;===============================================================================
  714. ;
  715. ; Description:      Returns a PING to Server
  716. ; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
  717. ;               $ret - The end of the PING to return
  718. ; Requirement(s):   _IRCConnect () to be run
  719. ; Return Value(s):  On Success - 1
  720. ;                   On Failure - -1 = Server disconnected.
  721. ; Author(s):        Chip
  722. ; Note(s):          English only
  723. ;
  724. ;===============================================================================
  725. Func _IRCPing($irc, $ret)
  726.     If $ret = "" Then Return -1
  727.     TCPSend($irc, "PONG " & $ret & @CRLF)
  728.     If @error Then
  729.         MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  730.         Return -1
  731.     EndIf
  732.     Return 1
  733. EndFunc   ;==>_IRCPing
  734.  
  735. ;===============================================================================
  736. ;
  737. ; Description:      Leave the IRC Channel
  738. ; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
  739. ;               $msg - Message to send with PART, optional
  740. ; Requirement(s):   _IRCConnect () to be run
  741. ; Return Value(s):  On Success - 1
  742. ;                   On Failure - -1 = Server disconnected.
  743. ;
  744. ;===============================================================================
  745. Func _IRCLeaveChannel($irc, $msg = "", $chan = "")
  746.     If $irc = -1 Then Return 0
  747.     TCPSend($irc, "PART " & $chan & " :" & $msg & @CRLF)
  748.     If @error Then
  749.         MsgBox(1, "IRC.au3", "Serveur est deconnecter")
  750.         Return -1
  751.     EndIf
  752.     Return 1
  753. EndFunc   ;==>_IRCLeaveChannel
  754.  
  755. ;===============================================================================
  756. ;
  757. ; Description:      Close the IRC Connection
  758. ; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
  759. ;               $msg - Message to send with quit, optional (not able to see with all clients)
  760. ; Requirement(s):   _IRCConnect () to be run
  761. ; Return Value(s):  On Success - 1
  762. ;                   On Failure - -1 = Server disconnected.
  763. ;
  764. ;===============================================================================
  765. Func _IRCQuit($irc, $msg = "")
  766.     If $irc = -1 Then Return 0
  767.     TCPSend($irc, "QUIT :" & $msg & @CRLF)
  768.     Sleep(100) ; I think the message has to sink in or something tongue.gif
  769.     Return 1
  770. EndFunc   ;==>_IRCQuit
  771.  
  772.  
  773. ;===============================================================================
  774. ;
  775. ; Description:      Unicode support for TrayIRC
  776. ; Requirement(s):   Unicode version of AutoIt
  777. ; Return Value(s):  Encoded/Decoded String(s)
  778. ; Author(s):        Dhilip89
  779. ;
  780. ;===============================================================================
  781.  
  782. Func _Uni2Ansi($Unicode)
  783.     $Binary = StringToBinary($Unicode, 4)
  784.     $Hex = StringReplace($Binary, '0x', '', 1)
  785.     $BinaryLength = StringLen($Hex)
  786.     Local $ANSI
  787.     For $i = 1 To $BinaryLength Step 2
  788.         $Char = StringMid($Hex, $i, 2)
  789.         $ANSI &= BinaryToString('0x' & $Char)
  790.     Next
  791.     Return $ANSI
  792. EndFunc   ;==>_Uni2Ansi
  793.  
  794. Func _Ansi2Uni($ANSI)
  795.     $Binary = StringToBinary($ANSI)
  796.     $Unicode = BinaryToString($Binary, 4)
  797.     Return $Unicode
  798. EndFunc   ;==>_Ansi2Uni
  799.  
  800. ;===============================================================================
  801.  
  802. ;===============================================================================
  803. ;
  804. ; Function Name:    _HTMLEntityNumEncode()
  805. ; Description:      Encode the normal string into HTML Entity Number
  806. ; Parameter(s):     $String  - The string you want to encode.
  807. ;
  808. ; Requirement(s):   AutoIt v3.2.4.9 or higher (Unicode)
  809. ; Return Value(s):  On Success  - Returns HTML Entity Number
  810. ;                   On Failure  - Nothing
  811. ;
  812. ; Author(s):        Dhilip89
  813. ;
  814. ;===============================================================================
  815.  
  816. Func _HTMLEntityNumEncode($String)
  817.     $StringLength = StringLen($String)
  818.     Local $HTMLEntityNum
  819.     If $StringLength = 0 Then Return ''
  820.     For $i = 1 To $StringLength
  821.         $StringChar = StringMid($String, $i, 1)
  822.         $HTMLEntityNum &= '&#' & AscW($StringChar) & ';'
  823.     Next
  824.     Return $HTMLEntityNum
  825. EndFunc   ;==>_HTMLEntityNumEncode
  826.  
  827. ;===============================================================================
  828. ;
  829. ; Function Name:    _HTMLEntityNumDecode()
  830. ; Description:      Decode the HTML Entity Number into normal string
  831. ; Parameter(s):     $HTMLEntityNum  - The HTML Entity Number you want to decode.
  832. ;
  833. ; Requirement(s):   AutoIt v3.2.4.9 or higher (Unicode)
  834. ; Return Value(s):  On Success  - Returns decoded strings
  835. ;                   On Failure  - Nothing
  836. ;
  837. ; Author(s):        Dhilip89
  838. ;
  839. ;===============================================================================
  840.  
  841. Func _HTMLEntityNumDecode($HTMLEntityNum)
  842.     If $HTMLEntityNum = '' Then Return ''
  843.     $A = StringReplace($HTMLEntityNum, '&#', '')
  844.     $B = StringSplit($A, ';')
  845.     $C = $B[0]
  846.     Local $String
  847.     For $i = 1 To $C
  848.         $String &= ChrW($B[$i])
  849.     Next
  850.     Return $String
  851. EndFunc   ;==>_HTMLEntityNumDecode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement