02.04.2004, 19:17 Uhr
kann mir wer des script
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
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 SubMFg PLX