AnGelBot-Portal²

Normale Version: Variablenproblem beim Stat-Script
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Jungs, da bin ich wieder :D

diesmal ist es nur ein kleines Problem im Stat-Script, hab durch die Forensuche allerdings nichts gefunden =/
Ist wohl nur eine Unverträglichkeit bei Variablen, wenn ich die Fehlermeldung richtig deute:

Code:
(23:05:31) (Eichelkaese) *** Scripting error in 'stat.asc':
(23:05:31) (Eichelkaese)  Error : 13 (Typen unverträglich: 'CLNG')
(23:05:31) (Eichelkaese)  Position: Line 220, Column 9
(23:05:31) (Eichelkaese)  Excerpt : if (StatLastTopWort <= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) and (StatTopMax >= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) then
(23:05:31) (Eichelkaese)  Command : Chan_msg "#maikäfer", "MrMister", "MrMister", "!top10"
(23:05:31) (Eichelkaese) *** End of error message

Fällt da jemandem spontan ne Lösung ein? Der Vollständigkeit halber nochmal das komplette 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(CLNG(StatWort) / CLNG(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(CLNG(StatWort) / CLNG(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 <= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) and (StatTopMax >= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) then
            if LastNick <> ReadINIString(x,"nick", "0", UserStatFile & Chan & ".ini") then
               StatLastTopWort=CLNG(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
Die Hälfte der Posts in dem Topic sind von mir Wink
Mein Problem ist aber nicht, dass die Datenmenge zu groß ist, sondern, dass es anscheinend eine Inkompatibilität zwischen verschiedenen Variablentypen gibt.
gerade eben habe ich it HAPM gesprochen und er hat mir gesagt:

Code:
CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))

ändern in

CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini")*1)
Scheint so auch nicht zu funktionieren, hier die 3 Fehlermeldungen:

Code:
(17:41:04) (Eichelkaese) *** Scripting error in 'stat.asc':
(17:41:04) (Eichelkaese)  Error : 13 (Typen unverträglich: '[string: ""]')
(17:41:04) (Eichelkaese)  Position: Line 220, Column 9
(17:41:04) (Eichelkaese)  Excerpt : if (StatLastTopWort <= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini")*1)) and (StatTopMax >= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) then
(17:41:04) (Eichelkaese)  Command : Chan_msg "#maikäfer", "MrMister", "MrMister", "!top10"
(17:41:04) (Eichelkaese) *** End of error message

Zitat:(17:41:37) (Eichelkaese) *** Scripting error in 'stat.asc':
(17:41:37) (Eichelkaese) Error : 13 (Typen unverträglich: '[string: ""]')
(17:41:37) (Eichelkaese) Position: Line 220, Column 9
(17:41:37) (Eichelkaese) Excerpt : if (StatLastTopWort <= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini")*1)) and (StatTopMax >= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini")*1)) then
(17:41:37) (Eichelkaese) Command : Chan_msg "#maikäfer", "MrMister", "MrMister", "!top10"
(17:41:37) (Eichelkaese) *** End of error message

Zitat:(17:42:25) (Eichelkaese) *** Scripting error in 'stat.asc':
(17:42:25) (Eichelkaese) Error : 13 (Typen unverträglich: 'CLNG')
(17:42:25) (Eichelkaese) Position: Line 220, Column 9
(17:42:25) (Eichelkaese) Excerpt : if (StatLastTopWort <= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) and (StatTopMax >= CLNG(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini")*1)) then
(17:42:25) (Eichelkaese) Command : Chan_msg "#maikäfer", "MrMister", "MrMister", "!top10"
(17:42:25) (Eichelkaese) *** End of error message

Ist also egal wo ich die *1 hinmache, die Fehlermeldung bleibt :(
MrMister nimm mal mein Script denn mir iss aufgefallen das meins irgendwie anders ist...

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 " & chan & " :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 " & chan & " :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 " & chan & " :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: !top10 <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 " & chan & " :8,4Keine Statistiken für " & Nick & " in " & Chan & " vorhanden.",3
   else
      sendline "privmsg " & chan & " :8,4Statistiken für " & Nick & " in " & Chan & ".",3
      sendline "privmsg " & chan & " :8,4In " & StatZeile & " Zeilen befanden sich " & StatWort & " Wörter.",3
      sendline "privmsg " & chan & " :8,4Daraus ergibt sich, das ein Satz durchschnittlich aus " & round(cInt(StatWort) / cInt(StatZeile),2) & " Wörtern besteht.",3
      sendline "privmsg " & chan & " :8,4" & StatAction & " Actions kamen von " & Nick & ".",3
      sendline "privmsg " & chan & " :8,4Es gab " & StatPosSmile & " fröhliche und " & StatNegSmile & " traurige Smileys.",3
      sendline "privmsg " & chan & " :8,4" & StatDidKick & " mal befreite uns " & Nick & " von unliebsamen Gästen.",3
      sendline "privmsg " & chan & " :8,4" & StatWasKick & " mal mußte " & Nick & " uns unfreiwillig verlassen.",3
      sendline "privmsg " & chan & " :8,4Der Nick " & Nick & " wurde " & StatSagNick & " mal von anderen benutzt.",3
      sendline "privmsg " & chan & " :8,4Zufallstext: <" & 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 " & chan & " :8,4Keine Statistiken für " & Chan & " vorhanden.",3
   else
      sendline "privmsg " & chan & " :8,4Channelstatistik für " & Chan & ".",3
      sendline "privmsg " & chan & " :8,4In " & StatZeile & " Zeilen befanden sich " & StatWort & " Wörter.",3
      sendline "privmsg " & chan & " :8,4Daraus ergibt sich, das ein Satz durchschnittlich aus " & round(cInt(StatWort) / cInt(StatZeile),2) & " Wörtern besteht.",3
      sendline "privmsg " & chan & " :8,4" & StatAction & " User unterhielte(n) uns mit ihren Actions.",3
      sendline "privmsg " & chan & " :8,4Es gab " & StatPosSmile & " fröhliche und " & StatNegSmile & " traurige Smileys.",3
      sendline "privmsg " & chan & " :8,4" & StatDidKick & " User sorgte(n) für Ordnung, indem sie Andere rauswarfen.",3
      sendline "privmsg " & chan & " :8,4" & StatWasKick & " User verließe(n) unfreiwillig den Channel.",3
   end if

End Sub

Sub ReadTopUser(Chan,SendTo,Top)

   SendLine "privmsg " & chan & " :8,4Top" & Top & " am " & 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 " & chan & " :8,4Platz " & i & " wurde " & StatLastTopNick & " mit " & StatLastTopWort & " Worten",3
   LastNick=StatLastTopNick
   next
End Sub
Ok, das scheint behoben zu sein, jetzt sagt er allerdings:

Code:
(18:00:07) (Eichelkaese) *** Scripting error in 'stat2.asc':
(18:00:07) (Eichelkaese)  Error : 6 (Überlauf: 'cInt')
(18:00:07) (Eichelkaese)  Position: Line 220, Column 9
(18:00:07) (Eichelkaese)  Excerpt : if (StatLastTopWort <= cInt(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) and (StatTopMax >= cInt(ReadINIString(x,"wort", "0", UserStatFile & Chan & ".ini"))) then
(18:00:07) (Eichelkaese)  Command : Chan_msg "#maikäfer", "MrMister", "MrMister", "!top10"
(18:00:07) (Eichelkaese) *** End of error message

Heißt, dass die Variable zu klein ist... Wenn ich mich nicht täusche, dann ließ sich das durch einen einfachen Wechsel der Variable ändern, weißt du da zufällig was drüber bzw. was die nächst-größere Variable ist?

Schonmal danke für deine Hilfe Wink

Grüße,
MrMister
Referenz-URLs