[-]
PasteIt Eintrag #242
Autor: eXploder
Titel: Bundesliga Live-Ticker v2.0 by sts & paradoxon
Beschreibung: siehe script
 

Code
  1. '+--------------------------------------------------+
  2. '¦ Bundesliga Live-Ticker v2.0 by sts & paradoxon
  3. '¦ ChannelSetup © Sp33d
  4. '¦ Don`t change the author!
  5. '¦ Website : www.AnGelBot-Portal.de
  6. '¦--------------------------------------------------+
  7. '¦ PartyLine Setup ------------[x]
  8. '¦ Anlegung einer INI-Datei ---[x]
  9. '¦ Channeleinstellungen ------ [x]
  10. '¦--------------------------------------------------+
  11. '##############Help#######################
  12. 'Das Script wird individuell gestartet. Trigger legt Ihr in den Konstanten
  13. '(StartTrigger & EndTrigger) fest. Standardmäßg sind diese
  14. '"!bl_start" zum Starten und "!bl_end" zum Beenden des Scripts.
  15. 'Wie oft der Bot dann nach neuen Ereignissen schauen soll, legt Ihr
  16. 'selbst fest. Dies erfolgt wieder über eine Kostante(CheckTime), die Ihr
  17. 'vor dem Laden des Scripts festlegt. Den Trigger für das
  18. 'Partyline Setup Ihr setzt wieder mit Hilfe einer Konstanten,
  19. 'welche Ihr wieder vor dem Laden des Script festlegen müsst.
  20. 'Die aktiven Channels legt Ihr dann in diesem Setup fest.
  21.  
  22. '##############Einstellungen##################
  23.  
  24. Const nFlag = "m"        'Benötigter Flag im Bot zum Starten des Scripts
  25. Const StartTrigger = "!bl_start"    'Trigger um das Script zu starten
  26. Const EndTrigger = "!bl_end"    'Trigger um das Script zu beenden
  27. Const DebugIt = False        'Erweiterte Meldungen
  28. Const Trigger = "bundesliga"        'Konfigurationtrigger auf der Partyline
  29. Const CheckTime = 20     'Zeitgabe wann der Bot nach neuen News schauen soll (in s)
  30.  
  31. '###############Don't Change!!################
  32.  
  33. Const Host = "linpop.zdf.de"
  34. Const INIFile = "FileArea\INI\bundesligaliveticker2.ini"
  35. Const ScriptVersion = "v2.0"
  36. Const ScriptName = "Bundesliag Live-Ticker"
  37. Const ScriptAuthor = "sts, Sp33d & paradoxon"
  38.  
  39. Dim Channels, LastNews, Recieved
  40.  
  41. Sub Init()
  42.   Dim xx
  43.  
  44.   Script "1,0 «4•1» 4[ " & ScriptName & " ]1 Script 4[ " & ScriptVersion & " ]1 by 4[ " & ScriptAuthor & " ] 1«4•1» "
  45.   SpreadFlagMessage 0, "+m", "1,0 «4•1» 4[ " & ScriptName & " ]1 Script 4[ " & ScriptVersion & " ]1 by 4[ " & ScriptAuthor & " ]1 loaded 1«4•1» "
  46.   Hook "Commands"
  47.   Hook "Chan_Msg"
  48.   AddCommand ". " & Trigger, Cl_Mas, "+m", "2*** ." & Trigger & "##14Zeigt das " & ScriptName & " Setup in dem die Channel,##14in denen der Ticker angezeigt werden soll verändert##14werden können."
  49.   ReloadChannels
  50.   SpreadFlagMessage 0, "+m", "3Um das Script zu konfigurieren gib nun ." & Trigger & " ein."
  51.   SpreadFlagMessage 0, "+m", ""
  52.   SpreadFlagMessage 0, "+m", "Script Informationen:"
  53.   SpreadFlagMessage 0, "+m", ""
  54.   Status = ReadINIString("Settings", "Status", "", INIFile)
  55.   If Status = "on" Then
  56.     xx = "aktiv"
  57.   ElseIf Status = "off" Then
  58.     xx = "nicht aktiv"
  59.   End If
  60.   SpreadFlagMessage 0, "+m", "Script: " & xx
  61.   SpreadFlagMessage 0, "+m", ""
  62.   SpreadFlagMessage 0, "+m", "Benötigter Flag zum Starten und Beendes des Scripts: +" & nFlag
  63.   SpreadFlagMessage 0, "+m", "Trigger zum Starten des Scripts: " & StartTrigger
  64.   SpreadFlagMessage 0, "+m", "Trigger zum Beenden des Scripts: " & EndTrigger
  65.   SpreadFlagMessage 0, "+m", "News CheckTime: " & CheckTime
  66.   SpreadFlagMessage 0, "+m", "Name der INIDatei: " & INIFile
  67.   SpreadFlagMessage 0, "+m", "Partyline Trigger: ." & Trigger
  68.   SpreadFlagMessage 0, "+m", "Scriptname: " & Scriptname
  69. End Sub
  70.  
  71. Sub ReloadChannels()
  72.   Channels = ReadINIString("Settings", "Channels", "", INIFile)
  73. End Sub
  74.  
  75. Sub Chan_Msg(Chan, Nick, RegUser, Line)
  76.   Status = ReadINIString("Settings", "Status", "off", INIFile)
  77.  
  78.   If MatchFlags(GetUserFlags(RegUser), "+" & nFlag) Then
  79.     If InStr(1, Channels, Chan) > 0 Then
  80.       If LCase(Param(Line,1)) = StartTrigger Then
  81.         If Status = "on" Then
  82.           Sendline "Notice " & Nick & " : Script ist schon aktiv",3
  83.         Else
  84.           GetNews
  85.           WriteINIString "Settings", "Status", "on", INIFile
  86.           If DebugIt Then SpreadFlagMessage 0, "+m", "Script wurde soebend von " & Nick & " im " & Chan & " aktiviert"
  87.           Sendline "Notice " & Nick & " : Script wurde soebend von dir gestartet",3
  88.         End If
  89.       ElseIf LCase(Param(Line,1)) = EndTrigger Then
  90.         If Status = "off" Then
  91.           Sendline "Notice " & Nick & " : Script ist zurzeit nicht aktiv",3
  92.         Else
  93.           LastNews = ""
  94.           WriteINIString "Settings", "Status", "off", INIFile
  95.           If DebugIt Then SpreadFlagMessage 0, "+m", "Script wurde soebend von " & Nick & " im " & Chan & " beendet"
  96.           Sendline "Notice " & Nick & " : Vielen Da für die Benutzung des Scripts. Bis zum nächsten Spieltag.",3
  97.         End If
  98.       End If
  99.     End If
  100.   End If
  101. End Sub
  102.    
  103. Sub Commands(vSock, RegUser, Flags, Line)
  104.   If LCase(Param(Line, 1)) = "." & Trigger Then
  105.     GrabUser vSock, "" & ScriptName & " Setup", "StatusSetup"
  106.     SetSockTag vSock, "MainMenu"
  107.     StatusSetup vSock, RegUser, Flags, ""
  108.   End If
  109. End Sub
  110.  
  111. Sub StatusSetup(vSock, RegUser, Flags, Line)
  112.  
  113.   If Param(Line, 1) = "0" Then
  114.     TU vsock, "10*** Saving settings..."
  115.     ReleaseUser vSock
  116.     Exit Sub
  117.   End If
  118.  
  119.   Select Case LCase(Param(GetSockTag(vSock), 1))
  120.     Case "mainmenu"
  121.       TU vSock, " 11,0,%0,11%'12,11,%11,12%'2,12,%12,2%'1,2,%2,1%'1,1____________________ ___2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%,"
  122.       TU vSock, "11,0,%0,11%'12,11,%11,12%'2,12,%12,2%'1,2,%2,1%'1,1_0,1 " & ScriptName & " Setup 1,1_2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%,"
  123.       TU vSock, " 11,0,%0,11%'12,11,%11,12%'2,12,%12,2%'1,2,%2,1%'1,1____________________ ___2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%,"
  124.       TU vSock, " "
  125.       TU vSock, "Willkommen im Setup vom " & Version & "!"
  126.       TU vSock, "Du befindest dich im Hauptmenü."
  127.       TU vSock, " "
  128.       TU vSock, "0,1Ticker Channels:"
  129.  
  130.       Dummy = Split(Channels, " ")
  131.       For i = LBound(Dummy) To UBound(Dummy)
  132.         TU vSock, "14 - " & Dummy(i)
  133.       Next
  134.      
  135.       Dim xx
  136.      
  137.       Status = ReadINIString("Settings", "Status", "off", INIFile)
  138.       If Status = "on" Then
  139.         xx = "aktiv"
  140.       ElseIf Status = "off" Then
  141.         xx = "nicht aktiv"
  142.       End If
  143.  
  144.  
  145.       TU vSock, " "
  146.       TU vSock, "0,1Farben: 14 " & ReadINIString("Settings", "Farben", "On", INIFile)
  147.       TU vSock, "0,1Script ist zurzeit 14 " & xx
  148.       TU vSock, " "
  149.       TU vSock, " - chan add #channel um einen Channel der Liste hinzuzufügen"
  150.       TU vSock, " - chan del #channel um einen Channel aus Liste zu löschen"
  151.       TU vSock, " - codes on um Colors/UnderLine/Blod zu aktivieren"
  152.       TU vSock, " - codes off um Colors/UnderLine/Blod zu deaktiveren"
  153.       TU vSock, " - 0 um zurück auf die Partyline zu kommen."
  154.       SetSockTag vSock, "MainMenuOption"
  155.     Case "mainmenuoption"
  156.       Select Case LCase(Param(Line, 1))
  157.         Case "chan"
  158.           If LCase(Param(Line, 2)) = "add" Then
  159.             Channels = Trim3(Channels & " " & Param(Line, 3))
  160.             WriteINIString "Settings", "Channels", Channels, INIFile
  161.             TU vSock, "3*** Channel " & LCase(Param(Line, 3)) & " wurde hinzugefügt"
  162.             ReloadChannels
  163.             SetSockTag vSock, "MainMenu"
  164.             StatusSetup vSock, RegUser, Flags, ""
  165.           ElseIf LCase(Param(Line, 2)) = "del" Then
  166.             Channels = Trim3(Replace(LCase(Channels), LCase(Param(Line, 3)), ""))
  167.             WriteINIString "Settings", "Channels", Channels, INIFile
  168.             ReloadChannels
  169.             TU vSock, "3*** Channel " & LCase(Param(Line, 3)) & " wurde entfernt"
  170.             SetSockTag vSock, "MainMenu"
  171.             StatusSetup vSock, RegUser, Flags, ""
  172.           Else
  173.             TU vSock, "5*** Syntax: chan <add | del> <#channel>"
  174.           End If
  175.         Case "status"
  176.           If LCase(Param(Line, 2)) = "on" Then
  177.             WriteINIString "Settings", "Status", "on", INIFile
  178.             TU vSock, "3*** Script wurden aktiviert"
  179.             SetSockTag vSock, "MainMenu"
  180.             StatusSetup vSock, RegUser, Flags, ""
  181.           ElseIf LCase(Param(Line, 2)) = "off" Then
  182.             WriteINIString "Settings", "Status", "off", INIFile
  183.             TU vSock, "3*** Script wurden deaktiviert"
  184.             SetSockTag vSock, "MainMenu"
  185.             StatusSetup vSock, RegUser, Flags, ""
  186.           Else
  187.             TU vSock, "5*** Syntax: color <on | off>"
  188.           End If
  189.         Case "codes"
  190.           If LCase(Param(Line, 2)) = "on" Then
  191.             WriteINIString "Settings", "Farben", "on", INIFile
  192.             TU vSock, "3*** Farben wurden aktiviert"
  193.             SetSockTag vSock, "MainMenu"
  194.             StatusSetup vSock, RegUser, Flags, ""
  195.           ElseIf LCase(Param(Line, 2)) = "off" Then
  196.             WriteINIString "Settings", "Farben", "off", INIFile
  197.             TU vSock, "3*** Farben wurden deaktiviert"
  198.             SetSockTag vSock, "MainMenu"
  199.             StatusSetup vSock, RegUser, Flags, ""
  200.           Else
  201.             TU vSock, "5*** Syntax: color <on | off>"
  202.           End If
  203.         Case Else
  204.           TU vSock, "5*** Ungültiger Befehl"
  205.       End Select
  206.   End Select
  207. End Sub
  208.  
  209. Sub GetNews()
  210.   vSock = SockConnect(Host, 80, "SockEvent")
  211.   If vSock = 0 Then
  212.     If DebugIt Then SpreadFlagMessage 0, "+m", "5*** " & Host & ": Couldn't create socket"
  213.     TimedCommand "GetNews", 120
  214.   End If
  215. End Sub
  216.  
  217. Sub SockEvent(vSock, SEvent, SData)
  218.   Dim Header2
  219.  
  220.   Select Case SEvent
  221.     Case SE_ConnectFailed
  222.       If DebugIt Then SpreadFlagMessage 0, "+m", "5*** " & ScriptName & ": Connection to " & Host & " failed"
  223.       TimedCommand "GetNews", CheckTime
  224.     Case SE_Connected
  225.       If Proxy = vbNullString Then
  226.         Header = "GET /sport/bl1/konferenz.htm"
  227.       Else
  228.         Header = "GET http://" & Host & "/sport/bl1/konferenz.htm"
  229.       End If
  230.  
  231.       SockWrite vSock, Header & " HTTP/1.0" & vbCrLf & Header2 & _
  232.                       "Accept: text/html"  & vbCrLf & _
  233.                       "User-Agent: AnGeL-Bot " & LongBotVersion & " (www.AnGelBot-Portal.de)" & vbCrLf & _
  234.                       "Host: " & Host & vbCrLf & _
  235.                       "Pragma: no-cache" & vbCrLf & _
  236.                       "Connection: close" & vbCrLf & vbCrLf
  237.     Case SE_Read
  238.       Recieved = Recieved & SData
  239.     Case SE_Closed
  240.       Status = ReadINIString("Settings", "Status", "", INIFile)
  241.       If Status = "on" Then
  242.         If DebugIt Then SpreadFlagMessage 0, "+m", "Script: aktiv"
  243.               If InStr(1, Recieved, "<div class=""message-box-top"">") > 0 Then
  244.         Recieved = Replace(Recieved, vbCrLf, vbNullString)
  245.  
  246.         Dummy = "<div class=""message-box-left"">"
  247.         Recieved = Right(Recieved, Len(Recieved) - InStr(1, Recieved, Dummy) - Len(Dummy) + 1)
  248.  
  249.         Dummy = "<div class=""minute"">"
  250.         Recieved = Right(Recieved, Len(Recieved) - InStr(1, Recieved, Dummy) - Len(Dummy) + 1)
  251.  
  252.         tmp_minute = Left(Recieved, InStr(1, Recieved, "</div>") - 1 )
  253.         If DebugIt Then SpreadFlagMessage 0, "+m", "Minute:" & tmp_minute
  254.  
  255.         Dummy = "class=""message-header"">"
  256.         Recieved = Right(Recieved, Len(Recieved) - InStr(1, Recieved, Dummy) - Len(Dummy) + 1)
  257.    
  258.         tmp_spiel = Left(Recieved, InStr(1, Recieved, "</a>") - 1 )
  259.         If DebugIt Then SpreadFlagMessage 0, "+m", "Spiel: " & tmp_spiel
  260.    
  261.         Dummy = "<p>"
  262.         Recieved = Right(Recieved, Len(Recieved) - InStr(1, Recieved, Dummy) - Len(Dummy) + 1)
  263.    
  264.         tmp_beschreibung = Left(Recieved, InStr(1, Recieved, "</p>") - 1 )
  265.     tmp_beschreibung = Replace(tmp_beschreibung, vbLf, "")
  266.     tmp_beschreibung = Replace(tmp_beschreibung, "    ", "")
  267.    
  268.     If InStr(1, tmp_beschreibung, "<img src=") Then
  269.       Dummy = "class=""message-player-img"" />"
  270.       Recieved = Right(Recieved, Len(Recieved) - InStr(1, Recieved, Dummy) - Len(Dummy) + 1)
  271.    
  272.       tmp_beschreibung = Left(Recieved, InStr(1, Recieved, "</p>") - 1 )
  273.       tmp_beschreibung = Replace(tmp_beschreibung, vbLf, "")
  274.       tmp_beschreibung = Replace(tmp_beschreibung, "    ", "")
  275.     End If
  276.    
  277.         If DebugIt Then SpreadFlagMessage 0, "+m", "Beschreibung: " & tmp_beschreibung
  278.  
  279.         If Not tmp_minute = vbNullString Then
  280.       Dummy = "1,0 «4•1» 4[ " & tmp_minute & " Minute ] [ " & tmp_spiel & " ] 1" & tmp_beschreibung & " 1«4•1» "
  281.     Else
  282.       Dummy = "1,0 «4•1» 4[ " & tmp_spiel & " ] 1" & tmp_beschreibung & "1«4•1» "
  283.     End If
  284.  
  285.           If Dummy <> LastNews Then
  286.             If DebugIt Then SpreadFlagMessage 0, "+m", "New news!"
  287.             LastNews = Dummy
  288.             Dummy = Split(Channels, " ")
  289.             For i = LBound(Dummy) To UBound(Dummy)
  290.               If DebugIt Then SpreadFlagMessage 0, "+m", "Sending to " & Dummy(i) & " :" & "PRIVMSG " & Dummy(i) & " :" & LastNews
  291.               color = ReadINIString("Settings", "Farben", "on", INIFile)
  292.               If color = "on" Then
  293.                 SendLine "PRIVMSG " & Dummy(i) & " : " & LastNews, 2
  294.               ElseIf color = "off" Then
  295.                 SendLine "PRIVMSG " & Dummy(i) & " : " & Strip(LastNews), 2
  296.               End If
  297.             Next
  298.           End If
  299.  
  300.         Else
  301.           SpreadFlagMessage 0, "+m", "5*** " & ScriptName & ": Couldn't recieve HTML page..."
  302.         End If
  303.         Recieved = vbNullString
  304.  
  305.         TimedCommand "GetNews", CheckTime
  306.       ElseIf Status = "off" Then
  307.         If DebugIt Then SpreadFlagMessage 0, "+m", "Script nicht aktiv. Script wird nun beendet"
  308.         Exit Sub
  309.         LastNews = ""
  310.       End If
  311.   End Select
  312. End Sub
  313.  
  314. Function Trim3(Text)
  315.   Trim3 = Replace(Replace(Trim(Text), "   ", " "), "  ", " ")
  316. End Function