AnGelBot-Portal²

Normale Version: !stats script
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
kann mir wer des script
Code:
' +-----------------------------------------+-----------------------------------------+
' | Channel Stats ver1.2                    | Solltest du eine Verbesserungsidee      |
' | by Nusse(nusse@fishboard.de)            | haben, oder vielleicht etwas geändert   |
' | Visit irc://irc.euirc.net/2-fish/       | würde ich mich über eine e-Mail freuen. |
' +-----------------------------------------+-----------------------------------------+
UserStatFile="\stats\user\"
ChannelStatFile="\stats\channel\"

Sub Init
   Script "ChannelStats ver1.2 by nusse"
   Hook "Chan_msg"
   Hook "Priv_msg"
   Hook "Chan_act"
   Hook "kick"
   SpreadFlagMessage 0, "+m", "*** Channel Stats Script by nusse loaded"
End Sub

Sub Chan_msg(Chan, Nick, RegUser, Line)

   '-- Userstats
   x=0
   i=1
   do
      if param(Line,i)="" then
         wort=i-1
         exit do
      end if
      i=i+1
   loop
   do
      x=x+1
      if instr(lcase(line),lcase(ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini"))) then
         WriteINIString x,"sagnick",ReadINIString(x,"sagnick", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"
      end if
   loop until (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = "0") or (lcase(ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini")) = lcase(Nick))
   if (int(rnd*30)=23) and (left(line,1)<>"!") then WriteINIString x,"rndquote", line, UserStatFile & Chan & ".ini"
   if (ReadINIString(x,"rndquote", "0", UserStatFile & Chan & ".ini")="0") and (left(line,1)<>"!") then WriteINIString x,"rndquote", line, UserStatFile & Chan & ".ini"
   WriteINIString x,"nick", Nick, UserStatFile & Chan & ".ini"
   WriteINIString x,"zeile", ReadINIString(x,"zeile", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"
   WriteINIString x,"wort", ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini") + wort, UserStatFile & Chan & ".ini"

   if ReadINIString(x,"host", "0", UserStatFile & Chan & ".ini")="0" then
      WriteINIString x,"host", Mask(Hostmask(Chan, Nick), 3), UserStatFile & Chan & ".ini"
   end if

   if instr(Line,":)") or instr(Line,";)") or instr(Line,":-)") or instr(Line,";-)") or instr(Line,"xD") or instr(Line,";D") or instr(Line,":D") or instr(Line,":P") or instr(Line,":>") or instr(Line,";>") then
      WriteINIString x,"possmile", ReadINIString(x,"possmile", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"
      WriteINIString "main","possmile", ReadINIString("main","possmile", "0", ChannelStatFile & Chan & ".ini") + 1, ChannelStatFile & Chan & ".ini"
   elseif instr(Line,":(") or instr(Line,";(") or instr(Line,":-(") or instr(Line,";-(") or instr(Line,":<") or instr(Line,";<") then
      WriteINIString x,"negsmile", ReadINIString(x,"negsmile", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"
      WriteINIString "main","negsmile", ReadINIString("main","negsmile", "0", ChannelStatFile & Chan & ".ini") + 1, ChannelStatFile & Chan & ".ini"
   end if

   '-- Channelstats
   WriteINIString "main","zeile", ReadINIString("main","zeile", "0", ChannelStatFile & Chan & ".ini") + 1, ChannelStatFile & Chan & ".ini"
   WriteINIString "main","wort", ReadINIString("main","wort", "0", ChannelStatFile & Chan & ".ini") + wort, ChannelStatFile & Chan & ".ini"

   if param(line,1)="!stat" then
      if param(line,2)="" then
         call ReadUserStats(Nick,Chan,Nick)
      elseif param(line,3)="" then
         call ReadUserStats(param(line,2),Chan,Nick)
      else
         call ReadUserStats(param(line,2),param(line,3),Nick)
      end if
   elseif param(line,1)="!chanstat" then
      if param(line,2)="" then
         call ReadChannelStats(Chan,Nick)
      else
         call ReadChannelStats(param(line,2),Nick)
      end if
   elseif param(line,1)="!top5" then
      if param(line,2)="" then
         call ReadTopUser(Chan,Nick,5)
      else
         call ReadTopUser(param(line,2),Nick,10)
      end if
   elseif param(line,1)="!top10" then
      if param(line,2)="" then
         call ReadTopUser(Chan,Nick,10)
      else
         call ReadTopUser(param(line,2),Nick,10)
      end if
   end if


End Sub

Sub Chan_act(Chan, Nick, RegUser, Line)

   x=0
   do
      x=x+1
   loop until (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = "0") or (lcase(ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini")) = lcase(Nick))
   WriteINIString x,"nick", Nick, UserStatFile & Chan & ".ini"
   WriteINIString x,"action", ReadINIString(x,"action", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"

   WriteINIString "main","action", ReadINIString("main","action", "0", ChannelStatFile & Chan & ".ini") + 1, ChannelStatFile & Chan & ".ini"

End Sub

Sub Priv_msg(Nick, RegUser, Line)

   if param(line,1)="!stat" then
      if param(line,3)<>"" then
         call ReadUserStats(param(line,2),param(line,3),Nick)
      else
         Sendline "privmsg " & Nick & " :Usage: !stat <nick> <channel>",3
      end if
   elseif param(line,1)="!chanstat" then
      if param(line,3)<>"" then
         call ReadChannelStats(param(line,2),Nick)
      else
         Sendline "privmsg " & Nick & " :Usage: !chanstat <channel>",3
      end if
   elseif param(line,1)="!top5" then
      if param(line,2)<>"" then
         call ReadTopUser(param(line,2),Nick,5)
      else
         Sendline "privmsg " & Nick & " :Usage: !top5 <channel>",3
      end if
   elseif param(line,1)="!top10" then
      if param(line,2)<>"" then
         call ReadTopUser(param(line,2),Nick,10)
      else
         Sendline "privmsg " & Nick & " :Usage: !top5 <channel>",3
      end if
   end if

End Sub

Sub Kick(Chan, Nick, User, Flags, KNick, KUser, KFlags, Message)

   x=0
   do
      x=x+1
   loop until (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = "0") or (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = lcase(kNick))
   WriteINIString x,"nick", kNick, UserStatFile & Chan & ".ini"
   WriteINIString x,"waskick", ReadINIString(x,"waskick", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"
   WriteINIString "main","waskick", ReadINIString("main","waskick", "0", ChannelStatFile & Chan & ".ini") + 1, ChannelStatFile & Chan & ".ini"

   x=0
   do
      x=x+1
   loop until (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = "0") or (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = lcase(Nick))
   WriteINIString x,"nick", Nick, UserStatFile & Chan & ".ini"
   WriteINIString x,"didkick", ReadINIString(x,"didkick", "0", UserStatFile & Chan & ".ini") + 1, UserStatFile & Chan & ".ini"
   WriteINIString "main","didkick", ReadINIString("main","didkick", "0", ChannelStatFile & Chan & ".ini") + 1, ChannelStatFile & Chan & ".ini"

End Sub

Sub ReadUserStats(Nick,Chan,SendTo)

   x=0
   do
      x=x+1
   loop until (ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") = "0") or (lcase(ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini")) = lcase(Nick))

   StatZeile=ReadINIString(x,"zeile", "0", UserStatFile & Chan & ".ini")
   StatWort=ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini")
   StatPosSmile=ReadINIString(x,"possmile", "0", UserStatFile & Chan & ".ini")
   StatNegSmile=ReadINIString(x,"negsmile", "0", UserStatFile & Chan & ".ini")
   StatAction=ReadINIString(x,"action", "0", UserStatFile & Chan & ".ini")
   StatDidKick=ReadINIString(x,"didkick", "0", UserStatFile & Chan & ".ini")
   StatWasKick=ReadINIString(x,"waskick", "0", UserStatFile & Chan & ".ini")
   StatSagNick=ReadINIString(x,"sagnick", "0", UserStatFile & Chan & ".ini")
   StatRNDQuote=ReadINIString(x,"rndquote", "0", UserStatFile & Chan & ".ini")

   if ((StatZeile="0") or (StatWort="0")) then
      sendline "privmsg " & SendTo & " :Keine Statistiken für " & Nick & " in " & Chan & " vorhanden.",3
   else
      sendline "privmsg " & SendTo & " :Statistiken für " & Nick & " in " & Chan & ".",3
      sendline "privmsg " & SendTo & " :In " & StatZeile & " Zeilen befanden sich " & StatWort & " Wörter.",3
      sendline "privmsg " & SendTo & " :Daraus ergibt sich, das ein Satz durchschnittlich aus " & round(cInt(StatWort) / cInt(StatZeile),2) & " Wörtern besteht.",3
      sendline "privmsg " & SendTo & " :" & StatAction & " Actions kamen von " & Nick & ".",3
      sendline "privmsg " & SendTo & " :Es gab " & StatPosSmile & " fröhliche und " & StatNegSmile & " traurige Smileys.",3
      sendline "privmsg " & SendTo & " :" & StatDidKick & " mal befreite uns " & Nick & " von unliebsamen Gästen.",3
      sendline "privmsg " & SendTo & " :" & StatWasKick & " mal mußte " & Nick & " uns unfreiwillig verlassen.",3
      sendline "privmsg " & SendTo & " :Der Nick " & Nick & " wurde " & StatSagNick & " mal von anderen benutzt.",3
      sendline "privmsg " & SendTo & " :Zufallstext: <" & Nick & "> " & StatRNDQuote,3
   end if

End Sub

Sub ReadChannelStats(Chan,SendTo)

   StatZeile=ReadINIString("main","zeile", "0", ChannelStatFile & Chan & ".ini")
   StatWort=ReadINIString("main","wort", "0", ChannelStatFile & Chan & ".ini")
   StatPosSmile=ReadINIString("main","possmile", "0", ChannelStatFile & Chan & ".ini")
   StatNegSmile=ReadINIString("main","negsmile", "0", ChannelStatFile & Chan & ".ini")
   StatAction=ReadINIString("main","action", "0", ChannelStatFile & Chan & ".ini")
   StatDidKick=ReadINIString("main","didkick", "0", ChannelStatFile & Chan & ".ini")
   StatWasKick=ReadINIString("main","waskick", "0", ChannelStatFile & Chan & ".ini")


   if ((StatZeile="0") or (StatWort="0")) then
      sendline "privmsg " & SendTo & " :Keine Statistiken für " & Chan & " vorhanden.",3
   else
      sendline "privmsg " & SendTo & " :Channelstatistik für " & Chan & ".",3
      sendline "privmsg " & SendTo & " :In " & StatZeile & " Zeilen befanden sich " & StatWort & " Wörter.",3
      sendline "privmsg " & SendTo & " :Daraus ergibt sich, das ein Satz durchschnittlich aus " & round(cInt(StatWort) / cInt(StatZeile),2) & " Wörtern besteht.",3
      sendline "privmsg " & SendTo & " :" & StatAction & " User unterhielte(n) uns mit ihren Actions.",3
      sendline "privmsg " & SendTo & " :Es gab " & StatPosSmile & " fröhliche und " & StatNegSmile & " traurige Smileys.",3
      sendline "privmsg " & SendTo & " :" & StatDidKick & " User sorgte(n) für Ordnung, indem sie Andere rauswarfen.",3
      sendline "privmsg " & SendTo & " :" & StatWasKick & " User verließe(n) unfreiwillig den Channel.",3
   end if

End Sub

Sub ReadTopUser(Chan,SendTo,Top)

   SendLine "privmsg " & SendTo & " :Top" & Top & " in " & Chan & ".",3
   StatLastTopWort=0
   StatTopMax=999999999
   for i=1 to Top
      x=0
      StatLastTopWort=0
      do
         x=x+1
         if (StatLastTopWort <= cInt(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) and (StatTopMax >= cInt(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) then
            if LastNick <> ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") then
               StatLastTopWort=cInt(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))
               StatLastTopNick=ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini")
''               if StatTopMax=StatLastTopWort then i=i-1
            end if
         end if
      loop until ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini")="0"
   StatTopMax=StatLastTopWort
   if StatLastTopWort = 0 then exit sub
   SendLine "privmsg " & SendTo & " :Platz " & i & " wurde " & StatLastTopNick & " mit " & StatLastTopWort & " Worten.",3
   LastNick=StatLastTopNick
   next
End Sub
so umschreiben dass es nicht nach namen geht sondern nacht auth name oder hostmark ? wär n1 weil ich änder oft meinen name....


MFg PLX
jo stimmt das wäre mal ne sache die ich begrüßen würde^^
Wenn mal jmd dran arbeiten moechte..mich wuerde des jetzt noch interessieren Wink
Referenz-URLs